/* Command line parsing.
- Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
- 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+ 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
This file is part of GNU Wget.
extern char *system_getrc;
extern char *link_string;
/* defined in build_info.c */
-extern char *compiled_features[];
+extern const char *compiled_features[];
/* Used for --version output in print_version */
#define MAX_CHARS_PER_LINE 72
#define TABULATION 4
{ "header", 0, OPT_VALUE, "header", -1 },
{ "help", 'h', OPT_FUNCALL, (void *)print_help, no_argument },
{ "host-directories", 0, OPT_BOOLEAN, "addhostdir", -1 },
- { "html-extension", 'E', OPT_BOOLEAN, "adjustextension", -1 },
+ { "html-extension", 'E', OPT_BOOLEAN, "adjustextension", -1 }, /* deprecated */
{ "htmlify", 0, OPT_BOOLEAN, "htmlify", -1 },
{ "http-keep-alive", 0, OPT_BOOLEAN, "httpkeepalive", -1 },
{ "http-passwd", 0, OPT_VALUE, "httppassword", -1 }, /* deprecated */
{ "post-data", 0, OPT_VALUE, "postdata", -1 },
{ "post-file", 0, OPT_VALUE, "postfile", -1 },
{ "prefer-family", 0, OPT_VALUE, "preferfamily", -1 },
- { "preserve-permissions", 0, OPT_BOOLEAN, "preservepermissions", -1 },
+ { "preserve-permissions", 0, OPT_BOOLEAN, "preservepermissions", -1 }, /* deprecated */
{ IF_SSL ("private-key"), 0, OPT_VALUE, "privatekey", -1 },
{ IF_SSL ("private-key-type"), 0, OPT_VALUE, "privatekeytype", -1 },
{ "progress", 0, OPT_VALUE, "progress", -1 },
{ "timeout", 'T', OPT_VALUE, "timeout", -1 },
{ "timestamping", 'N', OPT_BOOLEAN, "timestamping", -1 },
{ "tries", 't', OPT_VALUE, "tries", -1 },
+ { "use-server-timestamps", 0, OPT_BOOLEAN, "useservertimestamps", -1 },
{ "user", 0, OPT_VALUE, "user", -1 },
{ "user-agent", 'U', OPT_VALUE, "useragent", -1 },
{ "verbose", 'v', OPT_BOOLEAN, "verbose", -1 },
-N, --timestamping don't re-retrieve files unless newer than\n\
local.\n"),
N_("\
+ --no-use-server-timestamps don't set the local file's timestamp by\n\
+ the one on the server.\n"),
+ N_("\
-S, --server-response print server response.\n"),
N_("\
--spider don't download anything.\n"),
lines.*/
static void
format_and_print_line (const char *prefix, const char *line,
- int line_length)
+ int line_length)
{
int remaining_chars;
char *line_dup, *token;
-
+
assert (prefix != NULL);
assert (line != NULL);
remaining_chars = line_length;
/* We break on spaces. */
token = strtok (line_dup, " ");
- while (token != NULL)
+ while (token != NULL)
{
/* If however a token is much larger than the maximum
line length, all bets are off and we simply print the
token on the next line. */
- if (remaining_chars <= strlen (token))
+ if (remaining_chars <= strlen (token))
{
printf ("\n%*c", TABULATION, ' ');
remaining_chars = line_length - TABULATION;
char *env_wgetrc, *user_wgetrc;
int i;
-#ifdef __VMS
- printf (_("GNU Wget %s built on VMS %s %s.\n\n"),
- version_string, vms_arch(), vms_vers());
-#else /* def __VMS */
printf (_("GNU Wget %s built on %s.\n\n"), version_string, OS_TYPE);
-#endif /* def __VMS */
- /* compiled_features is a char*[]. We limit the characters per
- line to MAX_CHARS_PER_LINE and prefix each line with a constant
- number of spaces for proper alignment. */
- for (i = 0; compiled_features[i] != NULL; )
+
+ for (i = 0; compiled_features[i] != NULL; )
{
int line_length = MAX_CHARS_PER_LINE;
- while ((line_length > 0) && (compiled_features[i] != NULL))
+ while ((line_length > 0) && (compiled_features[i] != NULL))
{
printf ("%s ", compiled_features[i]);
line_length -= strlen (compiled_features[i]) + 2;
printf ("\n");
}
printf ("\n");
- /* Handle the case when $WGETRC is unset and $HOME/.wgetrc is
+
+ /* Handle the case when $WGETRC is unset and $HOME/.wgetrc is
absent. */
printf ("%s\n", wgetrc_title);
env_wgetrc = wgetrc_env_file_name ();
- if (env_wgetrc && *env_wgetrc)
+ if (env_wgetrc && *env_wgetrc)
{
printf (_(" %s (env)\n"), env_wgetrc);
xfree (env_wgetrc);
}
user_wgetrc = wgetrc_user_file_name ();
- if (user_wgetrc)
+ if (user_wgetrc)
{
printf (_(" %s (user)\n"), user_wgetrc);
xfree (user_wgetrc);
printf (_(" %s (system)\n"), SYSTEM_WGETRC);
#endif
+#ifdef ENABLE_NLS
format_and_print_line (locale_title,
- LOCALEDIR,
- MAX_CHARS_PER_LINE);
-
- format_and_print_line (compile_title,
- compilation_string,
- MAX_CHARS_PER_LINE);
+ LOCALEDIR,
+ MAX_CHARS_PER_LINE);
+#endif /* def ENABLE_NLS */
+
+ if (compilation_string != NULL)
+ format_and_print_line (compile_title,
+ compilation_string,
+ MAX_CHARS_PER_LINE);
- format_and_print_line (link_title,
- link_string,
- MAX_CHARS_PER_LINE);
+ if (link_string != NULL)
+ format_and_print_line (link_title,
+ link_string,
+ MAX_CHARS_PER_LINE);
printf ("\n");
/* TRANSLATORS: When available, an actual copyright character
i18n_initialize ();
/* Construct the name of the executable, without the directory part. */
+#ifdef __VMS
+ /* On VMS, lose the "dev:[dir]" prefix and the ".EXE;nnn" suffix. */
+ exec_name = vms_basename (argv[0]);
+#else /* def __VMS */
exec_name = strrchr (argv[0], PATH_SEPARATOR);
if (!exec_name)
exec_name = argv[0];
else
++exec_name;
+#endif /* def __VMS [else] */
#ifdef WINDOWS
/* Drop extension (typically .EXE) from executable filename. */
#endif
if (opt.output_document)
{
- if (opt.convert_links
+ if (opt.convert_links
&& (nurl > 1 || opt.page_requisites || opt.recursive))
{
fputs (_("\
for details.\n\n"));
opt.timestamping = false;
}
- if (opt.noclobber && file_exists_p(opt.output_document))
- {
+ if (opt.noclobber && file_exists_p(opt.output_document))
+ {
/* Check if output file exists; if it does, exit. */
logprintf (LOG_VERBOSE, _("File `%s' already there; not retrieving.\n"), opt.output_document);
exit(1);
- }
+ }
}
if (opt.ask_passwd && opt.passwd)
if (fstat (fileno (output_stream), &st) == 0 && S_ISREG (st.st_mode))
output_stream_regular = true;
}
+ if (!output_stream_regular && opt.convert_links)
+ {
+ printf (_("-k can be used together with -O only if outputting to \
+a regular file.\n"));
+ print_usage ();
+ exit(1);
+ }
}
#ifdef __VMS
int old_follow_ftp = opt.follow_ftp;
/* Turn opt.follow_ftp on in case of recursive FTP retrieval */
- if (url_scheme (*t) == SCHEME_FTP)
+ if (url_scheme (*t) == SCHEME_FTP)
opt.follow_ftp = 1;
-
+
status = retrieve_tree (url_parsed, NULL);
opt.follow_ftp = old_follow_ftp;
{
print_broken_links();
}
-
+
/* Print the downloaded sum. */
if ((opt.recursive || opt.page_requisites
|| nurl > 1