#define DEFAULT_MAXREDIRS 50L
#if defined(O_BINARY) && defined(HAVE_SETMODE)
- #ifdef __HIGHC__
- #define SET_BINMODE(file) _setmode(file,O_BINARY)
- #else
- #define SET_BINMODE(file) setmode(fileno(file),O_BINARY)
- #endif
+#ifdef __HIGHC__
+#define SET_BINMODE(file) _setmode(file,O_BINARY)
#else
- #define SET_BINMODE(file) ((void)0)
+#define SET_BINMODE(file) setmode(fileno(file),O_BINARY)
+#endif
+#else
+#define SET_BINMODE(file) ((void)0)
#endif
#ifndef O_BINARY
input_ptr = output_ptr = buffer;
in_bytes = out_bytes = length;
rc = iconv(outbound_cd, &input_ptr, &in_bytes,
- &output_ptr, &out_bytes);
- if ((rc == -1) || (in_bytes != 0)) {
+ &output_ptr, &out_bytes);
+ if((rc == -1) || (in_bytes != 0)) {
return CURLE_CONV_FAILED;
}
input_ptr = output_ptr = buffer;
in_bytes = out_bytes = length;
rc = iconv(inbound_cd, &input_ptr, &in_bytes,
- &output_ptr, &out_bytes);
- if ((rc == -1) || (in_bytes != 0)) {
+ &output_ptr, &out_bytes);
+ if((rc == -1) || (in_bytes != 0)) {
return CURLE_CONV_FAILED;
}
case CURLINFO_SSL_DATA_IN:
case CURLINFO_SSL_DATA_OUT:
/* data, treat as ASCII */
- if ((this_char >= 0x20) && (this_char < 0x7f)) {
+ if((this_char >= 0x20) && (this_char < 0x7f)) {
/* printable ASCII hex value: convert to host encoding */
convert_from_network(&this_char, 1);
}
/* fall through to default */
default:
/* treat as host encoding */
- if (ISPRINT(this_char)
- && (this_char != '\t')
- && (this_char != '\r')
- && (this_char != '\n')) {
+ if(ISPRINT(this_char)
+ && (this_char != '\t')
+ && (this_char != '\r')
+ && (this_char != '\n')) {
/* printable characters excluding tabs and line end characters */
return this_char;
}
#ifdef WIN32
#ifdef __BORLANDC__
- /* 64-bit lseek-like function unavailable */
+/* 64-bit lseek-like function unavailable */
# define _lseeki64(hnd,ofs,whence) lseek(hnd,ofs,whence)
#endif
#ifdef __POCC__
-# if (__POCC__ < 450)
- /* 64-bit lseek-like function unavailable */
+# if(__POCC__ < 450)
+/* 64-bit lseek-like function unavailable */
# define _lseeki64(hnd,ofs,whence) _lseek(hnd,ofs,whence)
# else
# define _lseeki64(hnd,ofs,whence) _lseek64(hnd,ofs,whence)
* Truncate a file handle at a 64-bit position 'where'.
*/
-static int ftruncate64 (int fd, curl_off_t where)
+static int ftruncate64(int fd, curl_off_t where)
{
if(_lseeki64(fd, where, SEEK_SET) < 0)
return -1;
for(i=0; helptext[i]; i++) {
puts(helptext[i]);
#ifdef PRINT_LINES_PAUSE
- if (i && ((i % PRINT_LINES_PAUSE) == 0))
+ if(i && ((i % PRINT_LINES_PAUSE) == 0))
pressanykey();
#endif
}
/* Structure for storing the information needed to build a multiple files
* section
-*/
+ */
struct multi_files {
struct curl_forms form;
struct multi_files *next;
/* Add a new list entry possibly with a type_name
*/
static struct multi_files *
-AddMultiFiles (const char *file_name,
- const char *type_name,
- const char *show_filename,
- struct multi_files **multi_start,
- struct multi_files **multi_current)
+AddMultiFiles(const char *file_name,
+ const char *type_name,
+ const char *show_filename,
+ struct multi_files **multi_start,
+ struct multi_files **multi_current)
{
struct multi_files *multi;
struct multi_files *multi_type = NULL;
struct multi_files *multi_name = NULL;
multi = malloc(sizeof(struct multi_files));
- if (multi) {
+ if(multi) {
memset(multi, 0, sizeof(struct multi_files));
multi->form.option = CURLFORM_FILE;
multi->form.value = file_name;
else
return NULL;
- if (!*multi_start)
+ if(!*multi_start)
*multi_start = multi;
- if (type_name) {
+ if(type_name) {
multi_type = malloc(sizeof(struct multi_files));
- if (multi_type) {
+ if(multi_type) {
memset(multi_type, 0, sizeof(struct multi_files));
multi_type->form.option = CURLFORM_CONTENTTYPE;
multi_type->form.value = type_name;
multi = multi_type;
}
else {
- free (multi);
+ free(multi);
return NULL;
}
}
- if (show_filename) {
+ if(show_filename) {
multi_name = malloc(sizeof(struct multi_files));
- if (multi_name) {
+ if(multi_name) {
memset(multi_name, 0, sizeof(struct multi_files));
multi_name->form.option = CURLFORM_FILENAME;
multi_name->form.value = show_filename;
multi = multi_name;
}
else {
- free (multi);
+ free(multi);
return NULL;
}
}
- if (*multi_current)
+ if(*multi_current)
(*multi_current)->next = multi;
*multi_current = multi;
/* Free the items of the list.
*/
-static void FreeMultiInfo (struct multi_files *multi_start)
+static void FreeMultiInfo(struct multi_files *multi_start)
{
struct multi_files *multi;
- while (multi_start) {
+ while(multi_start) {
multi = multi_start;
multi_start = multi_start->next;
- free (multi);
+ free(multi);
}
}
/* Print list of OpenSSL engines supported.
*/
-static void list_engines (const struct curl_slist *engines)
+static void list_engines(const struct curl_slist *engines)
{
- puts ("Build-time engines:");
- if (!engines) {
- puts (" <none>");
+ puts("Build-time engines:");
+ if(!engines) {
+ puts(" <none>");
return;
}
- for ( ; engines; engines = engines->next)
- printf (" %s\n", engines->data);
+ for( ; engines; engines = engines->next)
+ printf(" %s\n", engines->data);
}
/***************************************************************************
major, minor)) {
warnf(config, "Illegally formatted content-type field!\n");
free(contents);
- FreeMultiInfo (multi_start);
+ FreeMultiInfo(multi_start);
return 2; /* illegal content-type syntax! */
}
to the next zero or semicolon. */
if((*sep==';') && !checkprefix(";filename=", sep)) {
sep2 = strchr(sep+1, ';');
- if (sep2)
+ if(sep2)
sep = sep2;
else
sep = sep+strlen(sep); /* point to end of string */
}
/* if type == NULL curl_formadd takes care of the problem */
- if (!AddMultiFiles (contp, type, filename, &multi_start,
- &multi_current)) {
+ if(!AddMultiFiles(contp, type, filename, &multi_start,
+ &multi_current)) {
warnf(config, "Error building form post!\n");
free(contents);
- FreeMultiInfo (multi_start);
+ FreeMultiInfo(multi_start);
return 3;
}
contp = sep; /* move the contents pointer to after the separator */
} while(sep && *sep); /* loop if there's another file name */
/* now we add the multiple files section */
- if (multi_start) {
+ if(multi_start) {
struct curl_forms *forms = NULL;
struct multi_files *ptr = multi_start;
unsigned int i, count = 0;
- while (ptr) {
+ while(ptr) {
ptr = ptr->next;
++count;
}
forms = malloc((count+1)*sizeof(struct curl_forms));
- if (!forms)
+ if(!forms)
{
fprintf(config->errors, "Error building form post!\n");
free(contents);
- FreeMultiInfo (multi_start);
+ FreeMultiInfo(multi_start);
return 4;
}
- for (i = 0, ptr = multi_start; i < count; ++i, ptr = ptr->next)
+ for(i = 0, ptr = multi_start; i < count; ++i, ptr = ptr->next)
{
forms[i].option = ptr->form.option;
forms[i].value = ptr->form.value;
}
forms[count].option = CURLFORM_END;
- FreeMultiInfo (multi_start);
- if (curl_formadd(httppost, last_post,
- CURLFORM_COPYNAME, name,
- CURLFORM_ARRAY, forms, CURLFORM_END) != 0) {
+ FreeMultiInfo(multi_start);
+ if(curl_formadd(httppost, last_post,
+ CURLFORM_COPYNAME, name,
+ CURLFORM_ARRAY, forms, CURLFORM_END) != 0) {
warnf(config, "curl_formadd failed!\n");
free(forms);
free(contents);
i++;
info[i].option = CURLFORM_END;
- if (curl_formadd(httppost, last_post,
- CURLFORM_ARRAY, info, CURLFORM_END ) != 0) {
+ if(curl_formadd(httppost, last_post,
+ CURLFORM_ARRAY, info, CURLFORM_END ) != 0) {
warnf(config, "curl_formadd failed, possibly the file %s is bad!\n",
contp+1);
free(contents);
info[i].value = contp;
i++;
info[i].option = CURLFORM_END;
- if (curl_formadd(httppost, last_post,
- CURLFORM_ARRAY, info, CURLFORM_END) != 0) {
+ if(curl_formadd(httppost, last_post,
+ CURLFORM_ARRAY, info, CURLFORM_END) != 0) {
warnf(config, "curl_formadd failed!\n");
free(contents);
return 7;
/* now that GetStr has copied the contents of nextarg, wipe the next
* argument out so that the username:password isn't displayed in the
* system process list */
- if (str) {
+ if(str) {
size_t len = strlen(str);
memset(str, ' ', len);
}
buffer = strdup(str); /* because strtok corrupts it */
- for (token = strtok(buffer, sep);
- token;
- token = strtok(NULL, sep)) {
+ for(token = strtok(buffer, sep);
+ token;
+ token = strtok(NULL, sep)) {
enum e_action { allow, deny, set } action = allow;
struct sprotos const *pp;
/* Process token modifiers */
- while (!ISALNUM(*token)) { /* may be NULL if token is all modifiers */
+ while(!ISALNUM(*token)) { /* may be NULL if token is all modifiers */
switch (*token++) {
case '=':
action = set;
}
}
- for (pp=protos; pp->name; pp++) {
- if (curlx_raw_equal(token, pp->name)) {
+ for(pp=protos; pp->name; pp++) {
+ if(curlx_raw_equal(token, pp->name)) {
switch (action) {
case deny:
*val &= ~(pp->bit);
}
}
- if (!(pp->name)) { /* unknown protocol */
+ if(!(pp->name)) { /* unknown protocol */
/* If they have specified only this protocol, we say treat it as
if no protocols are allowed */
- if (action == set)
+ if(action == set)
*val = 0;
warnf(config, "unrecognized protocol '%s'\n", token);
}
*/
static int str2offset(curl_off_t *val, const char *str)
{
-#if (CURL_SIZEOF_CURL_OFF_T > CURL_SIZEOF_LONG)
+#if(CURL_SIZEOF_CURL_OFF_T > CURL_SIZEOF_LONG)
*val = curlx_strtoofft(str, NULL, 0);
if((*val == CURL_OFF_T_MAX || *val == CURL_OFF_T_MIN) && (ERRNO == ERANGE))
return 1;
#else
*val = strtol(str, NULL, 0);
- if ((*val == LONG_MIN || *val == LONG_MAX) && ERRNO == ERANGE)
+ if((*val == LONG_MIN || *val == LONG_MAX) && ERRNO == ERANGE)
return 1;
#endif
return 0;
/* build a nice-looking prompt */
curlx_msnprintf(prompt, sizeof(prompt),
- "Enter %s password for user '%s':",
- kind, *userpwd);
+ "Enter %s password for user '%s':",
+ kind, *userpwd);
/* get password */
getpass_r(prompt, passwd, sizeof(passwd));
int keepidle = (int)config->alivetime;
#endif
- switch (purpose) {
+ switch(purpose) {
case CURLSOCKTYPE_IPCXN:
if(setsockopt(curlfd, SOL_SOCKET, SO_KEEPALIVE, (void *)&onoff,
sizeof(onoff)) < 0) {
return 0;
}
else {
- if (config->alivetime) {
+ if(config->alivetime) {
#ifdef TCP_KEEPIDLE
if(setsockopt(curlfd, IPPROTO_TCP, TCP_KEEPIDLE, (void *)&keepidle,
sizeof(keepidle)) < 0) {
/* single-letter,
long-name,
boolean whether it takes an additional argument
- */
+ */
static const struct LongShort aliases[]= {
/* all these ones, starting with "*" or "$" as a short-option have *no*
short option to mention. */
config->tracetype = TRACE_ASCII;
break;
case 'i': /* --limit-rate */
- {
- /* We support G, M, K too */
- char *unit;
- curl_off_t value = curlx_strtoofft(nextarg, &unit, 0);
-
- if(!*unit)
- unit=(char *)"b";
- else if(strlen(unit) > 1)
- unit=(char *)"w"; /* unsupported */
-
- switch(*unit) {
- case 'G':
- case 'g':
- value *= 1024*1024*1024;
- break;
- case 'M':
- case 'm':
- value *= 1024*1024;
- break;
- case 'K':
- case 'k':
- value *= 1024;
- break;
- case 'b':
- case 'B':
- /* for plain bytes, leave as-is */
- break;
- default:
- warnf(config, "unsupported rate unit. Use G, M, K or B!\n");
- return PARAM_BAD_USE;
- }
- config->recvpersecond = value;
- config->sendpersecond = value;
+ {
+ /* We support G, M, K too */
+ char *unit;
+ curl_off_t value = curlx_strtoofft(nextarg, &unit, 0);
+
+ if(!*unit)
+ unit=(char *)"b";
+ else if(strlen(unit) > 1)
+ unit=(char *)"w"; /* unsupported */
+
+ switch(*unit) {
+ case 'G':
+ case 'g':
+ value *= 1024*1024*1024;
+ break;
+ case 'M':
+ case 'm':
+ value *= 1024*1024;
+ break;
+ case 'K':
+ case 'k':
+ value *= 1024;
+ break;
+ case 'b':
+ case 'B':
+ /* for plain bytes, leave as-is */
+ break;
+ default:
+ warnf(config, "unsupported rate unit. Use G, M, K or B!\n");
+ return PARAM_BAD_USE;
}
- break;
+ config->recvpersecond = value;
+ config->sendpersecond = value;
+ }
+ break;
case 'j': /* --compressed */
config->encoding = toggle;
}
else
config->errors = stdout;
- break;
+ break;
case 'w': /* --interface */
/* interface */
GetStr(&config->iface, nextarg);
break;
default: /* the URL! */
- {
- struct getout *url;
- if(config->url_get || (config->url_get=config->url_list)) {
- /* there's a node here, if it already is filled-in continue to find
- an "empty" node */
- while(config->url_get && (config->url_get->flags&GETOUT_URL))
- config->url_get = config->url_get->next;
- }
+ {
+ struct getout *url;
+ if(config->url_get || (config->url_get=config->url_list)) {
+ /* there's a node here, if it already is filled-in continue to find
+ an "empty" node */
+ while(config->url_get && (config->url_get->flags&GETOUT_URL))
+ config->url_get = config->url_get->next;
+ }
- /* now there might or might not be an available node to fill in! */
+ /* now there might or might not be an available node to fill in! */
- if(config->url_get)
- /* existing node */
- url = config->url_get;
- else
- /* there was no free node, create one! */
- url=new_getout(config);
+ if(config->url_get)
+ /* existing node */
+ url = config->url_get;
+ else
+ /* there was no free node, create one! */
+ url=new_getout(config);
- if(url) {
- /* fill in the URL */
- GetStr(&url->url, nextarg);
- url->flags |= GETOUT_URL;
- }
+ if(url) {
+ /* fill in the URL */
+ GetStr(&url->url, nextarg);
+ url->flags |= GETOUT_URL;
}
}
+ }
break;
case '$': /* more options without a short option */
switch(subletter) {
case 'y': /* --ftp-ssl-ccc */
config->ftp_ssl_ccc = toggle;
if(!config->ftp_ssl_ccc_mode)
- config->ftp_ssl_ccc_mode = CURLFTPSSL_CCC_PASSIVE;
+ config->ftp_ssl_ccc_mode = CURLFTPSSL_CCC_PASSIVE;
break;
case 'j': /* --ftp-ssl-ccc-mode */
config->ftp_ssl_ccc = TRUE;
break;
case 'd':
/* postfield data */
- {
- char *postdata=NULL;
- FILE *file;
-
- if(subletter == 'e') { /* --data-urlencode*/
- /* [name]=[content], we encode the content part only
- * [name]@[file name]
- *
- * Case 2: we first load the file using that name and then encode
- * the content.
- */
- const char *p = strchr(nextarg, '=');
- size_t size = 0;
- size_t nlen;
- char is_file;
- if(!p)
- /* there was no '=' letter, check for a '@' instead */
- p = strchr(nextarg, '@');
- if (p) {
- nlen = p - nextarg; /* length of the name part */
- is_file = *p++; /* pass the separator */
- }
- else {
- /* neither @ nor =, so no name and it isn't a file */
- nlen = is_file = 0;
- p = nextarg;
- }
- if('@' == is_file) {
- /* a '@' letter, it means that a file name or - (stdin) follows */
-
- if(curlx_strequal("-", p)) {
- file = stdin;
- SET_BINMODE(stdin);
- }
- else {
- file = fopen(p, "rb");
- if(!file)
- warnf(config,
- "Couldn't read data from file \"%s\", this makes "
- "an empty POST.\n", nextarg);
- }
-
- err = file2memory(&postdata, &size, file);
-
- if(file && (file != stdin))
- fclose(file);
- if(err)
- return err;
- }
- else {
- GetStr(&postdata, p);
- size = strlen(postdata);
- }
-
- if(!postdata) {
- /* no data from the file, point to a zero byte string to make this
- get sent as a POST anyway */
- postdata=strdup("");
- }
- else {
- char *enc = curl_easy_escape(config->easy, postdata, (int)size);
- free(postdata); /* no matter if it worked or not */
- if(enc) {
- /* now make a string with the name from above and append the
- encoded string */
- size_t outlen = nlen + strlen(enc) + 2;
- char *n = malloc(outlen);
- if(!n) {
- curl_free(enc);
- return PARAM_NO_MEM;
- }
- if (nlen > 0) /* only append '=' if we have a name */
- snprintf(n, outlen, "%.*s=%s", nlen, nextarg, enc);
- else
- strcpy(n, enc);
- curl_free(enc);
- postdata = n;
- }
- else
- return PARAM_NO_MEM;
- }
+ {
+ char *postdata=NULL;
+ FILE *file;
+
+ if(subletter == 'e') { /* --data-urlencode*/
+ /* [name]=[content], we encode the content part only
+ * [name]@[file name]
+ *
+ * Case 2: we first load the file using that name and then encode
+ * the content.
+ */
+ const char *p = strchr(nextarg, '=');
+ size_t size = 0;
+ size_t nlen;
+ char is_file;
+ if(!p)
+ /* there was no '=' letter, check for a '@' instead */
+ p = strchr(nextarg, '@');
+ if(p) {
+ nlen = p - nextarg; /* length of the name part */
+ is_file = *p++; /* pass the separator */
}
- else if('@' == *nextarg) {
- size_t size = 0;
- /* the data begins with a '@' letter, it means that a file name
- or - (stdin) follows */
- nextarg++; /* pass the @ */
+ else {
+ /* neither @ nor =, so no name and it isn't a file */
+ nlen = is_file = 0;
+ p = nextarg;
+ }
+ if('@' == is_file) {
+ /* a '@' letter, it means that a file name or - (stdin) follows */
- if(curlx_strequal("-", nextarg)) {
+ if(curlx_strequal("-", p)) {
file = stdin;
- if(subletter == 'b') /* forced data-binary */
- SET_BINMODE(stdin);
+ SET_BINMODE(stdin);
}
else {
- file = fopen(nextarg, "rb");
+ file = fopen(p, "rb");
if(!file)
- warnf(config, "Couldn't read data from file \"%s\", this makes "
+ warnf(config,
+ "Couldn't read data from file \"%s\", this makes "
"an empty POST.\n", nextarg);
}
- if(subletter == 'b') {
- /* forced binary */
- err = file2memory(&postdata, &size, file);
- config->postfieldsize = (curl_off_t)size;
- }
- else
- err = file2string(&postdata, file);
+ err = file2memory(&postdata, &size, file);
if(file && (file != stdin))
fclose(file);
if(err)
return err;
+ }
+ else {
+ GetStr(&postdata, p);
+ size = strlen(postdata);
+ }
- if(!postdata) {
- /* no data from the file, point to a zero byte string to make this
- get sent as a POST anyway */
- postdata=strdup("");
+ if(!postdata) {
+ /* no data from the file, point to a zero byte string to make this
+ get sent as a POST anyway */
+ postdata=strdup("");
+ }
+ else {
+ char *enc = curl_easy_escape(config->easy, postdata, (int)size);
+ free(postdata); /* no matter if it worked or not */
+ if(enc) {
+ /* now make a string with the name from above and append the
+ encoded string */
+ size_t outlen = nlen + strlen(enc) + 2;
+ char *n = malloc(outlen);
+ if(!n) {
+ curl_free(enc);
+ return PARAM_NO_MEM;
+ }
+ if(nlen > 0) /* only append '=' if we have a name */
+ snprintf(n, outlen, "%.*s=%s", nlen, nextarg, enc);
+ else
+ strcpy(n, enc);
+ curl_free(enc);
+ postdata = n;
}
+ else
+ return PARAM_NO_MEM;
+ }
+ }
+ else if('@' == *nextarg) {
+ size_t size = 0;
+ /* the data begins with a '@' letter, it means that a file name
+ or - (stdin) follows */
+ nextarg++; /* pass the @ */
+
+ if(curlx_strequal("-", nextarg)) {
+ file = stdin;
+ if(subletter == 'b') /* forced data-binary */
+ SET_BINMODE(stdin);
}
else {
- GetStr(&postdata, nextarg);
+ file = fopen(nextarg, "rb");
+ if(!file)
+ warnf(config, "Couldn't read data from file \"%s\", this makes "
+ "an empty POST.\n", nextarg);
}
-#ifdef CURL_DOES_CONVERSIONS
- if(subletter != 'b') { /* NOT forced binary, convert to ASCII */
- convert_to_network(postdata, strlen(postdata));
+ if(subletter == 'b') {
+ /* forced binary */
+ err = file2memory(&postdata, &size, file);
+ config->postfieldsize = (curl_off_t)size;
}
+ else
+ err = file2string(&postdata, file);
+
+ if(file && (file != stdin))
+ fclose(file);
+ if(err)
+ return err;
+
+ if(!postdata) {
+ /* no data from the file, point to a zero byte string to make this
+ get sent as a POST anyway */
+ postdata=strdup("");
+ }
+ }
+ else {
+ GetStr(&postdata, nextarg);
+ }
+
+#ifdef CURL_DOES_CONVERSIONS
+ if(subletter != 'b') { /* NOT forced binary, convert to ASCII */
+ convert_to_network(postdata, strlen(postdata));
+ }
#endif
- if(config->postfields) {
- /* we already have a string, we append this one
- with a separating &-letter */
- char *oldpost=config->postfields;
- size_t newlen = strlen(oldpost) + strlen(postdata) + 2;
- config->postfields=malloc(newlen);
- if(!config->postfields) {
- free(postdata);
- return PARAM_NO_MEM;
- }
- /* use ASCII value 0x26 for '&' to accommodate non-ASCII platforms */
- snprintf(config->postfields, newlen, "%s\x26%s", oldpost, postdata);
- free(oldpost);
+ if(config->postfields) {
+ /* we already have a string, we append this one
+ with a separating &-letter */
+ char *oldpost=config->postfields;
+ size_t newlen = strlen(oldpost) + strlen(postdata) + 2;
+ config->postfields=malloc(newlen);
+ if(!config->postfields) {
free(postdata);
+ return PARAM_NO_MEM;
}
- else
- config->postfields=postdata;
+ /* use ASCII value 0x26 for '&' to accommodate non-ASCII platforms */
+ snprintf(config->postfields, newlen, "%s\x26%s", oldpost, postdata);
+ free(oldpost);
+ free(postdata);
}
- /*
- We can't set the request type here, as this data might be used in
- a simple GET if -G is used. Already or soon.
+ else
+ config->postfields=postdata;
+ }
+ /*
+ We can't set the request type here, as this data might be used in
+ a simple GET if -G is used. Already or soon.
- if(SetHTTPrequest(HTTPREQ_SIMPLEPOST, &config->httpreq))
- return PARAM_BAD_USE;
- */
- break;
+ if(SetHTTPrequest(HTTPREQ_SIMPLEPOST, &config->httpreq))
+ return PARAM_BAD_USE;
+ */
+ break;
case 'D':
/* dump-header to given file name */
GetStr(&config->headerfile, nextarg);
break;
case 'e':
- {
- char *ptr = strstr(nextarg, ";auto");
- if(ptr) {
- /* Automatic referer requested, this may be combined with a
- set initial one */
- config->autoreferer = TRUE;
- *ptr = 0; /* zero terminate here */
- }
- else
- config->autoreferer = FALSE;
- GetStr(&config->referer, nextarg);
+ {
+ char *ptr = strstr(nextarg, ";auto");
+ if(ptr) {
+ /* Automatic referer requested, this may be combined with a
+ set initial one */
+ config->autoreferer = TRUE;
+ *ptr = 0; /* zero terminate here */
}
- break;
+ else
+ config->autoreferer = FALSE;
+ GetStr(&config->referer, nextarg);
+ }
+ break;
case 'E':
switch(subletter) {
case 'a': /* CA info PEM file */
break;
case 'f': /* crypto engine */
GetStr(&config->engine, nextarg);
- if (config->engine && curlx_raw_equal(config->engine,"list"))
- config->list_engines = TRUE;
+ if(config->engine && curlx_raw_equal(config->engine,"list"))
+ config->list_engines = TRUE;
break;
case 'g': /* CA info PEM file */
/* CA cert directory */
break;
case 'i': /* --hostpubmd5 md5 of the host public key */
GetStr(&config->hostpubmd5, nextarg);
- if (!config->hostpubmd5 || strlen(config->hostpubmd5) != 32)
- return PARAM_BAD_USE;
+ if(!config->hostpubmd5 || strlen(config->hostpubmd5) != 32)
+ return PARAM_BAD_USE;
break;
case 'j': /* CRL info PEM file */
/* CRL file */
GetStr(&config->crlfile, nextarg);
break;
default: /* certificate file */
- {
- char *ptr = strchr(nextarg, ':');
- /* Since we live in a world of weirdness and confusion, the win32
- dudes can use : when using drive letters and thus
- c:\file:password needs to work. In order not to break
- compatibility, we still use : as separator, but we try to detect
- when it is used for a file name! On windows. */
+ {
+ char *ptr = strchr(nextarg, ':');
+ /* Since we live in a world of weirdness and confusion, the win32
+ dudes can use : when using drive letters and thus
+ c:\file:password needs to work. In order not to break
+ compatibility, we still use : as separator, but we try to detect
+ when it is used for a file name! On windows. */
#ifdef WIN32
- if(ptr &&
- (ptr == &nextarg[1]) &&
- (nextarg[2] == '\\' || nextarg[2] == '/') &&
- (ISALPHA(nextarg[0])) )
- /* colon in the second column, followed by a backslash, and the
- first character is an alphabetic letter:
-
- this is a drive letter colon */
- ptr = strchr(&nextarg[3], ':'); /* find the next one instead */
+ if(ptr &&
+ (ptr == &nextarg[1]) &&
+ (nextarg[2] == '\\' || nextarg[2] == '/') &&
+ (ISALPHA(nextarg[0])) )
+ /* colon in the second column, followed by a backslash, and the
+ first character is an alphabetic letter:
+
+ this is a drive letter colon */
+ ptr = strchr(&nextarg[3], ':'); /* find the next one instead */
#endif
- if(ptr) {
- /* we have a password too */
- *ptr=0;
- ptr++;
- GetStr(&config->key_passwd, ptr);
- }
- GetStr(&config->cert, nextarg);
- cleanarg(nextarg);
+ if(ptr) {
+ /* we have a password too */
+ *ptr=0;
+ ptr++;
+ GetStr(&config->key_passwd, ptr);
}
+ GetStr(&config->cert, nextarg);
+ cleanarg(nextarg);
+ }
}
break;
case 'f':
return PARAM_BAD_USE;
break;
case 'J': /* --remote-header-name */
- if (config->include_headers) {
+ if(config->include_headers) {
warnf(config,
"--include and --remote-header-name cannot be combined.\n");
return PARAM_BAD_USE;
config->default_node_flags = toggle?GETOUT_USEREMOTE:0;
break;
}
- /* fall-through! */
+ /* fall-through! */
case 'o': /* --output */
/* output file */
- {
- struct getout *url;
- if(config->url_out || (config->url_out=config->url_list)) {
- /* there's a node here, if it already is filled-in continue to find
- an "empty" node */
- while(config->url_out && (config->url_out->flags&GETOUT_OUTFILE))
- config->url_out = config->url_out->next;
- }
-
- /* now there might or might not be an available node to fill in! */
+ {
+ struct getout *url;
+ if(config->url_out || (config->url_out=config->url_list)) {
+ /* there's a node here, if it already is filled-in continue to find
+ an "empty" node */
+ while(config->url_out && (config->url_out->flags&GETOUT_OUTFILE))
+ config->url_out = config->url_out->next;
+ }
- if(config->url_out)
- /* existing node */
- url = config->url_out;
- else
- /* there was no free node, create one! */
- url=new_getout(config);
+ /* now there might or might not be an available node to fill in! */
- if(url) {
- /* fill in the outfile */
- if('o' == letter) {
- GetStr(&url->outfile, nextarg);
+ if(config->url_out)
+ /* existing node */
+ url = config->url_out;
+ else
+ /* there was no free node, create one! */
+ url=new_getout(config);
+
+ if(url) {
+ /* fill in the outfile */
+ if('o' == letter) {
+ GetStr(&url->outfile, nextarg);
+ url->flags &= ~GETOUT_USEREMOTE; /* switch off */
+ }
+ else {
+ url->outfile=NULL; /* leave it */
+ if(toggle)
+ url->flags |= GETOUT_USEREMOTE; /* switch on */
+ else
url->flags &= ~GETOUT_USEREMOTE; /* switch off */
- }
- else {
- url->outfile=NULL; /* leave it */
- if(toggle)
- url->flags |= GETOUT_USEREMOTE; /* switch on */
- else
- url->flags &= ~GETOUT_USEREMOTE; /* switch off */
- }
- url->flags |= GETOUT_OUTFILE;
}
+ url->flags |= GETOUT_OUTFILE;
}
- break;
+ }
+ break;
case 'P':
/* This makes the FTP sessions use PORT instead of PASV */
/* use <eth0> or <192.168.10.10> style addresses. Anything except
this will make us try to get the "default" address.
NOTE: this is a changed behaviour since the released 4.1!
- */
+ */
GetStr(&config->ftpport, nextarg);
break;
case 'p':
break;
case 'T':
/* we are uploading */
- {
- struct getout *url;
- if(config->url_out || (config->url_out=config->url_list)) {
- /* there's a node here, if it already is filled-in continue to find
- an "empty" node */
- while(config->url_out && (config->url_out->flags&GETOUT_UPLOAD))
- config->url_out = config->url_out->next;
- }
+ {
+ struct getout *url;
+ if(config->url_out || (config->url_out=config->url_list)) {
+ /* there's a node here, if it already is filled-in continue to find
+ an "empty" node */
+ while(config->url_out && (config->url_out->flags&GETOUT_UPLOAD))
+ config->url_out = config->url_out->next;
+ }
- /* now there might or might not be an available node to fill in! */
+ /* now there might or might not be an available node to fill in! */
- if(config->url_out)
- /* existing node */
- url = config->url_out;
- else
- /* there was no free node, create one! */
- url=new_getout(config);
+ if(config->url_out)
+ /* existing node */
+ url = config->url_out;
+ else
+ /* there was no free node, create one! */
+ url=new_getout(config);
- if(url) {
- url->flags |= GETOUT_UPLOAD; /* mark -T used */
- if(!*nextarg)
- url->flags |= GETOUT_NOUPLOAD;
- else {
- /* "-" equals stdin, but keep the string around for now */
- GetStr(&url->infile, nextarg);
- }
+ if(url) {
+ url->flags |= GETOUT_UPLOAD; /* mark -T used */
+ if(!*nextarg)
+ url->flags |= GETOUT_NOUPLOAD;
+ else {
+ /* "-" equals stdin, but keep the string around for now */
+ GetStr(&url->infile, nextarg);
}
}
- break;
+ }
+ break;
case 'u':
/* user:password */
GetStr(&config->userpwd, nextarg);
break;
printf(CURL_ID "%s\n", curl_version());
- if (curlinfo->protocols) {
+ if(curlinfo->protocols) {
printf("Protocols: ");
- for (proto=curlinfo->protocols; *proto; ++proto) {
+ for(proto=curlinfo->protocols; *proto; ++proto) {
printf("%s ", *proto);
}
puts(""); /* newline */
* directory as our executable
*/
file = fopen(filebuffer, "r");
- if (file != NULL) {
+ if(file != NULL) {
fclose(file);
filename = filebuffer;
}
* We assume that we are using the ASCII version here.
*/
int n = GetModuleFileName(0, filebuffer, sizeof(filebuffer));
- if (n > 0 && n < (int)sizeof(filebuffer)) {
+ if(n > 0 && n < (int)sizeof(filebuffer)) {
/* We got a valid filename - get the directory part */
char *lastdirchar = strrchr(filebuffer, '\\');
- if (lastdirchar) {
+ if(lastdirchar) {
size_t remaining;
*lastdirchar = 0;
/* If we have enough space, build the RC filename */
remaining = sizeof(filebuffer) - strlen(filebuffer);
- if (strlen(CURLRC) < remaining - 1) {
+ if(strlen(CURLRC) < remaining - 1) {
snprintf(lastdirchar, remaining,
"%s%s", DIR_CHAR, CURLRC);
/* Don't bother checking if it exists - we do
}
# else /* __AMIGA__ */
- /* On AmigaOS all the config files are into env:
- */
- filename = "ENV:" CURLRC;
+ /* On AmigaOS all the config files are into env:
+ */
+ filename = "ENV:" CURLRC;
#endif
}
#define ISSEP(x) (((x)=='=') || ((x) == ':'))
- while (NULL != (aline = my_get_line(file))) {
+ while(NULL != (aline = my_get_line(file))) {
lineno++;
line = aline;
alloced_param=FALSE;
/* quoted parameter, do the quote dance */
line++;
param=malloc(strlen(line)+1); /* parameter */
- if (!param) {
+ if(!param) {
/* out of memory */
free(aline);
rc = 1;
*line=0; /* zero terminate */
}
- if (param && !*param) {
+ if(param && !*param) {
/* do this so getparameter can check for required parameters.
Otherwise it always thinks there's a parameter. */
- if (alloced_param)
+ if(alloced_param)
free(param);
param = NULL;
}
#endif
res = getparameter(option, param, &usedarg, config);
- if (param && *param && !usedarg)
+ if(param && *param && !usedarg)
/* we passed in a parameter that wasn't used! */
res = PARAM_GOT_EXTRA_PARAMETER;
if(!out->stream) {
out->bytes = 0; /* nothing written yet */
- if (!out->filename) {
+ if(!out->filename) {
warnf(config, "Remote filename has no length!\n");
return err_rc; /* Failure */
}
- if (config->content_disposition) {
+ if(config->content_disposition) {
/* don't overwrite existing files */
FILE* f = fopen(out->filename, "r");
- if (f) {
+ if(f) {
fclose(f);
warnf(config, "Refusing to overwrite %s: %s\n", out->filename,
strerror(EEXIST));
{
struct InStruct *in=(struct InStruct *)stream;
-#if (CURL_SIZEOF_CURL_OFF_T > SIZEOF_OFF_T) && !defined(USE_WIN32_LARGE_FILES)
+#if(CURL_SIZEOF_CURL_OFF_T > SIZEOF_OFF_T) && !defined(USE_WIN32_LARGE_FILES)
/* The offset check following here is only interesting if curl_off_t is
larger than off_t and we are not using the WIN32 large file support
macros that provide the support to do 64bit seeks correctly */
if(total < 1) {
curl_off_t prevblock = bar->prev / 1024;
curl_off_t thisblock = point / 1024;
- while ( thisblock > prevblock ) {
+ while( thisblock > prevblock ) {
fprintf( bar->out, "#" );
prevblock++;
}
percent = frac * 100.0f;
barwidth = bar->width - 7;
num = (int) (((double)barwidth) * frac);
- for ( i = 0; i < num; i++ ) {
+ for( i = 0; i < num; i++ ) {
line[i] = '#';
}
line[i] = '\0';
/* pass this through to progress function so
* it can display progress towards total file
* not just the part that's left. (21-may-03, dbyron) */
- if (config->use_resume)
+ if(config->use_resume)
bar->initial_size = config->resume_from;
/* TODO: get terminal width through ansi escapes or something similar.
- try to update width when xterm is resized... - 19990617 larsa */
+ try to update width when xterm is resized... - 19990617 larsa */
#ifndef __EMX__
/* 20000318 mgs
* OS/2 users most likely won't have this env var set, and besides that
* we're using our own way to determine screen width */
colp = curlx_getenv("COLUMNS");
- if (colp != NULL) {
+ if(colp != NULL) {
bar->width = atoi(colp);
curl_free(colp);
}
for(c = 0; (c < width) && (i+c < size); c++) {
/* check for 0D0A; if found, skip past and start a new line of output */
- if ((tracetype == TRACE_ASCII) &&
- (i+c+1 < size) && ptr[i+c]==0x0D && ptr[i+c+1]==0x0A) {
+ if((tracetype == TRACE_ASCII) &&
+ (i+c+1 < size) && ptr[i+c]==0x0D && ptr[i+c+1]==0x0A) {
i+=(c+2-width);
break;
}
#ifdef CURL_DOES_CONVERSIONS
/* repeat the 0D0A check above but use the host encoding for CRLF */
- if ((tracetype == TRACE_ASCII) &&
- (i+c+1 < size) && ptr[i+c]=='\r' && ptr[i+c+1]=='\n') {
+ if((tracetype == TRACE_ASCII) &&
+ (i+c+1 < size) && ptr[i+c]=='\r' && ptr[i+c+1]=='\n') {
i+=(c+2-width);
break;
}
(ptr[i+c]>=0x20) && (ptr[i+c]<0x80)?ptr[i+c]:UNPRINTABLE_CHAR);
#endif /* CURL_DOES_CONVERSIONS */
/* check again for 0D0A, to avoid an extra \n if it's at width */
- if ((tracetype == TRACE_ASCII) &&
- (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
+ if((tracetype == TRACE_ASCII) &&
+ (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
i+=(c+3-width);
break;
}
free(config->writeout);
if(config->httppost)
curl_formfree(config->httppost);
- if (config->cert)
+ if(config->cert)
free(config->cert);
if(config->cacert)
free(config->cacert);
- if (config->cert_type)
+ if(config->cert_type)
free(config->cert_type);
if(config->capath)
free(config->capath);
free(config->socksproxy);
if(config->libcurl)
free(config->libcurl);
- if (config->key_passwd)
+ if(config->key_passwd)
free(config->key_passwd);
- if (config->key)
+ if(config->key)
free(config->key);
- if (config->key_type)
+ if(config->key_type)
free(config->key_type);
- if (config->pubkey)
+ if(config->pubkey)
free(config->pubkey);
- if (config->referer)
+ if(config->referer)
free(config->referer);
- if (config->hostpubmd5)
+ if(config->hostpubmd5)
free(config->hostpubmd5);
if(config->mail_from)
free(config->mail_from);
DWORD buflen;
char *ptr = NULL;
char *retval = malloc(sizeof (TCHAR) * (MAX_PATH + 1));
- if (!retval)
+ if(!retval)
return;
retval[0] = '\0';
buflen = SearchPathA(NULL, bundle_file, NULL, MAX_PATH+2, retval, &ptr);
- if (buflen > 0) {
+ if(buflen > 0) {
GetStr(&config->cacert, retval);
}
free(retval);
unsigned char *ptr = (unsigned char *)pval;
/* function pointers are never printable */
- if (tag >= CURLOPTTYPE_FUNCTIONPOINT) {
- if (pval) {
+ if(tag >= CURLOPTTYPE_FUNCTIONPOINT) {
+ if(pval) {
strcpy(value, "functionpointer"); /* 'value' fits 256 bytes */
remark = TRUE;
}
else
bufp = curlx_maprintf("curl_easy_setopt(hnd, %s, %s);", name, value);
- if (!bufp)
+ if(!bufp)
ret = CURLE_OUT_OF_MEMORY;
else {
struct curl_slist *list =
else
easycode = list;
}
- if (bufp)
+ if(bufp)
curl_free(bufp);
}
va_end(arg);
/* simple implementation of strndup() */
copy = malloc(len+1);
- if (!copy)
+ if(!copy)
return NULL;
strncpy(copy, ptr, len);
copy[len] = 0;
p = copy;
- if (*p == '\'' || *p == '"') {
+ if(*p == '\'' || *p == '"') {
/* store the starting quote */
quote = *p;
p++;
/* if the filename contains a path, only use filename portion */
q = strrchr(copy, '/');
- if (q) {
+ if(q) {
p=q+1;
- if (!*p) {
+ if(!*p) {
free(copy);
return NULL;
}
/* if the file name started with a quote, then scan for the end quote and
stop there */
q = strrchr(p, quote);
- if (q)
+ if(q)
*q = 0;
}
else
*q = 0;
}
- if (copy!=p)
+ if(copy!=p)
memmove(copy, p, strlen(p)+1);
return copy;
const char* end = (char*)ptr + cb;
size_t len;
- if (cb > 20 && checkprefix("Content-disposition:", str)) {
+ if(cb > 20 && checkprefix("Content-disposition:", str)) {
char *p = (char*)str + 20;
/* look for the 'filename=' parameter
char *filename;
char *semi;
- while (*p && (p < end) && !ISALPHA(*p))
+ while(*p && (p < end) && !ISALPHA(*p))
p++;
- if (p > end-9)
+ if(p > end-9)
break;
- if (memcmp(p, "filename=", 9)) {
+ if(memcmp(p, "filename=", 9)) {
/* no match, find next parameter */
- while ((p < end) && (*p != ';'))
+ while((p < end) && (*p != ';'))
p++;
continue;
}
*/
len = semi ? (semi - p) : (ssize_t)cb - (p - str);
filename = parse_filename(p, len);
- if (filename) {
+ if(filename) {
outs->filename = filename;
break;
}
/* Initialize curl library - do not call any libcurl functions before.
Note that the CURLDEBUG magic above is an exception, but then that's not
part of the official public API.
- */
- if (main_init() != CURLE_OK) {
+ */
+ if(main_init() != CURLE_OK) {
helpf(config->errors, "error initializing curl library\n");
return CURLE_FAILED_INIT;
}
parseconfig(NULL, config); /* ignore possible failure */
}
- if ((argc < 2) && !config->url_list) {
+ if((argc < 2) && !config->url_list) {
helpf(config->errors, NULL);
return CURLE_FAILED_INIT;
}
/* Parse options */
- for (i = 1; i < argc; i++) {
+ for(i = 1; i < argc; i++) {
if(stillflags &&
('-' == argv[i][0])) {
char *nextarg;
* We support the environment variable thing for non-Windows platforms
* too. Just for the sake of it.
*/
- if (!config->cacert &&
- !config->capath &&
- !config->insecure_ok) {
+ if(!config->cacert &&
+ !config->capath &&
+ !config->insecure_ok) {
env = curlx_getenv("CURL_CA_BUNDLE");
if(env)
GetStr(&config->cacert, env);
#endif
}
- if (config->postfields) {
- if (config->use_httpget) {
+ if(config->postfields) {
+ if(config->use_httpget) {
/* Use the postfields data for a http get */
httpgetfields = strdup(config->postfields);
free(config->postfields);
goto quit_curl;
}
- if (config->list_engines) {
+ if(config->list_engines) {
struct curl_slist *engines = NULL;
curl_easy_getinfo(curl, CURLINFO_SSL_ENGINES, &engines);
outs.bytes = 0; /* nothing written yet */
/* save outfile pattern before expansion */
- if (urlnode->outfile) {
+ if(urlnode->outfile) {
outfiles = strdup(urlnode->outfile);
- if (!outfiles) {
+ if(!outfiles) {
clean_getout(config);
break;
}
(url = urls?glob_next_url(urls):(i?NULL:strdup(url)));
i++) {
/* NOTE: In the condition expression in the for() statement above, the
- 'url' variable is only ever strdup()ed if (i == 0) and thus never
+ 'url' variable is only ever strdup()ed if(i == 0) and thus never
when this loops later on. Further down in this function we call
free(url) and then the code loops. Static code parsers may thus get
tricked into believing that we have a potential access-after-free
}
#if defined(MSDOS) || defined(WIN32)
/* For DOS and WIN32, we do some major replacing of
- bad characters in the file name before using it */
+ bad characters in the file name before using it */
outfile = sanitize_dos_name(outfile);
if(!outfile) {
res = CURLE_OUT_OF_MEMORY;
outs.init = config->resume_from;
/* open file for output: */
outs.stream=(FILE *) fopen(outfile, config->resume_from?"ab":"wb");
- if (!outs.stream) {
+ if(!outs.stream) {
helpf(config->errors, "Can't open '%s'!\n", outfile);
free(url);
res = CURLE_WRITE_ERROR;
*/
infd= open(uploadfile, O_RDONLY | O_BINARY);
- if ((infd == -1) || fstat(infd, &fileinfo)) {
+ if((infd == -1) || fstat(infd, &fileinfo)) {
helpf(config->errors, "Can't open '%s'!\n", uploadfile);
if(infd != -1)
close(infd);
SET_BINMODE(stdin);
infd = STDIN_FILENO;
- if (curlx_strequal(uploadfile, ".")) {
- if (curlx_nonblock((curl_socket_t)infd, TRUE) < 0)
+ if(curlx_strequal(uploadfile, ".")) {
+ if(curlx_nonblock((curl_socket_t)infd, TRUE) < 0)
warnf(config,
"fcntl failed on fd=%d: %s\n", infd, strerror(errno));
}
meter */
config->noprogress = config->isatty = TRUE;
- if (urlnum > 1 && !(config->mute)) {
+ if(urlnum > 1 && !(config->mute)) {
fprintf(config->errors, "\n[%d/%d]: %s --> %s\n",
i+1, urlnum, url, outfile ? outfile : "<stdout>");
- if (separator)
+ if(separator)
printf("%s%s\n", CURLseparator, url);
}
- if (httpgetfields) {
+ if(httpgetfields) {
char *urlbuffer;
/* Find out whether the url contains a file name */
const char *pc =strstr(url, "://");
res = CURLE_OUT_OF_MEMORY;
goto quit_urls;
}
- if (pc)
+ if(pc)
sprintf(urlbuffer, "%s%c%s", url, sep, httpgetfields);
else
/* Append / before the ? to create a well-formed url
input.config = config;
my_setopt(curl, CURLOPT_READDATA, &input);
/* what call to read */
- if ((outfile && !curlx_strequal("-", outfile)) ||
- !checkprefix("telnet:", url))
+ if((outfile && !curlx_strequal("-", outfile)) ||
+ !checkprefix("telnet:", url))
my_setopt(curl, CURLOPT_READFUNCTION, my_fread);
/* in 7.18.0, the CURLOPT_SEEKFUNCTION/DATA pair is taking over what
my_setopt(curl, CURLOPT_DIRLISTONLY, config->dirlistonly);
my_setopt(curl, CURLOPT_APPEND, config->ftp_append);
- if (config->netrc_opt)
+ if(config->netrc_opt)
my_setopt(curl, CURLOPT_NETRC, CURL_NETRC_OPTIONAL);
- else if (config->netrc)
+ else if(config->netrc)
my_setopt(curl, CURLOPT_NETRC, CURL_NETRC_REQUIRED);
else
my_setopt(curl, CURLOPT_NETRC, CURL_NETRC_IGNORED);
/* default to strict verifyhost */
/* my_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2); */
if(config->cacert || config->capath) {
- if (config->cacert)
+ if(config->cacert)
my_setopt_str(curl, CURLOPT_CAINFO, config->cacert);
- if (config->capath)
+ if(config->capath)
my_setopt_str(curl, CURLOPT_CAPATH, config->capath);
my_setopt(curl, CURLOPT_SSL_VERIFYPEER, TRUE);
}
- if (config->crlfile)
+ if(config->crlfile)
my_setopt_str(curl, CURLOPT_CRLFILE, config->crlfile);
if(config->insecure_ok) {
/* new stuff needed for libcurl 7.10 */
res = CURLE_OK;
/* new in curl ?? */
- if (config->engine) {
+ if(config->engine) {
res = my_setopt_str(curl, CURLOPT_SSLENGINE, config->engine);
my_setopt(curl, CURLOPT_SSLENGINE_DEFAULT, 1);
}
- if (res != CURLE_OK)
- goto show_error;
+ if(res != CURLE_OK)
+ goto show_error;
/* new in curl 7.10 */
my_setopt_str(curl, CURLOPT_ENCODING,
- (config->encoding) ? "" : NULL);
+ (config->encoding) ? "" : NULL);
/* new in curl 7.10.7, extended in 7.19.4 but this only sets 0 or 1 */
my_setopt(curl, CURLOPT_FTP_CREATE_MISSING_DIRS,
/* new in curl 7.10.8 */
if(config->max_filesize)
my_setopt(curl, CURLOPT_MAXFILESIZE_LARGE,
- config->max_filesize);
+ config->max_filesize);
if(4 == config->ip_version)
my_setopt(curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
/* new in curl 7.16.1 */
if(config->ftp_ssl_ccc)
- my_setopt(curl, CURLOPT_FTP_SSL_CCC, config->ftp_ssl_ccc_mode);
+ my_setopt(curl, CURLOPT_FTP_SSL_CCC, config->ftp_ssl_ccc_mode);
/* new in curl 7.11.1, modified in 7.15.2 */
if(config->socksproxy) {
/* new in curl 7.19.4 */
if(config->socks5_gssapi_service)
my_setopt_str(curl, CURLOPT_SOCKS5_GSSAPI_SERVICE,
- config->socks5_gssapi_service);
+ config->socks5_gssapi_service);
/* new in curl 7.19.4 */
if(config->socks5_gssapi_nec)
if(config->localport) {
my_setopt(curl, CURLOPT_LOCALPORT, config->localport);
my_setopt_str(curl, CURLOPT_LOCALPORTRANGE,
- config->localportrange);
+ config->localportrange);
}
/* curl 7.15.5 */
my_setopt_str(curl, CURLOPT_FTP_ALTERNATIVE_TO_USER,
- config->ftp_alternative_to_user);
+ config->ftp_alternative_to_user);
/* curl 7.16.0 */
if(config->disable_sessionid)
}
/* curl 7.17.1 */
- if (!config->nokeepalive) {
+ if(!config->nokeepalive) {
my_setopt(curl, CURLOPT_SOCKOPTFUNCTION, sockoptcallback);
my_setopt(curl, CURLOPT_SOCKOPTDATA, config);
}
if(config->ftp_pret)
my_setopt(curl, CURLOPT_FTP_USE_PRET, TRUE);
- if (config->proto_present)
+ if(config->proto_present)
my_setopt(curl, CURLOPT_PROTOCOLS, config->proto);
- if (config->proto_redir_present)
+ if(config->proto_redir_present)
my_setopt(curl, CURLOPT_REDIR_PROTOCOLS, config->proto_redir);
- if ((urlnode->flags & GETOUT_USEREMOTE)
- && config->content_disposition) {
+ if((urlnode->flags & GETOUT_USEREMOTE)
+ && config->content_disposition) {
my_setopt(curl, CURLOPT_HEADERFUNCTION, header_callback);
my_setopt(curl, CURLOPT_HEADERDATA, &outs);
}
for(;;) {
res = curl_easy_perform(curl);
- if (!curl_slist_append(easycode, "ret = curl_easy_perform(hnd);")) {
+ if(!curl_slist_append(easycode, "ret = curl_easy_perform(hnd);")) {
res = CURLE_OUT_OF_MEMORY;
break;
}
if(config->writeout)
ourWriteOut(curl, config->writeout);
#ifdef USE_ENVIRONMENT
- if (config->writeenv)
+ if(config->writeenv)
ourWriteEnv(curl);
#endif
-show_error:
+ show_error:
#ifdef __VMS
if(is_vms_shell()) {
errorbuffer[0]? errorbuffer:
curl_easy_strerror((CURLcode)res));
if(CURLE_SSL_CACERT == res) {
-#define CURL_CA_CERT_ERRORMSG1 \
-"More details here: http://curl.haxx.se/docs/sslcerts.html\n\n" \
-"curl performs SSL certificate verification by default, using a \"bundle\"\n" \
-" of Certificate Authority (CA) public keys (CA certs). If the default\n" \
-" bundle file isn't adequate, you can specify an alternate file\n" \
-" using the --cacert option.\n"
-
-#define CURL_CA_CERT_ERRORMSG2 \
-"If this HTTPS server uses a certificate signed by a CA represented in\n" \
-" the bundle, the certificate verification probably failed due to a\n" \
-" problem with the certificate (it might be expired, or the name might\n" \
-" not match the domain name in the URL).\n" \
-"If you'd like to turn off curl's verification of the certificate, use\n" \
-" the -k (or --insecure) option.\n"
+#define CURL_CA_CERT_ERRORMSG1 \
+ "More details here: http://curl.haxx.se/docs/sslcerts.html\n\n" \
+ "curl performs SSL certificate verification by default, using a \"bundle\"\n" \
+ " of Certificate Authority (CA) public keys (CA certs). If the default\n" \
+ " bundle file isn't adequate, you can specify an alternate file\n" \
+ " using the --cacert option.\n"
+
+#define CURL_CA_CERT_ERRORMSG2 \
+ "If this HTTPS server uses a certificate signed by a CA represented in\n" \
+ " the bundle, the certificate verification probably failed due to a\n" \
+ " problem with the certificate (it might be expired, or the name might\n" \
+ " not match the domain name in the URL).\n" \
+ "If you'd like to turn off curl's verification of the certificate, use\n" \
+ " the -k (or --insecure) option.\n"
fprintf(config->errors, "%s%s",
CURL_CA_CERT_ERRORMSG1,
}
}
- if (outfile && !curlx_strequal(outfile, "-") && outs.stream) {
+ if(outfile && !curlx_strequal(outfile, "-") && outs.stream) {
int rc = fclose(outs.stream);
if(!res && rc) {
/* something went wrong in the writing process */
SetComment( outs.filename, url);
#endif
-quit_urls:
+ quit_urls:
if(url)
free(url);
} /* while-loop through all URLs */
-quit_curl:
- if (httpgetfields)
+ quit_curl:
+ if(httpgetfields)
free(httpgetfields);
- if (config->engine)
+ if(config->engine)
free(config->engine);
/* cleanup the curl handle! */
curl_easy_cleanup(curl);
config->easy = NULL; /* cleanup now */
- if (easycode)
+ if(easycode)
curl_slist_append(easycode, "curl_easy_cleanup(hnd);");
if(heads.stream && (heads.stream != stdout))
fd[1] == STDIN_FILENO ||
fd[1] == STDOUT_FILENO ||
fd[1] == STDERR_FILENO )
- if (pipe(fd) < 0)
+ if(pipe(fd) < 0)
return; /* Out of handles. This isn't really a big problem now, but
will be when we try to create a socket later. */
close(fd[0]);
res = operate(&config, argc, argv);
#ifdef __SYMBIAN32__
- if (config.showerror)
+ if(config.showerror)
pressanykey();
#endif
free_config_fields(&config);
#ifdef __NOVELL_LIBC__
- if (getenv("_IN_NETWARE_BASH_") == NULL)
+ if(getenv("_IN_NETWARE_BASH_") == NULL)
pressanykey();
#endif
#ifdef __VMS
*/
static char *my_get_line(FILE *fp)
{
- char buf[4096];
- char *nl = NULL;
- char *retval = NULL;
-
- do {
- if (NULL == fgets(buf, sizeof(buf), fp))
- break;
- if (NULL == retval) {
- retval = strdup(buf);
- if(!retval)
- return NULL;
- }
- else {
- char *ptr;
- ptr = realloc(retval, strlen(retval) + strlen(buf) + 1);
- if (NULL == ptr) {
- free(retval);
- return NULL;
- }
- retval = ptr;
- strcat(retval, buf);
- }
- }
- while (NULL == (nl = strchr(retval, '\n')));
-
- if (NULL != nl)
- *nl = '\0';
-
- return retval;
+ char buf[4096];
+ char *nl = NULL;
+ char *retval = NULL;
+
+ do {
+ if(NULL == fgets(buf, sizeof(buf), fp))
+ break;
+ if(NULL == retval) {
+ retval = strdup(buf);
+ if(!retval)
+ return NULL;
+ }
+ else {
+ char *ptr;
+ ptr = realloc(retval, strlen(retval) + strlen(buf) + 1);
+ if(NULL == ptr) {
+ free(retval);
+ return NULL;
+ }
+ retval = ptr;
+ strcat(retval, buf);
+ }
+ }
+ while(NULL == (nl = strchr(retval, '\n')));
+
+ if(NULL != nl)
+ *nl = '\0';
+
+ return retval;
}
static void show_dir_errno(FILE *errors, const char *name)
tempdir = strtok(outdup, DIR_CHAR);
- while (tempdir != NULL) {
+ while(tempdir != NULL) {
tempdir2 = strtok(NULL, DIR_CHAR);
/* since strtok returns a token for the last word even
if not ending with DIR_CHAR, we need to prune it */
- if (tempdir2 != NULL) {
+ if(tempdir2 != NULL) {
size_t dlen = strlen(dirbuildup);
- if (dlen)
+ if(dlen)
sprintf(&dirbuildup[dlen], "%s%s", DIR_CHAR, tempdir);
else {
- if (0 != strncmp(outdup, DIR_CHAR, 1))
+ if(0 != strncmp(outdup, DIR_CHAR, 1))
strcpy(dirbuildup, tempdir);
else
sprintf(dirbuildup, "%s%s", DIR_CHAR, tempdir);
}
- if (access(dirbuildup, F_OK) == -1) {
+ if(access(dirbuildup, F_OK) == -1) {
result = mkdir(dirbuildup,(mode_t)0000750);
- if (-1 == result) {
+ if(-1 == result) {
show_dir_errno(errors, dirbuildup);
break; /* get out of loop */
}
{
static char dos_name[PATH_MAX];
static const char illegal_chars_dos[] = ".+, ;=[]" /* illegal in DOS */
- "|<>\\\":?*"; /* illegal in DOS & W95 */
+ "|<>\\\":?*"; /* illegal in DOS & W95 */
static const char *illegal_chars_w95 = &illegal_chars_dos[8];
int idx, dot_idx;
const char *s = file_name;
size_t len = sizeof (illegal_chars_dos) - 1;
/* Support for Windows 9X VFAT systems, when available. */
- if (_use_lfn (file_name)) {
+ if(_use_lfn (file_name)) {
illegal_aliens = illegal_chars_w95;
len -= (illegal_chars_w95 - illegal_chars_dos);
}
/* Get past the drive letter, if any. */
- if (s[0] >= 'A' && s[0] <= 'z' && s[1] == ':') {
+ if(s[0] >= 'A' && s[0] <= 'z' && s[1] == ':') {
*d++ = *s++;
*d++ = *s++;
}
- for (idx = 0, dot_idx = -1; *s && d < dlimit; s++, d++) {
- if (memchr (illegal_aliens, *s, len)) {
+ for(idx = 0, dot_idx = -1; *s && d < dlimit; s++, d++) {
+ if(memchr (illegal_aliens, *s, len)) {
/* Dots are special: DOS doesn't allow them as the leading character,
and a file name cannot have more than a single dot. We leave the
first non-leading dot alone, unless it comes too close to the
beginning of the name: we want sh.lex.c to become sh_lex.c, not
sh.lex-c. */
- if (*s == '.') {
- if (idx == 0 && (s[1] == '/' || (s[1] == '.' && s[2] == '/'))) {
+ if(*s == '.') {
+ if(idx == 0 && (s[1] == '/' || (s[1] == '.' && s[2] == '/'))) {
/* Copy "./" and "../" verbatim. */
*d++ = *s++;
- if (*s == '.')
+ if(*s == '.')
*d++ = *s++;
*d = *s;
}
- else if (idx == 0)
+ else if(idx == 0)
*d = '_';
- else if (dot_idx >= 0) {
- if (dot_idx < 5) { /* 5 is a heuristic ad-hoc'ery */
+ else if(dot_idx >= 0) {
+ if(dot_idx < 5) { /* 5 is a heuristic ad-hoc'ery */
d[dot_idx - idx] = '_'; /* replace previous dot */
*d = '.';
}
else
*d = '.';
- if (*s == '.')
+ if(*s == '.')
dot_idx = idx;
}
- else if (*s == '+' && s[1] == '+') {
- if (idx - 2 == dot_idx) { /* .c++, .h++ etc. */
+ else if(*s == '+' && s[1] == '+') {
+ if(idx - 2 == dot_idx) { /* .c++, .h++ etc. */
*d++ = 'x';
*d = 'x';
}
}
else
*d = *s;
- if (*s == '/') {
+ if(*s == '/') {
idx = 0;
dot_idx = -1;
}
strncpy(fname, file_name, PATH_MAX-1);
fname[PATH_MAX-1] = 0;
base = basename(fname);
- if (((stat(base, &st_buf)) == 0) && (S_ISCHR(st_buf.st_mode))) {
+ if(((stat(base, &st_buf)) == 0) && (S_ISCHR(st_buf.st_mode))) {
size_t blen = strlen (base);
- if (strlen(fname) >= PATH_MAX-1) {
+ if(strlen(fname) >= PATH_MAX-1) {
/* Make room for the '_' */
blen--;
base[blen] = 0;