]> sjero.net Git - wget/blobdiff - src/main.c
[mq]: cfg-mk
[wget] / src / main.c
index 5898a1989058995a619b3d244037f853c4f4684d..dddc4b2425df1ad38015472e08d23d9513df42a9 100644 (file)
@@ -44,6 +44,7 @@ as that of the covered work.  */
 #include <errno.h>
 #include <time.h>
 
+#include "exits.h"
 #include "utils.h"
 #include "init.h"
 #include "retr.h"
@@ -63,8 +64,6 @@ as that of the covered work.  */
 #include "vms.h"
 #endif /* __VMS */
 
-#include "version.h"
-
 #ifndef PATH_SEPARATOR
 # define PATH_SEPARATOR '/'
 #endif
@@ -149,6 +148,7 @@ struct cmdline_option {
 static struct cmdline_option option_data[] =
   {
     { "accept", 'A', OPT_VALUE, "accept", -1 },
+    { "adjust-extension", 'E', OPT_BOOLEAN, "adjustextension", -1 },
     { "append-output", 'a', OPT__APPEND_OUTPUT, NULL, required_argument },
     { "ask-password", 0, OPT_BOOLEAN, "askpassword", -1 },
     { "auth-no-challenge", 0, OPT_BOOLEAN, "authnochallenge", -1 },
@@ -179,7 +179,7 @@ static struct cmdline_option option_data[] =
     { "dns-timeout", 0, OPT_VALUE, "dnstimeout", -1 },
     { "domains", 'D', OPT_VALUE, "domains", -1 },
     { "dont-remove-listing", 0, OPT__DONT_REMOVE_LISTING, NULL, no_argument },
-    { "dot-style", 0, OPT_VALUE, "dotstyle", -1 },
+    { "dot-style", 0, OPT_VALUE, "dotstyle", -1 }, /* deprecated */
     { "egd-file", 0, OPT_VALUE, "egdfile", -1 },
     { "exclude-directories", 'X', OPT_VALUE, "excludedirectories", -1 },
     { "exclude-domains", 0, OPT_VALUE, "excludedomains", -1 },
@@ -197,7 +197,7 @@ static struct cmdline_option option_data[] =
     { "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, "htmlextension", -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 */
@@ -217,7 +217,7 @@ static struct cmdline_option option_data[] =
     { "level", 'l', OPT_VALUE, "reclevel", -1 },
     { "limit-rate", 0, OPT_VALUE, "limitrate", -1 },
     { "load-cookies", 0, OPT_VALUE, "loadcookies", -1 },
-    { "locale", 0, OPT_VALUE, "locale", -1 },
+    { "local-encoding", 0, OPT_VALUE, "localencoding", -1 },
     { "max-redirect", 0, OPT_VALUE, "maxredirect", -1 },
     { "mirror", 'm', OPT_BOOLEAN, "mirror", -1 },
     { "no", 'n', OPT__NO, NULL, required_argument },
@@ -232,7 +232,7 @@ static struct cmdline_option option_data[] =
     { "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 },
@@ -251,7 +251,7 @@ static struct cmdline_option option_data[] =
     { "referer", 0, OPT_VALUE, "referer", -1 },
     { "reject", 'R', OPT_VALUE, "reject", -1 },
     { "relative", 'L', OPT_BOOLEAN, "relativeonly", -1 },
-    { "remote-encoding", 0, OPT_VALUE, "remoteencoding", -1},
+    { "remote-encoding", 0, OPT_VALUE, "remoteencoding", -1 },
     { "remove-listing", 0, OPT_BOOLEAN, "removelisting", -1 },
     { "restrict-file-names", 0, OPT_BOOLEAN, "restrictfilenames", -1 },
     { "retr-symlinks", 0, OPT_BOOLEAN, "retrsymlinks", -1 },
@@ -273,7 +273,7 @@ static struct cmdline_option option_data[] =
     { "version", 'V', OPT_FUNCALL, (void *) print_version, no_argument },
     { "wait", 'w', OPT_VALUE, "wait", -1 },
     { "waitretry", 0, OPT_VALUE, "waitretry", -1 },
-#ifdef MSDOS
+#ifdef USE_WATT32
     { "wdebug", 0, OPT_BOOLEAN, "wdebug", -1 },
 #endif
   };
@@ -419,7 +419,7 @@ Logging and input file:\n"),
     N_("\
   -d,  --debug               print lots of debugging information.\n"),
 #endif
-#ifdef MSDOS
+#ifdef USE_WATT32
     N_("\
        --wdebug              print Watt-32 debug output.\n"),
 #endif
@@ -434,7 +434,8 @@ Logging and input file:\n"),
     N_("\
   -F,  --force-html          treat input file as HTML.\n"),
     N_("\
-  -B,  --base=URL            prepends URL to relative links in -F -i file.\n"),
+  -B,  --base=URL            resolves HTML input-file links (-i -F)\n\
+                             relative to URL.\n"),
     "\n",
 
     N_("\
@@ -502,6 +503,12 @@ Download:\n"),
        --password=PASS           set both ftp and http password to PASS.\n"),
     N_("\
        --ask-password            prompt for passwords.\n"),
+    N_("\
+       --no-iri                  turn off IRI support.\n"),
+    N_("\
+       --local-encoding=ENC      use ENC as the local encoding for IRIs.\n"),
+    N_("\
+       --remote-encoding=ENC     use ENC as the default remote encoding.\n"),
     "\n",
 
     N_("\
@@ -532,7 +539,7 @@ HTTP options:\n"),
        --default-page=NAME     Change the default page name (normally\n\
                                this is `index.html'.).\n"),
     N_("\
-  -E,  --html-extension        save HTML documents with `.html' extension.\n"),
+  -E,  --adjust-extension      save HTML/CSS documents with proper extensions.\n"),
     N_("\
        --ignore-length         ignore `Content-Length' header field.\n"),
     N_("\
@@ -567,7 +574,7 @@ HTTP options:\n"),
        --content-disposition   honor the Content-Disposition header when\n\
                                choosing local file names (EXPERIMENTAL).\n"),
     N_("\
-       --auth-no-challenge     Send Basic HTTP authentication information\n\
+       --auth-no-challenge     send Basic HTTP authentication information\n\
                                without first waiting for the server's\n\
                                challenge.\n"),
     "\n",
@@ -617,8 +624,6 @@ FTP options:\n"),
        --no-passive-ftp        disable the \"passive\" transfer mode.\n"),
     N_("\
        --retr-symlinks         when recursing, get linked-to files (not dir).\n"),
-    N_("\
-       --preserve-permissions  preserve remote file permissions.\n"),
     "\n",
 
     N_("\
@@ -681,7 +686,7 @@ Recursive accept/reject:\n"),
   size_t i;
 
   printf (_("GNU Wget %s, a non-interactive network retriever.\n"),
-          VERSION_STRING);
+          version_string);
   print_usage ();
 
   for (i = 0; i < countof (help); i++)
@@ -732,11 +737,11 @@ prompt_for_password (void)
    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);
 
@@ -749,12 +754,12 @@ format_and_print_line (const char *prefix, const char *line,
   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;
@@ -780,20 +785,19 @@ print_version (void)
   char *env_wgetrc, *user_wgetrc;
   int i;
 
-  printf (_("GNU Wget %s\n\n"), version_string);
 #ifdef __VMS
-  printf ("GNU Wget %s built on VMS %s %s.\n\n",
-   VERSION_STRING, vms_arch(), vms_vers());
+  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);
+  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;
@@ -802,29 +806,31 @@ print_version (void)
       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);
+      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);
+      printf (_("    %s (user)\n"), user_wgetrc);
       xfree (user_wgetrc);
     }
 #ifdef SYSTEM_WGETRC
-  printf ("    %s (system)\n", SYSTEM_WGETRC);
+  printf (_("    %s (system)\n"), SYSTEM_WGETRC);
 #endif
 
+#ifdef ENABLE_NLS
   format_and_print_line (locale_title,
-                        LOCALEDIR, 
-                        MAX_CHARS_PER_LINE);
-  
+                        LOCALEDIR,
+                        MAX_CHARS_PER_LINE);
+#endif /* def ENABLE_NLS */
+
   format_and_print_line (compile_title,
                         compilation_string,
                         MAX_CHARS_PER_LINE);
@@ -837,7 +843,7 @@ print_version (void)
   /* TRANSLATORS: When available, an actual copyright character
      (cirle-c) should be used in preference to "(C)". */
   fputs (_("\
-Copyright (C) 2008 Free Software Foundation, Inc.\n"), stdout);
+Copyright (C) 2009 Free Software Foundation, Inc.\n"), stdout);
   fputs (_("\
 License GPLv3+: GNU GPL version 3 or later\n\
 <http://www.gnu.org/licenses/gpl.html>.\n\
@@ -1044,7 +1050,7 @@ Can't timestamp and not clobber old files at the same time.\n"));
 #endif
   if (opt.output_document)
     {
-      if (opt.convert_links 
+      if (opt.convert_links
           && (nurl > 1 || opt.page_requisites || opt.recursive))
         {
           fputs (_("\
@@ -1067,12 +1073,12 @@ WARNING: timestamping does nothing in combination with -O. See the manual\n\
 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)
@@ -1123,7 +1129,7 @@ for details.\n\n"));
         exit (1);
     }
 
-#ifdef MSDOS
+#ifdef USE_WATT32
   if (opt.wdebug)
      dbug_init();
   sock_init();
@@ -1153,7 +1159,7 @@ for details.\n\n"));
   log_init (opt.lfilename, append_to_log);
 
   DEBUGP (("DEBUG output created by Wget %s on %s.\n\n",
-           VERSION_STRING, OS_TYPE));
+           version_string, OS_TYPE));
 
   /* Open the output filename if necessary.  */
 
@@ -1276,9 +1282,9 @@ WARNING: Can't reopen standard output in binary mode;\n\
               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;
@@ -1286,7 +1292,7 @@ WARNING: Can't reopen standard output in binary mode;\n\
           else
           {
             status = retrieve_url (url_parsed, *t, &filename, &redirected_URL,
-                                   NULL, &dt, opt.recursive, iri);
+                                   NULL, &dt, opt.recursive, iri, true);
           }
 
           if (opt.delete_after && file_exists_p(filename))
@@ -1318,7 +1324,7 @@ WARNING: Can't reopen standard output in binary mode;\n\
     {
       print_broken_links();
     }
-  
+
   /* Print the downloaded sum.  */
   if ((opt.recursive || opt.page_requisites
        || nurl > 1
@@ -1351,10 +1357,7 @@ WARNING: Can't reopen standard output in binary mode;\n\
     xfree (url[i]);
   cleanup ();
 
-  if (status == RETROK)
-    return 0;
-  else
-    return 1;
+  return get_exit_status ();
 }
 #endif /* TESTING */
 \f