aboutsummaryrefslogtreecommitdiff
path: root/src/tool_easysrc.c
diff options
context:
space:
mode:
authorYang Tse <yangsita@gmail.com>2011-09-21 01:54:14 +0200
committerYang Tse <yangsita@gmail.com>2011-09-21 01:54:14 +0200
commit9ecf53e1544e90aeb2e667fdbbc84f05e341cc07 (patch)
treecef553b5404f002fab5b9389ac66a5888feb9dee /src/tool_easysrc.c
parent84221006c9acf2b97a80564364df22e03184a1d8 (diff)
curl tool: reviewed code moved to tool_*.[ch] files
my_setopt and my_setopt_str no longer ignores curl_easy_setopt result. Fixed some OOM handling issues.
Diffstat (limited to 'src/tool_easysrc.c')
-rw-r--r--src/tool_easysrc.c112
1 files changed, 112 insertions, 0 deletions
diff --git a/src/tool_easysrc.c b/src/tool_easysrc.c
new file mode 100644
index 000000000..5c42e808e
--- /dev/null
+++ b/src/tool_easysrc.c
@@ -0,0 +1,112 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at http://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include "setup.h"
+
+#include <curl/curl.h>
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+#include "tool_cfgable.h"
+#include "tool_easysrc.h"
+#include "tool_msgs.h"
+
+#include "memdebug.h" /* keep this as LAST include */
+
+/* global variable definitions, for easy-interface source code generation */
+
+struct curl_slist *easysrc = NULL;
+struct curl_slist *easysrc_remarks = NULL;
+
+static const char *const srchead[]={
+ "/********* Sample code generated by the curl command line tool **********",
+ " * All curl_easy_setopt() options are documented at:",
+ " * http://curl.haxx.se/libcurl/c/curl_easy_setopt.html",
+ " ************************************************************************/",
+ "#include <curl/curl.h>",
+ "",
+ "int main(int argc, char *argv[])",
+ "{",
+ " CURLcode ret;",
+ NULL
+};
+
+void dumpeasysrc(struct Configurable *config)
+{
+ struct curl_slist *ptr;
+ char *o = config->libcurl;
+
+ if(o) {
+ FILE *out;
+ bool fopened = FALSE;
+ if(strcmp(o, "-")) {
+ out = fopen(o, "wt");
+ fopened = TRUE;
+ }
+ else
+ out = stdout;
+ if(!out)
+ warnf(config, "Failed to open %s to write libcurl code!\n", o);
+ else {
+ int i;
+ const char *c;
+
+ for(i=0; ((c = srchead[i]) != '\0'); i++)
+ fprintf(out, "%s\n", c);
+
+ ptr = easysrc;
+ while(ptr) {
+ fprintf(out, " %s\n", ptr->data);
+ ptr = ptr->next;
+ }
+
+ ptr = easysrc_remarks;
+ if(ptr) {
+ fprintf(out,
+ "\n /* Here is a list of options the curl code"
+ " used that cannot get generated\n"
+ " as source easily. You may select to either"
+ " not use them or implement\n them yourself.\n"
+ "\n");
+ while(ptr) {
+ fprintf(out, " %s\n", ptr->data);
+ ptr = ptr->next;
+ }
+ fprintf(out, "\n */\n");
+ }
+
+ fprintf(out,
+ " return (int)ret;\n"
+ "}\n"
+ "/**** End of sample code ****/\n");
+ if(fopened)
+ fclose(out);
+ }
+ }
+
+ curl_slist_free_all(easysrc_remarks);
+ curl_slist_free_all(easysrc);
+ easysrc_remarks = NULL;
+ easysrc = NULL;
+}
+