=== modified file 'src/ChangeLog'
--- src/ChangeLog 2010-08-01 20:55:53 +0000
+++ src/ChangeLog 2010-08-05 17:55:28 +0000
@@ -1,3 +1,18 @@
+2010-08-04 Reza Snowdon
+
+ * main.c (main): inserted 'defaults'
+ * init.c: Include stdbool.h.
+ (commands):Added config detailsi.
+ (defaults): Removed static.
+ (wgetrc): Removed static.
+ (initialize): Removed 'defaults ()',
+ changed 'int ok' to 'bool ok'
+ * init.h (defaults): exported function.
+ (run_wgetrc): exported function.
+ * options.h: New variable 'choose_config'
+
+
+
2010-07-25 John Trengrove (tiny change)
* ftp.h: Added enum `parsetype'. Modified struct to hold parsetype.
=== modified file 'src/init.c'
--- src/init.c 2010-07-28 19:22:22 +0000
+++ src/init.c 2010-08-05 18:13:02 +0000
@@ -32,6 +32,7 @@
#include
#include
+#include
#ifdef HAVE_UNISTD_H
# include
#endif
@@ -136,6 +137,7 @@
{ "certificatetype", &opt.cert_type, cmd_cert_type },
{ "checkcertificate", &opt.check_cert, cmd_boolean },
#endif
+ { "chooseconfig", &opt.choose_config, cmd_file },
{ "connecttimeout", &opt.connect_timeout, cmd_time },
{ "contentdisposition", &opt.content_disposition, cmd_boolean },
{ "continue", &opt.always_rest, cmd_boolean },
@@ -290,7 +292,7 @@
}
/* Reset the variables to default values. */
-static void
+void
defaults (void)
{
char *tmp;
@@ -509,7 +511,7 @@
/* Initialize variables from a wgetrc file. Returns zero (failure) if
there were errors in the file. */
-static bool
+bool
run_wgetrc (const char *file)
{
FILE *fp;
@@ -573,10 +575,7 @@
initialize (void)
{
char *file, *env_sysrc;
- int ok = true;
-
- /* Load the hard-coded defaults. */
- defaults ();
+ bool ok = true;
/* Run a non-standard system rc file when the according environment
variable has been set. For internal testing purposes only! */
@@ -1577,6 +1576,7 @@
extern acc_t *netrc_list;
free_netrc (netrc_list);
}
+ xfree_null (opt.choose_config);
xfree_null (opt.lfilename);
xfree_null (opt.dir_prefix);
xfree_null (opt.input_filename);
=== modified file 'src/init.h'
--- src/init.h 2010-05-08 19:56:15 +0000
+++ src/init.h 2010-08-05 17:58:15 +0000
@@ -39,5 +39,7 @@
void setoptval (const char *, const char *, const char *);
char *home_dir (void);
void cleanup (void);
+void defaults (void);
+bool run_wgetrc (const char *file);
#endif /* INIT_H */
=== modified file 'src/main.c'
--- src/main.c 2010-07-28 19:22:22 +0000
+++ src/main.c 2010-08-05 18:03:20 +0000
@@ -164,6 +164,7 @@
{ IF_SSL ("certificate-type"), 0, OPT_VALUE, "certificatetype", -1 },
{ IF_SSL ("check-certificate"), 0, OPT_BOOLEAN, "checkcertificate", -1 },
{ "clobber", 0, OPT__CLOBBER, NULL, optional_argument },
+ { "config", 0, OPT_VALUE, "chooseconfig", -1 },
{ "connect-timeout", 0, OPT_VALUE, "connecttimeout", -1 },
{ "continue", 'c', OPT_BOOLEAN, "continue", -1 },
{ "convert-links", 'k', OPT_BOOLEAN, "convertlinks", -1 },
@@ -439,6 +440,9 @@
N_("\
-B, --base=URL resolves HTML input-file links (-i -F)\n\
relative to URL.\n"),
+ N_("\
+ --config=FILE Specify config file to use.\n"),
+
"\n",
N_("\
@@ -892,10 +896,45 @@
windows_main ((char **) &exec_name);
#endif
- /* Set option defaults; read the system wgetrc and ~/.wgetrc. */
- initialize ();
+ /* Load the hard-coded defaults. */
+ defaults ();
init_switches ();
+
+ /* This seperate getopt_long is needed to find the user config
+ and parse it before the other user options. */
+
+ longindex = -1;
+ int retconf;
+ bool use_userconfig = false;
+ while ((retconf = getopt_long (argc, argv,
+ short_options, long_options, &longindex)) != -1)
+ {
+ int confval;
+ bool userrc_ret = true;
+ struct cmdline_option *config_opt;
+ confval = long_options[longindex].val;
+ config_opt = &option_data[confval & ~BOOLEAN_NEG_MARKER];
+ if (strcmp (config_opt->long_name, "config") == 0)
+ {
+ userrc_ret &= run_wgetrc (optarg);
+ use_userconfig = true;
+ }
+ if (!userrc_ret)
+ {
+ printf("Exiting due to error in %s\n", optarg);
+ exit (2);
+ }
+ else
+ break;
+ }
+
+ /* If the user did not specify a config, read the system wgetrc and ~/.wgetrc. */
+ if (use_userconfig == false)
+ initialize();
+
+ opterr = 0;
+ optind = 0;
longindex = -1;
while ((ret = getopt_long (argc, argv,
short_options, long_options, &longindex)) != -1)
=== modified file 'src/options.h'
--- src/options.h 2010-07-28 19:22:22 +0000
+++ src/options.h 2010-08-05 18:03:33 +0000
@@ -57,6 +57,7 @@
char *dir_prefix; /* The top of directory tree */
char *lfilename; /* Log filename */
char *input_filename; /* Input filename */
+ char *choose_config; /* Specified config file */
bool force_html; /* Is the input file an HTML file? */
char *default_page; /* Alternative default page (index file) */