=== modified file 'doc/ChangeLog' --- doc/ChangeLog 2010-07-28 20:17:00 +0000 +++ doc/ChangeLog 2010-08-08 15:04:02 +0000 @@ -1,3 +1,8 @@ +2010-08-08 Reza Snowdon + * wget.texi: Added information about the config option to the + 'Overview' section and a description of the option in + 'Logging and Input File Options'. + 2010-07-28 Alon Bar-Lev (tiny change) * texi2pod.pl: Use the warnings module only when it is available. === modified file 'doc/wget.texi' --- doc/wget.texi 2010-07-28 19:22:22 +0000 +++ doc/wget.texi 2010-08-08 15:09:24 +0000 @@ -190,7 +190,8 @@ Most of the features are fully configurable, either through command line options, or via the initialization file @file{.wgetrc} (@pxref{Startup File}). Wget allows you to define @dfn{global} startup files -(@file{/usr/local/etc/wgetrc} by default) for site settings. +(@file{/usr/local/etc/wgetrc} by default) for site settings. You can also +specify the location of a startup file with the --config option. @ignore @c man begin FILES @@ -524,6 +525,10 @@ For instance, if you specify @samp{http://foo/bar/a.html} for @var{URL}, and Wget reads @samp{../baz/b.html} from the input file, it would be resolved to @samp{http://foo/baz/b.html}. + +@cindex specify config +@item --config=@var{FILE} +Specify the location of a startup file you wish to use. @end table @node Download Options, Directory Options, Logging and Input File Options, Invoking === modified file 'src/ChangeLog' --- src/ChangeLog 2010-08-01 20:55:53 +0000 +++ src/ChangeLog 2010-08-08 15:08:12 +0000 @@ -1,3 +1,22 @@ +<<<<<<< TREE +2010-08-08 Reza Snowdon + + * main.c (main): inserted 'defaults'. + Added additional 'getopt_long' while loop to search and apply a + user specified config file before any other options. + New variables 'retconf', 'use_userconfig', + 'confval', 'userrc_ret', 'config_opt'. + * init.c: Include stdbool.h. + (commands): Added config details. + (defaults): Removed static. + (wgetrc): Removed static. + (initialize): Removed 'defaults ()', + changed 'int ok' to 'bool ok'. + * options.h: New variable 'choose_config'. + * init.h (defaults): exported function. + (run_wgetrc): exported function. + +======= 2010-07-25 John Trengrove (tiny change) * ftp.h: Added enum `parsetype'. Modified struct to hold parsetype. @@ -99,6 +118,7 @@ * gnutls.c (ssl_connect_wget): New local variable `allowed_protocols'. Honor the --secure-protocol flag. +>>>>>>> MERGE-SOURCE 2010-06-20 Giuseppe Scrivano * main.c (print_help): Fix help string for --random-wait. Its range is === modified file 'src/init.c' --- src/init.c 2010-07-28 19:22:22 +0000 +++ src/init.c 2010-08-08 14:41:03 +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; @@ -358,7 +360,7 @@ opt.useservertimestamps = true; } - + /* Return the user's home directory (strdup-ed), or NULL if none is found. */ char * @@ -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-07-20 21:45:39 +0000 @@ -39,5 +39,6 @@ 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-08 14:41:03 +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,8 @@ 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_("\ @@ -891,11 +894,46 @@ /* Drop extension (typically .EXE) from executable filename. */ 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-08 14:41:03 +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) */