]> sjero.net Git - wget/blobdiff - src/main.c
[svn] Rewrite with_thousand_seps to be size-agnostic. Remove printing of separators
[wget] / src / main.c
index 73aba87c598dd009a31a4abaa05369fefffd2192..797472cd3008096d48f9f9018aee4f407fcdaefb 100644 (file)
@@ -34,26 +34,13 @@ so, delete this exception statement from your version.  */
 #ifdef HAVE_UNISTD_H
 # include <unistd.h>
 #endif /* HAVE_UNISTD_H */
-#include <sys/types.h>
-#ifdef HAVE_STRING_H
-# include <string.h>
-#else
-# include <strings.h>
-#endif /* HAVE_STRING_H */
-#ifdef HAVE_SIGNAL_H
-# include <signal.h>
-#endif
-#ifdef HAVE_NLS
-#ifdef HAVE_LOCALE_H
+#include <string.h>
+#include <signal.h>
+#if defined(HAVE_NLS) && defined(HAVE_LOCALE_H)
 # include <locale.h>
-#endif /* HAVE_LOCALE_H */
-#endif /* HAVE_NLS */
+#endif
 #include <assert.h>
-
 #include <errno.h>
-#ifndef errno
-extern int errno;
-#endif
 
 #include "wget.h"
 #include "utils.h"
@@ -74,12 +61,12 @@ extern int errno;
 
 struct options opt;
 
-extern LARGE_INT total_downloaded_bytes;
+extern SUM_SIZE_INT total_downloaded_bytes;
 extern char *version_string;
 
 extern struct cookie_jar *wget_cookie_jar;
 
-static RETSIGTYPE redirect_output_signal PARAMS ((int));
+static void redirect_output_signal (int);
 
 const char *exec_name;
 \f
@@ -115,8 +102,8 @@ i18n_initialize (void)
 \f
 /* Definition of command-line options. */
 
-static void print_help PARAMS ((void));
-static void print_version PARAMS ((void));
+static void print_help (void);
+static void print_version (void);
 
 #ifdef HAVE_SSL
 # define IF_SSL(x) x
@@ -125,9 +112,9 @@ static void print_version PARAMS ((void));
 #endif
 
 #ifdef ENABLE_DEBUG
-# define IF_DEBUG(x) x
+# define WHEN_DEBUG(x) x
 #else
-# define IF_DEBUG(x) NULL
+# define WHEN_DEBUG(x) NULL
 #endif
 
 struct cmdline_option {
@@ -171,7 +158,7 @@ struct cmdline_option option_data[] =
     { "convert-links", 'k', OPT_BOOLEAN, "convertlinks", -1 },
     { "cookies", 0, OPT_BOOLEAN, "cookies", -1 },
     { "cut-dirs", 0, OPT_VALUE, "cutdirs", -1 },
-    { IF_DEBUG ("debug"), 'd', OPT_BOOLEAN, "debug", -1 },
+    { WHEN_DEBUG ("debug"), 'd', OPT_BOOLEAN, "debug", -1 },
     { "delete-after", 0, OPT_BOOLEAN, "deleteafter", -1 },
     { "directories", 0, OPT_BOOLEAN, "dirstruct", -1 },
     { "directory-prefix", 'P', OPT_VALUE, "dirprefix", -1 },
@@ -267,7 +254,7 @@ struct cmdline_option option_data[] =
     { "waitretry", 0, OPT_VALUE, "waitretry", -1 },
   };
 
-#undef IF_DEBUG
+#undef WHEN_DEBUG
 #undef IF_SSL
 
 /* Return a string that contains S with "no-" prepended.  The string
@@ -673,7 +660,7 @@ main (int argc, char *const *argv)
   char **url, **t;
   int i, ret, longindex;
   int nurl, status;
-  int append_to_log = 0;
+  bool append_to_log = false;
 
   i18n_initialize ();
 
@@ -732,19 +719,19 @@ main (int argc, char *const *argv)
          else
            {
              /* NEG is true for `--no-FOO' style boolean options. */
-             int neg = val & BOOLEAN_NEG_MARKER;
+             bool neg = !!(val & BOOLEAN_NEG_MARKER);
              setoptval (opt->data, neg ? "0" : "1", opt->long_name);
            }
          break;
        case OPT_FUNCALL:
          {
-           void (*func) PARAMS ((void)) = (void (*) PARAMS ((void))) opt->data;
+           void (*func) (void) = (void (*) (void)) opt->data;
            func ();
          }
          break;
        case OPT__APPEND_OUTPUT:
          setoptval ("logfile", optarg, opt->long_name);
-         append_to_log = 1;
+         append_to_log = true;
          break;
        case OPT__EXECUTE:
          run_command (optarg);
@@ -788,7 +775,7 @@ main (int argc, char *const *argv)
            /* The wgetrc commands are named noparent and noclobber,
               so we must revert the meaning of the cmdline options
               before passing the value to setoptval.  */
-           int flag = 1;
+           bool flag = true;
            if (optarg)
              flag = (*optarg == '1' || TOLOWER (*optarg) == 'y'
                      || (TOLOWER (optarg[0]) == 'o'
@@ -890,13 +877,13 @@ Can't timestamp and not clobber old files at the same time.\n"));
   if (opt.output_document)
     {
       extern FILE *output_stream;
-      extern int output_stream_regular;
+      extern bool output_stream_regular;
 
       if (HYPHENP (opt.output_document))
        output_stream = stdout;
       else
        {
-         struct_stat st;
+         struct_fstat st;
          output_stream = fopen (opt.output_document,
                                 opt.always_rest ? "ab" : "wb");
          if (output_stream == NULL)
@@ -905,7 +892,7 @@ Can't timestamp and not clobber old files at the same time.\n"));
              exit (1);
            }
          if (fstat (fileno (output_stream), &st) == 0 && S_ISREG (st.st_mode))
-           output_stream_regular = 1;
+           output_stream_regular = true;
        }
     }
 
@@ -913,21 +900,25 @@ Can't timestamp and not clobber old files at the same time.\n"));
   ws_startup ();
 #endif
 
+#ifdef SIGHUP
   /* Setup the signal handler to redirect output when hangup is
      received.  */
-#ifdef HAVE_SIGNAL
   if (signal(SIGHUP, SIG_IGN) != SIG_IGN)
     signal(SIGHUP, redirect_output_signal);
+#endif
   /* ...and do the same for SIGUSR1.  */
+#ifdef SIGUSR1
   signal (SIGUSR1, redirect_output_signal);
+#endif
+#ifdef SIGPIPE
   /* Writing to a closed socket normally signals SIGPIPE, and the
      process exits.  What we want is to ignore SIGPIPE and just check
      for the return value of write().  */
   signal (SIGPIPE, SIG_IGN);
+#endif
 #ifdef SIGWINCH
   signal (SIGWINCH, progress_handle_sigwinch);
 #endif
-#endif /* HAVE_SIGNAL */
 
   status = RETROK;             /* initialize it, just-in-case */
   /* Retrieve the URLs from argument list.  */
@@ -969,14 +960,15 @@ Can't timestamp and not clobber old files at the same time.\n"));
       || (opt.input_filename && total_downloaded_bytes != 0))
     {
       logprintf (LOG_NOTQUIET,
-                _("\nFINISHED --%s--\nDownloaded: %s bytes in %d files\n"),
-                time_str (NULL), with_thousand_seps_large (total_downloaded_bytes),
+                _("\nFINISHED --%s--\nDownloaded: %s in %d files\n"),
+                time_str (NULL),
+                human_readable (total_downloaded_bytes),
                 opt.numurls);
       /* Print quota warning, if exceeded.  */
       if (opt.quota && total_downloaded_bytes > opt.quota)
        logprintf (LOG_NOTQUIET,
-                  _("Download quota (%s bytes) EXCEEDED!\n"),
-                  with_thousand_seps_large (opt.quota));
+                  _("Download quota of %s EXCEEDED!\n"),
+                  human_readable (opt.quota));
     }
 
   if (opt.cookies_output)
@@ -999,16 +991,12 @@ Can't timestamp and not clobber old files at the same time.\n"));
     return 1;
 }
 \f
-#ifdef HAVE_SIGNAL
+#if defined(SIGHUP) || defined(SIGUSR1)
 /* Hangup signal handler.  When wget receives SIGHUP or SIGUSR1, it
    will proceed operation as usual, trying to write into a log file.
-   If that is impossible, the output will be turned off.
+   If that is impossible, the output will be turned off.  */
 
-   #### It is unsafe to do call libc functions from a signal handler.
-   What we should do is, set a global variable, and have the code in
-   log.c pick it up.  */
-
-static RETSIGTYPE
+static void
 redirect_output_signal (int sig)
 {
   const char *signal_name = (sig == SIGHUP ? "SIGHUP" :
@@ -1018,4 +1006,4 @@ redirect_output_signal (int sig)
   progress_schedule_redirect ();
   signal (sig, redirect_output_signal);
 }
-#endif /* HAVE_SIGNAL */
+#endif