| /*************************************************************************** |
| * _ _ ____ _ |
| * 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; |
| } |
| |