diff -urN wget-1.8.2.old/src/ftp-basic.c wget-1.8.2/src/ftp-basic.c
--- wget-1.8.2.old/src/ftp-basic.c	2003-10-14 21:55:07.000000000 -0700
+++ wget-1.8.2/src/ftp-basic.c	2003-10-14 21:59:02.000000000 -0700
@@ -567,7 +567,7 @@
 
 /* Sends REST command to the FTP server.  */
 uerr_t
-ftp_rest (struct rbuf *rbuf, long offset)
+ftp_rest (struct rbuf *rbuf, long long offset)
 {
   char *request, *respline;
   int nwritten;
@@ -781,7 +781,7 @@
 /* Sends the SIZE command to the server, and returns the value in 'size'.
  * If an error occurs, size is set to zero. */
 uerr_t
-ftp_size (struct rbuf *rbuf, const char *file, long int *size)
+ftp_size (struct rbuf *rbuf, const char *file, long long int *size)
 {
   char *request, *respline;
   int nwritten;
@@ -817,7 +817,7 @@
     }
 
   errno = 0;
-  *size = strtol (respline + 4, NULL, 0);
+  *size = strtoll (respline + 4, NULL, 0);
   if (errno) 
     {
       /* 
diff -urN wget-1.8.2.old/src/ftp.c wget-1.8.2/src/ftp.c
--- wget-1.8.2.old/src/ftp.c	2003-10-14 21:55:07.000000000 -0700
+++ wget-1.8.2/src/ftp.c	2003-10-14 22:04:24.000000000 -0700
@@ -82,10 +82,10 @@
 /* Look for regexp "( *[0-9]+ *byte" (literal parenthesis) anywhere in
    the string S, and return the number converted to long, if found, 0
    otherwise.  */
-static long
+static long long
 ftp_expected_bytes (const char *s)
 {
-  long res;
+  long long res;
 
   while (1)
     {
@@ -125,7 +125,7 @@
    connection to the server.  It always closes the data connection,
    and closes the control connection in case of error.  */
 static uerr_t
-getftp (struct url *u, long *len, long restval, ccon *con)
+getftp (struct url *u, long long *len, long long restval, ccon *con)
 {
   int csock, dtsock, res;
   uerr_t err;
@@ -135,7 +135,7 @@
   unsigned char pasv_addr[6];
   int cmd = con->cmd;
   int passive_mode_open = 0;
-  long expected_bytes = 0L;
+  long long expected_bytes = 0L;
 
   assert (con != NULL);
   assert (con->target != NULL);
@@ -747,7 +747,7 @@
   if (restval && (cmd & DO_RETR))
     {
       if (!opt.server_response)
-	logprintf (LOG_VERBOSE, "==> REST %ld ... ", restval);
+	logprintf (LOG_VERBOSE, "==> REST %lld ... ", restval);
       err = ftp_rest (&con->rbuf, restval);
 
       /* FTPRERR, WRITEFAILED, FTPRESTFAIL */
@@ -966,18 +966,18 @@
 
   if (*len)
     {
-      logprintf (LOG_VERBOSE, _("Length: %s"), legible (*len));
+      logprintf (LOG_VERBOSE, _("Length: %s"), legible_very_long (*len));
       if (restval)
-	logprintf (LOG_VERBOSE, _(" [%s to go]"), legible (*len - restval));
+	logprintf (LOG_VERBOSE, _(" [%s to go]"), legible_very_long (*len - restval));
       logputs (LOG_VERBOSE, "\n");
       expected_bytes = *len;	/* for get_contents/show_progress */
     }
   else if (expected_bytes)
     {
-      logprintf (LOG_VERBOSE, _("Length: %s"), legible (expected_bytes));
+      logprintf (LOG_VERBOSE, _("Length: %s"), legible_very_long (expected_bytes));
       if (restval)
 	logprintf (LOG_VERBOSE, _(" [%s to go]"),
-		   legible (expected_bytes - restval));
+		   legible_very_long (expected_bytes - restval));
       logputs (LOG_VERBOSE, _(" (unauthoritative)\n"));
     }
 
@@ -1100,7 +1100,7 @@
 ftp_loop_internal (struct url *u, struct fileinfo *f, ccon *con)
 {
   int count, orig_lp;
-  long restval, len;
+  long long restval, len;
   char *tms, *tmrate, *locf;
   uerr_t err;
   struct stat st;
@@ -1245,7 +1245,7 @@
 	  CLOSE (RBUF_FD (&con->rbuf));
 	  rbuf_uninitialize (&con->rbuf);
 	}
-      logprintf (LOG_VERBOSE, _("%s (%s) - `%s' saved [%ld]\n\n"),
+      logprintf (LOG_VERBOSE, _("%s (%s) - `%s' saved [%lld]\n\n"),
 		 tms, tmrate, locf, len);
       if (!opt.verbose && !opt.quiet)
 	{
@@ -1253,7 +1253,7 @@
              so that we don't do the needless allocation every
              time. */
 	  char *hurl = url_string (u, 1);
-	  logprintf (LOG_NONVERBOSE, "%s URL: %s [%ld] -> \"%s\" [%d]\n",
+	  logprintf (LOG_NONVERBOSE, "%s URL: %s [%lld] -> \"%s\" [%d]\n",
 		     tms, hurl, len, locf, count);
 	  xfree (hurl);
 	}
@@ -1371,7 +1371,7 @@
   static int depth = 0;
   uerr_t err;
   struct fileinfo *orig;
-  long local_size;
+  long long local_size;
   time_t tml;
   int dlthis;
 
@@ -1459,7 +1459,7 @@
                 {
                   /* Sizes do not match */
                   logprintf (LOG_VERBOSE, _("\
-The sizes do not match (local %ld) -- retrieving.\n\n"), local_size);
+The sizes do not match (local %lld) -- retrieving.\n\n"), local_size);
                 }
             }
 	}	/* opt.timestamping && f->type == FT_PLAINFILE */
@@ -1807,13 +1807,13 @@
 		  if (!opt.output_document)
 		    {
 		      struct stat st;
-		      long sz;
+		      long long sz;
 		      if (stat (filename, &st) == 0)
 			sz = st.st_size;
 		      else
 			sz = -1;
 		      logprintf (LOG_NOTQUIET,
-				 _("Wrote HTML-ized index to `%s' [%ld].\n"),
+				 _("Wrote HTML-ized index to `%s' [%lld].\n"),
 				 filename, sz);
 		    }
 		  else
diff -urN wget-1.8.2.old/src/ftp.h wget-1.8.2/src/ftp.h
--- wget-1.8.2.old/src/ftp.h	2003-10-14 21:55:07.000000000 -0700
+++ wget-1.8.2/src/ftp.h	2003-10-14 22:05:16.000000000 -0700
@@ -54,11 +54,11 @@
 uerr_t ftp_type PARAMS ((struct rbuf *, int));
 uerr_t ftp_cwd PARAMS ((struct rbuf *, const char *));
 uerr_t ftp_retr PARAMS ((struct rbuf *, const char *));
-uerr_t ftp_rest PARAMS ((struct rbuf *, long));
+uerr_t ftp_rest PARAMS ((struct rbuf *, long long));
 uerr_t ftp_list PARAMS ((struct rbuf *, const char *));
 uerr_t ftp_syst PARAMS ((struct rbuf *, enum stype *));
 uerr_t ftp_pwd PARAMS ((struct rbuf *, char **));
-uerr_t ftp_size PARAMS ((struct rbuf *, const char *, long int *));
+uerr_t ftp_size PARAMS ((struct rbuf *, const char *, long long int *));
 
 struct url;
 
@@ -83,7 +83,7 @@
 {
   enum ftype type;		/* file type */
   char *name;			/* file name */
-  long size;			/* file size */
+  long long size;			/* file size */
   long tstamp;			/* time-stamp */
   int perms;			/* file permissions */
   char *linkto;			/* link to which file points */
diff -urN wget-1.8.2.old/src/headers.c wget-1.8.2/src/headers.c
--- wget-1.8.2.old/src/headers.c	2002-05-17 20:14:48.000000000 -0700
+++ wget-1.8.2/src/headers.c	2003-10-14 22:05:51.000000000 -0700
@@ -157,7 +157,7 @@
 header_extract_number (const char *header, void *closure)
 {
   const char *p = header;
-  long result;
+  long long result;
 
   for (result = 0; ISDIGIT (*p); p++)
     result = 10 * result + (*p - '0');
@@ -173,7 +173,7 @@
   if (*p)
     return 0;
 
-  *(long *)closure = result;
+  *(long long *)closure = result;
   return 1;
 }
 
diff -urN wget-1.8.2.old/src/http.c wget-1.8.2/src/http.c
--- wget-1.8.2.old/src/http.c	2003-10-14 21:55:07.000000000 -0700
+++ wget-1.8.2/src/http.c	2003-10-14 22:10:30.000000000 -0700
@@ -185,7 +185,7 @@
 struct http_process_range_closure {
   long first_byte_pos;
   long last_byte_pos;
-  long entity_length;
+  long long entity_length;
 };
 
 /* Parse the `Content-Range' header and extract the information it
@@ -485,9 +485,9 @@
 
 struct http_stat
 {
-  long len;			/* received length */
-  long contlen;			/* expected length */
-  long restval;			/* the restart value */
+  long long len;			/* received length */
+  long long contlen;			/* expected length */
+  long long restval;			/* the restart value */
   int res;			/* the result of last read */
   char *newloc;			/* new location (redirection) */
   char *remote_time;		/* remote time-stamp string */
@@ -550,8 +550,8 @@
   char *all_headers;
   char *port_maybe;
   char *request_keep_alive;
-  int sock, hcount, num_written, all_length, statcode;
-  long contlen, contrange;
+  int sock, hcount, num_written, statcode;
+  long long contlen, all_length, contrange;
   struct url *conn;
   FILE *fp;
   int auth_tried_already;
@@ -717,7 +717,7 @@
          HTTP/1.1 specifies a multipart/byte-ranges MIME type, but
          only if multiple non-overlapping ranges are requested --
          which Wget never does.  */
-      sprintf (range, "Range: bytes=%ld-\r\n", hs->restval);
+      sprintf (range, "Range: bytes=%lld-\r\n", hs->restval);
     }
   else
     range = NULL;
@@ -1297,10 +1297,10 @@
 	  logputs (LOG_VERBOSE, _("Length: "));
 	  if (contlen != -1)
 	    {
-	      logputs (LOG_VERBOSE, legible (contlen));
+	      logputs (LOG_VERBOSE, legible_very_long (contlen));
 	      if (contrange != -1)
 		logprintf (LOG_VERBOSE, _(" (%s to go)"),
-			   legible (contlen - contrange));
+			   legible_very_long (contlen - contrange));
 	    }
 	  else
 	    logputs (LOG_VERBOSE,
@@ -1418,7 +1418,7 @@
   char *tms, *suf, *locf, *tmrate;
   uerr_t err;
   time_t tml = -1, tmr = -1;	/* local and remote time-stamps */
-  long local_size = 0;		/* the size of the local file */
+  long long local_size = 0;		/* the size of the local file */
   size_t filename_len;
   struct http_stat hstat;	/* HTTP status */
   struct stat st;
@@ -1741,7 +1741,7 @@
 		}
 	      else if (tml >= tmr)
 		logprintf (LOG_VERBOSE, _("\
-The sizes do not match (local %ld) -- retrieving.\n"), local_size);
+The sizes do not match (local %lld) -- retrieving.\n"), local_size);
 	      else
 		logputs (LOG_VERBOSE,
 			 _("Remote file is newer, retrieving.\n"));
@@ -1785,10 +1785,10 @@
 	  if (*dt & RETROKF)
 	    {
 	      logprintf (LOG_VERBOSE,
-			 _("%s (%s) - `%s' saved [%ld/%ld]\n\n"),
+			 _("%s (%s) - `%s' saved [%lld/%lld]\n\n"),
 			 tms, tmrate, locf, hstat.len, hstat.contlen);
 	      logprintf (LOG_NONVERBOSE,
-			 "%s URL:%s [%ld/%ld] -> \"%s\" [%d]\n",
+			 "%s URL:%s [%lld/%lld] -> \"%s\" [%d]\n",
 			 tms, u->url, hstat.len, hstat.contlen, locf, count);
 	    }
 	  ++opt.numurls;
@@ -1812,10 +1812,10 @@
 	      if (*dt & RETROKF)
 		{
 		  logprintf (LOG_VERBOSE,
-			     _("%s (%s) - `%s' saved [%ld]\n\n"),
+			     _("%s (%s) - `%s' saved [%lld]\n\n"),
 			     tms, tmrate, locf, hstat.len);
 		  logprintf (LOG_NONVERBOSE,
-			     "%s URL:%s [%ld] -> \"%s\" [%d]\n",
+			     "%s URL:%s [%lld] -> \"%s\" [%d]\n",
 			     tms, u->url, hstat.len, locf, count);
 		}
 	      ++opt.numurls;
@@ -1835,7 +1835,7 @@
 						 connection too soon */
 	    {
 	      logprintf (LOG_VERBOSE,
-			 _("%s (%s) - Connection closed at byte %ld. "),
+			 _("%s (%s) - Connection closed at byte %lld. "),
 			 tms, tmrate, hstat.len);
 	      printwhat (count, opt.ntry);
 	      free_hstat (&hstat);
@@ -1844,10 +1844,10 @@
 	  else if (!opt.kill_longer) /* meaning we got more than expected */
 	    {
 	      logprintf (LOG_VERBOSE,
-			 _("%s (%s) - `%s' saved [%ld/%ld])\n\n"),
+			 _("%s (%s) - `%s' saved [%lld/%lld])\n\n"),
 			 tms, tmrate, locf, hstat.len, hstat.contlen);
 	      logprintf (LOG_NONVERBOSE,
-			 "%s URL:%s [%ld/%ld] -> \"%s\" [%d]\n",
+			 "%s URL:%s [%lld/%lld] -> \"%s\" [%d]\n",
 			 tms, u->url, hstat.len, hstat.contlen, locf, count);
 	      ++opt.numurls;
 	      downloaded_increase (hstat.len);
@@ -1865,7 +1865,7 @@
 	  else			/* the same, but not accepted */
 	    {
 	      logprintf (LOG_VERBOSE,
-			 _("%s (%s) - Connection closed at byte %ld/%ld. "),
+			 _("%s (%s) - Connection closed at byte %lld/%lld. "),
 			 tms, tmrate, hstat.len, hstat.contlen);
 	      printwhat (count, opt.ntry);
 	      free_hstat (&hstat);
@@ -1877,7 +1877,7 @@
 	  if (hstat.contlen == -1)
 	    {
 	      logprintf (LOG_VERBOSE,
-			 _("%s (%s) - Read error at byte %ld (%s)."),
+			 _("%s (%s) - Read error at byte %lld (%s)."),
 			 tms, tmrate, hstat.len, strerror (errno));
 	      printwhat (count, opt.ntry);
 	      free_hstat (&hstat);
@@ -1886,7 +1886,7 @@
 	  else			/* hstat.res == -1 and contlen is given */
 	    {
 	      logprintf (LOG_VERBOSE,
-			 _("%s (%s) - Read error at byte %ld/%ld (%s). "),
+			 _("%s (%s) - Read error at byte %lld/%lld (%s). "),
 			 tms, tmrate, hstat.len, hstat.contlen,
 			 strerror (errno));
 	      printwhat (count, opt.ntry);
diff -urN wget-1.8.2.old/src/progress.c wget-1.8.2/src/progress.c
--- wget-1.8.2.old/src/progress.c	2003-10-14 21:55:06.000000000 -0700
+++ wget-1.8.2/src/progress.c	2003-10-14 22:18:28.000000000 -0700
@@ -51,21 +51,21 @@
 
 struct progress_implementation {
   char *name;
-  void *(*create) PARAMS ((long, long));
-  void (*update) PARAMS ((void *, long, long));
+  void *(*create) PARAMS ((long long, long long));
+  void (*update) PARAMS ((void *, long long, long));
   void (*finish) PARAMS ((void *, long));
   void (*set_params) PARAMS ((const char *));
 };
 
 /* Necessary forward declarations. */
 
-static void *dot_create PARAMS ((long, long));
-static void dot_update PARAMS ((void *, long, long));
+static void *dot_create PARAMS ((long long, long long));
+static void dot_update PARAMS ((void *, long long, long));
 static void dot_finish PARAMS ((void *, long));
 static void dot_set_params PARAMS ((const char *));
 
-static void *bar_create PARAMS ((long, long));
-static void bar_update PARAMS ((void *, long, long));
+static void *bar_create PARAMS ((long long, long long));
+static void bar_update PARAMS ((void *, long long, long));
 static void bar_finish PARAMS ((void *, long));
 static void bar_set_params PARAMS ((const char *));
 
@@ -155,7 +155,7 @@
    advance.  */
 
 void *
-progress_create (long initial, long total)
+progress_create (long long initial, long long total)
 {
   /* Check if the log status has changed under our feet. */
   if (output_redirected)
@@ -189,9 +189,9 @@
 /* Dot-printing. */
 
 struct dot_progress {
-  long initial_length;		/* how many bytes have been downloaded
+  long long initial_length;		/* how many bytes have been downloaded
 				   previously. */
-  long total_length;		/* expected total byte count when the
+  long long total_length;		/* expected total byte count when the
 				   download finishes */
 
   int accumulated;
@@ -204,7 +204,7 @@
 /* Dot-progress backend for progress_create. */
 
 static void *
-dot_create (long initial, long total)
+dot_create (long long initial, long long total)
 {
   struct dot_progress *dp = xmalloc (sizeof (struct dot_progress));
 
@@ -216,14 +216,14 @@
   if (dp->initial_length)
     {
       int dot_bytes = opt.dot_bytes;
-      long row_bytes = opt.dot_bytes * opt.dots_in_line;
+      long long row_bytes = opt.dot_bytes * opt.dots_in_line;
 
       int remainder = (int) (dp->initial_length % row_bytes);
-      long skipped = dp->initial_length - remainder;
+      long long skipped = dp->initial_length - remainder;
 
       if (skipped)
 	{
-	  int skipped_k = (int) (skipped / 1024); /* skipped amount in K */
+	  long long int skipped_k = (int) (skipped / 1024); /* skipped amount in K */
 	  int skipped_k_len = numdigit (skipped_k);
 	  if (skipped_k_len < 5)
 	    skipped_k_len = 5;
@@ -231,11 +231,11 @@
 	  /* Align the [ skipping ... ] line with the dots.  To do
 	     that, insert the number of spaces equal to the number of
 	     digits in the skipped amount in K.  */
-	  logprintf (LOG_VERBOSE, _("\n%*s[ skipping %dK ]"),
+	  logprintf (LOG_VERBOSE, _("\n%*s[ skipping %lldK ]"),
 		     2 + skipped_k_len, "", skipped_k);
 	}
 
-      logprintf (LOG_VERBOSE, "\n%5ldK", skipped / 1024);
+      logprintf (LOG_VERBOSE, "\n%5lldK", skipped / 1024);
       for (; remainder >= dot_bytes; remainder -= dot_bytes)
 	{
 	  if (dp->dots % opt.dot_spacing == 0)
@@ -253,7 +253,7 @@
 }
 
 static void
-print_percentage (long bytes, long expected,
+print_percentage (long long int bytes, long long int expected,
                   long row_size,
                   long dltime, struct dot_progress *dp )
 {
@@ -310,11 +310,11 @@
 /* Dot-progress backend for progress_update. */
 
 static void
-dot_update (void *progress, long howmuch, long dltime)
+dot_update (void *progress, long long howmuch, long dltime)
 {
   struct dot_progress *dp = progress;
   int dot_bytes = opt.dot_bytes;
-  long row_bytes = opt.dot_bytes * opt.dots_in_line;
+  long long row_bytes = opt.dot_bytes * opt.dots_in_line;
 
   log_set_flush (0);
 
@@ -322,7 +322,7 @@
   for (; dp->accumulated >= dot_bytes; dp->accumulated -= dot_bytes)
     {
       if (dp->dots == 0)
-	logprintf (LOG_VERBOSE, "\n%5ldK", dp->rows * row_bytes / 1024);
+	logprintf (LOG_VERBOSE, "\n%5lldK", dp->rows * row_bytes / 1024);
 
       if (dp->dots % opt.dot_spacing == 0)
 	logputs (LOG_VERBOSE, " ");
@@ -367,7 +367,7 @@
       logputs (LOG_VERBOSE, " ");
     }
   {
-    long row_qty = dp->dots * dot_bytes + dp->accumulated;
+    long long row_qty = dp->dots * dot_bytes + dp->accumulated;
     if (dp->rows == dp->initial_length / row_bytes)
       row_qty -= dp->initial_length % row_bytes;
     print_percentage (dp->rows * row_bytes
@@ -448,11 +448,11 @@
 static int screen_width = DEFAULT_SCREEN_WIDTH;
 
 struct bar_progress {
-  long initial_length;		/* how many bytes have been downloaded
+  long long initial_length;		/* how many bytes have been downloaded
 				   previously. */
-  long total_length;		/* expected total byte count when the
+  long long total_length;		/* expected total byte count when the
 				   download finishes */
-  long count;			/* bytes downloaded so far */
+  long long count;			/* bytes downloaded so far */
 
   long last_update;		/* time of the last screen update. */
 
@@ -471,7 +471,7 @@
 static void display_image PARAMS ((char *));
 
 static void *
-bar_create (long initial, long total)
+bar_create (long long initial, long long total)
 {
   struct bar_progress *bp = xmalloc (sizeof (struct bar_progress));
 
@@ -499,7 +499,7 @@
 }
 
 static void
-bar_update (void *progress, long howmuch, long dltime)
+bar_update (void *progress, long long howmuch, long dltime)
 {
   struct bar_progress *bp = progress;
   int force_update = 0;
@@ -569,9 +569,9 @@
 create_image (struct bar_progress *bp, long dltime)
 {
   char *p = bp->buffer;
-  long size = bp->initial_length + bp->count;
+  long long size = bp->initial_length + bp->count;
 
-  char *size_legible = legible (size);
+  char *size_legible = legible_very_long (size);
   int size_legible_len = strlen (size_legible);
 
   /* The progress bar should look like this:
@@ -667,7 +667,7 @@
     }
 
   /* " 234,567,890" */
-  sprintf (p, " %-11s", legible (size));
+  sprintf (p, " %-11s", legible_very_long (size));
   p += strlen (p);
 
   /* " 1012.45K/s" */
@@ -687,7 +687,7 @@
     {
       int eta, eta_hrs, eta_min, eta_sec;
       double tm_sofar = (double)dltime / 1000;
-      long bytes_remaining = bp->total_length - size;
+      long long bytes_remaining = bp->total_length - size;
 
       eta = (int) (tm_sofar * bytes_remaining / bp->count);
 
diff -urN wget-1.8.2.old/src/progress.h wget-1.8.2/src/progress.h
--- wget-1.8.2.old/src/progress.h	2002-05-17 20:05:20.000000000 -0700
+++ wget-1.8.2/src/progress.h	2003-10-14 22:18:51.000000000 -0700
@@ -34,7 +34,7 @@
 void set_progress_implementation PARAMS ((const char *));
 void progress_schedule_redirect PARAMS ((void));
 
-void *progress_create PARAMS ((long, long));
+void *progress_create PARAMS ((long long, long long));
 void progress_update PARAMS ((void *, long, long));
 void progress_finish PARAMS ((void *, long));
 
diff -urN wget-1.8.2.old/src/retr.c wget-1.8.2/src/retr.c
--- wget-1.8.2.old/src/retr.c	2002-05-17 20:05:21.000000000 -0700
+++ wget-1.8.2/src/retr.c	2003-10-14 22:21:41.000000000 -0700
@@ -67,7 +67,7 @@
 
 
 static struct {
-  long bytes;
+  long long bytes;
   long dltime;
 } limit_data;
 
@@ -84,25 +84,25 @@
    TIMER the timer, and ADJUSTMENT the previous.  */
 
 static void
-limit_bandwidth (long bytes, long delta)
+limit_bandwidth (long long bytes, long long delta)
 {
-  long expected;
+  long long expected;
 
   limit_data.bytes += bytes;
   limit_data.dltime += delta;
 
-  expected = (long)(1000.0 * limit_data.bytes / opt.limit_rate);
+  expected = (long long)(1000.0 * limit_data.bytes / opt.limit_rate);
 
   if (expected > limit_data.dltime)
     {
-      long slp = expected - limit_data.dltime;
+      long long slp = expected - limit_data.dltime;
       if (slp < 200)
 	{
-	  DEBUGP (("deferring a %ld ms sleep (%ld/%ld) until later.\n",
+	  DEBUGP (("deferring a %lld ms sleep (%lld/%lld) until later.\n",
 		   slp, limit_data.bytes, limit_data.dltime));
 	  return;
 	}
-      DEBUGP (("sleeping %ld ms\n", slp));
+      DEBUGP (("sleeping %lld ms\n", slp));
       usleep (1000 * slp);
     }
 
@@ -134,7 +134,7 @@
    rbuf_flush() before actually reading from fd.  If you wish to read
    from fd immediately, flush or discard the buffer.  */
 int
-get_contents (int fd, FILE *fp, long *len, long restval, long expected,
+get_contents (int fd, FILE *fp, long long *len, long long restval, long long expected,
 	      struct rbuf *rbuf, int use_expected, long *elapsed)
 {
   int res = 0;
@@ -236,7 +236,7 @@
    appropriate for the speed.  If PAD is non-zero, strings will be
    padded to the width of 7 characters (xxxx.xx).  */
 char *
-retr_rate (long bytes, long msecs, int pad)
+retr_rate (long long bytes, long long msecs, int pad)
 {
   static char res[20];
   static char *rate_names[] = {"B/s", "KB/s", "MB/s", "GB/s" };
@@ -256,7 +256,7 @@
    UNITS is zero for B/s, one for KB/s, two for MB/s, and three for
    GB/s.  */
 double
-calc_rate (long bytes, long msecs, int *units)
+calc_rate (long long bytes, long long msecs, int *units)
 {
   double dlrate;
 
@@ -621,7 +621,7 @@
 /* Increment opt.downloaded by BY_HOW_MUCH.  If an overflow occurs,
    set opt.downloaded_overflow to 1. */
 void
-downloaded_increase (unsigned long by_how_much)
+downloaded_increase (unsigned long long by_how_much)
 {
   VERY_LONG_TYPE old;
   if (opt.downloaded_overflow)
diff -urN wget-1.8.2.old/src/retr.h wget-1.8.2/src/retr.h
--- wget-1.8.2.old/src/retr.h	2002-05-17 20:05:21.000000000 -0700
+++ wget-1.8.2/src/retr.h	2003-10-14 22:22:39.000000000 -0700
@@ -32,18 +32,18 @@
 
 #include "rbuf.h"
 
-int get_contents PARAMS ((int, FILE *, long *, long, long, struct rbuf *,
+int get_contents PARAMS ((int, FILE *, long long *, long long, long long, struct rbuf *,
 			  int, long *));
 
 uerr_t retrieve_url PARAMS ((const char *, char **, char **,
 			     const char *, int *));
 uerr_t retrieve_from_file PARAMS ((const char *, int, int *));
 
-char *retr_rate PARAMS ((long, long, int));
-double calc_rate PARAMS ((long, long, int *));
+char *retr_rate PARAMS ((long long, long long, int));
+double calc_rate PARAMS ((long long, long long, int *));
 void printwhat PARAMS ((int, int));
 
-void downloaded_increase PARAMS ((unsigned long));
+void downloaded_increase PARAMS ((unsigned long long));
 int downloaded_exceeds_quota PARAMS ((void));
 
 void sleep_between_retrievals PARAMS ((int));
diff -urN wget-1.8.2.old/src/utils.c wget-1.8.2/src/utils.c
--- wget-1.8.2.old/src/utils.c	2002-05-17 20:05:22.000000000 -0700
+++ wget-1.8.2/src/utils.c	2003-10-14 22:22:57.000000000 -0700
@@ -1280,7 +1280,7 @@
 
 /* Count the digits in a (long) integer.  */
 int
-numdigit (long number)
+numdigit (long long number)
 {
   int cnt = 1;
   if (number < 0)
diff -urN wget-1.8.2.old/src/utils.h wget-1.8.2/src/utils.h
--- wget-1.8.2.old/src/utils.h	2002-05-17 20:05:23.000000000 -0700
+++ wget-1.8.2/src/utils.h	2003-10-14 22:23:25.000000000 -0700
@@ -99,7 +99,7 @@
 
 char *legible PARAMS ((long));
 char *legible_very_long PARAMS ((VERY_LONG_TYPE));
-int numdigit PARAMS ((long));
+int numdigit PARAMS ((long long));
 char *number_to_string PARAMS ((char *, long));
 
 struct wget_timer *wtimer_allocate PARAMS ((void));
