diff options
author | Yang Tse <yangsita@gmail.com> | 2011-09-21 01:54:14 +0200 |
---|---|---|
committer | Yang Tse <yangsita@gmail.com> | 2011-09-21 01:54:14 +0200 |
commit | 9ecf53e1544e90aeb2e667fdbbc84f05e341cc07 (patch) | |
tree | cef553b5404f002fab5b9389ac66a5888feb9dee /src/tool_easysrc.c | |
parent | 84221006c9acf2b97a80564364df22e03184a1d8 (diff) | |
download | curl-9ecf53e1544e90aeb2e667fdbbc84f05e341cc07.tar.gz |
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.c | 112 |
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; +} + |