blob: 5c42e808ef4d0d511416dff08d8aef27943a67a5 [file] [log] [blame]
/***************************************************************************
* _ _ ____ _
* 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;
}