X-Git-Url: http://sjero.net/git/?p=wget;a=blobdiff_plain;f=src%2Finit.c;h=d3d0f9b3efba8c33a7e74fdcbeb00961fab58829;hp=e17510c32a81f5056249d830e2f964c380e59f94;hb=e911bc29434b7da90446d2ca5304106724d05680;hpb=082d2a5ab7da174e13371758bb872c70214cedda diff --git a/src/init.c b/src/init.c index e17510c3..d3d0f9b3 100644 --- a/src/init.c +++ b/src/init.c @@ -30,16 +30,11 @@ so, delete this exception statement from your version. */ #include #include -#include #include #ifdef HAVE_UNISTD_H # include #endif -#ifdef HAVE_STRING_H -# include -#else -# include -#endif +#include #include #ifdef HAVE_PWD_H @@ -57,10 +52,6 @@ so, delete this exception statement from your version. */ #include "convert.h" /* for convert_cleanup */ #include "res.h" /* for res_cleanup */ -#ifndef errno -extern int errno; -#endif - /* We want tilde expansion enabled only when reading `.wgetrc' lines; otherwise, it will be performed by the shell. This variable will be set by the wgetrc-reading function. */ @@ -68,8 +59,7 @@ extern int errno; static int enable_tilde_expansion; -#define CMD_DECLARE(func) static int func \ - PARAMS ((const char *, const char *, void *)) +#define CMD_DECLARE(func) static int func (const char *, const char *, void *) CMD_DECLARE (cmd_boolean); CMD_DECLARE (cmd_bytes); @@ -78,7 +68,6 @@ CMD_DECLARE (cmd_bytes_large); CMD_DECLARE (cmd_cert_type); #endif CMD_DECLARE (cmd_directory_vector); -CMD_DECLARE (cmd_lockable_boolean); CMD_DECLARE (cmd_number); CMD_DECLARE (cmd_number_inf); CMD_DECLARE (cmd_string); @@ -111,7 +100,7 @@ CMD_DECLARE (cmd_spec_useragent); static struct { const char *name; void *place; - int (*action) PARAMS ((const char *, const char *, void *)); + int (*action) (const char *, const char *, void *); } commands[] = { { "accept", &opt.accepts, cmd_vector }, { "addhostdir", &opt.add_hostdir, cmd_boolean }, @@ -162,7 +151,7 @@ static struct { { "ftpproxy", &opt.ftp_proxy, cmd_string }, { "ftpuser", &opt.ftp_user, cmd_string }, { "glob", &opt.ftp_glob, cmd_boolean }, - { "header", &opt.user_headers, cmd_spec_header }, + { "header", NULL, cmd_spec_header }, { "htmlextension", &opt.html_extension, cmd_boolean }, { "htmlify", NULL, cmd_spec_htmlify }, { "httpkeepalive", &opt.http_keep_alive, cmd_boolean }, @@ -193,7 +182,7 @@ static struct { { "numtries", &opt.ntry, cmd_number_inf },/* deprecated*/ { "outputdocument", &opt.output_document, cmd_file }, { "pagerequisites", &opt.page_requisites, cmd_boolean }, - { "passiveftp", &opt.ftp_pasv, cmd_lockable_boolean }, + { "passiveftp", &opt.ftp_pasv, cmd_boolean }, { "passwd", &opt.ftp_passwd, cmd_string },/* deprecated*/ { "password", &opt.passwd, cmd_string }, { "postdata", &opt.post_data, cmd_string }, @@ -412,9 +401,8 @@ enum parse_line { line_unknown_command }; -static enum parse_line parse_line PARAMS ((const char *, char **, - char **, int *)); -static int setval_internal PARAMS ((int, const char *, const char *)); +static enum parse_line parse_line (const char *, char **, char **, int *); +static int setval_internal (int, const char *, const char *); /* Initialize variables from a wgetrc file. Returns zero (failure) if there were errors in the file. */ @@ -613,7 +601,7 @@ setval_internal (int comind, const char *com, const char *val) { assert (0 <= comind && comind < countof (commands)); DEBUGP (("Setting %s (%s) to %s\n", com, commands[comind].name, val)); - return ((*commands[comind].action) (com, val, commands[comind].place)); + return commands[comind].action (com, val, commands[comind].place); } /* Run command COM with value VAL. If running the command produces an @@ -671,10 +659,9 @@ struct decode_item { const char *name; int code; }; -static int decode_string PARAMS ((const char *, const struct decode_item *, - int, int *)); -static int simple_atoi PARAMS ((const char *, const char *, int *)); -static int simple_atof PARAMS ((const char *, const char *, double *)); +static int decode_string (const char *, const struct decode_item *, int, int *); +static int simple_atoi (const char *, const char *, int *); +static int simple_atof (const char *, const char *, double *); #define CMP1(p, c0) (TOLOWER((p)[0]) == (c0) && (p)[1] == '\0') @@ -704,7 +691,7 @@ cmd_boolean (const char *com, const char *val, void *place) else { fprintf (stderr, - _("%s: %s: Invalid boolean `%s', use `on' or `off'.\n"), + _("%s: %s: Invalid boolean `%s'; use `on' or `off'.\n"), exec_name, com, val); return 0; } @@ -713,49 +700,6 @@ cmd_boolean (const char *com, const char *val, void *place) return 1; } -/* Store the lockable_boolean {2, 1, 0, -1} value from VAL to PLACE. - COM is ignored, except for error messages. Values 2 and -1 - indicate that once defined, the value may not be changed by - successive wgetrc files or command-line arguments. - - Values: 2 - Enable a particular option for good ("always") - 1 - Enable an option ("on") - 0 - Disable an option ("off") - -1 - Disable an option for good ("never") */ -static int -cmd_lockable_boolean (const char *com, const char *val, void *place) -{ - int lockable_boolean_value; - - int oldval = *(int *)place; - - /* - * If a config file said "always" or "never", don't allow command line - * arguments to override the config file. - */ - if (oldval == -1 || oldval == 2) - return 1; - - if (0 == strcasecmp (val, "always") || CMP1 (val, '2')) - lockable_boolean_value = 2; - else if (CMP2 (val, 'o', 'n') || CMP3 (val, 'y', 'e', 's') || CMP1 (val, '1')) - lockable_boolean_value = 1; - else if (CMP3 (val, 'o', 'f', 'f') || CMP2 (val, 'n', 'o') || CMP1 (val, '0')) - lockable_boolean_value = 0; - else if (0 == strcasecmp (val, "never") || CMP2 (val, '-', '1')) - lockable_boolean_value = -1; - else - { - fprintf (stderr, - _("%s: %s: Invalid boolean `%s', use always, on, off, or never.\n"), - exec_name, com, val); - return 0; - } - - *(int *)place = lockable_boolean_value; - return 1; -} - /* Set the non-negative integer value from VAL to PLACE. With incorrect specification, the number remains unchanged. */ static int @@ -1101,7 +1045,7 @@ cmd_cert_type (const char *com, const char *val, void *place) /* Specialized helper functions, used by `commands' to handle some options specially. */ -static int check_user_specified_header PARAMS ((const char *)); +static int check_user_specified_header (const char *); static int cmd_spec_dirstruct (const char *com, const char *val, void *place_ignored) @@ -1118,15 +1062,24 @@ cmd_spec_dirstruct (const char *com, const char *val, void *place_ignored) } static int -cmd_spec_header (const char *com, const char *val, void *place) +cmd_spec_header (const char *com, const char *val, void *place_ignored) { + /* Empty value means reset the list of headers. */ + if (*val == '\0') + { + free_vec (opt.user_headers); + opt.user_headers = NULL; + return 1; + } + if (!check_user_specified_header (val)) { fprintf (stderr, _("%s: %s: Invalid header `%s'.\n"), exec_name, com, val); return 0; } - return cmd_vector (com, val, place); + opt.user_headers = vec_append (opt.user_headers, val); + return 1; } static int @@ -1444,8 +1397,8 @@ decode_string (const char *val, const struct decode_item *items, int itemcount, } -void cleanup_html_url PARAMS ((void)); -void http_cleanup PARAMS ((void)); +void cleanup_html_url (void); +void http_cleanup (void); /* Free the memory allocated by global variables. */