#include <config.h>
#include <stdio.h>
-#include <sys/types.h>
#include <stdlib.h>
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
-#ifdef HAVE_STRING_H
-# include <string.h>
-#else
-# include <strings.h>
-#endif
+#include <string.h>
#include <errno.h>
#ifdef HAVE_PWD_H
#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. */
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);
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);
function. When adding a new command, simply add it to the list,
but be sure to keep the list sorted alphabetically, as
command_by_name depends on it. Also, be sure to add any entries
- that allocate memory (e.g. cmd_string and cmd_vector guys) to the
+ that allocate memory (e.g. cmd_string and cmd_vector) to the
cleanup() function below. */
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 },
{ "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 },
{ "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 },
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. */
{
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
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')
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;
}
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
/* 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)
}
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
}
\f
-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. */