]> sjero.net Git - wget/blob - src/ChangeLog
[svn] Renamed the SSL switches and commands.
[wget] / src / ChangeLog
1 2005-04-26  Hrvoje Niksic  <hniksic@xemacs.org>
2
3         * gen_sslfunc.c (ssl_init): Use default locations for loading the
4         certificate bundles.
5         (ssl_init_prng): Disable the cryptographically weak PRNG
6         initialization fallback.
7
8         * init.c: Renamed SSL command-line arguments and wgetrc commands.
9         (defaults): Check the server certificate by default.
10
11 2005-04-26  Hrvoje Niksic  <hniksic@xemacs.org>
12
13         * cookies.c (cookie_handle_set_cookie): Delete the part of the
14         path after the trailing slash.
15
16         * http.c (gethttp): Call cookie_handle_set_cookie with path that
17         begins with '/'.
18
19 2005-04-26  Hrvoje Niksic  <hniksic@xemacs.org>
20
21         * http.c (gethttp): Call skip_short_body only if keep_alive is in
22         use.
23         (gethttp): Send the User-Agent header with the CONNECT request as
24         well.
25
26 2005-04-25  Hrvoje Niksic  <hniksic@xemacs.org>
27
28         * main.c (option_data): Removed support for the undocumented flag
29         --use-proxy.
30
31 2005-04-25  Hrvoje Niksic  <hniksic@xemacs.org>
32
33         * main.c (option_data): Don't treat -Y as a boolean switch; treat
34         it as a value switch instead, so "-Y off" continues to work.
35
36 2005-04-24  Hrvoje Niksic  <hniksic@xemacs.org>
37
38         * utils.c (aprintf): Delete unreachable statement.
39
40 2005-04-24  Hrvoje Niksic  <hniksic@xemacs.org>
41
42         * host.c (cmp_prefer_ipv4): New function.
43         (cmp_prefer_ipv6): New function.
44         (lookup_host): Use the appropriate comparator according to
45         opt.prefer_family.
46
47         * init.c: New option prefer_family.
48
49         * host.c (is_valid_ipv6_address): Spell NS_* constants in lower
50         case to avoid clash with system headers.
51         (lookup_host): Reorder the addresses so that IPv4 ones come first.
52
53         * utils.c (stable_sort): New function.
54
55 2005-04-24  Hrvoje Niksic  <hniksic@xemacs.org>
56
57         * connect.c (retryable_socket_connect_error): Return 0 for
58         ENETUNREACH and EHOSTUNREACH.
59
60 2005-04-23  Hrvoje Niksic  <hniksic@xemacs.org>
61
62         * cmpt.c: Reenable the memmove implementation for systems that
63         lack it.
64
65         * http.c (gethttp): Store the "authorized" state of the persistent
66         connection.
67         (request_remove_header): New function.
68         (gethttp): Don't send the "Basic" authentication if the connection
69         is already authorized.
70
71 2005-04-23  Hrvoje Niksic  <hniksic@xemacs.org>
72
73         * utils.c (base64_encode): Treat input as unsigned chars.
74         Required for correct encoding of binary stuff.
75
76 2005-04-23  Hrvoje Niksic  <hniksic@xemacs.org>
77
78         * http-ntlm.c: Format the function definitions in an
79         ansi2knr-friendly fashion.
80
81 2005-04-22  Hrvoje Niksic  <hniksic@xemacs.org>
82
83         * http.c (gethttp): Handle multiple WWW-Authentication headers,
84         only one of which is recognized.  Those are sent by IIS with NTLM
85         authorization.
86         (create_authorization_line): Propagate information whether
87         authorization is finished.
88         (gethttp): Only stop authorization when it's really finished, not
89         after fixed two steps.
90
91 2005-04-21  Hrvoje Niksic  <hniksic@xemacs.org>
92
93         * gen_sslfunc.c (ssl_init): Fix warning message text; mark the
94         message as translatable.
95
96 2005-04-21  Hrvoje Niksic  <hniksic@xemacs.org>
97
98         * main.c (print_help): Print the EGD option outside the cluster of
99         SSL options.
100
101 2005-04-21  Hrvoje Niksic  <hniksic@xemacs.org>
102
103         * http-ntlm.c (ntlm_output): Fix setting the domain.
104         Suggested by Sami Krank.
105
106 2005-04-20  Mauro Tortonesi  <mauro@ferrara.linux.it>
107
108         * connect.c: Set IPV6_V6ONLY socket option when -6 switch is used.
109
110 2005-04-20  FUJISHIMA Satsuki  <sf@FreeBSD.org>
111
112         * http.c (request_set_header): Fix the check whether a new header
113         needs to be allocated.
114
115 2005-04-18  Hrvoje Niksic  <hniksic@xemacs.org>
116
117         * utils.c (base64_encode): Use the parameter order that makes more
118         sense.  Return the length of the base64 written.  Updated all
119         callers.
120
121 2005-04-17  Hrvoje Niksic  <hniksic@xemacs.org>
122
123         * http.c (request_set_header): Free NAME when VALUE is NULL and
124         freeing the header name is requested.
125
126 2005-04-17  Hrvoje Niksic  <hniksic@xemacs.org>
127
128         * snprintf.c (fmtstr): Declare VALUE as const char *.
129         Based on patch by Russ Allbery.
130
131 2005-04-17  Hrvoje Niksic  <hniksic@xemacs.org>
132
133         * snprintf.c (fmtfp): More correct handling of significant digit
134         count with %g -- 0.002 has one significant digit, not three.
135
136 2005-04-16  Hrvoje Niksic  <hniksic@xemacs.org>
137
138         * retr.c (fd_read_body): Respect read timeout with non-interactive
139         or no progress gauge -- treat ETIMEDOUT specially only when
140         progress_interactive.
141         Reported by FUJISHIMA Satsuki.
142
143 2005-04-16  FUJISHIMA Satsuki  <sf@FreeBSD.org>
144
145         * http.c (gethttp): Don't use HTTP/1.0 persistent connections over
146         proxy.
147
148 2005-04-16  Hrvoje Niksic  <hniksic@xemacs.org>
149
150         * snprintf.c: Use the PARAMS macro to handle prototypes.  Write
151         function definitions in the ansi2knr-friendly way.
152         (fmtstr): If string precision is specified, don't read VALUE past
153         it.
154         (dopr): Actually print %g and %e formats.
155         (fmtfp): Fix a bug that caused 0.01 to be printed as 0.1.
156         (fmtfp): Use LLONG in floating point conversions to be able to
157         convert more digits.
158         (fmtfp): Interpret precision as number of significant digits with
159         %g.
160         (fmtfp): Omit trailing decimal zeros with %g.
161
162         * snprintf.c: Don't include <ctype.h> because none of it is used.
163         Include strings.h/string.h, as per Autoconf.
164
165 2005-04-15  Hrvoje Niksic  <hniksic@xemacs.org>
166
167         * ptimer.c: Use _POSIX_TIMERS - 0 > 0, which handles the case when
168         _POSIX_TIMERS is defined but empty, as well as the case when it is
169         undefined.  Do the same with the check for _POSIX_MONOTONIC_CLOCK.
170         Suggested by Larry Jones.
171
172 2005-04-15  Hrvoje Niksic  <hniksic@xemacs.org>
173
174         * ptimer.c: Check that _POSIX_TIMERS is defined as well as > 0.
175         Problem reported by Steven M. Schweda.
176
177 2005-04-14  Hrvoje Niksic  <hniksic@xemacs.org>
178
179         * http.c (skip_short_body): Print the skipped body data in debug
180         mode.
181         (skip_short_body): Don't skip more than 4k of body data.
182         (skip_short_body): Return whether the skipping was successful.
183         (gethttp): If skip_short_body failed, invalidate the connection.
184
185 2005-04-12  Gisle Vanem  <giva@bgnett.no>
186
187         * ftp.c (getftp): Ditto.
188
189         * http.c (gethttp): Open the output file in binary mode.
190
191 2005-04-11  Hrvoje Niksic  <hniksic@xemacs.org>
192
193         * hash.c: Conditionalize including config.h on HAVE_CONFIG_H
194         instead of on STANDALONE.
195
196 2005-04-11  Hrvoje Niksic  <hniksic@xemacs.org>
197
198         * gen_sslfunc.c (ssl_print_errors): Made static.
199         (ssl_print_errors): Eliminate potentially dangerous fixed-size
200         error buffer.  Passing NULL to ERR_error_string causes it to use
201         its own static buffer, which is fine for our purposes.
202
203         * gen_sslfunc.c: Include gen_sslfunc.h.  Make the declarations of
204         ssl_init and ssl_conect match the actual definitions.
205         (ssl_connect): Simply return a boolean, the SSL context is no
206         longer useful as a return value.
207
208         * retr.c: Don't include SSL headers; we don't need them.
209
210 2005-04-11  Hrvoje Niksic  <hniksic@xemacs.org>
211
212         * config-post.h: Don't define _VA_LIST under Solaris; it breaks
213         compilation with GCC 3.4 under Solaris 10.  (It was defined to
214         avoid a warning with previous versions of GCC.)
215
216 2005-04-11  Hrvoje Niksic  <hniksic@xemacs.org>
217
218         * xmalloc.c (register_ptr): Warn the user to increase SZ prior to
219         aborting.
220
221 2005-04-11  Hrvoje Niksic  <hniksic@xemacs.org>
222
223         * convert.c (convert_cleanup): Free converted_files.
224
225 2005-04-10  Hrvoje Niksic  <hniksic@xemacs.org>
226
227         * wget.h (DEBUGP): Use __builtin_expect to give a hint to GCC that
228         opt.debug is false in the vast majority of cases.
229
230 2005-04-10  Hrvoje Niksic  <hniksic@xemacs.org>
231
232         * config-post.h: Declare alloca as void *, not char *.
233
234 2005-04-09  Hrvoje Niksic  <hniksic@xemacs.org>
235
236         * recur.c (download_child_p): When -p is used, (temporarily)
237         ignore accept/reject rules for HTMLs, even when they are at the
238         maximum recursion depth.  That is because with -p we are, if
239         necessary, overstepping the max. depth to get the requisites.
240
241 2004-06-12  Larry Jones <lawrence.jones@ugsplm.com>
242
243         * recur.c (download_child_p): Correct the logic in check number 6:
244         test opt.reclevel (not DEPTH) against INFINITE_RECURSION.
245
246 2005-04-09  Hrvoje Niksic  <hniksic@xemacs.org>
247
248         * url.c: Use "static const" in preference to "const static".
249         Sun's cc warns that "storage class after type is obsolescent".
250
251         * url.c (urlchr_table): Don't mark ~ as unsafe, too many broken
252         web sites are confused when ~ is changed to %7E.  Their servers
253         redirect /%7Efoo/ to /~foo/, which Wget again accesses using %7E,
254         causing further redirections, therefore looping infinitely.  See
255         Debian bug #301624 for an example.
256
257 2005-04-09  Hrvoje Niksic  <hniksic@xemacs.org>
258
259         * alloca.c: Include wget.h to be able to use xmalloc.  In addition
260         to defining malloc to xmalloc, also define free to xfree.
261
262 2005-04-09  Hrvoje Niksic  <hniksic@xemacs.org>
263
264         * http-ntlm.c (ntlm_output): Use "char", not "unsigned char" for
265         ntlmbuf.  Our base64 functions accept char anyway.
266         (ntlm_output): Join up the format string, since we nominally
267         support K&R compilers.
268         (ntlm_output): Ditto.
269
270 2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
271
272         * ptimer.c: Use Windows timers under Cygwin, whose POSIX timer
273         implementation is incomplete.
274
275 2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
276
277         * ptimer.c (struct ptimer): Remove the unused initialized field.
278
279         * ptimer.c: Renamed function parameters from WT (which used to
280         stand for wget_timer or wtimer) to PT.
281
282 2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
283
284         * ptimer.c (posix_init): Be smarter about choosing clocks.  In
285         decreasing order of preference, use CLOCK_MONOTONIC,
286         CLOCK_HIGHRES, and CLOCK_REALTIME.
287         (ptimer_allocate): Removed.
288
289         * ptimer.c: Refactor the code by cleanly separating the
290         architecture-dependent code from the architecture-independent
291         code.
292
293 2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
294
295         * ptimer.c (ptimer_init): Explicitly check that
296         _POSIX_MONOTONIC_CLOCK is *both* defined and >=0.  (Undefined
297         symbols are >=0.)
298
299 2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
300
301         * ptimer.c (ptimer_diff): Fix typo affecting Windows build.
302
303 2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
304
305         * ptimer.c (ptimer_init): In fact, _POSIX_MONOTONIC_CLOCK needs to
306         be >= 0.
307
308         * ptimer.c (ptimer_init): Check whether _POSIX_MONOTONIC_CLOCK is
309         defined instead of whether it's greater than 0.  glibc defines it
310         to 0, but still makes it available via sysconf.
311
312 2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
313
314         * mswindows.c (str_to_int64): Rename OVERFLOW and UNDERFLOW to
315         INT64_OVERFLOW and INT64_UNDERFLOW, since those names are used.
316
317 2005-04-07  Hrvoje Niksic  <hniksic@xemacs.org>
318
319         * ptimer.c: New file.  Move the "wtimer" functions from utils.c to
320         this file and rename them to ptimer_.
321
322 2005-04-07  Hrvoje Niksic  <hniksic@xemacs.org>
323
324         * host.c (NO_ADDRESS): Define NO_ADDRESS only after the system
325         headers have been included.
326
327 2005-04-06  Hrvoje Niksic  <hniksic@xemacs.org>
328
329         * http.c (pconn): Include NTLM data, which is per-connection.
330         (known_authentication_scheme_p): Recognize NTLM authorization.
331         (create_authorization_line): Call ntlm_input and ntlm_output.
332
333         * http-ntlm.c: New file, donated by Daniel Stenberg and originally
334         written for curl, heavily modified for Wget.
335
336         * utils.c (base64_encode): Relocated from http.c, since it is now
337         used by http-ntlm.c, and will possibly be used elsewhere.
338         (base64_decode): New function, originally based on code from GNU
339         recode.
340
341 2005-04-02  Hrvoje Niksic  <hniksic@xemacs.org>
342
343         * ftp.c (ftp_loop): Ditto.
344
345         * ftp-basic.c (ftp_pasv): Use the xzero shorthand for memset(0).
346         (ftp_lpsv): Ditto.
347
348 2005-04-05  Mauro Tortonesi  <mauro@ferrara.linux.it>
349
350         * Makefile.in: removed string_t.c from list of source files.
351
352 2005-04-04  Mauro Tortonesi  <mauro@ferrara.linux.it>
353
354         * string_t.c: Removed.
355         
356         * string_t.h: Removed.
357
358 2005-04-02  Hrvoje Niksic  <hniksic@xemacs.org>
359
360         * url.c (rewrite_shorthand_url): Only accept recognized schemes.
361         That way "foo:80" will correctly be rewritten to "http://foo:80"
362         instead of left unchanged and ultimately rejected because of
363         "unsupported scheme foo".
364
365 2005-03-31  Hrvoje Niksic  <hniksic@xemacs.org>
366
367         * utils.c (number_to_string): Avoid explicit 64-bit constants;
368         construct them by multiplication at compile-time.
369
370         * utils.c, elsewhere: Don't append "L" to 32-bit integer
371         constants; we aren't really compilable on 16-bit systems anyway.
372
373         * hash.c (prime_size): Remove primes larger than 2^31, but include
374         2^31-1, which is prime.
375
376 2005-03-30  Hrvoje Niksic  <hniksic@xemacs.org>
377
378         * utils.c (string_set_to_array): New function.
379
380         * convert.c: Replace the use of "slists" with sets/hash-tables,
381         which in fact suit the intended purpose much better.
382         downloaded_html_list is removed altogether.
383
384 2005-03-29  Hrvoje Niksic  <hniksic@xemacs.org>
385
386         * ftp.h (enum): Rename GLOBALL, GETALL, and GETONE to
387         GLOB_GLOBALL, GLOB_GETALL, and GLOB_GETONE to avoid conflict with
388         Linux headers.
389
390 2005-03-29  Hrvoje Niksic  <hniksic@xemacs.org>
391
392         * utils.c (numdigit): More correct handling of negative numbers.
393
394 2005-03-21  Hrvoje Niksic  <hniksic@xemacs.org>
395
396         * http.c (gethttp): Print the human-readable size.
397
398         * ftp.c (getftp): Print the human-readable size of the file to be
399         downloaded.
400
401         * utils.c (human_readable): New function.
402
403         * utils.c: Renamed "legible" to "with_thousand_seps",
404         "legible_large_int" to "with_thousand_seps_large", and "legible_1"
405         to "add_thousand_seps".
406
407 2005-03-21  Hrvoje Niksic  <hniksic@xemacs.org>
408
409         * http.c (gethttp): Inhibit persistent connections when talking to
410         proxies, as mandated by RFC 2068.
411
412 2005-03-20  Hrvoje Niksic  <hniksic@xemacs.org>
413
414         * url.c (unescape_single_char): New function.
415         (url_escape_dir): Use it to unescape slashes in directory
416         components.
417         (url_string): Escape unsafe chars in host name, except for the ':'
418         charaters, which can appear in IPv6 addresses.
419
420         * main.c (main): Don't access the cookie jar directly.
421
422         * log.c (escnonprint_internal): Correctly calculate the needed
423         string size.  Don't forget the buffer's new size after having
424         reallocated it.
425         (log_cleanup): New function.  Free the escnonprint ring data.
426
427         * init.c (cleanup): Don't free the cookie jar explicitly, it is
428         now done by http_cleanup.
429         (cleanup): opt.user_headers is now a vector, free it with
430         free_vec.
431
432         * http.c (gethttp): Make sure to free the request data, the status
433         message, and the response data before returning from the function.
434         (save_cookies): New function.
435         (http_cleanup): Free the cookie jar here.
436
437         * hash.c: Renamed string_hash to hash_string and ptrhash to
438         hash_pointer.  Exported hash_pointer.
439
440         * xmalloc.c: Organized malloc_table (previously malloc_debug) as a
441         simple EQ hash table.  register_ptr and unregister_ptr are now of
442         O(1) complexity.
443
444         * xmalloc.c: Renamed "*_debug" to debugging_* and "*_real" to
445         checking_*.
446
447 2005-03-12  Hrvoje Niksic  <hniksic@xemacs.org>
448
449         * utils.c (debug_test_md5): Moved to gen-md5.c.
450
451         * mswindows.h: Don't declare inet_ntop, since we don't use it.
452
453         * mswindows.h: For consistency, also wrap closesocket, it being
454         a Winsock call.
455
456         * mswindows.h: Don't declare sleep and usleep; we're defining
457         xsleep now.
458
459         * mswindows.h (mkdir): Don't special-case Borland C, _mkdir
460         works there as well.
461
462         * host.c: Don't include winsock header files; the correct ones
463         are already included by mswindows.h.
464
465         * mswindows.c (xsleep): Round toward the nearest millisecond
466         in an attempt to avoid average short sleeps.
467
468         * utils.c (wtimer_granularity): Report correct values for
469         Windows timers and for high-resolution timers.
470
471         * utils.c (wtimer_initialize_once): New function, called to
472         initialize the timer frequency.
473
474         * utils.c: Replace the use of GetSystemTime with high-resolution
475         counters under Windows.  When high-resolution counters are
476         unavailable, use GetTickCount().
477
478 2005-03-15  Hrvoje Niksic  <hniksic@xemacs.org>
479
480         * retr.c (fd_read_body): Undo the 2004-11-18 change.  Instead,
481         always be "exact".
482
483 2005-03-17  Hrvoje Niksic  <hniksic@xemacs.org>
484
485         * ftp-basic.c (ftp_login): Don't free the string if ftp_response
486         returned an error status because the line didn't get allocated in
487         the first place.
488
489 2005-03-15  Hrvoje Niksic  <hniksic@xemacs.org>
490
491         * http.c (read_http_response_head): Limit the response size to 64k
492         bytes.
493
494         * retr.c (fd_read_hunk): Accept a MAXSIZE argument that limits the
495         number of bytes the function is allowed to allocate.
496         (fd_read_line): Limit the line to 4096 bytes.
497
498 2005-03-12  Hrvoje Niksic  <hniksic@xemacs.org>
499
500         * wget.h: Include options.h after wgint has been defined.
501
502         * options.h (struct options): Declare options processed with
503         cmd_bytes as wgint, not long.
504
505 2005-03-18  Hrvoje Niksic  <hniksic@xemacs.org>
506
507         * init.c (cmd_file): Use concat_strings.
508
509         * http.c (basic_authentication_encode): Use concat_strings.
510
511         * ftp-ls.c (ftp_index): Use concat_strings.
512
513         * ftp-basic.c (ftp_request): Use concat_strings.
514
515         * utils.c (concat_strings): New function.
516
517 2005-03-12  Hrvoje Niksic  <hniksic@xemacs.org>
518
519         * init.c (simple_atof): Handle negative numbers; skip whitespace
520         before the number.
521         (simple_atoi): Ditto.  Also, check for overflow and underflow.
522         (cmd_number): Bail out on negative numbers.
523         (parse_bytes_helper): Ditto.
524
525 2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
526
527         * http.c (gethttp): Handle multiple Set-Cookie headers sent by
528         remote server.
529
530 2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
531
532         * init.c (defaults): Use passive FTP by default.
533
534 2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
535
536         * mswindows.c: Provide wrappers to Winsock functions that set
537         errno to WSAGetLastError() in case of failure.  Also provide a
538         Windows-specific version of strerror.
539
540         * mswindows.h: Wrap calls to socket, bind, connect, recv, send,
541         select, getsockname, getpeername, and setsockopt.
542
543 2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
544
545         * url.c (url_parse): Reject port numbers larger than 65535.  We
546         also check for overflow while parsing port numbers.
547
548 2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
549
550         * utils.c (read_file): Don't use wgint for file size; LFS won't
551         work since the file is mmap'ed as a whole.
552
553         * options.h: Don't include stdio.h.
554
555         * log.c: Ditto.
556
557         * init.c: Disambiguate assignment from non-zero test to avoid
558         Borland C warning.
559
560         * http.c (response_new): Don't needlessly post-increment count.
561
562         * hash.c: Include stdio.h.
563
564         * gnu-md5.h: Don't include stdio.h.
565
566         * getopt.h (struct option): Always use const.
567
568         * ftp.c (getftp): Avoid unnecessary assignment to RES to avoid
569         Borland C warning.
570
571         * ftp-ls.c: Disambiguate assignment from non-zero test to avoid
572         Borland C warning.
573
574         * cmpt.c (strptime_internal): Don't initialize rp_backup when
575         !_NL_CURRENT to avoid Borland C warning.
576
577 2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
578
579         * utils.c (fopen_excl): Fix parse error when O_BINARY is
580         available.
581
582 2005-03-05  Hrvoje Niksic  <hniksic@xemacs.org>
583
584         * url.c (url_file_name): Don't allow hosts named ".." to be
585         appended as path elements.
586
587 2005-03-03  Hrvoje Niksic  <hniksic@xemacs.org>
588
589         * retr.c (retrieve_url): Escape location header.
590
591         * http.c (print_server_response_1): Escape server response when
592         printing it.
593         (gethttp): Escape host name, status message, location header, and
594         content type.
595         (http_loop): Escape error message from server.
596
597         * host.c (lookup_host): Escape host name when printing it.
598
599         * ftp.c (getftp): Escape user name when printing it.
600         (getftp): Escape remote file and directory for printing.
601         (getftp): Escape server listing when printing it.
602         (ftp_retrieve_list): Escape link name and file name.
603         (ftp_retrieve_glob): Escape file name.
604
605         * ftp-basic.c (ftp_response): Escape server response when printing
606         it.
607
608         * cookies.c (parse_set_cookies): Escape the cookie field when
609         printing it.
610         (parse_set_cookies): Escape contents of remote header.
611         (cookie_handle_set_cookie): Escape host name and cookie domain.
612
613         * connect.c (connect_to_ip): Escape the host name.
614
615         * log.c (escnonprint): New function, used for printing strings
616         coming from the server that possibly contain non-ASCII characters.
617         (escnonprint_uri): Ditto.
618
619 2005-02-24  Hrvoje Niksic  <hniksic@xemacs.org>
620
621         * ftp.c (getftp): Ditto.
622
623         * http.c (gethttp): When we're not supposed to overwrite files,
624         use fopen_excl to open the file and recompute the file name.
625
626         * log.c (redirect_output): Use unique_create to avoid a race
627         condition.
628
629         * mswindows.c (fake_fork_child): Use unique_create.
630
631         * utils.c (fopen_excl): New function that opens a stdio stream
632         with the O_EXCL flag (where available).
633         (unique_create): New function, like unique_name, but also creating
634         the file and returning a file pointer.
635         (fork_to_background): Use unique_create to create the file
636         immediately to avoid race condition with multiple instances of
637         wget -b.
638
639 2005-02-24  Hrvoje Niksic  <hniksic@xemacs.org>
640
641         * host.c (lookup_host): Test for AI_ADDRCONFIG directly, instead
642         of checking for HAVE_GETADDRINFO_AI_ADDRCONFIG.
643
644 2005-02-23  Hrvoje Niksic  <hniksic@xemacs.org>
645
646         * host.c (is_valid_ipv6_address): Move here from url.c.
647         (lookup_host): If the address is numeric, don't print the
648         "resolving..." line, don't set up DNS timeouts, and set the
649         AI_NUMERICHOST hint, where available.
650
651 2005-02-26  Gisle Vanem  <giva@bgnett.no>
652
653         * utils.c: Use the nnnLL syntax under GCC.  Define struct_stat to
654         struct _stati64 under __MINGW32__ as well as under MS VC.
655
656 2005-02-26  Hrvoje Niksic  <hniksic@xemacs.org>
657
658         * utils.c: Use the nnnI64 syntax for __int64 constants under all
659         Windows compilers.
660         (SPRINTF_WGINT): Use "%I64" under all Windows compilers.
661
662         * mswindows.h (WGINT_MAX): Use the nnnI64 syntax for
663         __int64 constants under all Windows compilers.
664         (struct_stat): Use `struct stati64' under Borland C.
665         (fstat): Don't redefine to _fstati64 under Borland.
666
667         * mswindows.c: Define str_to_int64 under Borland C as well as
668         under (older) Visual C.
669
670 2005-02-25  Hrvoje Niksic  <hniksic@xemacs.org>
671
672         * ftp.c (getftp): Initialize err to suppress compiler warning.
673
674 2005-02-24  Hrvoje Niksic  <hniksic@xemacs.org>
675
676         * ftp.c (ftp_expected_bytes): Fix bug that caused infloop because
677         of not correctly skipping the '(' character.
678
679 2005-02-24  Hrvoje Niksic  <hniksic@xemacs.org>
680
681         * mswindows.c (wget_ftello): Removed.
682
683         * mswindows.h: Remove bogus definition of stat.
684         (wget_ftello): Remove the leftover ftello replacement.
685
686 2005-02-20  Hrvoje Niksic  <hniksic@xemacs.org>
687
688         * mswindows.c (wget_ftello): Wget's replacement for ftello.
689
690         * utils.c (file_size): Use ftello where available.
691
692         * ftp-ls.c (ftp_parse_unix_ls): Use str_to_wgint to parse the file
693         size.
694         (ftp_parse_winnt_ls): Ditto.
695
696         * ftp-basic.c (ftp_size): Use str_to_wgint to convert number to
697         wgint; pass 10 instead of 0 as the BASE argument.
698
699         * ftp.c (ftp_expected_bytes): Use str_to_wgint to parse the file
700         size.
701
702         * sysdep.h (LARGE_INT_FMT): Use __int64 as LARGE_INT on
703         MSVC/Windows; print it with "%I64".
704
705         * wget.h: Define a `wgint' type, normally aliased to (the possibly
706         64-bit variant of) off_t.
707
708         * all: Use `wgint' instead of `long' for numeric variables that
709         can hold file sizes.
710
711         * utils.c (number_to_string): Support printing of `wgint'
712         argument.
713         (number_to_static_string): New function.
714
715         * all: Replace printf("%ld", long_value) with printf("%s",
716         number_to_static_string(wgint_value)).
717
718 2005-02-18  Mauro Tortonesi <mauro@ferrara.linux.it>
719
720         * main.c: Added the --ftp-passwd command line option.
721
722         * init.c: Renamed command passwd to ftppasswd.
723
724 2005-02-11  Mauro Tortonesi <mauro@ferrara.linux.it>
725         
726         * string_t.c: Fixed a bug in do_escape and triggered escape of
727         backslashes in string_escape to avoid ambiguities in the result
728         string.
729         
730 2005-02-10  Mauro Tortonesi <mauro@ferrara.linux.it>
731
732         * string.h: Renamed to string_t.h to fix a compilation conflict 
733         with the string.h header in the standard C library.
734         
735         * string.c: Renamed to string_t.c for consistency with string.h.
736         
737         * string_t.c: Ditto.
738
739         * string_t.h: Ditto.
740         
741 2004-12-31  Mauro Tortonesi <mauro@ferrara.linux.it>
742
743         * string.c: New file.
744
745         * string.h: New file.
746
747         * Makefile.in: Added string.c to the list of modules to compile.
748
749         * main.c: Updated copyright.
750
751 2004-11-18  Ulf Harnhammar <ulf.harnhammar.9485@student.uu.se>
752
753         * ftp-ls.c: Fixed a problem in ftp_parse_winnt_ls that could allow a
754         malicious remote FTP server to crash wget.
755
756 2004-11-18  Hans-Andreas Engel <engel@node.ch>
757
758         * http.c: Enable --convert-links (-k) when a single page is downloaded
759         via --output-document (-O).
760
761 2004-11-18  Mauro Tortonesi <mauro@deepspace6.net>
762
763         * connect.c: Minor correction to the comment in front of fd_peek.
764
765 2004-11-18  Leonid Petrov <nouser@lpetrov.net>
766
767         * retr.c: Fix a timeout problem in fd_read_body when using http_proxy.
768
769 2004-11-15  YAMAZAKI Makoto <Yamazaki.Makoto@fujixerox.co.jp>
770
771         * netrc.c: Fix termination by assertion bug in netrc parsing.
772
773 2004-05-09  David Fritz  <zeroxdf@att.net>
774
775         * mswindows.c (fake_fork): Pass entire command line to the child
776         process.
777
778 2004-03-31  Hrvoje Niksic  <hniksic@xemacs.org>
779
780         * http.c (gethttp): Fix typo: SCHEME_SSL -> SCHEME_HTTPS.
781
782 2004-03-30  Hrvoje Niksic  <hniksic@xemacs.org>
783
784         * http.c (gethttp): Send the Proxy-Authorization header over
785         non-SSL connections too.
786
787 2004-03-25  David Fritz  <zeroxdf@att.net>
788
789         * mswindows.c (fake_fork_child): Ignore error code when
790         OpenFileMapping() fails; assume it failed because the object does
791         not exist.
792
793 2004-03-24  David Fritz  <zeroxdf@att.net>
794
795         * mswindows.c (fake_fork): New function.
796
797         * mswindows.c (fork_to_background): Use it.
798
799 2004-03-19  David Fritz  <zeroxdf@att.net>
800
801         * mswindows.c (ws_hangup): Incorporate old fork_to_background()
802         code.  Add event name argument.
803         (fork_to_backgorund): Now a simple wrapper around ws_hangup().
804         (ws_handler): Correctly handle the case when neither CTRLC_BACKGND
805         nor CTRLBREAK_BACKGND are defined.  Don't bother handling close,
806         logoff, or shutdown events.  Call ws_hangup() with the correct
807         event name; don't assume it was CTRL+Break.
808
809 2004-03-19  Hrvoje Niksic  <hniksic@xemacs.org>
810
811         * url.c (url_parse): Decode %HH sequences in host name.
812
813 2004-03-04  Hrvoje Niksic  <hniksic@xemacs.org>
814
815         * convert.c (local_quote_string): Quote "#" as "%23" and "%" as
816         "%25" when creating links to local files.
817
818 2004-03-02  David Fritz  <zeroxdf@att.net>
819
820         * mswindows.c (ws_percenttitle): Guard against future changes by
821         doing nothing if the proper variables have not been initialized.
822         Clamp percentage value.
823
824 2004-03-04  Gisle Vanem  <giva@bgnett.no>
825
826         * retr.c (fd_read_body): Don't change console title if quiet.
827
828 2004-02-25  David Fritz  <zeroxdf@att.net>
829
830         * mswindows.c (set_sleep_mode): Remove argument and return value.
831         Call GetModuleHandle() instead of LoadLibrary()/FreeLibrary() for
832         kernel32.dll.  Use typedef for function-pointer.  Don't cast
833         l-value.  Don't use dereference operator when calling through
834         function-pointer.
835         (ws_startup): Update call to set_sleep_mode().
836         (ws_cleanup): Remove call to set_sleep_mode().
837
838 2004-02-23  David Fritz  <zeroxdf@att.net>
839
840         * http.c (http_loop): Ditto.
841
842         * ftp.c (ftp_loop_internal): Update call to ws_changetitle().
843
844         * main.c (main): Don't bother calling ws_changetitle().
845
846         * mswindows.h (ws_changetitle): Update prototype.
847
848         * mswindows.c (ws_changetitle): Remove second argument.  Use
849         xfree_null().
850         (ws_percenttitle): Only update title when percentage has changed.
851
852 2004-02-23  David Fritz  <zeroxdf@att.net>
853
854         * mswindows.h: Ditto.
855
856         * mswindows.c: Misc. formatting/comment tweaks throughout.
857
858 2004-02-20  David Fritz  <zeroxdf@att.net>
859
860         * main.c (print_help): Remove call to ws_help().
861
862         * mswindows.c (ws_help): Remove.
863
864         * mswindows.h (ws_help): Remove.
865
866 2004-02-16  David Fritz  <zeroxdf@att.net>
867
868         * init.c (home_dir): Use aprintf() instead of xmalloc()/sprintf().
869         Under Windows, if $HOME is not defined, use the directory that
870         contains the Wget binary instead of hard-coded `C:\'.
871         (wgetrc_file_name): Under Windows, look for $HOME/.wgetrc then, if
872         not found, look for wget.ini in the directory of the Wget binary.
873
874         * mswindows.c (ws_mypath): Employ slightly more robust methodology.
875         Strip trailing path separator.
876
877 2004-02-06  Hrvoje Niksic  <hniksic@xemacs.org>
878
879         * http.c (gethttp): Respect --ignore-length.
880         (gethttp): Inhibit keep-alive if --ignore-length is specified.
881
882 2004-02-06  Hrvoje Niksic  <hniksic@xemacs.org>
883
884         * connect.c (sockaddr_set_data): Zero out
885         sockaddr_in/sockaddr_in6.  Apparently BSD-derived stacks need this
886         when binding a socket to local address.
887
888 2004-02-04  Hrvoje Niksic  <hniksic@xemacs.org>
889
890         * hash.c: Make the file compilable outside Wget source tree when
891         -DSTANDALONE is used.
892
893 2004-01-29  Hrvoje Niksic  <hniksic@xemacs.org>
894
895         * utils.c (determine_screen_width): Return 0 if not running on
896         Windows or on a TIOCGWINSZ-capable system.
897
898 2004-01-28  David Fritz  <zeroxdf@att.net>
899
900         * utils.c (determine_screen_width): Correctly determine console
901         width under Windows.
902
903 2004-01-28  Christian Biere  <christianbiere@gmx.de>
904
905         * progress.c (bar_set_params): Fixed syntax error when HAVE_ISATTY
906         was undefined.
907
908         * ftp.c (ftp_loop_internal): Allocate a larger buffer in case
909         "try" gets translated to something large.  Ditto in http_loop in
910         http.c.
911
912         * http.c (response_header_copy): Don't write to buf[BUFSIZE].
913
914         * ftp-opie.c (skey_response): Eliminate unnecessary string
915         concatenation; just call gen_md5_update twice.
916
917 2004-01-25  Hrvoje Niksic  <hniksic@xemacs.org>
918
919         * utils.c (xsleep): Don't call usleep with values larger than
920         1,000,000.
921
922 2003-12-16  Hrvoje Niksic  <hniksic@xemacs.org>
923
924         * http.c (gethttp): Fix generation of `Content-Length'.
925
926 2003-12-15  Gisle Vanem  <giva@bgnett.no>
927
928         * url.c (url_skip_credentials): Fixed return value; 'url' if no
929         credentials.
930
931 2003-12-14  Hrvoje Niksic  <hniksic@xemacs.org>
932
933         * url.c (url_skip_credentials): Return a pointer directly.
934
935 2003-12-14  Hrvoje Niksic  <hniksic@xemacs.org>
936
937         * url.c (url_file_name): Ditto.
938         (parse_errors): Ditto.
939
940         * retr.c (retr_rate): Ditto.
941
942         * progress.c (create_image): Ditto.
943
944         * netrc.c (parse_netrc): Ditto.
945
946         * main.c (struct cmdline_option): Ditto.
947         (redirect_output_signal): Ditto.
948
949         * init.c (commands): Ditto.
950
951         * ftp-ls.c (ftp_index): Ditto.
952
953         * cookies.c (check_domain_match): Declare the pointer to a literal
954         string as `const'.
955
956 2003-12-12  Hrvoje Niksic  <hniksic@xemacs.org>
957
958         * retr.c (fd_read_body): Pass total size to progress_create, not
959         the remaining amount.
960
961 2003-12-12  Hrvoje Niksic  <hniksic@xemacs.org>
962
963         * retr.c (fd_read_body): Don't fiddle with "interactive timeout"
964         if read timeout is unset.
965
966 2003-12-12  Hrvoje Niksic  <hniksic@xemacs.org>
967
968         * connect.c (bind_local): Don't set the IPV6_V6ONLY option on the
969         socket.
970
971 2003-12-06  Hrvoje Niksic  <hniksic@xemacs.org>
972
973         * url.c (url_file_name): Respect the setting of
974         opt.protocol_directories.
975
976         * main.c (main): Only check for ret=='?' when longindex is unset.
977         (option_data): New option --protocol-directories.
978
979 2003-12-06  Hrvoje Niksic  <hniksic@xemacs.org>
980
981         * ftp.c (getftp): Ditto.
982
983         * http.c (gethttp): Correctly calculate bandwidth as total data
984         read divided with download time.
985
986         * retr.c (fd_read_body): Separate the return values for data
987         written and read.
988
989 2003-12-05  Hrvoje Niksic  <hniksic@xemacs.org>
990
991         * http.c (H_REDIRECTED): Respect the HTTP/1.1 "303 See Other"
992         response code.
993         Suggested by Dan Razzell.
994
995 2003-11-30  Hrvoje Niksic  <hniksic@xemacs.org>
996
997         * retr.c (fd_read_body): Report the amount of data *written* as
998         amount_read.  This is not entirely logical, but that's what the
999         callers expect, and it's not easy to change.
1000
1001         * ftp.c (ftp_loop_internal): Ditto.
1002
1003         * http.c (http_loop): Be smarter about assigning restval; if we're
1004         in the nth pass of a download, simply use the information we have
1005         about how much data has been retrieved as restval.
1006
1007         * ftp.c (getftp): Ditto for FTP "REST" command.
1008
1009         * http.c (gethttp): When the server doesn't respect range, skip
1010         the first RESTVAL bytes of the read body.  Never truncate the
1011         output file.
1012
1013         * retr.c (fd_read_body): Support skipping initial STARTPOS octets.
1014
1015 2003-11-30  Hrvoje Niksic  <hniksic@xemacs.org>
1016
1017         * http.c (skip_short_body): Renamed skip_body to skip_short_body;
1018         don't bother calling fd_read_body.
1019
1020 2003-11-30  Hrvoje Niksic  <hniksic@xemacs.org>
1021
1022         * retr.c (fd_read_body): Sanitize arguments and document them
1023         better.  Make sure the timer is created and updated only if
1024         necessary.  Updated callers.
1025
1026 2003-11-30  Hrvoje Niksic  <hniksic@xemacs.org>
1027
1028         * http.c (skip_body): New function.
1029         (gethttp): Use it to skip the body of the responses we don't care
1030         to download.  That allows us to reuse the connection.
1031         (gethttp): Trust that the HEAD requests will not generate body
1032         data.
1033
1034         * retr.c (fd_read_body): Don't write to OUT if it's NULL.
1035
1036 2003-11-29  Hrvoje Niksic  <hniksic@xemacs.org>
1037
1038         * http.c (gethttp): Initialize SSL only the first time when SSL
1039         URL is downloaded.
1040
1041 2003-11-29  Hrvoje Niksic  <hniksic@xemacs.org>
1042
1043         * cookies.c (cookie_header): Only generate the contents of the
1044         header, not the leading "Cookie: " or the trailing "\r\n".
1045
1046         * http.c (gethttp): When adding headers specified with `--header',
1047         allow them to override the headers generated by Wget.
1048
1049         * init.c (cmd_spec_header): Made opt.user_headers a vector.
1050
1051         * http.c (request_new): New function.  Returns a request structure
1052         which can be modified in various ways, most notably by adding HTTP
1053         headers to the request.
1054         (request_set_header): New function for adding the header to the
1055         request.  If the header is already available, it gets replaced.
1056         (request_send): Construct and send the request.
1057         (gethttp): Use the request_* functions to generate the request.
1058
1059 2003-11-28  Hrvoje Niksic  <hniksic@xemacs.org>
1060
1061         * http.c (gethttp): Don't include the Proxy-Authorization header
1062         in the request tunneled through proxy.
1063
1064 2003-11-28  Hrvoje Niksic  <hniksic@xemacs.org>
1065
1066         * http.c (gethttp): Use the CONNECT handle to establish SSL
1067         passthrough through non-SSL proxies.
1068
1069 2003-11-28  Hrvoje Niksic  <hniksic@xemacs.org>
1070
1071         * init.c: Don't #include netinet/Winsock stuff.
1072
1073 2003-11-28  Hrvoje Niksic  <hniksic@xemacs.org>
1074
1075         * http.c: Deleted the old functions header_process,
1076         header_extract_number, header_exists, header_strdup,
1077         http_process_range, http_process_none, http_process_type, and
1078         http_process_connection.
1079
1080         * http.c (response_new): New function.
1081         (response_header_bounds): Ditto.
1082         (response_header_copy): Ditto.
1083         (response_header_strdup): Ditto.
1084         (response_status): Ditto.
1085         (gethttp): Use the new response_* functions to parse the response.
1086         Support HTTP/0.9 responses.
1087
1088 2003-11-27  Hrvoje Niksic  <hniksic@xemacs.org>
1089
1090         * progress.c (create_image): Don't calculate ETA if nothing has
1091         been downloaded yet, because it causes division by zero.
1092
1093 2003-11-27  Hrvoje Niksic  <hniksic@xemacs.org>
1094
1095         * connect.c (bind_local): Rename sa_len to addrlen because IRIX
1096         headers define sa_len as a macro.
1097
1098 2003-11-26  Hrvoje Niksic  <hniksic@xemacs.org>
1099
1100         * html-parse.c (convert_and_copy): Remove embedded newlines when
1101         AP_TRIM_BLANKS is specified.
1102
1103 2003-11-26  Hrvoje Niksic  <hniksic@xemacs.org>
1104
1105         * ftp.c: Set con->csock to -1 where rbuf_uninitialize was
1106         previously used.
1107
1108 2003-11-26  Hrvoje Niksic  <hniksic@xemacs.org>
1109
1110         * Makefile.in (http$o): Added the trailing backslash that was
1111         missing.
1112
1113 2003-11-21  Hrvoje Niksic  <hniksic@xemacs.org>
1114
1115         * headers.c: Removed.  The file is no longer relevant, now that no
1116         special handling of headers is done by the rbuf code.  Moved
1117         portions to http.c.
1118
1119 2003-11-21  Hrvoje Niksic  <hniksic@xemacs.org>
1120
1121         * rbuf.c: Removed.
1122
1123         * ftp-basic.c (ftp_response): Use fd_read_line.  No longer use
1124         struct rbuf.  Updated all callers.
1125
1126         * http.c (gethttp): Use fd_read_head to read all the headers in
1127         one go.
1128         (next_header): New function.
1129
1130         * retr.c (fd_read_line): New function: reads a line from FD,
1131         leaving the rest of the data unread.
1132         (fd_read_head): New function.
1133
1134         * connect.c (fd_peek): New function, implements peeking.
1135         (poll_internal): New function.
1136         (fd_read): Use it.
1137         (fd_write): Ditto.
1138         (fd_peek): Ditto.
1139         (fd_register_transport): Allow registering a "peeker" callback.
1140
1141 2003-11-20  Hrvoje Niksic  <hniksic@xemacs.org>
1142
1143         * connect.c: Renamed xread/xwrite/xclose to
1144         fd_read/fd_write/fd_close.  The "x" prefix is not appropriate
1145         because the semantics have diverged from read/write/close too
1146         significantly.  Updated all callers.
1147
1148 2003-11-20  Hrvoje Niksic  <hniksic@xemacs.org>
1149
1150         * connect.c (sock_write): It's not necessary to initialize RES.
1151
1152 2003-11-19  Hrvoje Niksic  <hniksic@xemacs.org>
1153
1154         * main.c (main): Don't reference opt.ipv4_only and opt.ipv6_only
1155         if IPv6 is disabled.
1156
1157 2003-11-19  Hrvoje Niksic  <hniksic@xemacs.org>
1158
1159         * connect.c (socket_has_inet6): Only compile it if IPv6 is enabled
1160         and AI_ADDRCONFIG is missing.
1161
1162 2003-11-18  Hrvoje Niksic  <hniksic@xemacs.org>
1163
1164         * gen_sslfunc.c (ssl_init_prng): Warn the user when using a weak
1165         random seed.
1166
1167 2003-11-18  Hrvoje Niksic  <hniksic@xemacs.org>
1168
1169         * host.c (address_list_contains): Renamed address_list_find to
1170         address_list_contains because its result is boolean.
1171
1172 2003-11-18  Hrvoje Niksic  <hniksic@xemacs.org>
1173
1174         * connect.c (select_fd): Return 1 if select is not available.
1175
1176 2003-11-17  Hrvoje Niksic  <hniksic@xemacs.org>
1177
1178         * connect.c (connect_to_host): Don't reference address list after
1179         releasing it.
1180
1181 2003-11-17  Hrvoje Niksic  <hniksic@xemacs.org>
1182
1183         * main.c (print_help): Fix alignment of FTP options output.
1184
1185 2003-11-17  Hrvoje Niksic  <hniksic@xemacs.org>
1186
1187         * host.c (lookup_host): Check for the ability to create IPv6
1188         sockets here.
1189
1190         * init.c (defaults): Don't auto-set --inet4-only on IPv6-less
1191         systems.
1192
1193 2003-11-16  Hrvoje Niksic  <hniksic@xemacs.org>
1194
1195         * main.c (print_help): Fix typo in `-O' help message.  Fix docs of
1196         -Y/--proxy.  Fix docs of `--cookies' and `--glob'.  Improve docs
1197         of --convert-links.  Fix docs of SSL options.
1198
1199 2003-11-16  Hrvoje Niksic  <hniksic@xemacs.org>
1200
1201         * ftp-basic.c: Don't include <arpa/inet.h> and others because
1202         they're no longer needed.
1203
1204 2003-11-16  Hrvoje Niksic  <hniksic@xemacs.org>
1205
1206         * main.c (main): Don't allow setting of both opt.ipv4_only and
1207         opt.ipv6_only.
1208
1209         * init.c (defaults): Mark opt.ipv4_only specially when set
1210         automatically.
1211
1212 2003-11-15  Hrvoje Niksic  <hniksic@xemacs.org>
1213
1214         * host.c (lookup_host): Use AI_ADDRCONFIG only if the family is
1215         unspecified.  This ensures that specifying `--no-inet4' on systems
1216         where IPv6 resolves, but doesn't work behaves the same regardless
1217         of the availability of AI_ADDRCONFIG.
1218
1219 2003-11-15  Hrvoje Niksic  <hniksic@xemacs.org>
1220
1221         * host.c: Don't refer to the now-removed function
1222         forget_host_lookup in the documentation of lookup_host.
1223
1224 2003-11-15  Hrvoje Niksic  <hniksic@xemacs.org>
1225
1226         * http.c (persistent_available_p): Correctly specify the endpoint
1227         argument to socket_ip_address.
1228         (gethttp): When printing the "reusing connection to..." message,
1229         specify the host name of the reused connection, not the current
1230         host name.  That makes more sense because it provides a useful
1231         piece of information -- we know to which host we're supposed to
1232         connect anyway!
1233
1234 2003-11-15  Hrvoje Niksic  <hniksic@xemacs.org>
1235
1236         * init.c: Make sure the options are in alphabetic order!
1237
1238         * host.c (lookup_host): Merge lookup_host_passive and lookup_host
1239         after all -- having both would result in some code duplication.
1240         (lookup_host): Set hints.ai_family to AF_INET if ipv4_only is
1241         requested.  Likewise, set it to AF_INET6 for ipv6_only.  Specify
1242         AI_ADDRCONFIG where available.
1243         (lookup_host): New flag LH_REFRESH that specifies that a cached
1244         entry for HOST should be refreshed.
1245         (cache_query): New function.
1246         (cache_store): Ditto.
1247         (cache_remove): Ditto.
1248         (forget_host_lookup): No longer necessary, replaced with static
1249         function cache_remove.
1250
1251 2003-11-14  Hrvoje Niksic  <hniksic@xemacs.org>
1252
1253         * main.c: Enable -4 and -6 only if IPv6 is enabled.
1254
1255 2003-11-14  Hrvoje Niksic  <hniksic@xemacs.org>
1256
1257         * connect.c (register_transport): Renamed from register_extended.
1258         Explain the intended usage.
1259
1260 2003-11-14  Hrvoje Niksic  <hniksic@xemacs.org>
1261
1262         * url.c (uri_merge): Merging "foo" and "bar" should result in
1263         "bar", not in "foo/bar".
1264         (path_simplify): Don't remove empty path elements; don't
1265         special-case leading slash.
1266         (path_simplify): Don't swallow ".."'s at the beginning of string.
1267         E.g. simplify "foo/../../bar" as "../bar", not as "bar".
1268         (append_uri_pathel): Defang ".." path element upon encountering
1269         it.
1270
1271 2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
1272
1273         * http.c (persistent_available_p): Don't attempt to talk to two
1274         different SSL sites over the same secure connection.
1275
1276 2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
1277
1278         * http.c (gethttp): Ditto.
1279
1280         * ftp.c (getftp): Use retryable_socket_connect_error instead of
1281         CONNECT_ERROR.
1282
1283         * wget.h (CONNECT_ERROR): Removed.
1284
1285         * connect.c (retryable_socket_connect_error): New function instead
1286         of unsupported_socket_family_error.
1287
1288 2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
1289
1290         * wget.h (CONNECT_ERROR): Use it.
1291
1292         * connect.c (unsupported_socket_family_error): New function.
1293
1294 2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
1295
1296         * connect.c (bind_local): Renamed bindport to bind_local; return
1297         the socket directly.  Updated callers.
1298         (accept_connection): Renamed acceptport to accept_connection;
1299         return the created socket directly.  Updated callers.
1300
1301 2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
1302
1303         * init.c (defaults): Turn on opt.ipv4_only if we're compiling with
1304         IPv6, and AI_ADDRINFO is not available, and AF_INET6 sockets can't
1305         be created.
1306
1307 2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
1308
1309         * host.c (lookup_host): Document the fact that the addresses are
1310         returned in order.
1311
1312 2003-11-12  Hrvoje Niksic  <hniksic@xemacs.org>
1313
1314         * utils.c: Use limits.h only where available.
1315
1316         * hash.c: Use INVALID_PTR and INVALID_PTR_BYTE.  Include limits.h.
1317
1318 2003-11-11  Hrvoje Niksic  <hniksic@xemacs.org>
1319
1320         * main.c: Added options --inet4-only and --inet6-only.
1321
1322 2003-11-11  Hrvoje Niksic  <hniksic@xemacs.org>
1323
1324         * host.c (host_errstr): Use the more standard message "Unknown
1325         host".
1326
1327 2003-11-10  Hrvoje Niksic  <hniksic@xemacs.org>
1328
1329         * connect.c (connect_to_host): Use that flag to decide whether to
1330         re-resolve the host name.
1331
1332         * host.c (struct address_list): Added a flag that maintains
1333         whether the connection worked at some point.
1334
1335 2003-11-10  Hrvoje Niksic  <hniksic@xemacs.org>
1336
1337         * host.c (lookup_host): Special-case the numeric addresses only in
1338         the non-IPv6 case.
1339
1340 2003-11-10  Hrvoje Niksic  <hniksic@xemacs.org>
1341
1342         * connect.c (resolve_bind_address): Call lookup_host_passive.
1343         Make sure that opt.bind_address is resolved only once.
1344
1345         * host.c (lookup_host_passive): New function, handles "passive"
1346         lookups.
1347         (lookup_host): Remove the passive flags.  Remove the
1348         family-related flags -- use ip_default_family instead.
1349
1350 2003-11-09  Hrvoje Niksic  <hniksic@xemacs.org>
1351
1352         * html-url.c: Get URLs from <object data="...">.
1353
1354 2003-11-09  Hrvoje Niksic  <hniksic@xemacs.org>
1355
1356         * main.c (option_data): Specify the command to use for --mirror.
1357
1358 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
1359
1360         * cookies.c (cookie_handle_set_cookie): Specify exact match for
1361         unspecified domains.
1362
1363 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
1364
1365         * main.c (main): Removed one-letter options `-C', `-g', `-G', and
1366         `-s'.
1367
1368 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
1369
1370         * main.c (main): Add --dont-remove-listing for backward
1371         compatibility with previous versions.
1372         (print_help): Fix typo, spotted by Dennis Smit.
1373
1374 2003-11-08  Gisle Vanem  <giva@bgnett.no>
1375
1376         * ftp-basic.c: Support Windows-2000 ftp servers. Win-2000 *is*
1377         Win-NT 5.0 so calling it ST_WINNT is okay I guess.
1378
1379 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
1380
1381         * progress.c (update_speed_ring): Clear the speed ring when the
1382         download stalls.
1383
1384         * retr.c (get_contents): Specify 0.95s read timeout, so that the
1385         progress gauge can be updated even when data arrives very slowly
1386         or stalls.
1387
1388 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
1389
1390         * utils.c (wtimer_allocate): Bless the use of wtimer_read on a
1391         timer that has merely been allocated because get_contents() does
1392         that.
1393         (wtimer_update): Abort if the timer is not initialized.
1394
1395 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
1396
1397         * retr.c (get_contents): Pass the timer to limit_bandwidth().
1398
1399         * utils.c (wtimer_update): New function instead of wget_elapsed;
1400         just update the timer, but don't return anything.
1401         (wtimer_read): Read and return the last known value of the timer.
1402
1403 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
1404
1405         * http.c (persistent_available_p): Instead of matching all the
1406         addresses of HOST and last host, determine the peer's IP address
1407         with socket_ip_address and see if that address is one of those
1408         HOST resolves to.
1409
1410         * host.c (address_list_match_all): Removed.
1411         (address_list_find): New function, finds an IP address in the
1412         address list.
1413
1414         * ftp.c (ftp_do_pasv): Get the peer's address here, and pass it to
1415         ftp_epsv so it doesn't need to call getpeername.
1416
1417         * ftp-basic.c (ftp_port): Use socket_ip_address instead of
1418         getpeername.
1419         (ftp_lprt): Ditto.
1420
1421         * connect.c (socket_ip_address): Replaces conaddr, generalized to
1422         either get peer's or local address.
1423         (sockaddr_get_data): Made local to this file.
1424
1425 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
1426
1427         * hash.c (HASH_POSITION): Explicitly accept the hash function.
1428         (grow_hash_table): Extract ht->hash_function outside the loop.
1429         (hash_table_remove): Ditto.
1430         (hash_table_clear): Fill entries with 0xff to clear them.
1431         (hash_table_remove): Mark entries as deleted with the correct
1432         marker.
1433
1434 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
1435
1436         * http.c (persistent_available_p): No reason for the host lookup
1437         to be silent -- it's a lookup like any other.
1438
1439 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
1440
1441         * connect.c (register_extended): Check that fd >= 0.
1442
1443 2003-11-07  Hrvoje Niksic  <hniksic@xemacs.org>
1444
1445         * connect.c (LAZY_RETRIEVE_INFO): Set LAST_INFO.
1446
1447 2003-11-07  Hrvoje Niksic  <hniksic@xemacs.org>
1448
1449         * hash.c (NON_EMPTY): Use the all-bit-set value as the marker that
1450         the field is empty.  This allows NULL pointer and 0 value to be
1451         used as keys, which is necessary for the connect.c code to work
1452         when fd==0.
1453         (hash_table_new): Fill mappings with 0xff.
1454         (grow_hash_table): Ditto.
1455
1456 2003-11-07  Hrvoje Niksic  <hniksic@xemacs.org>
1457
1458         * url.c (url_parse): Allow empty ports.
1459
1460 2003-11-07  Hrvoje Niksic  <hniksic@xemacs.org>
1461
1462         * main.c (print_help): Break the help string into multiple chunks.
1463         (cmdline_option): New option handler OPT_FUNCALL.  Generalized
1464         HANDLE_CMD to generic DATA.
1465         (option_data): Use the new OPT_FUNCALL feature.
1466
1467 2003-11-06  Hrvoje Niksic  <hniksic@xemacs.org>
1468
1469         * log.h: Declare log_init, log_close, and
1470         log_request_redirect_output here.
1471
1472 2003-11-05  Dennis Smit  <ds@nerds-incorporated.org>
1473
1474         * main.c: (main): added --preserve-permissions option.
1475
1476         * ftp.c (ftp_retrieve_list): added support for
1477         --preserve-permissions option.
1478
1479         * init.c: added support for --preserve-permission option.
1480
1481         * option.h: added support for --preserve-permission option.
1482
1483 2003-11-06  Hrvoje Niksic  <hniksic@xemacs.org>
1484
1485         * main.c (init_switches): New function.  Convert option_data to
1486         long_options and short_options, which can be fed to getopt_long.
1487         (main): Execute command-line options by consulting option_data.
1488
1489 2003-11-06  Hrvoje Niksic  <hniksic@xemacs.org>
1490
1491         * gen_sslfunc.c (ssl_read): Implement a more correct check for
1492         EINTR.
1493         (ssl_write): Ditto.
1494         (init_ssl): Use a global SSL context.
1495
1496 2003-11-06  Hrvoje Niksic  <hniksic@xemacs.org>
1497
1498         * connect.c (xclose): Free INFO even if it doesn't provide a
1499         closer.
1500
1501 2003-11-06  Hrvoje Niksic  <hniksic@xemacs.org>
1502
1503         * connect.c: Updated all callers of
1504         iread/ssl_iread/iwrite/ssl_iwrite to use xread and xwrite instead.
1505
1506         * rbuf.h (struct rbuf): Removed the SSL member because SSL is
1507         handled automatically by xread.
1508
1509         * hash.c (ptrhash): Made private.
1510         (ptrcmp): Ditto.
1511         (inthash): Removed.
1512
1513         * connect.c (select_fd): Don't set errno, leave it to the caller.
1514
1515         * gen_sslfunc.c (connect_ssl): Use register_extended to register
1516         SSL callbacks for communication with SSL-enabled endpoints.
1517         (ssl_read): New function.
1518         (ssl_write): Ditto.
1519         (ssl_poll): Ditto.
1520         (ssl_close): Ditto.
1521
1522         * connect.c (register_extended): New function -- register
1523         callbacks for basic socket operations.
1524         (xread): Ditto.
1525         (xwrite): Ditto.
1526         (xclose): Ditto.
1527         (sock_read): New function, default implementation for reading.
1528         (sock_write): Ditto for writing.
1529         (sock_poll): Ditto for polling.
1530         (sock_close): Ditto for closing.
1531
1532 2003-11-05  Hrvoje Niksic  <hniksic@xemacs.org>
1533
1534         * connect.c (bindport): Fix compilation under pre-C99 compilers.
1535
1536 2003-11-05  Hrvoje Niksic  <hniksic@xemacs.org>
1537
1538         * connect.c (connect_to_ip): More compact error checking.
1539         (bindport): Don't treat failed setsockopt as a fatal error.
1540
1541 2003-11-05  Hrvoje Niksic  <hniksic@xemacs.org>
1542
1543         * connect.c (resolve_bind_address): Use a more accurate error
1544         message -- we're not binding to ANY, we're disabling bind
1545         altogether.
1546
1547 2003-11-05  Hrvoje Niksic  <hniksic@xemacs.org>
1548
1549         * cookies.c (save_cookies_mapper): Respect the setting of
1550         keep-session-cookies.
1551         (cookie_jar_load): Import session cookies.
1552         Based on code submitted by Nicolas Schodet.
1553
1554         * utils.c (datetime_str): Use information in TM when it's
1555         non-NULL.
1556
1557         * main.c (main): New option `--keep-session-cookies'.
1558
1559 2003-11-04  Hrvoje Niksic  <hniksic@xemacs.org>
1560
1561         * Makefile.in (realclean): Delete config.h.in.
1562
1563 2003-11-04  Hrvoje Niksic  <hniksic@xemacs.org>
1564
1565         * config-post.h: New file, included from now autogenerated
1566         config.h.in.
1567
1568 2003-11-04  Hrvoje Niksic  <hniksic@xemacs.org>
1569
1570         * progress.c (progress_handle_sigwinch): Don't call
1571         determine_screen_width() from the signal handler.  Instead, just
1572         set a volatile variable.
1573         (bar_create): Check whether SIGWINCH was received.
1574         (bar_update): Ditto.
1575
1576         * sysdep.h: Define SYSTEM_FNMATCH only if HAVE_FNMATCH_H is true.
1577
1578 2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
1579
1580         * utils.c (xsleep): New function.  Uses nanosleep where available,
1581         resuming sleeps interrupted by signals.  Updated callers of sleep
1582         and usleep to use xsleep.
1583
1584 2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
1585
1586         * ftp-basic.c (ftp_login): Remove shadowing (and bogus)
1587         declaration of SEED.
1588
1589 2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
1590
1591         * log.c (logvprintf): Documented better.  Renamed to
1592         log_vprintf_internal to avoid confusion with the public API
1593         functions logprintf and logputs.
1594
1595 2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
1596
1597         * wget.h (N_): Don't parenthesize argument.
1598
1599 2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
1600
1601         * host.h (ADDRESS_IPV4_DATA): Don't take the address of in.s_addr
1602         because that doesn't work on machines that define it as bitfield.
1603
1604 2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
1605
1606         * connect.c (select_fd): Generalize the third argument into WAIT,
1607         so that the caller can request waiting for both read and write.
1608         Updated callers.
1609
1610 2003-11-02  Hrvoje Niksic  <hniksic@xemacs.org>
1611
1612         * html-url.c (cleanup_html_url): Destroy the hash tables, don't
1613         just call free on them.
1614         (init_interesting): Use hash_table_put instead of string_set_add
1615         because we don't need the strdup that the latter function
1616         performs.
1617
1618         * init.c (cleanup): Don't pass NULL to cookie_jar_delete.
1619
1620         * xmalloc.c (xfree_real): Abort when passed a NULL pointer.
1621         (xfree_debug): Print at the file and line of the offending call to
1622         free.
1623
1624 2003-11-02  Hrvoje Niksic  <hniksic@xemacs.org>
1625
1626         * wget.h: Retired the `boolean' type.  Moved the DEFAULT_LOGFILE
1627         define to log.h.  Moved the INFINITE_RECURSION define to recur.h.
1628
1629         * xmalloc.h: Renamed FREE_MAYBE to xfree_null and moved the
1630         definition from wget.h to xmalloc.h.
1631
1632 2003-11-02  Hrvoje Niksic  <hniksic@xemacs.org>
1633
1634         * html-parse.c (decode_entity): New function; split the decoding
1635         of entities here.
1636         (convert_and_copy): Use it to decode entities.
1637         (decode_entity): Handle the &apos entity.
1638         (decode_entity): Don't decode Latin 1 numeric entities.  Don't
1639         decode &#0.
1640
1641 2003-11-01  Hrvoje Niksic  <hniksic@xemacs.org>
1642
1643         * ftp-opie.c (calculate_skey_response): Use uint32_t instead of
1644         `unsigned long' for the cheksum array.  Document the function.
1645
1646 2003-11-01  Hrvoje Niksic  <hniksic@xemacs.org>
1647
1648         * connect.c (acceptport): Don't call select_fd when timeout is not
1649         requested.
1650
1651 2003-11-01  Hrvoje Niksic  <hniksic@xemacs.org>
1652
1653         * host.c: Removed the ip_default_family global variable.
1654
1655         * host.c (lookup_host): Document the function.  Fixed declaration
1656         of VEC.
1657
1658 2003-10-31  Hrvoje Niksic  <hniksic@xemacs.org>
1659
1660         * various: Use new macros xnew, xnew0, xnew_array, and xnew0_array
1661         in various places.
1662
1663 2003-10-31  Hrvoje Niksic  <hniksic@xemacs.org>
1664
1665         * wget.h: Move declarations of malloc and logging code to
1666         xmalloc.h and log.h respectively to unclutter this file.
1667         (STRDUP_ALLOCA): Made it side-effect free.
1668
1669         * xmalloc.h: New files.  Define macros xnew, xnew0, xnew_array,
1670         and xnew0_array.
1671
1672         * xmalloc.c: New file.  Move the xmalloc routines here.
1673
1674 2003-10-31  Hrvoje Niksic  <hniksic@xemacs.org>
1675
1676         * connect.c (sockaddr_set_data): Remove the broken code that
1677         checked for NULL address.
1678
1679 2003-10-31  Hrvoje Niksic  <hniksic@xemacs.org>
1680
1681         * host.c (address_list_from_single): Removed.
1682         (address_list_from_ipv4_addresses): Renamed from
1683         address_list_from_vector.
1684
1685 2003-10-31  Hrvoje Niksic  <hniksic@xemacs.org>
1686
1687         * sysdep.h (CLOSE): Don't call close on file descriptors less than
1688         0, i.e. on uncreated sockets.
1689
1690         * connect.c (resolve_bind_address): Work on struct sockaddr
1691         directly.
1692         (connect_to_host): Replacement for connect_to_many.  Resolve HOST
1693         and connect to any of its addresses.  If we can't connect and the
1694         host name lookup was cached, try to resolve it again.  This should
1695         fix problems with hosts behind dynamic DNS.  Updated all callers.
1696         (connect_to_ip): Replacement for connect_to_one.  Removed SILENT;
1697         added the argument PRINT instead.  Updated all callers.
1698         (set_connection_host_name): Removed.
1699
1700         * host.c (address_list_address_at): New function instead of
1701         address_list_copy_one. It returns a pointer to ip_address *, so
1702         it's not necessary to copy the data.
1703         (address_list_cached_p): New function.
1704         (forget_host_lookup): Ditto.
1705
1706         * connect.c: Got rid of the MSOCK global variable.  Made bindport
1707         return the local socket it creates.  Added a new argument to
1708         acceptport, the socket to call accept on.  Updated callers.
1709         (closeport): Removed.
1710
1711         * connect.c: Moved the sockaddr code from host.c to this file,
1712         because most of that stuff is used for connecting, and has nothing
1713         to do with host names anyway.
1714         (sockaddr_set_data, sockaddr_get_data): New functions, replace the
1715         old sockaddr_set_address, sockaddr_set_port, sockaddr_get_address,
1716         and sockaddr_get_port.
1717
1718 2003-10-30  Hrvoje Niksic  <hniksic@xemacs.org>
1719
1720         * sysdep.h: Use `S >= 8' rather than `S == 8' when looking for
1721         large integers.
1722
1723 2003-10-30  Hrvoje Niksic  <hniksic@xemacs.org>
1724
1725         * url.c (append_uri_pathel): New argument ESCAPED_P that says
1726         whether [B, E) is to be treated as URL-escaped or not.  If
1727         ESCAPED_P is false, don't unescape the region.
1728         (url_file_name): u->file is not URL-escaped.
1729
1730 2003-10-30  Hrvoje Niksic  <hniksic@xemacs.org>
1731
1732         * retr.c (retrieve_from_file): Use retrieve_tree for
1733         page-requisites.
1734
1735         * main.c (main): Don't define opt.recursive when -p is used.
1736         Instead, make sure that recursion is used for HTTP in that case.
1737
1738 2003-10-29  Hrvoje Niksic  <hniksic@xemacs.org>
1739
1740         * host.h: Defined accessors for elements of ip_address.  Updated
1741         all callers.
1742         (address_list_match_all): Use memcmp in the non-IPv6 case.
1743
1744         * wget.h (CONNECT_ERROR): Don't retry connecting if connect()
1745         returned EAFNOSUPPORT.
1746
1747 2003-10-27  Mauro Tortonesi <mauro@deepspace6.net>
1748
1749         * connect.h: changed bindport prototype and added the related
1750         BIND_ON_IPV4_ONLY and BIND_ON_IPV6_ONLY flags.
1751
1752         * connect.c: changed bindport and resolve_bind_address to allow
1753         protocol-version specific DNS resolution. modified conaddr,
1754         acceptport and connect_to_one to make use of struct
1755         sockaddr_storage and of the new ip_address structure.
1756
1757         * ftp-basic.c: added LPRT/LPSV (RFC1639) support, refactored
1758         PORT/PASV (RFC959) and EPRT/EPSV (RFC2428) support code.
1759
1760         * ftp.c: added the ftp_do_port and ftp_do_pasv functions to
1761         handle FTP over IPv6.
1762
1763         * ftp.h: changed prototype of ftp_epsv and added prototypes for
1764         ftp_lpsv, ftp_lprt and ftp_eprt.
1765
1766         * host.c: renamed the
1767         wget_sockaddr_set_address and wget_sockaddr_get_addr, and
1768         wget_sockaddr_{s,g}et_port couples to sockaddr_{s,g}et_address and
1769         sockaddr_{g,s}et_port respectively.  changed
1770         address_list_match_all, address_list_from_addrinfo sockaddr_len,
1771         pretty_print_address, lookup_host, sockaddr_{s,g}et_address and
1772         sockaddr_{g,s}et_port to make use of struct sockaddr_storage and
1773         of the new ip_address structure.  removed map_ipv4_to_ip and
1774         map_ip_to_ipv4.
1775
1776         * host.h: redefined structure ip_address and removed structure
1777         wget_sockaddr.
1778
1779 2003-10-26  Hrvoje Niksic  <hniksic@xemacs.org>
1780
1781         * sysdep.h: Include inttypes.h where available.
1782
1783         * host.c: Switch from u_int32_t to uint32_t.
1784
1785 2003-10-26  Hrvoje Niksic  <hniksic@xemacs.org>
1786
1787         * netrc.c (parse_netrc): Reset the QUOTE flag after the closing
1788         quote.
1789
1790 2003-10-25  Hrvoje Niksic  <hniksic@xemacs.org>
1791
1792         * url.c (is_valid_ipv6_address): Reformat to GNU coding style.
1793         Use enums for NS_IN* constants.  Use ISXDIGIT.
1794
1795         * convert.c (construct_relative): Document better how the function
1796         works.
1797
1798 2003-10-23  Hrvoje Niksic  <hniksic@xemacs.org>
1799
1800         * config.h.in: Deploy preprocessor magic to avoid Ultrix's
1801         <netdb.h> include <bitypes.h> which defines its own u_int32_t.
1802         Reported by Bernhard Simon.
1803
1804 2003-10-23  Hrvoje Niksic  <hniksic@xemacs.org>
1805
1806         * version.c: Bump version.
1807
1808 2003-10-23  Hrvoje Niksic  <hniksic@xemacs.org>
1809
1810         * url.c: Ditto.
1811
1812         * html-parse.c (advance_declaration): Don't use trailing comma in
1813         enum because older compilers don't support it.
1814
1815         * utils.c: Don't redefine HAVE_SIGSETJMP.
1816
1817 2003-10-16  Hrvoje Niksic  <hniksic@xemacs.org>
1818
1819         * convert.c (construct_relative): Don't handle absolute files
1820         specially -- for example, -P/tmp/foo shouldn't imply that
1821         converted files must refer to "/tmp/foo/..."!
1822
1823 2003-10-15  Hrvoje Niksic  <hniksic@xemacs.org>
1824
1825         * http.c: Consider status 307 a valid redirect.
1826
1827 2003-10-15  Philip Stadermann  <philip.stadermann@credativ.de>
1828
1829         * ftp.c (ftp_retrieve_glob): Correctly loop through the list whose
1830         elements might have been deleted.
1831
1832 2003-10-13  Hrvoje Niksic  <hniksic@xemacs.org>
1833
1834         * html-url.c (tag_handle_meta): Set the Refresh link to expect
1835         HTML.
1836         (append_one_url): Renamed to append_url.
1837
1838 2003-10-13  Hrvoje Niksic  <hniksic@xemacs.org>
1839
1840         * sysdep.h: Only define u_int32_t.
1841
1842 2003-10-11  Hrvoje Niksic  <hniksic@xemacs.org>
1843
1844         * utils.c (large_int_to_string): Use snprintf() to print the
1845         number.  This will work even on systems where libc doesn't
1846         understand %lld, but the compiler does, because it will use our
1847         snprintf replacement.
1848
1849         * init.c (parse_bytes_helper): New function.
1850         (cmd_bytes): Use it to parse bytes, but cast the result to long.
1851         (cmd_bytes_large): Ditto, but store the result to LARGE_INT.  Used
1852         for --quota so that --quota=10G works even on machines without
1853         long long.
1854
1855         * options.h (struct options): Declare quota as LARGE_INT.
1856
1857         * retr.c (downloaded_exceeds_quota): Removed.
1858         (downloaded_increase): Ditto.
1859         (total_downloaded_bytes): New variable, replaces opt.downloaded,
1860         which was the wrong place for it anyway.  Updated callers of
1861         downloaded_exceeds_quota and downloaded_increase to check this
1862         variable directly.
1863
1864         * sysdep.h: Get rid of VERY_LONG_TYPE.  Use LARGE_INT for the same
1865         purpose, defined as `long', `long long' or `double', depending on
1866         size of long and whether long long is available.
1867
1868 2003-10-11  Hrvoje Niksic  <hniksic@xemacs.org>
1869
1870         * sysdep.h: Also check size of short for int32_t.
1871
1872 2003-10-11  Hrvoje Niksic  <hniksic@xemacs.org>
1873
1874         * host.c (lookup_host): Use u_int32_t to store the result of
1875         inet_addr().  That removes the need for offset fiddling, caring
1876         about endian-ness, etc.
1877
1878         * sysdep.h: Define int32_t and u_int32_t if not available.
1879
1880 2003-10-11  Hrvoje Niksic  <hniksic@xemacs.org>
1881
1882         * ftp-basic.c (ftp_epsv): Use socklen_t * as the third argument to
1883         getpeername.
1884
1885         * config.h.in: Define socklen_t stub.
1886
1887         * host.c (sockaddr_len): Return socklen_t.
1888
1889         * connect.c (conaddr): Use socklen_t as the third argument to
1890         accept, getsockname, and connect.
1891
1892 2003-10-10  Hrvoje Niksic  <hniksic@xemacs.org>
1893
1894         * recur.c (retrieve_tree): Don't descend into documents that are
1895         not expected to contain HTML, regardless of their content-type.
1896
1897         * html-url.c (tag_url_attributes): Record which attributes are
1898         supposed to yield HTML links that can be followed.
1899         (tag_find_urls): Propagate that information to the caller through
1900         struct urlpos.
1901
1902 2003-10-10  Hrvoje Niksic  <hniksic@xemacs.org>
1903
1904         * hash.c (find_mapping): Return the next available mapping when
1905         the key is not found, not NULL.
1906         (hash_table_put): Use find_mapping to find the storage for the new
1907         data.
1908         (hash_table_put): Grow the table before exceeding maximum
1909         fullness, not afterwards.
1910
1911 2003-10-10  Hrvoje Niksic  <hniksic@xemacs.org>
1912
1913         * hash.c (hash_table_new): Slightly change the meaning of the
1914         first parameter.  Instead of being the minimum initial size, it is
1915         now the minimum number of items that the hash table can take
1916         without needing to resize.
1917
1918 2003-10-09  Hrvoje Niksic  <hniksic@xemacs.org>
1919
1920         * html-url.c (init_interesting): Initialize interesting_tags and
1921         interesting_attributes as hash tables.  This simplifies the code
1922         immensely because hash tables handle allocation and remove
1923         duplicates automatically.
1924         (find_tag): Removed.
1925         (collect_tags_mapper): Instead of calling find_tag, simply get the
1926         entry from interesting_tags hash table, which is both simpler and
1927         faster.
1928
1929 2003-10-09  Hrvoje Niksic  <hniksic@xemacs.org>
1930
1931         * hash.c (hash_table_get): Declare hash-table argument as const.
1932         (find_mapping): Ditto.
1933         (hash_table_get_pair): Ditto.
1934         (hash_table_contains): Ditto.
1935         (hash_table_count): Ditto.
1936
1937 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
1938
1939         * html-url.c (get_urls_html): Parse the appropriate flags to
1940         html-parse.c.
1941
1942         * html-parse.c (map_html_tags): Accept FLAGS from the caller
1943         instead of examining OPT.
1944
1945 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
1946
1947         * html-url.c (find_tag): Switch to binary search.
1948
1949 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
1950
1951         * main.c (print_help): Fix typo; stured -> stored.
1952
1953 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
1954
1955         * getopt.c: Add definitions of getopt_long and getopt_long_only.
1956
1957 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
1958
1959         * config.h.in: Renamed DEBUG to ENABLE_DEBUG.  ENABLE_DEBUG is, I
1960         think, a better name, because it implies that debugging output is
1961         merely possible, not "on by default", as might be construed from
1962         just DEBUG.
1963
1964 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
1965
1966         * ftp.c (has_insecure_name_p): Define it here.
1967
1968         * utils.c (has_wildcards_p): Define it here.
1969
1970         * sysdep.h: Declare fnmatch-related macros here, if not using
1971         system fnmatch().  Update .c files to not declare fnmatch.h
1972         directly.
1973
1974         * cmpt.c (fnmatch): Moved here.  Use it only under non-GNU libc.
1975
1976 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
1977
1978         * getopt.c: Newer version, imported from Free libit.
1979
1980 2003-10-07  Hrvoje Niksic  <hniksic@xemacs.org>
1981
1982         * cookies.c (struct cookie): Remove unused backpointer to cookie
1983         jar.
1984
1985 2003-10-07  Hrvoje Niksic  <hniksic@xemacs.org>
1986
1987         * cmpt.c (memmove): Comment out, since it's no longer used.
1988
1989         * cookies.c (cookie_jar_generate_cookie_header): Allocate room for
1990         chains in one pass.
1991         (find_chains_of_host): Assume that the caller has allocated DEST
1992         to be sufficiently large to take all the data.
1993         (eliminate_dups): Run through the array and eliminate dups on the
1994         fly instead of using memmove.
1995         (cookie_jar_process_set_cookie): Free cookie->domain before
1996         re-setting it.
1997
1998 2003-10-05  Gisle Vanem  <giva@bgnett.no>
1999
2000         * mswindows.c (set_sleep_mode): Fix type of
2001         _SetThreadExecutionState.
2002
2003 2003-10-05  Hrvoje Niksic  <hniksic@xemacs.org>
2004
2005         * utils.c (file_size): Return -1 if fopen() returns NULL.  Prior
2006         to this patch, wget --post-file=nosuchfile dumped core.
2007
2008 2003-10-04  Gisle Vanem  <giva@bgnett.no>
2009
2010         * mswindows.c (run_with_timeout): Use WaitForSingleObject to wait
2011         for thread termination.
2012
2013 2003-10-04  Hrvoje Niksic  <hniksic@xemacs.org>
2014
2015         * log.c: Use `...' in function definitions; ansi2knr will convert
2016         them to va_dcl.  This allowed removal of the ugly VA_START_1 and
2017         VA_START_2 macros.
2018
2019 2003-10-03  Gisle Vanem  <giva@bgnett.no>
2020
2021         * connect.c: And don't include them here.
2022
2023         * mswindows.h: Include winsock headers here.
2024
2025 2003-10-03  Hrvoje Niksic  <hniksic@xemacs.org>
2026
2027         * html-parse.c (convert_and_copy): Move variable declarations
2028         before statements.
2029
2030 2003-10-02  Gisle Vanem  <giva@bgnett.no>
2031         
2032         * mswindows.c (run_with_timeout): For Windows: Run the 'fun' in a
2033         thread via a helper function. Continually query the thread's
2034         exit-code until finished or timed out.
2035
2036 2003-10-02  Hrvoje Niksic  <hniksic@xemacs.org>
2037
2038         * wget.h (XMALLOC_ARRAY): Removed.
2039         (ALLOCA_ARRAY): Ditto.
2040
2041         * html-parse.c: Renamed alloca_p to resized.
2042         (GROW_ARRAY): Renamed DO_REALLOC_FROM_ALLOCA to GROW_ARRAY and
2043         returned it to html-parse.c, since nothing else was using it.
2044
2045 2003-10-02  Hrvoje Niksic  <hniksic@xemacs.org>
2046
2047         * retr.c (retrieve_url): Initialize DUMMY storage for DT.  Caught
2048         by valgrind.
2049
2050 2003-10-02  Hrvoje Niksic  <hniksic@xemacs.org>
2051
2052         * html-parse.c (convert_and_copy): Handle numeric entities in
2053         hexadecimal, &#xHH.
2054         (convert_and_copy): Copy the contents directly to the pool without
2055         a stack-allocated intermediary.
2056
2057 2003-10-02  Hrvoje Niksic  <hniksic@xemacs.org>
2058
2059         * utils.c (alarm_set): New function; use either setitimer or alarm
2060         to set up the alarm.
2061         (alarm_cancel): New function; cancel the alarm set up by
2062         alarm_set.
2063         (run_with_timeout): Use them.
2064
2065 2003-10-01  Hrvoje Niksic  <hniksic@xemacs.org>
2066
2067         * url.c (url_parse): Don't leak memory when a reencoded URL turns
2068         out to be invalid.
2069
2070         * url.c (parse_errors): Mark error messages for translation.
2071         (url_error): Translate error messages returned to the caller.
2072
2073 2003-10-01  Hrvoje Niksic  <hniksic@xemacs.org>
2074
2075         * ftp.c (ftp_loop_internal): Initialize TMRATE to NULL to shut up
2076         the compiler.
2077
2078 2003-09-26  Gisle Vanem  <giva@bgnett.no>
2079
2080         * src/mswindows.c: Added ws_percenttitle() showing progress in the
2081         window titlebar. Called from retr.c. Secured ws_mypath().
2082
2083         * windows/config.h.ms: alloca() prototype not needed.  Removed
2084         "#undef ENABLE_NLS"; should be in Makefile IMHO. Moved
2085         WGET_USE_STDARG from mswindows.h to config.ms.h because of #ifdef
2086         in log.c. (MSVC's vararg.h and stdarg.h are incompatible).
2087
2088 2003-09-29  Aaron Hawley <Aaron.Hawley@uvm.edu>
2089
2090         * ftp.c (getftp): --spider option should now work with FTP
2091         downloads.
2092         (ftp_loop_internal): quiet reports and calculations of downloads
2093         when --spider option set, nor try deleting when --delete-after
2094         also set.
2095         (ftp_loop): --spider will skip HTML-ification of .listing file.
2096
2097 2003-09-26  Gisle Vanem  <giva@bgnett.no>
2098
2099         * mswindows.c (read_registry): Removed.
2100         (set_sleep_mode): New function.
2101         (windows_main_junk): Call it.
2102
2103 2003-09-26  Gisle Vanem  <giva@bgnett.no>
2104
2105         * mswindows.c (read_registry): Fix invocation of registry
2106         functions.
2107
2108         * mswindows.c (read_registry): Condition definitions of sleep and
2109         usleep with not HAVE_SLEEP and HAVE_USLEEP respectively.  Define
2110         HAVE_SLEEP and HAVE_USLEEP under __DMC__.
2111
2112 2003-09-24  Hrvoje Niksic  <hniksic@xemacs.org>
2113
2114         * url.c (url_escape_1): Revert unintentional change to lowercase
2115         xdigit escapes.
2116         (url_escape_dir): Document that this function depends on the
2117         output of url_escape_1.
2118
2119 2003-09-23  Hrvoje Niksic  <hniksic@xemacs.org>
2120
2121         * progress.c (create_image): Print the current ETA if we're done
2122         with the download.
2123         (create_image): Change '-' display char to '+' in the progress bar.
2124
2125         * Makefile.in (clean): Remove .libs.
2126
2127 2003-09-23  Hrvoje Niksic  <hniksic@xemacs.org>
2128
2129         * cookies.c (struct cookie): New flag domain_exact.
2130         (update_cookie_field): Skip leading dot in domain.
2131         (find_matching_chains): Match numeric addresses exactly; don't
2132         needlessly copy HOST to the stack.
2133         (matching_cookie): Added argument HOST.  If cookie->domain_exact
2134         is set, check that HOST is equal to cookie->domain.
2135         (cookie_jar_load): Only use TAB as delimiter.  Document the
2136         meaning of DOMAIN-FLAG.  Skip leading dot in domain.
2137         (cookie_jar_load): Don't ignore DOMAIN-FLAG -- instead, set
2138         domain_exact to true if DOMAIN-FLAG is false.
2139         (save_cookies_mapper): If domain_exact is false, prepend the
2140         domain with dot, like Mozilla does.
2141
2142 2003-09-22  Hrvoje Niksic  <hniksic@xemacs.org>
2143
2144         * progress.c (create_image): Print the initial part of the
2145         download with '-' characters, analogous to how dot progress prints
2146         the initial part with ','.
2147
2148         * hash.c (ptrhash): New function.
2149         (ptrcmp): Ditto.
2150         (hash_table_new): Default to identity hash table.
2151
2152 2003-09-22  Hrvoje Niksic  <hniksic@xemacs.org>
2153
2154         * safe-ctype.h (_sch_test): The cast of BIT to unsigned char was
2155         broken -- _sch_istable bitmasks are 16-bit, not 8-bit!  Cast BIT
2156         to unsigned short instead.
2157
2158 2003-09-22  Hrvoje Niksic  <hniksic@xemacs.org>
2159
2160         * url.c (path_simplify): Instead of calls to memmove, handle "./"
2161         and "../" by advancing pointers.
2162
2163 2003-09-22  Hrvoje Niksic  <hniksic@xemacs.org>
2164
2165         * retr.c (getproxy): Moved from url.c.
2166
2167         * convert.c: Split off link conversion from url.c into separate
2168         file.  Also included the book-keeping stuff from recur.c.
2169
2170 2003-09-21  Hrvoje Niksic  <hniksic@xemacs.org>
2171
2172         * init.c: Improved documentation of functions.
2173         (cmd_boolean): Attempt to make code that tries to avoid calling
2174         strcmp for "speed" a bit more readable.
2175
2176         * init.c (simple_atof): Report error on encountering non-digit,
2177         non-"." character.
2178         (simple_atoi): Replacement for myatoi(), calling interface
2179         compatible with simple_atof.  Updated myatoi's callers.
2180
2181 2003-09-21  Bertrand Demiddelaer  <bert@b3rt.org>
2182
2183         * url.c (path_simplify): Would read two bytes past the end of the
2184         string in the "./" case.
2185
2186 2003-09-21  Matthew J. Mellon  <mellon@tymenet.com>
2187
2188         * http.c (gethttp): Recognize content-type "application/xhtml+xml"
2189         as what Wget considers "text/html".
2190
2191 2003-09-21  Hrvoje Niksic  <hniksic@xemacs.org>
2192
2193         * connect.c (connect_with_timeout): Made timeout type double.
2194
2195         * options.h (struct options): New members read_timeout,
2196         dns_timeout, and connect_timeout.
2197         Use them.
2198
2199 2003-09-21  Hrvoje Niksic  <hniksic@xemacs.org>
2200
2201         * init.c (simple_atof): New function.
2202         (cmd_time): Use it.
2203         (cmd_bytes): Accept things like "1.5k" and such.  Use simple_atof
2204         to parse decimals.
2205
2206         * retr.c (limit_bandwidth): Adjust each sleep by the error of the
2207         previous one.
2208
2209 2003-09-21  Hrvoje Niksic  <hniksic@xemacs.org>
2210
2211         * main.c (main): Use setoptval() for setting the options.  Use
2212         run_command for `-e'.
2213
2214         * init.c (parse_line): Rewritten to return COMIND right away.
2215         Changed linkage to static.
2216         (run_wgetrc): Use the available comind when calling setval, so it
2217         doesn't have to be computed twice.
2218         (setval_internal): New function, runs the command's action without
2219         any error checking.
2220         (setoptval): New function, does what setval used to do, but exits
2221         in case of error.
2222         (run_command): New function.
2223
2224 2003-09-21  Hrvoje Niksic  <hniksic@xemacs.org>
2225
2226         * connect.c (select_fd): Change MAXTIME's type to double.  Handle
2227         its decimal part.
2228
2229         * retr.c (sleep_between_retrievals): In the random-wait case, use
2230         random_float() to wait between 0 and 2*opt.wait seconds.
2231
2232         * utils.c (run_with_timeout): Accept `double' timeouts.  Correctly
2233         handle timeout values in (0, 1) range.
2234         (random_float): New function.
2235
2236         * options.h (struct options): Change the types of wait, waitretry,
2237         and timeout to double.
2238
2239         * init.c (cmd_time): Accept floating point time.
2240
2241 2003-09-20  Hrvoje Niksic  <hniksic@xemacs.org>
2242
2243         * retr.c (get_contents): Cosmetic fixes.
2244
2245 2003-09-20  Hrvoje Niksic  <hniksic@xemacs.org>
2246
2247         * url.c (uri_merge): Get rid of uri_merge_1.
2248         (uri_merge): Merge "foo//", "bar" as "foo//bar", not "foo///bar",
2249         i.e. don't add an extra slash merely because BASE ends with two
2250         slashes.
2251         (parse_credentials): Renamed from parse_uname.  Rewrittern in
2252         standard [beg, end) calling style.
2253         (url_skip_credentials): Renamed from url_skip_uname.  Made static.
2254         (url_skip_credentials): Include # and ; as terminators.  Old code
2255         would mistakenly consider "http://foo.com#hniksic@iskon.hr" to
2256         contain a username.
2257         (url_skip_scheme): Removed because it was unused.
2258         (url_has_scheme): Require "scheme" to be at least one char long.
2259
2260 2003-09-19  Hrvoje Niksic  <hniksic@xemacs.org>
2261
2262         * url.c (url_file_name): Expect NULL dir_prefix.
2263
2264         * init.c (cmd_file): Use a macro to prevent multiple #ifdef
2265         WINDOWS.
2266         (defaults): Set dir_prefix to NULL by default.
2267
2268 2003-09-19  Hrvoje Niksic  <hniksic@xemacs.org>
2269
2270         * safe-ctype.h (_sch_test): Cast BIT to unsigned char, like latest
2271         gcc does.
2272
2273 2003-09-19  Hrvoje Niksic  <hniksic@xemacs.org>
2274
2275         * wget.h (BOUNDED_TO_ALLOCA): Evaluate PLACE only once.
2276         (ARRAY_SIZE): Renamed to countof.  All callers updated.
2277
2278 2003-09-19  Hrvoje Niksic  <hniksic@xemacs.org>
2279
2280         * main.c (main): New option --strict-comments.
2281
2282         * html-parse.c (find_comment_end): New function: simple BM search
2283         for "-->".
2284         (map_html_tags): Use it if looking at a comment and not in strict
2285         comments mode.
2286
2287 2003-09-17  Aurelien Marchand  <artaxerxes@users.sf.net>
2288
2289         * ftp.h: Added OS400 system in enum
2290         * ftp-basic.c: recognize OS400 systems
2291         * ftp.c: don't prepend the CWD if talking to OS400, since it
2292         breaks the change in library
2293
2294 2003-09-18  Hrvoje Niksic  <hniksic@xemacs.org>
2295
2296         * retr.c (get_contents): Pass the correct argument to ssl_iread.
2297
2298 2003-09-18  Hrvoje Niksic  <hniksic@xemacs.org>
2299
2300         * safe-ctype.h: Don't #define ctype.h macros to errors because
2301         that loses when someone #include's ctype.h after safe-ctype.h.
2302
2303 2003-09-17  Hrvoje Niksic  <hniksic@xemacs.org>
2304
2305         * url.c: Undef U, W, C after use.
2306
2307 2003-09-17  Hrvoje Niksic  <hniksic@xemacs.org>
2308
2309         * init.c (cmd_spec_restrict_file_names): Allow the OS setting to
2310         be augmented by ",nocontrol" which means don't escape the control
2311         characters, but otherwise keep OS settings.
2312
2313         * url.c (file_unsafe_char): Deleted.
2314         (append_uri_pathel): Query filechr_table directly.
2315         (filechr_table): Separated Unix, Windows, and control-unsafe
2316         characters.
2317
2318 2003-09-17  Hrvoje Niksic  <hniksic@xemacs.org>
2319
2320         * url.c (url_escape_1): New function.
2321         (url_escape): Use it.
2322         (sync_path): Handle pathological cases where u->file and u->dir
2323         contain really strange characters.
2324         (ENCODE): Deleted.
2325         (REENCODE): Deleted.
2326
2327 2003-09-16  Hrvoje Niksic  <hniksic@xemacs.org>
2328
2329         * url.c (url_file_name): Don't reallocate FNAME if the file
2330         doesn't exist, as is usually the case.
2331
2332         * utils.c (unique_name): New flag allow_passthrough.
2333
2334 2003-09-16  Hrvoje Niksic  <hniksic@xemacs.org>
2335
2336         * utils.c (wtimer_sys_diff): Convert the time difference to signed
2337         __int64, then to double.  This works around MS VC++ 6 which can't
2338         convert unsigned __int64 to double directly.
2339
2340 2003-09-16  Hrvoje Niksic  <hniksic@xemacs.org>
2341
2342         * Makefile.in (clean): Also remove the core.<number> files
2343         produced by recent Linux systems.
2344
2345 2003-09-16  Hrvoje Niksic  <hniksic@xemacs.org>
2346
2347         * http.c (post_file): Don't pad the file if it's not large
2348         enough.  Bail out instead.
2349
2350 2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
2351
2352         * retr.c (get_contents): Reduce the buffer size to the amount of
2353         data that may pass through for one second.  This prevents long
2354         sleeps when limiting bandwidth.
2355
2356         * connect.c (connect_to_one): Reduce the socket's RCVBUF when
2357         bandwidth limitation to small values is requested.
2358
2359 2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
2360
2361         * progress.c (update_speed_ring): Moved the speed ring update to a
2362         separate function and documented it better.
2363
2364         * progress.c: Use `double' for most timers to support granularity
2365         smaller than 1ms.
2366
2367 2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
2368
2369         * wget.h (XDIGIT_TO_XCHAR): Implement as index into a literal
2370         string.
2371         (XDIGIT_TO_xchar): Ditto.
2372
2373 2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
2374
2375         * utils.c: Change the type of timer-related functions from long to
2376         double, for better precision.  On machines supporting gettimeofday
2377         the timers now work with granularity of less than one millisecond.
2378
2379 2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
2380
2381         * cookies.c (parse_set_cookies): Fixed the parser to handle more
2382         edge conditions.
2383         (test_cookies): New function, contains a test suite for
2384         parse_set_cookies.
2385
2386 2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
2387
2388         * url.c (strpbrk_or_eos): Implement as a macro under Gcc.
2389
2390 2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
2391
2392         * cookies.c (parse_set_cookies): Allow trailing space in
2393         set-cookies header.  Also, allow any amount of whitespace, not
2394         only one character.  Allow empty set-cookies header without
2395         spewing an error.
2396
2397 2003-09-14  Hrvoje Niksic  <hniksic@xemacs.org>
2398
2399         * url.c (append_uri_pathel): Use opt.restrict_file_names when
2400         calling file_unsafe_char.
2401
2402         * init.c: New command restrict_file_names.
2403
2404         * main.c (main): New option --restrict-file-names[=windows,unix].
2405
2406         * url.c (url_file_name): Renamed from url_filename.
2407         (url_file_name): Add directory and hostdir prefix here, not in
2408         mkstruct.
2409         (append_dir_structure): New function, does part of the work that
2410         used to be in mkstruct.  Iterates over path elements in u->path,
2411         calling append_uri_pathel on each one to append it to the file
2412         name.
2413         (append_uri_pathel): URL-unescape a path element and reencode it
2414         with a different set of rules, more appropriate for handling of
2415         files.
2416         (file_unsafe_char): New function, uses a lookup table to decide
2417         whether a character should be escaped for use in file name.
2418         (append_string): New utility function.
2419         (append_char): Ditto.
2420         (file_unsafe_char): New argument restrict_for_windows, decide
2421         whether Windows file names should be escaped in run-time.
2422
2423         * connect.c: Include <stdlib.h> to get prototype for abort().
2424
2425 2003-09-14  Hrvoje Niksic  <hniksic@xemacs.org>
2426
2427         * utils.c (wtimer_sys_set): Extracted the code that sets the
2428         current time here.
2429         (wtimer_reset): Call it.
2430         (wtimer_sys_diff): Extracted the code that calculates the
2431         difference between two system times here.
2432         (wtimer_elapsed): Call it.
2433         (wtimer_elapsed): Don't return a value smaller than the previous
2434         one, which could previously happen when system time is set back.
2435         Instead, reset start time to current time and note the elapsed
2436         offset for future calculations.  The returned times are now
2437         guaranteed to be monotonically nondecreasing.
2438
2439 2003-09-10  Hrvoje Niksic  <hniksic@xemacs.org>
2440
2441         * host.c (lookup_host): Print the result of the DNS lookup.
2442
2443 2003-09-10  Hrvoje Niksic  <hniksic@xemacs.org>
2444
2445         * init.c (cmd_boolean): Accept yes/no along with on/off.
2446         (cmd_lockable_boolean): Ditto.
2447
2448 2003-09-10  Hrvoje Niksic  <hniksic@xemacs.org>
2449
2450         * init.c: New command dns_cache.
2451
2452         * main.c (main): New option --dns-cache[=off].
2453
2454 2003-09-09  Hrvoje Niksic  <hniksic@xemacs.org>
2455
2456         * config.h.in: Initialize HAVE_GETADDRINFO and ENABLE_IPV6.
2457
2458         * all: Use #ifdef ENABLE_IPV6 instead of the older INET6.  Use
2459         HAVE_GETADDRINFO for getaddrinfo-related stuff.
2460
2461 2003-09-09  Hrvoje Niksic  <hniksic@xemacs.org>
2462
2463         * url.c (url_parse): Return an error if the URL contains a [...]
2464         IPv6 numeric address and we don't support IPv6.
2465
2466 2003-09-05  Hrvoje Niksic  <hniksic@xemacs.org>
2467
2468         * url.c (is_valid_ipv6_address): Modified to not require
2469         zero-terminated strings.
2470         (is_valid_ipv4_address): Ditto.
2471
2472 2003-09-05  Mauro Tortonesi <mauro@deepspace6.net>
2473
2474         src/url.c: added RFC 2732 compliance for URL parsing. The
2475         functions is_*_address valid are a modified version of
2476         glibc 2.3.2 inet_pton's code.
2477
2478 2003-09-03  Ahmon Dancy  <dancy@dancysoft.com>
2479
2480         * main.c init.c options.h: Added --retry-connrefused option so
2481         that Connection Refused failures are treated as non-fatal (when
2482         trying to retrieve from busy servers).
2483
2484         * wget.h: New CONNECT_ERROR macro for encapsulating this
2485         modification.
2486
2487         * ftp.c http.c : Use CONNECT_ERROR macro in places where
2488         ECONNREFUSED was checked.
2489
2490 2003-01-11  Ian Abbott  <abbotti@mev.co.uk>
2491
2492         * ftp.c (ftp_retrieve_glob): Reject insecure filenames as determined
2493         by calling new function has_insecure_name_p.  This is based on a
2494         patch by Red Hat.
2495
2496         * fnmatch.c (has_insecure_name_p): New function: returns non-zero
2497         if filename starts with `/' or contains `../' and is therefore
2498         considered insecure.
2499
2500         * fnmatch.h: Declare has_insecure_name_p().
2501
2502 2002-08-03  Hrvoje Niksic  <hniksic@xemacs.org>
2503
2504         * init.c (cmd_file): Allocate RESULT correctly.
2505
2506 2002-07-24  Hrvoje Niksic  <hniksic@xemacs.org>
2507
2508         * recur.c (retrieve_tree): Check whether downloaded_html_set is
2509         non-NULL before using it.
2510
2511 2002-05-27  Hrvoje Niksic  <hniksic@arsdigita.com>
2512
2513         * html-parse.c (NAME_CHAR_P): Allow almost any character here.
2514
2515 2002-05-24  Hrvoje Niksic  <hniksic@arsdigita.com>
2516
2517         * progress.c (bar_set_params): Fall back to dot progress if the
2518         terminal type is "emacs".
2519
2520 2002-05-20  Hrvoje Niksic  <hniksic@arsdigita.com>
2521
2522         * log.c: Don't #undef WGET_USE_STDARG.
2523
2524 2002-05-16  Hrvoje Niksic  <hniksic@arsdigita.com>
2525
2526         * hash.c (prime_size): Store the offset of the prime number in the
2527         prime table.  When searching, start with the given offset.
2528         (hash_table_new): Pass the pointer to ht->prime_offset to
2529         prime_size.
2530         (grow_hash_table): Ditto.
2531         (prime_size): Make 13 the first prime to make empty hash tables
2532         slightly smaller.
2533
2534 2002-05-16  Ian Abbott  <abbotti@mev.co.uk>
2535
2536         * recur.c (download_child_p): Minor optimization to avoid an
2537         unnecessary additional call to schemes_are_similar_p function.
2538
2539 2002-05-16  Ian Abbott  <abbotti@mev.co.uk>
2540
2541         * url.c (schemes_are_similar_p): New function to test enumerated
2542         scheme codes for similarity.
2543
2544         * url.h: Declare it.
2545
2546         * recur.c (download_child_p): Use it to compare schemes.  This
2547         also fixes a bug that allows hosts to be spanned (without the
2548         -H option) when the parent scheme is https and the child's is
2549         http or vice versa.
2550
2551 2002-05-14  Bill Richardson  <bill@riverstonenet.com>
2552
2553         * ftp.c (getftp): Don't ftruncate stdout.
2554
2555         * http.c (gethttp): Don't ftruncate stdout.
2556
2557 2002-05-09  Ian Abbott  <abbotti@mev.co.uk>
2558
2559         * cmpt.c (strptime_internal): Synched with glibc-2.1.3.
2560         (get_number): Ditto.
2561         (get_alt_number): Ditto.
2562         (__isleap): New function-like macro used by strptime.
2563         (day_of_the_week): New function used by strptime.
2564         (day_of_the_year): Ditto.
2565         (__mon_yday): Now shared by mktime and strptime implementations.
2566
2567 2002-05-08  Hrvoje Niksic  <hniksic@arsdigita.com>
2568
2569         * cookies.c (check_domain_match): Use match_tail in case
2570         insensitive mode.
2571
2572         * utils.c (match_tail): Allow the caller to specify case
2573         insensitive mode.
2574
2575         * cookies.c (store_cookie): When expiry_time is 0, print it as
2576         undefined, not indefinite.
2577
2578 2002-05-07  Ian Abbott  <abbotti@mev.co.uk>
2579
2580         * cookies.c (cookie_jar_process_set_cookie): Do not store
2581         discarded cookie.
2582
2583 2002-04-21  Hrvoje Niksic  <hniksic@arsdigita.com>
2584
2585         * cookies.c (check_domain_match): Allow cookies to be set for
2586         subdomains of unknown top-level domains under some circumstances.
2587
2588 2002-04-21  Thomas Lussnig  <thomas.lussnig@bewegungsmelder.de>
2589
2590         * gen_ssl.c:
2591         - allow checking of server cert
2592         - allow defining client cert type
2593         - allow limit of ssl protocol
2594         - check more return values
2595         - added debug message on break
2596
2597 2002-04-21  Hrvoje Niksic  <hniksic@arsdigita.com>
2598
2599         * recur.c (download_child_p): Revert order of items in check
2600         number 6 for clarity.
2601
2602 2002-04-20  Hrvoje Niksic  <hniksic@arsdigita.com>
2603
2604         * init.c: Ditto.
2605
2606         * main.c: Ditto.
2607
2608         * http.c: Use the new interface.
2609
2610         * cookies.c: Provide an OO-style "cookie jar" interface to enable
2611         separate cookie jars.
2612
2613         * http.c (http_atotm): Declare argument as const.
2614
2615 2002-04-20  Hrvoje Niksic  <hniksic@arsdigita.com>
2616
2617         * cookies.c (cookie_new): Default to PORT_ANY.
2618         (find_cookie_chain_exact): Only search by DOMAIN.
2619         (find_matching_cookie): Also check that PORT matches.
2620         (store_cookie): Only match the domain.
2621         (set_cookie_header_cb): When a cookie "fakes" a domain, assume it
2622         is valid for that host rather than discarding it completely.
2623         (find_matching_chains): Don't search by PORT.
2624         (matching_cookie): Also match PORT.
2625         (load_cookies): Set the port if specified, otherwise leave it as
2626         ANY.
2627         (save_cookies_mapper): Save the port if specified, otherwise leave
2628         it empty.
2629
2630 2002-04-19  Thomas Lussnig  <thomas.lussnig@bewegungsmelder.de>
2631
2632         * init.c: The option `egdfile' was not in sort order.
2633
2634 2002-04-16  Hrvoje Niksic  <hniksic@arsdigita.com>
2635
2636         * ftp.c (getftp): Treat directories that begin with <letter>: as
2637         absolute.
2638         (getftp): Strip trailing slashes from con->id before merging it
2639         with TARGET.
2640
2641 2002-04-16  Hrvoje Niksic  <hniksic@arsdigita.com>
2642
2643         * http.c (gethttp): If Content-Type is not given, assume
2644         text/html.
2645
2646 2002-04-15  Hrvoje Niksic  <hniksic@arsdigita.com>
2647
2648         * recur.c (download_child_p): Don't ignore rejection of HTML
2649         documents that are themselves leaves of recursion.
2650
2651 2002-04-15  Ian Abbott  <abbotti@mev.co.uk>
2652
2653         Makefile.in: Updated several dependencies for object files to take
2654         account of nested include files.
2655
2656 2002-04-15  Ian Abbott  <abbotti@mev.co.uk>
2657
2658         Makefile.in: The target `connect$o' (connect.o) now depends on
2659         `utils.h'
2660
2661 2002-04-15  Ian Abbott  <abbotti@mev.co.uk>
2662
2663         * host.c (SET_H_ERRNO): New function-like macro to set `h_errno'.
2664         (gethostbyname_with_timeout): Use it.
2665
2666         * utils.c: Don't define `SETJMP()', `run_with_timeout_env' or
2667         `abort_run_with_timeout()' when `USE_SIGNAL_TIMEOUT' is undefined.
2668
2669 2002-04-15  Hrvoje Niksic  <hniksic@arsdigita.com>
2670
2671         * host.c (getaddrinfo_with_timeout): New function.
2672         (gethostbyname_with_timeout): Ditto.
2673         (lookup_host): Use them.
2674
2675 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
2676
2677         * utils.c (number_to_string): Handle the case when n < -INT_MAX.
2678
2679 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
2680
2681         * init.c (comind): Use a marginally faster implementation of
2682         binary search.  To quote Martin Buchholz, "a nanosecond saved is a
2683         nanosecond earned."
2684
2685 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
2686
2687         * main.c (print_help): Document `--post-data' and `--post-file'.
2688
2689 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
2690
2691         * http.c (gethttp): Ditto.
2692
2693         * retr.c (retrieve_url): Initialize variables to appease the
2694         compiler.
2695
2696         * gen_sslfunc.c (ssl_iread): Don't handle EINTR when calling
2697         select_fd.
2698         (ssl_iwrite): Ditto.
2699
2700         * connect.c (select_fd): Rewrite to handle EINTR.  Set errno to
2701         ETIMEDOUT in case of timeout.
2702         (iread): No need to handle EINTR when calling select_fd.
2703         (iwrite): Ditto.
2704
2705 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
2706
2707         * retr.c (retrieve_url): Make sure that POST is not honored for
2708         redirections.
2709
2710         * http.c (gethttp): Send the POST data when requested.
2711         (post_file): New function.
2712         (gethttp): Use it.
2713
2714         * main.c (main): Ditto.
2715
2716         * init.c: Add new options.
2717
2718         * options.h (struct options): New options post_data and
2719         post_file_name.
2720
2721 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
2722
2723         * connect.c (connect_with_timeout): Firing SIGALRM can result in
2724         connect() exiting with EINTR.  Treat EINTR the same as ETIMEDOUT.
2725
2726 2002-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
2727
2728         * connect.c (connect_with_timeout): Use it.
2729
2730         * utils.c (run_with_timeout): New function.
2731
2732 2002-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
2733
2734         * url.c (getproxy): Accept a struct url argument.  This obviates
2735         the need for USE_PROXY_P.
2736
2737         * retr.c (retrieve_url): Allow proxy to be a non-FTP URL.
2738
2739         * ftp.c (getftp): Recognize FWTK-style proxy.
2740
2741 2002-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
2742
2743         * config.h.in: Only define _VA_LIST when compiled with gcc.
2744
2745 2002-04012  Ian Abbott  <abbotti@mev.co.uk>
2746
2747         * http.c (http_loop): Compensate for MS Windows two-second
2748         granularity of file modification time when comparing timestamps.
2749
2750         * ftp.c (ftp_retrieve_list): Ditto.
2751
2752 2002-04-12  Ian Abbott  <abbotti@mev.co.uk>
2753
2754         * utils.c (has_html_suffix_p): New function to test filename for
2755         common html extensions.
2756
2757         * utils.h: Declare it.
2758
2759         * http.c (http_loop): Use it instead of previous test.
2760
2761         * retr.c (retrieve_url): Ditto.
2762
2763         * recur.c (download_child_p): Ditto.
2764
2765 2002-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
2766
2767         * config.h.in: Define _VA_LIST on Solaris to prevent stdio.h from
2768         declaring va_list.
2769         From Kevin Rodgers <kevinr@ihs.com>.
2770
2771 2002-04-12  Ian Abbott  <abbotti@mev.co.uk>
2772
2773         * Makefile.in: Specify libtool mode explicitly when linking.
2774
2775 2002-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
2776
2777         * connect.c (connect_with_timeout): New function.
2778         (connect_to_one): Use it.
2779
2780         * config.h.in: Add stubs for HAVE_SIGSETJMP, HAVE_SIGBLOCK, and
2781         HAVE_SETJMP_H.
2782
2783 2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
2784
2785         * log.c: Set WGET_USE_STDARG if __STDC__ is defined and stdarg.h
2786         is present.
2787
2788 2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
2789
2790         * progress.c (bar_create): If INITIAL is larger than TOTAL, fix
2791         TOTAL.
2792         (bar_finish): Likewise.
2793
2794 2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
2795
2796         * html-url.c (tag_handle_form): New function.  Pick up form
2797         actions and mark them for conversion only.
2798
2799 2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
2800
2801         * progress.c (struct progress_implementation): Use PARAMS when
2802         declaring the parameters of *create, *update, *finish, and
2803         *set_params.
2804
2805         * netrc.c: Ditto.
2806
2807         * http.c: Reformat some function definitions so that ansi2knr can
2808         read them.
2809
2810         * hash.c (struct hash_table): Use the PARAMS macro around
2811         parameters in the declaration of hash_function and test_function.
2812         (prime_size): Spell 2580823717UL and 3355070839UL as (unsigned
2813         long)0x99d43ea5 and (unsigned long)0xc7fa5177 respectively, so
2814         that pre-ANSI compilers can read them.
2815         (find_mapping): Use PARAMS when declaring EQUALS.
2816         (hash_table_put): Ditto.
2817
2818         * ftp.h: Wrap the parameters of ftp_index declaration in PARAMS.
2819
2820         * cookies.c (cookie_new): Use (unsigned long)0 instead of 0UL,
2821         which was unsupported by pre-ANSI compilers.
2822
2823         From Nelson H. F. Beebe <beebe@math.utah.edu>, for the most part.
2824
2825 2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
2826
2827         * url.c (url_filename): Use compose_file_name regardless of
2828         whether opt.dirstruct is set.
2829         (mkstruct): Don't handle the query and the reencoding of DIR; that
2830         is done in compose_file_name.
2831
2832 2002-04-10  Hrvoje Niksic  <hniksic@arsdigita.com>
2833
2834         * wget.h: Ditto for extern char *exec_name.
2835
2836         * options.h: Don't guard against OPTIONS_DEFINED_HERE -- it is
2837         perfectly legal to follow an `extern' with a non-`extern' ones,
2838         provided the types match.
2839
2840         * main.c: Don't define OPTIONS_DEFINED_HERE.
2841
2842 2002-04-10  Hrvoje Niksic  <hniksic@arsdigita.com>
2843
2844         * progress.c (create_image): Revert to calculating ETA based on
2845         average download speed.
2846         (create_image): Don't print ETA until the download has been active
2847         for at least 3 seconds.
2848         (create_image): When ETA is not available, don't print anything.
2849         The previous version would print --:--.
2850
2851 2002-04-10  Hrvoje Niksic  <hniksic@arsdigita.com>
2852
2853         * progress.c (bar_update): Keep updating a subinterval until it
2854         reaches or exceeds a watermark.  That way the measurement will be
2855         guaranteed to span a configurable minimum of time.  The current
2856         default is 3s in 30 100ms intervals.
2857
2858 2002-04-09  Hrvoje Niksic  <hniksic@arsdigita.com>
2859
2860         * progress.c (bar_update): Maintain an array of the time it took
2861         to perform previous 30 network reads.
2862         (create_image): Calculate the download speed and ETA based on the
2863         last 30 reads, not the entire download.
2864         (create_image): Make sure that the ETA is not changed more than
2865         once per second.
2866
2867 2002-04-09  Ian Abbott  <abbotti@mev.co.uk>
2868
2869         * mswindows.c (borland_utime): New function conditionally defined
2870         when `HACK_BCC_UTIME_BUG' is defined.  A reimplementation of
2871         `utime()' as Borland's `utime()' function is broken on Windows 9x
2872         systems.  (Original patch by Chin-yuan Kuo <sr1111111@yahoo.com.tw>.)
2873
2874 2002-04-08  Hrvoje Niksic  <hniksic@arsdigita.com>
2875
2876         * ftp.c (ftp_loop): Propagate the result of ftp_retrieve_glob.
2877
2878 2002-03-26  Ian Abbott  <abbotti@mev.co.uk>
2879
2880         * Makefile.in: Updated several dependencies for object files.
2881
2882 2002-03-20  Ian Abbott  <abbotti@mev.co.uk>
2883
2884         * mswindows.c: Include "utils.h".
2885
2886 2002-03-18  Ian Abbott  <abbotti@mev.co.uk>
2887
2888         * host.h: Don't include netdb.h on windows.
2889
2890 2002-02-19  Hrvoje Niksic  <hniksic@arsdigita.com>
2891
2892         * recur.c (retrieve_tree): Handle the case when start_url doesn't
2893         parse.
2894
2895 2002-02-19  Andreas Damm  <andreas-sourceforge@radab.org>
2896
2897         * wget.h (DO_REALLOC_FROM_ALLOCA): Multiply with sizeof(type) when
2898         calling xmalloc and memcpy.
2899
2900 2002-02-19  Hrvoje Niksic  <hniksic@arsdigita.com>
2901
2902         * host.h: Include Unix-specific includes #ifndef WINDOWS.
2903         Patch originally provided by Christian Lackas.
2904
2905 2002-02-11  Christian Lackas  <delta@lackas.net>
2906
2907         * recur.c: recurive downloading for https fixed.
2908
2909 2002-02-19  Alan Eldridge  <alane@geeksrus.net>
2910
2911         * host.h: Also include <netinet/in.h> and <sys/socket.h>.
2912
2913         * ftp-basic.c: Also include <netinet/in.h>.
2914
2915 2002-02-05  Ian Abbott  <abbotti@mev.co.uk>
2916
2917         * http.c (gethttp): when -c used, mark already fully retrieved
2918         file as successfully retrieved.
2919
2920 2002-02-19  Hrvoje Niksic  <hniksic@arsdigita.com>
2921
2922         * url.c (url_parse): Don't treat '?' as query string separator
2923         when parsing FTP URLs.
2924
2925 2002-02-01  Hrvoje Niksic  <hniksic@arsdigita.com>
2926
2927         * html-url.c (tag_handle_meta): Don't crash on <meta
2928         http-equiv=refresh> where content is missing.
2929
2930 2002-01-31  Herold Heiko  <Heiko.Herold@previnet.it>
2931
2932         * ftp-basic.c, host.c: don't include sys/socket.h, arpa/inet.h,
2933         netdb.h on windows.
2934
2935 2002-01-30  Hrvoje Niksic  <hniksic@arsdigita.com>
2936
2937         * retr.c (retrieve_url): Remove redirection cycle detection.  This
2938         is because some sites legitimately redirect the user back to the
2939         same location, e.g. after an authorization check performed by
2940         another page.  MAX_REDIRECTIONS is still used to prevent infinite
2941         redirection loops.
2942
2943 2002-01-26  Hrvoje Niksic  <hniksic@arsdigita.com>
2944
2945         * http.c (gethttp): Wrap host name in square brackets if it
2946         contains a colon.
2947
2948 2002-01-26  Hrvoje Niksic  <hniksic@arsdigita.com>
2949
2950         * url.c (url_parse): Allow all hex digits, not only decimal ones,
2951         to form an IP address.
2952
2953 2002-01-26  Hrvoje Niksic  <hniksic@arsdigita.com>
2954
2955         * url.c (urlchr_table): Make square braces reserved, so we can
2956         parse http://[::1]/.
2957         (url_parse): Handle host in braces.
2958         (url_string): If url->host contains colons, wrap it in braces.
2959
2960 2002-01-24  Hrvoje Niksic  <hniksic@arsdigita.com>
2961
2962         * connect.c (resolve_bind_address): New function.
2963         (connect_to_one): Use it.
2964         (bindport): Ditto.
2965
2966         * init.c: Don't resolve bind-address here.
2967
2968         * host.c (wget_sockaddr_set_address): Would bug out with ADDR == NULL.
2969
2970 2002-01-24  Hrvoje Niksic  <hniksic@arsdigita.com>
2971
2972         * host.c (lookup_host): Use sizeof(ip4_address) to calculate the
2973         offset.
2974         (address_list_new): Use map_ipv4_to_ip.
2975         (wget_sockaddr_set_address): Convert ADDR to IPv4 before using it
2976         in IPv4 context.
2977
2978 2002-01-24  Hrvoje Niksic  <hniksic@arsdigita.com>
2979
2980         * source: Integrated IPv6 support.
2981         Written by Thomas Lussnig <thomas.lussnig@bewegungsmelder.de>.
2982
2983 2002-01-15  Ian Abbott  <abbotti@mev.co.uk>
2984
2985         * init.c (cmd_file): Change `\' to `/' for Windows (yes, really!)
2986         (cmd_directory): New function. Like cmd_file(), but strips
2987         trailing directory separators.
2988         (commands): Change action for "dirprefix" from `cmd_file' to
2989         `cmd_directory'.
2990
2991         * utils.c (make_directory): Allow intermediate `mkdir' calls to
2992         fail, as not all path components that do not exist should be
2993         directory components, especially under Windows.
2994
2995 2002-01-17  Hrvoje Niksic  <hniksic@arsdigita.com>
2996
2997         * netrc.c (parse_netrc): Skip leading whitespace before testing
2998         whether the line is empty.  Empty lines still contain the line
2999         terminator.
3000
3001 2002-01-15  Hrvoje Niksic  <hniksic@arsdigita.com>
3002
3003         * gen_sslfunc.c (ssl_iread): Call select on the file descriptor
3004         only if no data is pending in SSL buffers.
3005         From tony@bluetail.com.
3006
3007 2002-01-14  Hrvoje Niksic  <hniksic@arsdigita.com>
3008
3009         * headers.c (header_get): Strip trailing whitespace from the
3010         header.
3011
3012 2002-01-14  Hrvoje Niksic  <hniksic@arsdigita.com>
3013
3014         * url.c (parse_uname): URL-decode *USER and *PASSWD.
3015
3016 2002-01-07  Ian Abbott <abbotti@mev.co.uk>
3017
3018         * url.c (uri_merge_1): Deal with "net path" relative URL (one that
3019         starts with "//").
3020
3021 2002-01-14  Hrvoje Niksic  <hniksic@arsdigita.com>
3022
3023         * http.c (gethttp): Invalidate SOCK if get_contents encountered an
3024         error.
3025
3026 2001-12-24  Hrvoje Niksic  <hniksic@arsdigita.com>
3027
3028         * version.c: Wget 1.8.1 is released.
3029
3030 2001-12-19  Hrvoje Niksic  <hniksic@arsdigita.com>
3031
3032         * version.c: Wget 1.8.1-pre3 is released.
3033
3034 2001-12-19  Hrvoje Niksic  <hniksic@arsdigita.com>
3035
3036         * recur.c (retrieve_tree): Enqueue the canonical representation of
3037         start_url, so that the test against dl_url_file_map works.
3038
3039 2001-12-19  Hrvoje Niksic  <hniksic@arsdigita.com>
3040
3041         * log.c (logputs): Check for requested verbosity before printing
3042         anything.
3043
3044 2001-12-19  Hrvoje Niksic  <hniksic@arsdigita.com>
3045
3046         * html-url.c (tag_handle_link): Treat the "shortcut icon" link as
3047         inline.
3048
3049 2001-12-18  Hrvoje Niksic  <hniksic@arsdigita.com>
3050
3051         * recur.c (retrieve_tree): Make a copy of file obtained from
3052         dl_url_file_map because the code calls xfree(file) later.
3053
3054 2001-12-18  Hrvoje Niksic  <hniksic@arsdigita.com>
3055
3056         * recur.c (register_html): Maintain a hash table of HTML files
3057         along with the list.  Disallow duplicates.
3058         (retrieve_tree): Use downloaded_html_set to check whether the file
3059         found in dl_url_file_map is an HTML file, and descend into it if
3060         so.
3061         (convert_all_links): Don't guard against duplicates in
3062         downloaded_html_list, since they are no longer possible.
3063
3064 2001-12-18  Ian Abbott  <abbotti@mev.co.uk>
3065
3066         * recur.c (retrieve_tree): Pass on referring URL when retrieving
3067         recursed URL.
3068
3069 2001-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
3070
3071         * version.c: Wget 1.8.1-pre2 is released.
3072
3073 2001-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
3074
3075         * retr.c (sleep_between_retrievals): Simplify indentation.
3076
3077 2001-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
3078
3079         * gen_sslfunc.c (ssl_init_prng): Use random_number to get a byte
3080         of "randomness" at a time.
3081         (ssl_init_prng): Don't seed the PRNG; random_number will do that.
3082
3083         * retr.c (sleep_between_retrievals): Use it.  Make sure that the
3084         random amount averages in opt.wait.
3085         (sleep_between_retrievals): Don't seed the PRNG; random_number
3086         will do that.
3087
3088         * utils.c (random_number): New function.
3089
3090 2001-12-14  Hrvoje Niksic  <hniksic@arsdigita.com>
3091
3092         * url.c (path_simplify): Move here from utils.c, and make static.
3093
3094 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
3095
3096         * init.c (wgetrc_file_name): Print correct message when loading
3097         getenv("WGETRC") fails.
3098
3099 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
3100
3101         * recur.c (register_download): Don't abort when one URL references
3102         two different files.
3103
3104 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
3105
3106         * http.c (gethttp): Check for conn->scheme, not u->scheme, before
3107         calling ssl_iwrite.
3108
3109 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
3110
3111         * version.c: Wget 1.8.1-pre1 is released.
3112
3113 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
3114
3115         * res.c (matches): Fix broken URL in the docstring.
3116
3117 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
3118
3119         * html-url.c (tag_url_attributes): Mark <embed href=...> as
3120         external.
3121
3122 2001-12-12  Hrvoje Niksic  <hniksic@arsdigita.com>
3123
3124         * url.c (get_urls_file): Cosmetic changes.
3125
3126 2001-12-12  Hrvoje Niksic  <hniksic@arsdigita.com>
3127
3128         * html-url.c (append_one_url): Resurrect warning when unable to
3129         resolve a relative link.
3130
3131 2001-12-12  Hrvoje Niksic  <hniksic@arsdigita.com>
3132
3133         * html-url.c (collect_tags_mapper): Break into several functions.
3134         (tag_url_attributes): Collect <embed href=...>.
3135
3136 2001-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
3137
3138         * host.c: New type ipv4_address.  Use it consistently instead of
3139         `unsigned char[4]' and `unsigned char *'.
3140         (pretty_print_address): Accept a `const void *', to require even
3141         less casting.
3142
3143 2001-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
3144
3145         * ftp-ls.c (ftp_parse_vms_ls): Fix obvious memory leaks.
3146
3147 2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
3148
3149         * main.c (main): Initialize progress after fork_to_background, so
3150         that it knows when to use dots.
3151
3152         * mswindows.c (ws_hangup): Call log_request_redirect_output.
3153
3154         * utils.c (fork_to_background): Print the PID of the child
3155         process.
3156
3157         * log.c (log_request_redirect_output): Set a flag that output
3158         redirection has been requested.  Doing anything else in a signal
3159         handler is unsafe.
3160         (check_redirect_output): New function: check whether redirection
3161         has been requested and, if so, call redirect_output().
3162         (logputs): Call check_redirect_output.
3163         (logprintf): Ditto.
3164         (debug_logprintf): Ditto.
3165         (redirect_output): Print clearer messages.
3166
3167         * main.c (redirect_output_signal): Don't call
3168         redirect_output_signal directly.  Instead, call
3169         log_request_redirect_output.
3170
3171         * utils.c (memfatal): Ditto.
3172
3173         * progress.c (display_image): Use it.
3174
3175         * log.c (log_set_save_context): New function: allow the caller to
3176         turn off saving log context lines.
3177
3178 2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
3179
3180         * host.c (address_list_set_faulty): Uncomment a sanity check.
3181
3182 2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
3183
3184         * utils.c (long_to_string): Return a pointer after where the
3185         number ends.
3186         (long_to_string): Rename to number_to_string.
3187
3188 2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
3189
3190         * utils.c (path_simplify): Correctly handle the unlikely case that
3191         b starts out as path + 1.
3192
3193 2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
3194
3195         * utils.c (path_simplify): Rewrite, with better comments, and
3196         without the use of strcpy to move overlapping blocks.
3197
3198 2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
3199
3200         * init.c (cmd_spec_progress): Resurrect.  Check whether VAL is a
3201         valid progress type before setting it.
3202
3203 2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
3204
3205         * main.c (main): Remove stray debugging message.
3206
3207 2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
3208
3209         * progress.c (create_image): Fix ETA padding when hours are prined.
3210
3211 2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
3212
3213         * version.c: Wget 1.8 is released.
3214
3215 2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
3216
3217         * url.c (reencode_string): Declare static.
3218
3219         * res.c (registered_specs): Declare static.
3220
3221         * progress.c (current_impl_locked): Declare static.
3222
3223         * log.c (flush_log_p): Declare static.
3224         (needs_flushing): Ditto.
3225
3226         * http.c (digest_authentication_encode): Declare static.
3227
3228         * html-url.c (init_interesting): Declare static.
3229
3230         * host.c (host_name_addresses_map): Declare static.
3231
3232         * cookies.c (find_matching_chains): Declare static.
3233
3234         * ftp-ls.c (ftp_parse_vms_ls): Warn about the memory leak
3235         indicated by lint.
3236
3237         * utils.c (path_simplify): Remove unused variable STUB_CHAR.
3238
3239         * host.c (address_list_set_faulty): Document that INDEX is
3240         currently unused.
3241
3242         * url.c (rewrite_shorthand_url): Remove unused variable PATH.
3243
3244 2001-12-08  Hrvoje Niksic  <hniksic@arsdigita.com>
3245
3246         * version.c: Wget 1.8-pre2 is released.
3247
3248 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
3249
3250         * progress.c (progress_handle_sigwinch): Set up the signal again.
3251
3252         * utils.c: Include <sys/termios.h>, where Solaris defines
3253         TIOCGWINSZ.
3254
3255         * progress.c (bar_create): Don't use the last column on the screen.
3256         (create_image): Pad ETA to constant size.  Pad SIZE to nine digits
3257         only until it exceeded them.
3258
3259 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
3260
3261         * version.c: Wget 1.8-pre1 is released.
3262
3263 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
3264
3265         * progress.c (progress_create): Make sure that, when the output is
3266         redirected, the progress implementation gets changed to the
3267         fallback one.
3268         (bar_set_params): Set current_impl_locked to 1 when "force" is
3269         specified.
3270         (progress_create): Don't change the progress implementation if
3271         current_impl_locked is non-zero.
3272
3273         * main.c (redirect_output_signal): Call
3274         progress_schedule_redirect.
3275
3276         * progress.c (progress_schedule_redirect): New function.
3277
3278 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
3279
3280         * log.c (logvprintf): Restructure to allow being called multiple
3281         times.
3282         (logprintf): Call logvprintf in a loop.
3283         (debug_logprintf): Ditto.
3284
3285 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
3286
3287         * gen_sslfunc.c (ssl_init_prng): Allow the user to disable EGD by
3288         setting egd_file it to empty string.
3289
3290         * main.c (main): Change the option name from --sslegdsock to
3291         --egd-file.
3292
3293 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
3294
3295         * gen_sslfunc.c (ssl_init_prng): Make the printed message
3296         translatable.
3297
3298 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
3299
3300         * url.c (scheme_disable): New function.
3301
3302         * main.c (main): Call ssl_init_prng from here rather than from
3303         init_ssl, so that it has a chance to disable support for https
3304         before a URL has been resolved.
3305
3306         * gen_sslfunc.c (ssl_init_prng): Seed with rand() if all else
3307         failed.
3308         (ssl_init_prng): Disable support for https if seeding the PRNG
3309         fails.
3310
3311 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
3312
3313         * utils.c (read_whole_line): Handle lines beginning with \0.
3314
3315 2001-12-05  Hrvoje Niksic  <hniksic@arsdigita.com>
3316
3317         * recur.c (convert_all_links): Guard against duplicates in
3318         downloaded_html_files.
3319         (register_download): Don't invalidate similar-looking URLs.
3320         (match_except_index): New function.
3321
3322 2001-12-05  Hrvoje Niksic  <hniksic@arsdigita.com>
3323
3324         * utils.c (path_simplify): Document with test cases.
3325
3326 2001-12-04  Hrvoje Niksic  <hniksic@arsdigita.com>
3327
3328         * gen_sslfunc.c: Ditto.
3329
3330         * rbuf.c: Include <string.h>.
3331
3332 2001-12-04  Hrvoje Niksic  <hniksic@arsdigita.com>
3333
3334         * recur.c (retrieve_tree): Check whether the URL was already
3335         downloaded before downloading it again.
3336         (descend_child_p): Renamed to download_child_p.
3337         (register_download): When one URL is downloaded to a file already
3338         "owned" by another URL, delete all references that map any URL to
3339         that file.
3340         (register_delete_file): New function.
3341         (retrieve_tree): Use it after deleting a file.
3342
3343         * url.c (url_parse): Re-canonicalize the URL also if the path is
3344         empty, so that e.g. "http://www.server.com" ->
3345         "http://www.server.com/".
3346         (lowercase_str): Use ISUPPER instead of !ISLOWER.
3347
3348         * retr.c (retrieve_url): Use the canonical URL form when calling
3349         register_download().
3350
3351 2001-12-04  Ian Abbott <abbotti@mev.co.uk>
3352
3353         * snprintf.c (dopr): Use `unsigned int' as the second argument to
3354         va_arg when casting to `unsigned short' is intended.
3355
3356 2001-12-04  Herold Heiko  <Heiko.Herold@previnet.it>
3357
3358         * gen_sslfunc.c: on windows provide ssl crypto random 
3359           initialization through RAND_screen(); could possibly
3360           be not enough for strong ssl communication (see the 
3361           relevant manual page from the openssl package).
3362
3363 2001-12-04  Hrvoje Niksic  <hniksic@arsdigita.com>
3364
3365         * url.c (local_quote_string): Reenable quoting of question marks,
3366         but only when `--html-extension' is used.
3367
3368 2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
3369
3370         * version.c: Wget 1.8-beta3 is released.
3371
3372 2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
3373
3374         * snprintf.c (dopr): Cast the result of va_arg to short int and
3375         short unsigned int where these types are expected to be used.
3376
3377 2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
3378
3379         * snprintf.c (dopr): Replace `short int' and `unsigned short int'
3380         with `int' when using it as the second argument to `va_arg'.
3381
3382 2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
3383
3384         * host.c (address_list_new_one): New function.
3385         (lookup_host): Use it.
3386
3387 2001-12-03  Andre Majorel  <amajorel@teaser.fr>
3388
3389         * host.c (lookup_host): Don't initialize TMPSTORE directly because
3390         it's not legal C.
3391
3392 2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
3393
3394         * ftp-basic.c (ftp_port): Don't return HOSTERR if we fail getting
3395         the socket data.
3396
3397         * ftp.c: Ditto.
3398
3399         * http.c: No need to declare h_errno.
3400
3401         * host.c: Declare h_errno.
3402
3403 2001-12-02  Hrvoje Niksic  <hniksic@arsdigita.com>
3404
3405         * utils.c (file_merge): If BASE doesn't contain a slash, just
3406         return a copy of FILE.
3407
3408 2001-12-02  Hrvoje Niksic  <hniksic@arsdigita.com>
3409
3410         * version.c: Wget 1.8-beta2 is released.
3411
3412 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
3413
3414         * ftp.c (getftp): When PWD fails, assume "/".
3415
3416         * ftp-basic.c (ftp_syst): Fix indentation.
3417
3418 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
3419
3420         * url.c (get_urls_file): If opt.base_href is specified, merge each
3421         URL with the base.
3422
3423 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
3424
3425         * main.c (print_help): Don't document the removed `-nh'.
3426
3427 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
3428
3429         * url.c (url_full_path): Document better.
3430
3431         * http.c (gethttp): Use the full path when creating digest
3432         authorization.
3433
3434 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
3435
3436         * cookies.c (path_matches): Return 0 if PREFIX doesn't begin with
3437         '/'.
3438
3439 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
3440
3441         * cookies.c (path_matches): FULL_PATH doesn't begin with '/', but
3442         PREFIX does.
3443
3444 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
3445
3446         * cookies.c (check_domain_match): Reimplement to match Netscape's
3447         "preliminary specification" for cookies.
3448
3449 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
3450
3451         * url.c (replace_attr_refresh_hack): New function.
3452         (convert_links): Call replace_attr_refresh_hack for Refresh
3453         links.  It will add the "TMOUT; URL=" junk before the link.
3454
3455         * html-url.c (collect_tags_mapper): Set ID to the ID of the
3456         "content" attribute, not "http-equiv".
3457         (collect_tags_mapper): Don't use OFFSET to hack the raw_* values;
3458         instead, store the information that this entry belongs to a
3459         "refresh" link.
3460
3461 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
3462
3463         * version.c: Wget 1.8-beta1 is released.
3464
3465 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
3466
3467         * recur.c (retrieve_tree): Allow -p retrievals to exceed maximum
3468         depth by more than one.
3469
3470 2001-11-30  Hrvoje Niksic  <hniksic@arsdigita.com>
3471
3472         * retr.c (retrieve_url): Don't allow more than 20 redirections.
3473
3474 2001-11-30  Hrvoje Niksic  <hniksic@arsdigita.com>
3475
3476         * recur.c (retrieve_tree): Skip the non-inline entries when
3477         enqueuing the children of a leaf HTML node in -p mode.
3478         (descend_url_p): Ignore opt.no_parent when in -p mode and UPOS is
3479         "inline".
3480
3481         * html-url.c (get_urls_html): Don't accept dash_p_leaf_HTML.
3482         (collect_tags_mapper): When an entry is "inline", mark it as such.
3483
3484         * recur.c (descend_url_p): Fix test when checking for
3485         acceptance/rejection rules.
3486
3487 2001-10-31 Daniel BODEA <dali@dali-designs.com>
3488
3489         * netrc.c (search_netrc): When slack_default is 0, still look for
3490         an account with matching password, just not the "default account".
3491         HTTP Authorization using .netrc should now work as expected.
3492
3493 2001-11-30  T. Bharath  <TBharath@responsenetworks.com>
3494
3495         * http.c (persistent_available_p): Call SHUTDOWN_SSL if
3496         test_socket_open fails.
3497
3498 2001-11-30  Hrvoje Niksic  <hniksic@arsdigita.com>
3499
3500         * progress.c (display_image): Just print one CR to reset the
3501         cursor position.
3502
3503 2001-11-30  Christian Fraenkel  <c.fraenkel@gmx.net>
3504
3505         * init.c: New command `ssl_egd_sock'.
3506
3507         * main.c (main): New option `--sslegdsock'.
3508
3509         * gen_sslfunc.c (ssl_init_prng): Seed the RNG using EGD.
3510
3511 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
3512
3513         * cmpt.c (memmove): Include a simple memmove implementation.
3514
3515 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
3516
3517         * headers: Guard against header files being included twice.
3518
3519 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
3520
3521         * gen-md5.c: Use unsigned char * as the buffer argument to
3522         gen_md5_update.
3523
3524 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
3525
3526         * connect.h: Declare select_fd.
3527
3528 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
3529
3530         * recur.c (descend_url_p): When resolving no_parent, compare with
3531         start_url, not parent url.  Otherwise link from /a/b/ to /a/c/
3532         wouldn't be followed, although the download started from /a/.
3533
3534 2001-01-23  Herold Heiko  <Heiko.Herold@previnet.it>
3535
3536         * config.h.ms, mswindows.h: defined HAVE_ISATTY, use _isatty for
3537         MS VC; somebody with Borland compiler please check and provide
3538         patch if possible;
3539
3540         * cmpt.c: provided a usleep emulation.
3541
3542 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
3543
3544         * host.c (address_list_new): Initialize al->faulty.
3545
3546 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
3547
3548         * http.c (http_process_range): Accept the broken output of
3549         "JavaWebServer/1.1.1".
3550
3551 2001-11-28  Hrvoje Niksic  <hniksic@arsdigita.com>
3552
3553         * progress.c (dot_set_params): If PARAMS is unspecified, use
3554         dot_style, if available.
3555
3556         * init.c: Ditto.
3557
3558         * main.c (main): Resurect --dot-style.
3559
3560         * progress.c (dot_finish): Print the quantity if we're left at the
3561         beginning of a row.
3562
3563 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
3564
3565         * cmpt.c (random): Removed.
3566
3567         * retr.c (sleep_between_retrievals): Use the more portable rand()
3568         instead of random().
3569
3570 2001-11-27  Ian Abbott <abbotti@mev.co.uk>
3571
3572         * retr.c (retrieve_from_file): Initialize `new_file' to NULL to
3573         prevent seg fault.
3574
3575 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
3576
3577         * connect.c (connect_to_many): Use address_list_set_faulty to
3578         prevent the faulty address from being reused.
3579
3580         * host.c (address_list_set_faulty): New function.
3581         (address_list_get_bounds): New function, instead of
3582         address_list_count.
3583
3584 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
3585
3586         * url.c (convert_links): Don't translate %d-%d.
3587
3588         * main.c (print_help): Remove stray HAVE_RANDOM code.
3589
3590 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
3591
3592         * ftp.c (getftp): Improve output after sending PASV.  Don't
3593         attempt to "look up" the IP address we already know; call
3594         connect_to_one directly.
3595
3596 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
3597
3598         * progress.c: Change the default progress implementation to "bar".
3599
3600 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
3601
3602         * progress.c (bar_create): Print two newlines.
3603
3604 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
3605
3606         * cmpt.c (random): New function, a simple-minded replacement for
3607         random() on systems that don't have it.
3608
3609 2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
3610
3611         * config.h.in: Put a HAVE_USLEEP stub.
3612
3613         * cmpt.c (usleep): Replacement implementation of usleep using
3614         select.
3615
3616         * init.c: New option init_rate.
3617
3618         * main.c (main): New option --limit-rate.
3619
3620         * retr.c (limit_bandwidth): New function.
3621         (get_contents): Call it to limit the bandwidth used when
3622         downloading.
3623
3624         * progress.c (dot_update): Would print the wrong download speed on
3625         rows other than the first one when the download was continued.
3626         (dot_finish): Ditto.
3627
3628 2001-11-26  Ian Abbott <abbotti@mev.co.uk>
3629
3630         * http.c (gethttp): fix undeclared variable 'err' when compiled
3631         with HAVE_SSL.
3632
3633 2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
3634
3635         * progress.c: Don't allocate new timers; use the timing data
3636         propagated from the caller.
3637
3638         * retr.c (get_contents): Allocate and use a timer.
3639
3640 2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
3641
3642         * http.c (last_host_ip): Made into an address_list.
3643         (invalidate_persistent): Release pc_last_host_ip.
3644         (register_persistent): Use lookup_host.
3645         (persistent_available_p): Check for equality of hosts using
3646         address_list_match_all.  Call address_list_release.
3647         (http_cleanup): New function.
3648
3649         * ftp.c (getftp): Use lookup_host and connect_to_many.
3650
3651         * http.c (gethttp): Use lookup_host and connect_to_many.
3652
3653         * connect.c (make_connection): Removed.
3654         (connect_to_one): New function.
3655         (connect_to_many): Ditto.
3656         (set_connection_host_name): Ditto.
3657
3658         * host.c (lookup_host): New function; new return type.
3659         (address_list_new): New function.
3660         (address_list_count): Ditto.
3661         (address_list_copy_one): Ditto.
3662         (address_list_delete): Ditto.
3663         (address_list_release): Ditto.
3664         (pretty_print_address): Ditto.
3665
3666 2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
3667
3668         * recur.c (retrieve_tree): In case of followed redirection,
3669         blacklist the pre-redirection URL.
3670
3671 2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
3672
3673         * recur.c (descend_redirect_p): New function.
3674         (retrieve_tree): Make sure redirections are not blindly followed.
3675
3676 2001-11-04  Alan Eldridge  <alane@geeksrus.net>
3677
3678         * config.h.in: added HAVE_RANDOM.
3679
3680         * options.h: added random_wait to struct options.
3681
3682         * main.c (print_help [HAVE_RANDOM], main): added arg parsing, help
3683         for --random-wait.
3684
3685         * retr.c (sleep_between_retrievals) [HAVE_RANDOM]: added
3686         implementation of random wait times.
3687
3688         * init.c (commands): added "randomwait" keyword.
3689
3690 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
3691
3692         * recur.c (descend_url_p): Be more conservative with blacklisting
3693         URLs.
3694         (convert_all_links): Print how many files have been converted, and
3695         how long it took.
3696
3697         * progress.c (create_image): Place the number of downloaded bytes
3698         right after the progress bar.
3699
3700         * utils.c (suffix): Return a pointer into the string.
3701
3702 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
3703
3704         * url.c (convert_links): Handle CO_NULLIFY_BASE.
3705
3706         * recur.c (retrieve_tree): Ignore download-ignorable children.
3707         (convert_all_links): Specify CO_NULLIFY_BASE when link_base_p.
3708
3709         * html-url.c (handle_link): Return the newly created urlpos.
3710         (collect_tags_mapper): When dealing with BASE, store the base
3711         reference and mark it as download-ignorable.
3712
3713 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
3714
3715         * url.c (convert_links): Attempt to quote '?' as "%3F" when
3716         linking to local files.  Given up on the attempt, as it breaks
3717         local browsing.
3718
3719 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
3720
3721         * main.c (private_initialize): Removed.
3722         (main): Don't call private_initialize.
3723
3724         * http.c: Call lookup_host.
3725
3726         * host.c (host_init): Removed.
3727         (add_host_to_cache): Initialize host_name_address_map here, on
3728         demand.
3729         (ngethostbyname): Commented out.
3730
3731         * connect.c (make_connection): Remove dead code; use lookup_host.
3732
3733         * host.c (store_hostaddress): Renamed to lookup_host and reversed
3734         the args.
3735         Removed host_address_name_map and host_slave_master_map.
3736
3737 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
3738
3739         * progress.c (dot_create): Align the "[ skipping ... ]" string
3740         with the dots.
3741
3742         * retr.c (rate): Split into two functions: calc_rate and
3743         retr_rate.
3744
3745         * progress.c (create_image): Draw a dummy progress bar even when
3746         total size is unknown.
3747         (display_image): Place the text cursor at the end of the "image".
3748
3749 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
3750
3751         * url.c (reencode_string): Use unsigned char, not char --
3752         otherwise the hex digits come out wrong for 8-bit chars such as
3753         nbsp.
3754         (lowercase_str): New function.
3755         (url_parse): Canonicalize u->url if needed.
3756         (get_urls_file): Parse each URL, and return only the valid ones.
3757         (free_urlpos): Call url_free.
3758         (mkstruct): Add :port if the port is non-standard.
3759         (mkstruct): Append the query string to the file name, if any.
3760         (urlpath_length): Use strpbrk_or_eos.
3761         (uri_merge_1): Handle the cases where LINK is an empty string,
3762         where LINK consists only of query, and where LINK consists only of
3763         fragment.
3764         (convert_links): Count and report both kinds of conversion.
3765         (downloaded_file): Use a hash table, not a list.
3766         (downloaded_files_free): Free the hash table.
3767
3768         * retr.c (retrieve_from_file): Ditto.
3769
3770         * main.c (main): Call either retrieve_url or retrieve_tree
3771         for each URL, not both.
3772
3773         * retr.c (register_all_redirections): New function.
3774         (register_redirections_mapper): Ditto.
3775         (retrieve_url): Register the redirections.
3776         (retrieve_url): Make the string "Error parsing proxy ..." 
3777         translatable.
3778
3779         * res.c (add_path): Strip leading slash from robots.txt paths so
3780         that the path representations are "compatible".
3781         (free_specs): Free each individual path, too.
3782         (res_cleanup): New function.
3783         (cleanup_hash_table_mapper): Ditto.
3784
3785         * recur.c (url_queue_new): New function.
3786         (url_queue_delete): Ditto.
3787         (url_enqueue): Ditto.
3788         (url_dequeue): Ditto.
3789         (retrieve_tree): New function, replacement for recursive_retrieve.
3790         (descend_url_p): New function.
3791         (register_redirection): New function.
3792
3793         * progress.c (create_image): Cosmetic changes.
3794
3795         * init.c (cleanup): Do all those complex cleanups only if
3796         DEBUG_MALLOC is defined.
3797
3798         * main.c: Removed --simple-check and the corresponding
3799         simple_host_check in init.c.
3800
3801         * html-url.c (handle_link): Parse the URL here, and propagate the
3802         parsed URL to the caller, who would otherwise have to parse it
3803         again.
3804
3805         * host.c (xstrdup_lower): Moved to utils.c.
3806         (realhost): Removed.
3807         (same_host): Ditto.
3808
3809 2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
3810
3811         * utils.c (path_simplify): Preserver the (non-)existence of
3812         leading slash.  Return non-zero if changes were made.
3813
3814 2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
3815
3816         * progress.c (bar_update): Don't modify bp->total_length if it is
3817         zero.
3818
3819 2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
3820
3821         * retr.c (retrieve_url): When the redirection URL doesn't parse,
3822         print the correct error message rather than "UNKNOWN".
3823
3824 2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
3825
3826         * progress.c (bar_finish): If the timer didn't record any time
3827         since the download beginning, fake 1ms.
3828
3829 2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
3830
3831         * recur.c (recursive_retrieve): Fix typo.
3832
3833 2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
3834
3835         * progress.c (create_image): Don't translate "%ld ".
3836
3837 2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
3838
3839         * progress.c (bar_set_params): Allow the user to force the use of
3840         the bar.
3841
3842 2001-11-23  Lemble Gregory  <gregory.lemble@st.com>
3843
3844         * gen_sslfunc.c (ssl_init_prng): New function; seed the SSL RNG.
3845
3846 2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
3847
3848         * progress.c: Renamed dp_* functions to dot_* for greater clarity
3849         and consistency with bar_*.
3850         (print_download_speed): Get rid of the unneeded '@' character.
3851         (create_image): Fix download rate geometry.
3852
3853         * progress.c (print_elapsed): Remove spurious space.
3854         (print_elapsed): Renamed to print_download_speed, since that's
3855         what it does.
3856
3857 2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
3858
3859         * progress.c (bar_update): If the downloaded amount becomes larger
3860         than the expected amount, adjust the expected amount accordingly.
3861
3862 2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
3863
3864         * utils.c (determine_screen_width): New function.
3865
3866         * main.c (main): New option `--progress=TYPE'.
3867         (main): Implement compatibility with the old option `--dot-style'.
3868
3869         * init.c: Removed cmd_spec_dotstyle -- that logic is now in
3870         dp_set_params.
3871         (cmd_spec_progress): New function.
3872
3873         * retr.c (get_contents): Use the progress_* functions instead of
3874         the old show_progress().
3875         (show_progress): Removed.
3876         (rate): Print "xxxx.xx K/s" instead of "KB/s".  Ditto for MB/s,
3877         etc.
3878
3879         * progress.c (set_progress_implementation): New function.
3880         (valid_progress_implementation_p): Ditto.
3881         (progress_create): Ditto.
3882         (progress_update): Ditto.
3883         (progress_finish): Ditto.
3884         (dp_create): Ditto.
3885         (dp_update): Ditto.
3886         (dp_finish): Ditto.
3887         (dp_set_params): Ditto.
3888         (print_elapsed): Ditto.
3889
3890 2001-11-22  Hrvoje Niksic  <hniksic@arsdigita.com>
3891
3892         * retr.c (show_progress): Use it.
3893
3894         * log.c (log_set_flush): New function.
3895
3896 2001-11-22  Hrvoje Niksic  <hniksic@arsdigita.com>
3897
3898         * utils.c (path_simplify): Don't remove trailing slashes.
3899
3900         * ftp.c (ftp_get_listing): Use it.
3901
3902         * utils.c (file_merge): New function.
3903
3904         * url.c (opt_url): Removed.
3905
3906         * recur.c (recursive_retrieve): Inline "opt_url" logic.
3907
3908         * main.c (main): Use xfree(), not free().
3909
3910         * url.c (rewrite_url_maybe): Renamed to rewrite_shorthand_url.
3911
3912         * ftp.c (ccon): Move `ccon' typedef here, since it's only used
3913         internally.
3914
3915         * config.h.in: Include a stub for HAVE_STRPBRK.
3916
3917         * cmpt.c (strpbrk): Include a replacement for systems without
3918         strpbrk().
3919
3920         * ftp.c: Use url_set_dir and url_set_file when modifying the URL.
3921
3922         * url.c (url_set_dir): New function.
3923         (url_set_file): Ditto.
3924
3925         * ftp-basic.c (ftp_process_type): Process FTP type here; the URL
3926         parser makes the URL "params" available, so we can do that in this
3927         function.
3928
3929         * retr.c: Ditto.
3930
3931         * ftp.c: Ditto; pass the local file information in `ccon'.
3932
3933         * http.c: Get rid of the ugly kludge that had URL being replaced
3934         with the proxy URL when proxy retrieval was requested.  Use a
3935         separate parameter to http_loop and gethttp for the proxy URL.
3936
3937         * http.c: Changed to reflect the fact that local file, proxy, and
3938         referer information are no longer stored in struct url.  The local
3939         file information is passed in `struct hstat' now.
3940
3941         * url.c: Reworked URL parsing to be more regular.  Reencode the
3942         URL using reencode_string.
3943         Removed non-URL-related information from struct url.  This
3944         includes fields `proxy', `local', and `referer'.
3945
3946 2001-11-22  Jochen Hein  <jochen@jochen.org>
3947
3948         * main.c (main): Split the copyright notice for easier
3949         translation.
3950
3951 2001-08-21  Dave Turner <dct25@hermes.cam.ac.uk>
3952
3953         * ftp-basic.c (ftp_size): New function to send non-standard SIZE
3954           command to server to request file size.
3955         * ftp.h (ftp_size): Export it.
3956         * ftp.c (getftp): Use new ftp_size function if restoring
3957           transfer of a file with unknown size.
3958
3959 2001-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
3960
3961         * url.c (parseurl): Don't depend on the now-obsolete TYPE.
3962
3963 2001-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
3964
3965         * url.c (getproxy): Handle URL shorthands.
3966
3967 2001-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
3968
3969         * main.c: Remove --wait / --waitretry backwards compatibility
3970         code.
3971         
3972 2001-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
3973
3974         * main.c (main): Use it.
3975
3976         * url.c (rewrite_url_maybe): New function.
3977
3978 2001-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
3979
3980         * url.c: Clean up handling of URL schemes.
3981
3982 2001-05-13  Hrvoje Niksic  <hniksic@arsdigita.com>
3983
3984         * url.c: Get rid of `protostrings'.
3985         (skip_proto): Don't use protostrings.
3986         (has_proto): Ditto.
3987
3988 2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
3989
3990         * Makefile.in: Conditionally compile getopt.o.
3991
3992 2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
3993
3994         * md5.h: Renamed to gnu-md5.h.
3995
3996         * md5.c: Renamed to gnu-md5.c.
3997
3998         * http.c: Ditto.
3999
4000         * ftp-opie.c: Use the new macros.
4001
4002         * sysdep.h: Define md5-related macros.
4003
4004         * config.h.in: Define HAVE_SOLARIS_MD5 or HAVE_BUILTIN_MD5
4005         depending on which md5 implementation is used.
4006
4007 2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
4008
4009         * res.c (res_register_specs): Initialize OLD and HP_OLD to appease
4010         the compiler.
4011
4012 2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
4013
4014         * http.c (gethttp): Print the whole response line when printing
4015         headers is requested.
4016
4017 2001-05-12  Hrvoje Niksic  <hniksic@arsdigita.com>
4018
4019         * res.c: New file.  Implement all RES-related code here.
4020
4021 2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
4022
4023         * version.c: Wget 1.7.1 is released.
4024
4025 2001-11-16  Hrvoje Niksic  <hniksic@arsdigita.com>
4026
4027         * headers.c (header_extract_number): Ignore trailing whitespace.
4028
4029 2001-08-24  Ian Abbott  <abbotti@mev.co.uk>
4030
4031         * html-url.c (collect_tags_mapper): Fix bug converting links
4032         with -k option for tags with multiple link attributes by
4033         handling links in the order they appear.
4034
4035 2001-08-15  Ian Abbott  <abbotti@mev.co.uk>
4036
4037         * ftp.c (ftp_loop_internal): Avoid a potential buffer overflow in
4038           the call to the 'rate' function by moving it past the error
4039           checking for the 'getftp' function return value.
4040
4041 2001-11-16  Hrvoje Niksic  <hniksic@arsdigita.com>
4042
4043         * html-parse.c (advance_declaration): Use 0x22 instead of '"' or
4044         '\"'.  Different compilers' assert macros are broken in different
4045         ways.
4046
4047 2001-09-29  Christian Fraenkel  <c.fraenkel@gmx.net>
4048
4049         * http.c (gethttp): print debug output for errors occuring during
4050         the ssl handshake.
4051
4052 2001-11-16  Chris Seawood  <cls@seawood.org>
4053
4054         * init.c: Ditto.
4055
4056         * host.c: Ditto.
4057
4058         * connect.c: Ditto.
4059
4060         * sysdep.h: Support compilation under BEOS.
4061
4062 2001-06-08  Edward J. Sabol  <sabol@alderaan.gsfc.nasa.gov>
4063
4064         * url.c (url_equal): Fix a memory leak when parseurl returns an
4065         error on the second URL. Also, since url_equal is not used at the
4066         moment, do not compile it.
4067
4068         * url.h: Ditto for the prototype of url_equal.
4069
4070 2001-11-16  Hrvoje Niksic  <hniksic@arsdigita.com>
4071
4072         * html-parse.c (map_html_tags): Support XML-style empty tags.
4073
4074 2001-06-26  Hrvoje Niksic  <hniksic@arsdigita.com>
4075
4076         * wget.h (DO_REALLOC_FROM_ALLOCA): Check for do_realloc_newsize in
4077         loop condition because we're no longer setting SIZEVAR here.
4078
4079 2001-06-26  Hrvoje Niksic  <hniksic@arsdigita.com>
4080
4081         * wget.h (DO_REALLOC_FROM_ALLOCA): Set SIZEVAR after the memcpy()
4082         call because it needs the old value.
4083
4084 2001-06-18  Hrvoje Niksic  <hniksic@arsdigita.com>
4085
4086         * cookies.c (ATTR_NAME_CHAR): Allow almost any character to be in
4087         an attribute name.
4088
4089 2001-06-18  Hrvoje Niksic  <hniksic@arsdigita.com>
4090
4091         * url.c (url_filename): Make sure that slashes that sneak in to
4092         u->file via query string get protected.
4093         (file_name_protect_query_string): New function.
4094
4095 2001-06-14  Hrvoje Niksic  <hniksic@arsdigita.com>
4096
4097         * recur.c (recursive_retrieve): Also check undesirable_urls with
4098         canonicalized URL.
4099
4100 2001-06-14  Hrvoje Niksic  <hniksic@arsdigita.com>
4101
4102         * http.c (gethttp): Search `.netrc' with real host, not the proxy
4103         one.
4104
4105 2001-06-14  Hrvoje Niksic  <hniksic@arsdigita.com>
4106
4107         * sysdep.h (MAP_FAILED): Provide MAP_FAILED for systems that don't
4108         define it.
4109
4110 2001-06-09  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
4111
4112         * ftp.h: Provide correct prototype for ftp_parse_ls().
4113
4114 2001-06-04  Hrvoje Niksic  <hniksic@arsdigita.com>
4115
4116         * version.c: Wget 1.7 is released.
4117
4118 2001-06-03  Karl Eichwalder  <ke@suse.de>
4119
4120         * ftp-ls.c (ftp_parse_ls): Fix typo.
4121
4122 2001-05-27  Hrvoje Niksic  <hniksic@arsdigita.com>
4123
4124         * all: Update copyright information.
4125
4126 2001-05-26  Hrvoje Niksic  <hniksic@arsdigita.com>
4127
4128         * http.c (gethttp): Indicate that the continued download failed
4129         for *this* file.
4130
4131 2001-05-26  Hrvoje Niksic  <hniksic@arsdigita.com>
4132
4133         * version.c: Wget 1.7-pre1 is released.
4134
4135 2001-05-26  Hrvoje Niksic  <hniksic@arsdigita.com>
4136
4137         * version.c: Updated version to 1.7-pre1.
4138
4139 2001-05-14  Hrvoje Niksic  <hniksic@arsdigita.com>
4140
4141         * gen_sslfunc.c: Don't include <sys/time.h> directly.
4142
4143 2001-05-14  Hrvoje Niksic  <hniksic@arsdigita.com>
4144
4145         * http.c (gethttp): Use real URL data for cookies, not the proxy
4146         stuff.
4147
4148 2001-05-12  Hrvoje Niksic  <hniksic@arsdigita.com>
4149
4150         * main.c (print_help): Document `--no-http-keep-alive'.
4151
4152         * utils.c (numdigit): Handle negative numbers *correctly*.
4153
4154         * hash.c (make_nocase_string_hash_table): Use term "nocase" rather
4155         than the confusing "unsigned".
4156
4157         * utils.c (string_set_contains): Renamed from string_set_exists.
4158
4159         * hash.c (hash_table_contains): Renamed from hash_table_exists.
4160
4161         * cookies.c: Move case-insensitive hash tables to hash.c.
4162
4163 2001-05-09  Hrvoje Niksic  <hniksic@arsdigita.com>
4164
4165         * http.c (gethttp): Before concluding that the file is already
4166         fully retrieved, make sure that the file existed and `Range' was
4167         actually requested.
4168
4169 2001-05-09  Hrvoje Niksic  <hniksic@arsdigita.com>
4170
4171         * cookies.c (eliminate_dups): New function.
4172         (build_cookies_request): Use it.
4173         (build_cookies_request): Set chain_store_size after reallocating
4174         all_chains.
4175         (check_domain_match): Annotated for easier future debugging.
4176         (store_cookie): In the debug message, print whether the cookie is
4177         permanent.
4178
4179 2001-05-08  Hrvoje Niksic  <hniksic@arsdigita.com>
4180
4181         * http.c (http_loop): Reset no_truncate before deciding whether to
4182         set it.
4183         (gethttp): Further clarify "-c conflicts with existing file" error
4184         message, based on input from Herold Heiko.
4185
4186 2001-05-07  Hrvoje Niksic  <hniksic@arsdigita.com>
4187
4188         * http.c (http_loop): If restval is set, set no_truncate to 1
4189         unconditionally.
4190
4191 2001-05-02  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
4192
4193         * ftp-ls.c (ftp_parse_winnt_ls): Assure months are being correctly
4194         converted. Pointed out by <Stefan.Weil@de.heidelberg.com>.
4195         (ftp_parse_vms_ls): Ditto.
4196
4197 2001-04-30  Hrvoje Niksic  <hniksic@arsdigita.com>
4198
4199         * init.c (cmd_address): Zero SIN before using it; apparently
4200         needed on *BSD.
4201
4202 2001-04-29  Hrvoje Niksic  <hniksic@arsdigita.com>
4203
4204         * ftp.c (ftp_loop_internal): Don't set NO_TRUNCATE if the file is
4205         empty.
4206
4207 2001-04-29  Hrvoje Niksic  <hniksic@arsdigita.com>
4208
4209         * main.c (main): Make `--cookies' respect its argument.
4210
4211 2001-04-28  Hrvoje Niksic  <hniksic@arsdigita.com>
4212
4213         * main.c (main): Removed undocumented option `--email-address'.
4214
4215         * netrc.c: Use the latest read_whole_line.
4216
4217         * init.c (defaults): Set opt.ftp_pass to "-wget@".
4218
4219         * mswindows.c (pwd_cuserid): Ditto.
4220
4221         * utils.c (pwd_cuserid): Removed.
4222
4223         * host.c (ftp_getaddress): Removed.
4224
4225 2001-04-28  Hrvoje Niksic  <hniksic@arsdigita.com>
4226
4227         (http_loop): Allocate space for filename_plus_orig_suffix with
4228         alloca; this is more efficient and removes the need to free it
4229         before each and every return.
4230
4231 2001-04-28  Hrvoje Niksic  <hniksic@arsdigita.com>
4232
4233         * http.c (gethttp): Return RETRUNNEEDED when the retrieval is
4234         unneeded because the file is already there and fully downloaded,
4235         and -c is specified.
4236         (http_loop): Handle RETRUNNEEDED.
4237
4238         * wget.h (uerr_t): New value RETRUNNEEDED.
4239
4240         * http.c (http_loop): Set no_truncate for files that both exist
4241         and are non-empty.
4242         (gethttp): Consider the download finished when restval >= contlen,
4243         not only when restval==contlen.
4244         (gethttp): Handle redirection before giving up due to -c.
4245         (gethttp): Clarify error message which explains that -c will not
4246         truncate the file.
4247         (gethttp): When returning CONTNOTSUPPORTED, don't forget to free
4248         the stuff that needs freeing and release the socket.
4249
4250 2001-04-27  Hrvoje Niksic  <hniksic@arsdigita.com>
4251
4252         * main.c (print_help): Wget booleans accept "off", not "no".
4253
4254 2001-04-27  Hrvoje Niksic  <hniksic@arsdigita.com>
4255
4256         * http.c (http_loop): If allow_cache is zero, always disable
4257         caching, not only when retrieving through proxy.
4258
4259         * init.c: Ditto.
4260
4261         * options.h (struct options): Rename proxy_cache to allow_cache.
4262
4263 2001-04-27  Hrvoje Niksic  <hniksic@arsdigita.com>
4264
4265         * http.c (mktime_from_utc): Improve documentation.
4266         (http_atotm): Put format strings into a separate array.
4267
4268 2001-04-27  Hrvoje Niksic  <hniksic@arsdigita.com>
4269
4270         * safe-ctype.h: Instead of throwing #error when isalpha is
4271         defined, redefine it to something that will throw a compile-time
4272         error if actually *used*.  Do the same for the rest of the
4273         standard C macros.
4274
4275 2001-04-26  Hrvoje Niksic  <hniksic@arsdigita.com>
4276
4277         * url.c (getproxy): Ignore empty proxy vars.
4278
4279 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
4280
4281         * http.c (http_loop): Would load cookies every time.
4282
4283         * cookies.c (load_cookies): Handle cookies whose values contain
4284         embedded spaces.
4285
4286 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
4287
4288         * utils.c: Define each DIGITS_* in one line.
4289
4290 2001-04-25  Roger L. Beeman  <beeman@cisco.com>
4291
4292         * http.c (http_atotm): Initialize t.tm_isdst to 0.
4293         (mktime_from_utc): Prevent mktime() from having discontinuities at
4294         DST transition points.
4295
4296 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
4297
4298         * html-url.c (get_urls_html): Fix documentation.
4299
4300 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
4301
4302         * url.c (UNSAFE_CHAR): Reimplement using a static table.
4303         (url_init): Removed.
4304         (init_unsafe_char_table): Removed.
4305
4306 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
4307
4308         * snprintf.c (dopr): Replace ISDIGIT with '0' <= ch && ch <= '9'.
4309
4310 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
4311
4312         * utils.c: Document timer functions.
4313
4314         * retr.c (rate): Use it.
4315         (rate): Print in GB/s if transfer rate exceeds 1 GB/s.
4316
4317         * utils.c (wtimer_granularity): New function.
4318
4319 2001-04-24  Hrvoje Niksic  <hniksic@arsdigita.com>
4320
4321         * retr.c (show_progress): Ditto.
4322
4323         * ftp.c (getftp): Ditto.
4324
4325         * http.c (gethttp): Use new timer functions.
4326
4327         * utils.c (wtimer_allocate): New function.
4328         (wtimer_new): Ditto.
4329         (wtimer_delete): Ditto.
4330         (wtimer_reset): Ditto.
4331         (wtimer_elapsed): Ditto.
4332
4333 2001-04-24  Hrvoje Niksic  <hniksic@arsdigita.com>
4334
4335         * utils.c (long_to_string): New, faster version.  Favors smaller
4336         numbers; much of the calculation is now done at compile-time.
4337
4338 2001-04-24  Hrvoje Niksic  <hniksic@arsdigita.com>
4339
4340         * utils.c (numdigit): Handle negative numbers.
4341
4342 2001-04-23  Hrvoje Niksic  <hniksic@arsdigita.com>
4343
4344         * retr.c (show_progress): Print the download rate even when the
4345         percentages are not available.
4346
4347 2001-04-21  Hrvoje Niksic  <hniksic@arsdigita.com>
4348
4349         * ftp.c (getftp): Adjust expected_bytes if the length is
4350         authoritative.
4351
4352 2001-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
4353
4354         * url.c: Don't declare `construct'.
4355
4356         * hash.c (grow_hash_table): Speed up rehashing; inline storing of
4357         mappings to new locations.
4358         (hash_table_new): Make resize_threshold a field in the hash table,
4359         so we don't have to recalculate it in each hash_table_put.
4360         (grow_hash_table): Update resize_threshold.
4361         (MAX): Remove unused macro.
4362         (prime_size): Made static.
4363
4364 2001-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
4365
4366         * retr.c (retrieve_url): Call uri_merge, not url_concat.
4367
4368         * html-url.c (collect_tags_mapper): Call uri_merge, not
4369         url_concat.
4370
4371         * url.c (mkstruct): Use encode_string instead of xstrdup followed
4372         by URL_CLEANSE.
4373         (path_simplify_with_kludge): Deleted.
4374         (contains_unsafe): Deleted.
4375         (construct): Renamed to uri_merge_1.
4376         (url_concat): Renamed to uri_merge.
4377
4378 2001-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
4379
4380         * url.c (str_url): Use encode_string instead of the unnecessary
4381         CLEANDUP.
4382         (encode_string_maybe): New function, returns input string if no
4383         encoding is needed.
4384         (encode_string): Call encode_string_maybe to do the dirty work,
4385         xstrdup if no work needed.
4386
4387 2001-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
4388
4389         * wget.h (XDIGIT_TO_xchar): Define here.
4390
4391         * url.c (decode_string): Use new name.
4392         (encode_string): Ditto.
4393
4394         * http.c (XDIGIT_TO_xchar): Rename HEXD2asc to XDIGIT_TO_xchar.
4395         (dump_hash): Use new name.
4396
4397         * wget.h: Rename ASC2HEXD and HEXD2ASC to XCHAR_TO_XDIGIT and
4398         XDIGIT_TO_XCHAR respectively.
4399
4400 2001-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
4401
4402         * init.c: Include cookies.h.
4403
4404         * cookies.h: Declare cookies_cleanup.
4405
4406         * cookies.c (check_domain_match): Remove unused variable.
4407         (save_cookies): Remove extraneous argument from debug statement.
4408
4409         * host.c (same_host): Don't call skip_url.
4410
4411         * url.c (skip_url): Removed.  Removed its calls from various
4412         functions in url.c.
4413
4414 2001-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
4415
4416         * cookies.c (unsigned_string_hash): Use the new code in
4417         string_hash as reference.
4418
4419         * hash.c (hash_table_map): Allow deletion and change of the
4420         element processed by MAPFUN.
4421         (string_hash): Use the function from glib.
4422
4423 2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
4424
4425         * config.h.in: Include #undef stub.
4426
4427         * hash.c (hash_table_remove): Rewrite to actually clear deleted
4428         entries instead of just marking them as deleted.
4429
4430 2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
4431
4432         * hash.h: Declare hash_table_get_pair and hash_table_count.
4433
4434 2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
4435
4436         * cookies.c: Declare http_atotm.
4437
4438 2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
4439
4440         * ftp-ls.c (ftp_parse_unix_ls): Use octal constants for
4441         permissions.  A compiler that doesn't accept octal constants is
4442         seriously broken and shouldn't be used -- octal constants were
4443         present in K&R C!
4444
4445 2001-01-20  Karl Eichwalder  <ke@suse.de>
4446
4447         * Makefile.in: Provide and use DESTDIR according to the Coding
4448         Standards.
4449
4450 2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
4451
4452         * ftp-ls.c (ftp_parse_vms_ls): Make seconds optional in time
4453         specification.
4454
4455 2001-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
4456
4457         * url.c (parseurl): Don't strip trailing slash when u->dir is "/"
4458         because that strips the *leading* slash, thus forcing relative
4459         FTP retrieval.
4460
4461 2001-04-10  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
4462
4463         * ftp.c (getftp): Convert initial FTP directory from VMS to UNIX
4464         notation for VMS servers. 
4465         (ftp_retrieve_dirs): Do not prepend '/' to f->name when
4466         odir is an empty string.
4467
4468 2001-04-10  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
4469
4470         * ftp-ls.c (ftp_parse_winnt_ls): Made the fix for AM/PM more
4471         effective. Suggested by Edward J. Sabol.
4472
4473 2001-04-10  Hrvoje Niksic  <hniksic@arsdigita.com>
4474
4475         * cookies.c (build_cookies_request): Use and sort cookies from all
4476         matching domains.
4477         (build_cookies_request): Check for duplicates before generating
4478         the `Cookies' header.
4479
4480         * main.c (main): Don't load cookies here.
4481         (main): Make loadcookies and savecookies call the correct command.
4482
4483         * http.c (http_loop): Load cookies on-demand.
4484
4485 2001-04-09  Hrvoje Niksic  <hniksic@arsdigita.com>
4486
4487         * http.c (gethttp): Fix indentation of SSL ifdef.
4488
4489 2001-04-09  Hrvoje Niksic  <hniksic@arsdigita.com>
4490
4491         * ftp.c (ftp_retrieve_dirs): Don't forcibly prepend "/" to u->dir;
4492         that hack is no longer necessary.
4493         (getftp): Prepend initial directory to *non*-absolute u->dir's.
4494
4495 2001-04-09  Hrvoje Niksic  <hniksic@arsdigita.com>
4496
4497         * init.c (cmd_file): New function.
4498         (enable_tilde_expansion): New variable.
4499         (run_wgetrc): Use it.
4500         (cmd_file): Use it.
4501
4502 2001-04-08  Hrvoje Niksic  <hniksic@arsdigita.com>
4503
4504         * init.c: Include cookie-related options.
4505
4506         * main.c (main): Include cookie-specific options.
4507         (main): Load cookies before download is finished.
4508         (main): Save cookies when done.
4509
4510         * http.c (gethttp): Process the `Set-Cookie' header.
4511         (gethttp): Include cookies in the response.
4512
4513         * cookies.c: New file.
4514
4515 2001-04-08  Hrvoje Niksic  <hniksic@arsdigita.com>
4516
4517         * utils.c (datetime_str): New function.
4518
4519 2001-04-08  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
4520
4521         * ftp-ls.c (ftp_parse_winnt_ls): The AM/PM change did assume
4522         12:01PM == 00:01, which was obviously wrong. Taken care of this
4523         anomaly.
4524
4525         * ChangeLog: Removed an excess conflict marker. Reformatted the
4526         entry by Philipp Thomas from 2001-03-09.
4527
4528         * ftp-ls.c (ftp_parse_winnt_ls): Ensure that adjusted PM hours lay
4529         between 0 and 23. Elminate unused variable `sec'.
4530
4531 2001-04-08  Hrvoje Niksic  <hniksic@arsdigita.com>
4532
4533         * hash.c (hash_table_count): New function.
4534
4535 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
4536
4537         * utils.c (read_file): Cast MAP_FAILED to char *.  Enforced by
4538         Digital Unix cc.
4539
4540 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
4541
4542         * config.h.in: Oops, do the namespace tweaks only on systems we
4543         know about.
4544
4545 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
4546
4547         * hash.c: Include <string.h>.
4548
4549 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
4550
4551         * config.h.in: Define "compilation environment" options that work
4552         under Linux and Solaris.  To be reviewed on other OS'es.
4553
4554 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
4555
4556         * http.c (gethttp): Prepend literal newline with `\n\'.
4557
4558 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
4559
4560         * sysdep.h: Don't define VERY_LONG_FORMAT.
4561
4562         * utils.c (very_long_to_string): New function.
4563         (legible_very_long): Use it; don't use VERY_LONG_FORMAT.
4564
4565 2001-04-04  Christian Fraenkel  <christian.fraenkel@gmx.net>
4566
4567         * url.c (parse_uname): Would run past the end of the string if the
4568         username was present, but the URL did not contain a slash, e.g.
4569         http://foo:bar@myhost.
4570
4571 2001-04-03  KOJIMA Hajime  <kjm@rins.ryukoku.ac.jp>
4572
4573         * http.c (http_atotm): Use %A instead of %a to match full
4574         weekday.  (On most systems there is no difference.)
4575
4576 2001-04-03  Paul Bludov  <paul@ozero.net>
4577
4578         * mswindows.c (sleep): Use SleepEx() instead of Sleep().
4579         (ws_changetitle): Use alloca() instead of malloc() to avoid memory
4580         leak.
4581         (ws_mypath): Use GetModuleFileName instead of argv[0].
4582         (ws_startup): Use data.wVersion for comparison.
4583
4584 2001-04-02  Hrvoje Niksic  <hniksic@arsdigita.com>
4585
4586         * http.c (http_loop): Ditto.
4587
4588         * ftp.c (ftp_loop_internal): Made the check whether to continue
4589         retrieval `-O'-friendly.
4590
4591 2001-04-02  Hrvoje Niksic  <hniksic@arsdigita.com>
4592
4593         * netrc.c (parse_netrc): Don't trim the line endings explicitly;
4594         they will be handled as whitespace.
4595         (parse_netrc): Correctly handle lines that end with whitespace.
4596
4597 2001-04-02  Hrvoje Niksic  <hniksic@arsdigita.com>
4598
4599         * retr.c (retrieve_url): New variable global_download_count used
4600         to identify first retrieval.
4601
4602         * ftp.c (getftp): Ditto.
4603
4604         * http.c (gethttp): Rewind opt.dfp only on first retrieval.
4605
4606 2001-04-02  Hrvoje Niksic  <hniksic@arsdigita.com>
4607
4608         * init.c (cmd_address): Heap-allocate the address that gets stored
4609         to CLOSURE.  Old code would simply assign an address on the stack.
4610
4611 2001-04-01  Nicolas Lichtmaier <nick@debian.org>
4612
4613         * ftp.c (ftp_get_listing): Propagate error status.
4614         (ftp_retrieve_glob): Use it.
4615         (ftp_loop): Ditto.
4616
4617 2001-04-01  Nicolas Lichtmaier <nick@debian.org>
4618
4619         * main.c (main): Add -C to the string that is the third arg to
4620         getopt_long().
4621
4622 2001-04-01  Hrvoje Niksic  <hniksic@arsdigita.com>
4623
4624         * ftp.c (getftp): Don't start the download from scratch if `-c'
4625         was specified, but the file is already fully downloaded.
4626
4627         * http.c (gethttp): Don't truncate a pre-existing file if `-c' was
4628         specified and the server doesn't support continued download.
4629         (gethttp): Don't start the download from scratch if `-c' was
4630         specified, but the file is already fully downloaded.
4631
4632 2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
4633
4634         (recursive_retrieve): Don't clear the hash tables at this point at
4635         all; it interferes with the normal operation of register_download.
4636
4637 2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
4638
4639         * recur.c (recursive_retrieve): Clear the hash tables only when
4640         they are defined.
4641
4642 2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
4643
4644         * http.c (gethttp): Make sure the socket is closed with
4645         CLOSE_INVALIDATE before we have drained the body.
4646
4647 2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
4648
4649         * retr.c (retrieve_url): Call register_download() for downloaded
4650         files and register_html() for downloaded HTML files.
4651
4652         * recur.c (register_download): New function; register here that a
4653         file has been downloaded, rather than in recursive_retrieve().
4654         (register_html): New function; enqueue the location of HTML files
4655         here rather than in recursive_retrieve().
4656
4657 2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
4658
4659         * main.c (print_help): Use multiple fputs instead of a single ugly
4660         printf().
4661         (main): Consistently assign numbers >128 to options without a
4662         corresponding character.
4663
4664 2001-03-09  Philipp Thomas  <pthomas@suse.de>
4665
4666         * safe-ctype.h: New file. Locale independent ctype.h replacement
4667         taken from libiberty.
4668
4669         * safe-ctype.c: New file. Tables for above.
4670
4671         * Makefile.in: Add safe-ctype$o to OBJS.  Add dependencies for
4672         safe-ctype$o.
4673
4674         * cmpt.c: Remove include of ctype.h. Use ISSPACE instead of
4675         isspace.
4676
4677         * ftp-basic.c: Don't include ctype.h.
4678
4679         * ftp-ls.c: Likewise.
4680
4681         * ftp.c: Likewise.
4682
4683         * headers.c: Likewise.
4684
4685         * host.c: Likewise.
4686
4687         * html-parse.c: Likewise.
4688
4689         * html-url.c: Likewise.
4690
4691         * http.c: Likewise.
4692
4693         * init.c: Likewise.
4694
4695         * main.c: Likewise. Set LC_CTYPE along with LC_MESSAGES.
4696
4697         * netrc.c: Likewise.
4698
4699         * recur.c: Likewise.
4700
4701         * retr.c: Likewise.
4702
4703         * snprintf.c: Replace ctype.h with safe-ctype.h. Use ISDIGIT
4704         instead of isdigit.
4705
4706         * sysdep.h: Remove defines of ctype macros as they aren't needed
4707         for safe-ctype-h.
4708
4709         * url.c: Don't include ctype.h.
4710
4711         * utils.c: Likewise.
4712
4713         * wget.h: Include safe-ctype.h.
4714
4715 2001-03-27  Dan Harkless  <wget@harkless.org>
4716
4717         * Makefile.in: Moved top_builddir out of "User configuration
4718         section" of top Makefile and analogous spot in this one.
4719
4720 2001-03-17  Dan Harkless  <wget@harkless.org>
4721
4722         * Makefile.in: Include @SSL_INCLUDES@ substition in INCLUDES.
4723         Define top_builddir.  Link wget with libtool so the user doesn't
4724         have to supply a bunch of custom environment variables to 
4725         correctly link with the OpenSSL shared libraries.
4726
4727 2001-03-06  Hack Kampbjorn  <hack@hackdata.com>
4728
4729         * http.c (gethttp): skip :port in host header if it is the
4730         DEFAULT_HTTPS_PORT when using SSL.
4731
4732         * url.c: move the #define of DEFAULT_HTTP_PORT, DEFAULT_FTP_PORT
4733         and DEFAULT_HTTPS_PORT to the header file so it can be use in the
4734         rest of the code. 
4735         * url.h: Ditto
4736
4737 2001-03-01  Jonas Jensen  <bones@huleboer.dk>
4738
4739         * retr.c (show_progress): Correctly calculate the number of bytes
4740         in the first line of the download that have been actually
4741         downloaded in this run.
4742
4743 2001-02-23  Dan Harkless  <wget@harkless.org>
4744
4745         * main.c (print_help): --help documentation for -N said it would
4746         re-download files if they had the _same_ timestamp on server.
4747         (print_help): -nr belongs in "FTP options" section of --help
4748         output, not "Recursive retrieval" section.  Alphabetized FTP
4749         options by long option name.
4750
4751 2001-02-16  Dan Harkless  <wget@harkless.org>
4752
4753         * init.c (commands): Hack Kampbjørn <hack@hackdata.com> discovered
4754         that "httpsproxy" had been inserted into commands[] out of
4755         alphabetical order, causing "BUG: unknown command `httpuser'".
4756
4757 2001-02-13  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
4758
4759         * ftp-ls.c (ftp_parse_ls): Added support of ST_MACOS (Unix-like
4760         listing without correct permissons).
4761
4762         * ftp.h (stype): Added ST_MACOS to identify the NetPresenz MacOS
4763         FTP server. 
4764
4765         * ftp.c (ftp_retrieve_list): New mirroring logic: A remote file
4766         shall be donwloaded only when it's newer than the local copy or
4767         when it has the same timeestamp but its size is different. ST_VMS
4768         and ST_MACOS as special cases that lie about file size. 
4769
4770         * ftp-ls.c (ftp_parse_ls): Support for ST_MACOS.
4771
4772         * Makefile.in: Removed dependency on ftpparse library due to unclear
4773         copyright issues and absence of any feedback to our queries. 
4774
4775         * ftp-ls.c: Removed dependency on ftpparse library due to unclear
4776         copyright issues and absence of any feedback to our queries.   
4777         (ftp_parse_ls): Added a warning message when remote server system
4778         does not seem to be suported by wget. 
4779         (ftp_parse_vms_ls): New function for parsing VMS ftp
4780         server listing output.
4781         (clean_line): New function responsible for removing
4782         end-of-line characters from FTP listing texts.
4783
4784         * ftp.c (getftp): Global variables pwd and host_type are now
4785         member of the ccon structure under names ccon.id and ccon.rs. 
4786
4787         * ftp.h (struct ccon): Added formed global variables from ftp.c,
4788         enum stype rs (remote system identification) and char *id (initial
4789         working directory), as suggested by Hrvoje.
4790
4791         * url.c (parse_uname): Added support for passwords containing '@'
4792         characters.
4793         (skip_uname): Ditto.
4794
4795 2001-02-11  Hrvoje Niksic  <hniksic@arsdigita.com>
4796
4797         * ftp.c (ftp_loop): Reset con.
4798
4799 2001-01-06  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
4800
4801         * url.c (parse_uname): Added support for passwords containing '@'
4802         characters.
4803         (skip_uname): Ditto.
4804
4805 2001-02-11  Hack Kampbjørn  <hack@hackdata.com>
4806
4807         * url.c (parseurl): Debug-print u->ftp_type.
4808
4809 2001-02-11  Hrvoje Niksic  <hniksic@arsdigita.com>
4810
4811         * ftp.c (ftp_loop_internal): Disable padding.
4812         (getftp): Ditto.
4813
4814         * http.c (http_loop): Disable padding.
4815
4816         * retr.c (show_progress): Use it to enable padding.
4817
4818         * retr.c (rate): Optional parameter PAD for padding the rate.
4819
4820 2001-02-10  Hrvoje Niksic  <hniksic@arsdigita.com>
4821
4822         * retr.c (show_progress): Make sure that the last output line
4823         includes progress.
4824
4825 2001-02-10  Jonas Jensen  <bones@huleboer.dk>
4826
4827         * retr.c (show_progress): Print the download rate along with the
4828         percentages.
4829         Along with Anders Thorsby <anders@thorsby.dk>.
4830
4831 2001-02-10  Tim Mooney  <mooney@dogbert.cc.ndsu.NoDak.edu>
4832
4833         * ftp.h: Rename enums `command' to `wget_ftp_command' and
4834         `fstatus' to `wget_ftp_status' because old names clash with Tru64
4835         net/if.h.
4836
4837 2001-02-08  Christian Fraenkel <christian.fraenkel@gmx.net>
4838
4839         * gen_sslfunc.c: verify_callback is now static
4840
4841         * gen_sslfunc.c (init_ssl): load certificate if specified
4842
4843         * gen_sslfunc.c (ssl_printerr): new function
4844
4845         * init.c: added new --sslcertfile and --sslcertkey switches
4846
4847         * main.c: ditto
4848
4849         * options.h: ditto
4850
4851         * http.c (gethttp): abort when init_ssl fails
4852
4853 2001-01-23  Herold Heiko  <Heiko.Herold@previnet.it>
4854
4855         * mswindows.h: Include <malloc.h>; it's needed for alloca().
4856
4857 2001-01-10  Dan Harkless  <wget@harkless.org>
4858
4859         * url.c (str_url): Clarified this function's comment header after
4860         Hrvoje answered my question on the list as to when hide != 1.
4861         Also Hrvoje pointed out I need to use xstrdup() on the string literal.
4862
4863 2001-01-06  Hrvoje Niksic  <hniksic@arsdigita.com>
4864
4865         * connect.c (bindport): Declare addrlen as int.  Diagnosed by
4866         Drazen Kacar <dave@arsdigita.com>.
4867         (conaddr): Ditto.
4868
4869 2001-01-09  Dan Harkless  <wget@harkless.org>
4870
4871         * html-url.c: A bunch of fixup of `--page-requisites'-related
4872         comments to reflect Hrvoje's changes to my code when transplanting
4873         it into this new file, to fix spelling mistakes, to clarify, etc.
4874
4875         * url.c (write_backup_file): Clarified a comment.
4876         (str_url): Henrik van Ginhoven pointed out on the list that we
4877         shouldn't give away the number of characters in the password by
4878         replacing each character with a 'x'.  Use "<password>" instead.
4879
4880         * ftp.c (ftp_retrieve_dirs): The bug where recursion into FTP
4881         directories didn't work if logging in put you in a directory other
4882         than "/" is fixed now.  Removed the comment here warning of the bug.
4883
4884         * main.c (print_help): --continue's description was misleading.
4885         We don't "restart", we "resume".  Also, better to say
4886         "partially-downloaded file" rather than just "existing file".
4887
4888 2001-01-06  Dan Harkless  <wget@harkless.org>
4889
4890         * ChangeLog: The '[Not in 1.6 branch.]'s were decided not to be
4891         the best way to go about my aim.  Removed them in favor of:
4892
4893         * ChangeLog-branches/1.6_branch.ChangeLog: New file.
4894
4895 2001-01-04  Hrvoje Niksic  <hniksic@arsdigita.com>
4896
4897         * url.c (replace_attr): New function, to be used by both
4898         TO_COMPLETE and TO_RELATIVE case in convert_links.
4899         (find_fragment): New function for finding URL fragments.
4900         (replace_attr): Better handle the case where the original string
4901         is not quoted.  Use find_fragment.
4902         (convert_links): Use replace_attr().
4903
4904 2000-12-31  Dan Harkless  <wget@harkless.org>
4905
4906         * ChangeLog: Since this flat file doesn't have multiple branches,
4907         looking at the dates would make you think that things went into
4908         1.6 that actually just went into the 1.7-dev branch.  Added "[Not
4909         in 1.6 branch.]" where appropriate to clarify.
4910         
4911 2000-12-30  Dan Harkless  <wget@harkless.org>
4912
4913         * ftp.c, http.c:  Applied Hack Kampbjørn <hack@hackdata.com>'s
4914         patch to deal with h_errno not being defined in netdb.h under Cygwin.
4915
4916 2000-12-18  Csaba Raduly  <csaba.raduly@sophos.com>
4917
4918         * sysdep.h: Include <malloc.h> and <io.h> under Watcom.
4919
4920 2000-12-17  Igor Khristophorov  <igor@atdot.org>
4921
4922         * http.c (check_end): Fix test for '+' or '-'.
4923
4924 2000-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
4925
4926         * url.c (parseurl): Rename inner loop var from i to ind to avoid
4927         clash with the function top-level-declared variable i.
4928         (str_url): Likewise, rename inner-loop i to j.
4929
4930         * recur.c (parse_robots): Don't declare LEN at top of function.
4931         (robots_match): Renamed parameter FORBIDDEN to avoid hiding of
4932         global variable.
4933
4934         * main.c (main): Change erroneous use of bitwise and to logical.
4935
4936         * init.c (cmd_address): Don't heap-allocate `sin'; it can be on
4937         the stack because it will be copied to closure.
4938
4939         Thanks to Csaba Raduly's run of PC-LINT over the sources.
4940
4941 2000-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
4942
4943         * http.c (basic_authentication_encode): Use xmalloc(), not
4944         malloc().  Thanks to Csaba Raduly's run of PC-LINT over the
4945         sources.
4946
4947 2000-12-17  Csaba Raduly  <csaba.raduly@sophos.com>
4948
4949         * sysdep.h: Test for __EMX__ rather than for EMXOS2 for OS/2
4950         compilation.
4951
4952 2000-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
4953
4954         * mswindows.c: Include <errno.h>.
4955
4956         * gen_sslfunc.c: Include <errno.h>.
4957
4958         * ftp-basic.c: Don't attempt to declare errno or h_errno because
4959         they're not used.
4960
4961         * main.c: Include <errno.h> because errno is used.
4962
4963         * ftp.c: Ditto.
4964
4965         * http.c: Include <netdb.h> for h_errno.
4966
4967 2000-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
4968
4969         * html-parse.c (advance_declaration): MSVC assert() chokes on
4970         '\"'.  Use '"' instead.
4971
4972 2000-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
4973
4974         * utils.c (xfree_real): Removed.
4975         (xfree_debug): Just call free().
4976
4977         * wget.h (xfree): Make it an alias for free.
4978
4979 2000-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
4980
4981         * http.c (http_loop): Furthermore, touch output_document only if
4982         it is known to be an existing regular file.
4983
4984 2000-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
4985
4986         * ftp.c (ftp_retrieve_list): Ditto.
4987
4988         * http.c (http_loop): Touch output_document if that is used for
4989         output.
4990
4991 2000-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
4992
4993         * http.c: Include gen_sslfunc.h after including Wget's headers.
4994         (persistent_available_p): Needed coma before `int ssl'.
4995
4996 2000-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
4997
4998         * ftp.c (ftp_loop_internal): Ditto.
4999
5000         * http.c (http_loop): Use it.
5001
5002         * retr.c (sleep_between_retrievals): New function that handles the
5003         logic of opt.wait and opt.waitretry.
5004
5005 2000-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
5006
5007         * rbuf.h: Implement only a single version of RBUF_READCHAR, using
5008         rbuf_read_bufferful when the buffer is depleted.
5009
5010         * rbuf.c (rbuf_read_bufferful): New function.
5011
5012 2000-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
5013
5014         * gen_sslfunc.h: Use ansi2knr style function declarations.
5015
5016         * gen_sslfunc.c: Reformat according to the GNU coding standards.
5017         More should be done.
5018
5019         * http.c (persistent_available_p): Place the cheap SSL test nearer
5020         the top of the function.
5021         (CLOSE_FINISH, CLOSE_INVALIDATE): Define only one version of each.
5022
5023 2000-12-05  Hrvoje Niksic  <hniksic@arsdigita.com>
5024
5025         * url.c (init_unsafe_char_table): Reinstate space as an unsafe
5026         char.
5027
5028 2000-12-03  Christian Fraenkel <christian.fraenkel@gmx.net>
5029
5030         * Makefile.in: added gen_sslfunc object
5031         * config.h.in: added HAVE_SSL define
5032         * connect.c: changed select_fd from static int to int
5033         * connect.h: ditto
5034         * gen_sslfunc.h: New file
5035         * gen_sslfunc.c: ditto
5036         * http.c: added HTTPS fuctionality
5037         * retrc.c: ditto
5038         * url.c: ditto
5039         * init.c: added opt.httpsproxy
5040         * options.h: ditto
5041         * rbuf.h: added alternate rbuf struct
5042         * wget.h: added CONSSLERR
5043         * rbuf.c: ditto
5044
5045         * http.c: Added HTTPS fuctionality.
5046
5047         * retrc.c: Ditto.
5048
5049         * url.c: Ditto.
5050
5051         * init.c: Added opt.httpsproxy.
5052
5053         * options.h: Ditto.
5054
5055         * rbuf.h: Added alternate rbuf struct.
5056
5057         * wget.h: Added CONSSLERR.
5058
5059         * rbuf.c: Ditto.
5060
5061 2000-11-30  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
5062
5063         * ftp-ls.c (ftp_parse_unix_ls): Added second parameter
5064         "ignore_perms" to ignore file and directory permissions for
5065         Windows NT FTP server listings.
5066         (ftp_parse_winnt_ls): New function.
5067         (ftp_parse_ls): Parses UNIX and Windows NT listings
5068         separately. Simple heuristics for distinguishing between UNIX and
5069         MS-DOS-like FTP listing provided by Windows NT FTP service.
5070
5071 2000-11-18  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
5072
5073         * ftpparse.c, ftpparse.h: New files.
5074
5075         * ftp-ls.c (ftp_parse_ls): Use ftp_parse_unix_ls for UNIX servers
5076         only. Use ftp_parse_nonunix_ls otherwise.
5077         (ftp_parse_nonunix_ls): Stub to the ftpparse library handling all
5078         exotic FTP servers.
5079
5080         * ftp.h (stype): New enum, distinguishes UNIX, VMS, and "other"
5081         FTP servers.
5082
5083         * ftp.c: New static wariables host_type, pwd, and pwd_len. 
5084         (getftp): Support for VMS. Support for FTP servers that do not
5085         place you in the root directory after login.
5086         (ftp_retrieve_list): VMS is silent about the real file size, issue
5087         a more appropriate message.
5088         (ftp_get_listing): Pass host_type to ftp_parse_ls.
5089
5090         * ftp-basic.c (ftp_pwd, ftp_syst): New functions.
5091
5092 2000-11-30  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
5093
5094         * ftp-ls.c (ftp_parse_unix_ls): Added second parameter
5095         "ignore_perms" to ignore file and directory permissions for
5096         Windows NT FTP server listings.
5097         (ftp_parse_winnt_ls): New function.
5098         (ftp_parse_ls): Parses UNIX and Windows NT listings
5099         separately. Simple heuristics for distinguishing between UNIX
5100         and MS-DOS-like FTP listing provided by Windows NT FTP service.
5101
5102 2000-11-29  John Summerfield  <summer@OS2.ami.com.au>
5103
5104         * netrc.c (parse_netrc): Get rid of line ending.
5105
5106 2000-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
5107
5108         * ftp.c (ftp_retrieve_list): Undo typo "fix" until resolution by
5109         Dan.
5110
5111 2000-11-24  Karl Eichwalder  <ke@suse.de>
5112
5113         * main.c (print_help): Untabify.
5114
5115 2000-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
5116
5117         * utils.c (xrealloc_debug): Do the unregister/register thing only
5118         if the pointer has actually changed.
5119         (xmalloc_real): Declare `static' in DEBUG_MALLOC builds.
5120         (xfree_real): Ditto.
5121         (xrealloc_real): Ditto.
5122         (xstrdup_real): Ditto.
5123
5124 2000-11-22  Hrvoje Niksic  <hniksic@arsdigita.com>
5125
5126         * ftp.c (getftp): ftp_getaddress() returns a malloc'ed copy of the
5127         string; no need to strdup() it.
5128         (getftp): Make pwd_len a local variable.
5129         (ftp_loop): Free PWD before returning.
5130
5131         * init.c (cleanup): Free opt.ftp_pass only if it's non-NULL.
5132
5133 2000-11-22  Hrvoje Niksic  <hniksic@arsdigita.com>
5134
5135         * all: Use xfree() instead of free.
5136
5137         * utils.c (xfree): New function.
5138
5139 2000-11-21  Hrvoje Niksic  <hniksic@arsdigita.com>
5140
5141         * url.c (convert_links): HTML-quote the converted string.
5142
5143         * utils.c (html_quote_string): Move here from ftp-ls.c
5144         (html_quote_string): Make non-static; declare in utils.h.
5145         (html_quote_string): Convert SP to &#32;.
5146
5147 2000-11-21  Hrvoje Niksic  <hniksic@arsdigita.com>
5148
5149         * ftp.c (getftp): Reformat Jan's code according to GNU coding
5150         standards; remove (debugging?) printf's; use '\0' for the ASCII
5151         zero character.  Use alloca() instead of malloc() for
5152         inter-function temporary allocations.
5153
5154 2000-11-18  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
5155
5156         * ftpparse.c, ftpparse.h: New files.
5157
5158         * ftp-ls.c (ftp_parse_ls): Use ftp_parse_unix_ls for UNIX servers
5159         only. Use ftp_parse_nonunix_ls otherwise.
5160         (ftp_parse_nonunix_ls): Stub to the ftpparse library handling all
5161         exotic FTP servers.
5162
5163         * ftp.h (stype): New enum, distinguishes UNIX, VMS, and "other"
5164         FTP servers.
5165
5166         * ftp.c: New static wariables host_type, pwd, and pwd_len. 
5167         (getftp): Support for VMS. Support for FTP servers that do not
5168         place you in the root directory after login.
5169         (ftp_retrieve_list): VMS is silent about the real file size, issue
5170         a more appropriate message.
5171         (ftp_get_listing): Pass host_type to ftp_parse_ls.
5172
5173         * ftp-basic.c (ftp_pwd, ftp_syst): New functions.
5174
5175 2000-11-21  Hrvoje Niksic  <hniksic@arsdigita.com>
5176
5177         * hash.c (hash_table_put): Don't overwrite deleted mappings.
5178
5179 2000-11-21  Hrvoje Niksic  <hniksic@arsdigita.com>
5180
5181         * hash.c (find_mapping): New function.
5182         (hash_table_get): Use it.
5183         (hash_table_get_pair): Ditto.
5184         (hash_table_exists): Ditto.
5185         (hash_table_remove): Ditto.
5186         (hash_table_remove): Really delete the entry if the mapping
5187         following LOCATION is empty.
5188
5189         * utils.c (string_set_add): Check whether the element has existed
5190         before.
5191
5192         * hash.c (hash_table_get_pair): New function.
5193
5194 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
5195
5196         * http.c (http_process_type): Ignore trailing whitespace; use
5197         strdupdelim().
5198
5199         * recur.c (recursive_retrieve): Use the new `convert' field.
5200         (convert_all_links): Ditto.
5201         (convert_all_links): Don't respect meta_disallow_follow.
5202
5203         * html-url.c (handle_link): Fill out link_relative_p and
5204         link_complete_p.
5205
5206         * url.h (struct _urlpos): Make elements more readable.
5207
5208         * recur.c (recursive_retrieve): Call slist_prepend instead of
5209         slist_append.
5210         (convert_all_links): Call slist_nreverse before iterating through
5211         urls_html.
5212
5213         * utils.c (slist_prepend): New function.
5214         (slist_nreverse): Ditto.
5215
5216 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
5217
5218         * http.c (check_end): Constify.
5219
5220 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
5221
5222         * http.c (http_loop): If username and password are known, try the
5223         `Basic' authentication scheme by default.
5224
5225         * connect.h: Declare test_socket_open.
5226
5227 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
5228
5229         * version.c: Bump version from 1.5.3+dev to 1.7-dev.
5230
5231 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
5232
5233         * http.c (gethttp): Don't use the return value of sprintf().
5234         (gethttp): Inhibit keep-alive if opt.http_keep_alive is 0.
5235
5236 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
5237
5238         * recur.c (recursive_retrieve): Print the "so we don't load"
5239         debugging message only if we really don't load.
5240
5241         * http.c (gethttp): Inhibit keep-alive if proxy is being used.
5242         (gethttp): Don't request keep-alive if keep-alive is inhibited.
5243
5244 2000-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
5245
5246         * http.c (gethttp): Make the HTTP persistent connections more
5247         robust.
5248
5249 2000-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
5250
5251         * retr.c (get_contents): If use_expected, make sure that the
5252         appropriate amount of data is being read.
5253
5254         * http.c (gethttp): Check for both `Keep-Alive: ...' and
5255         `Connection: Keep-Alive'.
5256
5257         * wget.h (DEBUGP): Call debug_logprintf only if opt.debug is
5258         turned on.
5259
5260 2000-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
5261
5262         * http.c (connection_available_p): Use it.
5263
5264         * connect.c (test_socket_open): New function.
5265
5266         * http.c (gethttp): Support persistent connections.  Based on the
5267         ideas, and partly on code, by Sam Horrocks <sam@daemoninc.com>.
5268         (register_persistent): New function.
5269         (connection_available_p): Ditto.
5270         (invalidate_connection): Ditto.
5271
5272 2000-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
5273
5274         * url.c (convert_links): Handle UREL2ABS case.
5275
5276         * recur.c (recursive_retrieve): Instead of the list
5277         urls_downloaded, use hash tables dl_file_url_map and
5278         dl_url_file_map.
5279         (convert_all_links): Use them to retrieve data.
5280
5281         * host.c (clean_hosts): Free the hash tables.
5282
5283         * main.c (private_initialize): Call host_init().
5284
5285         * host.c (store_hostaddress): Use a saner, hash table-based data
5286         model.
5287         (realhost): Ditto.
5288         (host_init): Initialize the hash tables.
5289
5290 2000-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
5291
5292         * utils.c (slist_append): Eviscerate NOSORT.  Hash tables are now
5293         used for what the sorted slists used to be used for.
5294         (slist_contains): Don't rely on the list being sorted.
5295         (slist_append): Simplify the code.
5296
5297         * recur.c (recursive_cleanup): Use free_string_set.
5298
5299         * utils.c (string_set_add, string_set_exists, string_set_free):
5300         New functions for easier freeing of hash tables whose keys are
5301         strdup'ed strings.
5302
5303         * recur.c (recursive_retrieve): Use the hash table functions for
5304         storing undesirable URLs.
5305
5306         * hash.c: New file.
5307
5308 2000-11-17  Hrvoje Niksic  <hniksic@arsdigita.com>
5309
5310         * main.c (private_initialize): Call url_init.
5311         (main): Call private_initialize.
5312
5313         * url.c (unsafe_char_table): New table.
5314         (UNSAFE_CHAR): Use it.
5315         (init_unsafe_char_table): New function.
5316         (url_init): New function; call init_unsafe_char_table.
5317
5318 2000-11-16  Hrvoje Niksic  <hniksic@arsdigita.com>
5319
5320         * mswindows.h: Define snprintf and vsnprintf to _snprintf and
5321         _vsnprintf respectively.
5322
5323 2000-11-15  Hrvoje Niksic  <hniksic@arsdigita.com>
5324
5325         * config.h.in: Do the _XOPEN_SOURCE and _SVID_SOURCE things only
5326         on Linux.
5327
5328 2000-11-15  Hrvoje Niksic  <hniksic@arsdigita.com>
5329
5330         * html-url.c (handle_link): Handle HTML fragment identifiers.
5331
5332         * recur.c (recursive_retrieve): If norobot info is respected and
5333         the file is specified not to be followed by robots, respect that.
5334
5335         * html-url.c (collect_tags_mapper): Handle <meta name=robots
5336         content=X>.  For us the important cases are where X is NONE or
5337         where X contains NOFOLLOW.
5338         (get_urls_html): Propagate that information to the caller.
5339
5340 2000-11-13  Hrvoje Niksic  <hniksic@arsdigita.com>
5341
5342         * url.c (convert_links): Unlink the file we might be reading from
5343         before writing to it.
5344         (convert_links): Use alloca instead of malloc for
5345         filename_plus_orig_suffix.
5346
5347 2000-11-12  Hrvoje Niksic  <hniksic@arsdigita.com>
5348
5349         * host.c (realhost): Add HOST to the list with quality==0 only if
5350         it wasn't already there.
5351         Based on analysis by Lu Guohan <feng@public.bjnet.edu.cn>.
5352
5353 2000-11-10  Hrvoje Niksic  <hniksic@arsdigita.com>
5354
5355         * url.c (get_urls_file): Ditto.
5356         (convert_links): Ditto.
5357
5358         * html-url.c (get_urls_html): Use read_file() instead of
5359         load_file().
5360
5361         * utils.c (read_file): New function, instead of the old
5362         load_file().
5363         (read_file_free): Ditto.
5364
5365         * url.c (findurl): Search only for the supported protocols.
5366         (convert_links): Use fwrite() when writing out a region of
5367         characters.
5368
5369 2000-11-10  Hrvoje Niksic  <hniksic@arsdigita.com>
5370
5371         * ftp-ls.c: Move html_quote_string and ftp_index here.
5372
5373         * url.c: Remove get_urls_html, since that's now in html-url.c.
5374
5375         * html-url.c: New file.
5376
5377         * html-parse.c: New file.
5378
5379 2000-11-10  Hrvoje Niksic  <hniksic@arsdigita.com>
5380
5381         * init.c (run_wgetrc): Don't bother killing off '\r' since
5382         pars_line() skips whitespace at end of line anyway.
5383         (parse_line): Oops, it didn't.  Now it does.
5384
5385         * recur.c (parse_robots): Ditto here.
5386
5387         * ftp-ls.c (ftp_parse_unix_ls): Kill off the newline character
5388         manually because read_whole_line no longer does.
5389
5390         * utils.c (read_whole_line): Rewrite to: a) use less memory
5391         (reallocates to needed size after work), b) work faster -->
5392         fgets() instead of getc, c) be more correct --> doesn't kill the
5393         newline character at the end of line.
5394
5395 2000-11-10  Hrvoje Niksic  <hniksic@arsdigita.com>
5396
5397         * init.c (comind): Initialize MAX to array size - 1.
5398
5399 2000-11-08  Hrvoje Niksic  <hniksic@arsdigita.com>
5400
5401         * url.c (construct): Changed last_slash[-1] to *(last_slash - 1).
5402         Suggested by Edward J. Sabol.
5403
5404 2000-11-08  Hrvoje Niksic  <hniksic@arsdigita.com>
5405
5406         * url.c (construct): Handle the case where host name is not
5407         followed by a slash.
5408
5409 2000-11-06  Hrvoje Niksic  <hniksic@arsdigita.com>
5410
5411         * init.c: commands[] need to be sorted!  ("base" wasn't.)
5412
5413 2000-11-05  Hrvoje Niksic  <hniksic@arsdigita.com>
5414
5415         * wget.h (DO_REALLOC_FROM_ALLOCA): Use braces to disambiguate
5416         `if'.
5417
5418 2000-11-05  Hrvoje Niksic  <hniksic@arsdigita.com>
5419
5420         * url.c (construct): Insert unneeded initialization for the
5421         compiler to shut up.
5422
5423         * config.h.in: Define _XOPEN_SOURCE to 500 to get the prototype
5424         for strptime() (*duh*).  Define _SVID_SOURCE to get S_IFLNK which
5425         otherwise gets lost when you define _XOPEN_SOURCE.
5426
5427         * utils.c (touch): Include the file name in the error message.
5428         From Debian.
5429
5430 2000-11-05  Hrvoje Niksic  <hniksic@arsdigita.com>
5431
5432         * log.c (logvprintf): Use vsnprintf() in all cases.  If necessary,
5433         resize the buffer to fit the formated message.  That way, messages
5434         of arbitrary size may be printed.
5435         (logvprintf): Use saved_append() to optionally log the last
5436         several lines of output.
5437         (logputs): Ditto.
5438         (log_close): Adapt to new data structures.
5439         (log_dump): Ditto.
5440         (redirect_output): Print messages to stderr, not to stdout.
5441
5442         * log.c (saved_append_1): New function.  Replaces the old logging
5443         system ("log all output until 10M characters") with a new, much
5444         more reasonable one ("log last screenful of text").
5445         (saved_append): New function; call saved_append_1.
5446         (free_log_line): New function.
5447
5448 2000-11-05  Hrvoje Niksic  <hniksic@arsdigita.com>
5449
5450         * url.c (construct): Fix comment.
5451         (find_last_char): Document.
5452
5453 2000-11-04  Hrvoje Niksic  <hniksic@arsdigita.com>
5454
5455         * snprintf.c: New file.
5456
5457 2000-11-03  Hrvoje Niksic  <hniksic@arsdigita.com>
5458
5459         * wget.h: If HAVE_STDARG_H is not defined, don't declare argument
5460         types to logprintf() and debug_logprintf().
5461
5462 2000-11-02  Hrvoje Niksic  <hniksic@arsdigita.com>
5463
5464         * ftp.c (ftp_loop_internal): Hide the password from the URL when
5465         printing non-verbose.  Problem spotted by Dariusz Mlynarczyk
5466         <darekm@bydg.lomac.com.pl>.
5467
5468 2000-11-02  Junio Hamano  <junio@twinsun.com>
5469
5470         * ftp-basic.c (ftp_login): Make comparison case-insensitive.
5471
5472 2000-11-02  Tyler Riddle  <triddle@liquidmarket.com>
5473
5474         * http.c (known_authentication_scheme_p): Recognize NTML
5475         authentication.
5476         (create_authorization_line): Treat NTML the same as `Basic'.
5477
5478 2000-11-02  Hrvoje Niksic  <hniksic@arsdigita.com>
5479
5480         * retr.c (retrieve_url): Free url before returning.
5481         (retrieve_url): Free mynewloc before returning.
5482         Spotted by Mark A. Mankins <Mankins_Mark@prc.com>.
5483
5484 2000-11-02  Hrvoje Niksic  <hniksic@arsdigita.com>
5485
5486         * url.c (parseurl): Remove possible reading past the end of
5487         sup_protos[].  Spotted by Mark A. Mankins <Mankins_Mark@prc.com>.
5488
5489 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
5490
5491         * main.c (main): In case of opt.downloaded overflowing, print
5492         <overflow> instead of a totally bogus random value.
5493
5494         * retr.c (retrieve_from_file): Ditto.
5495
5496         * recur.c (recursive_retrieve): Ditto.
5497
5498         * main.c (main): Ditto.
5499
5500         * http.c (http_loop): Ditto.
5501
5502         * ftp.c (ftp_loop_internal): Use downloaded_increase() instead of
5503         `+=', and downloaded_exceeds_quota() instead of the simple-minded
5504         check.
5505         (ftp_retrieve_list): Ditto.
5506         (ftp_retrieve_dirs): Ditto.
5507         (ftp_retrieve_glob): Ditto.
5508
5509         * retr.c (downloaded_increase): New function.  Notice overflows of
5510         opt.downloaded.
5511         (downloaded_exceeds_quota): Make sure that opt.downloaded is not
5512         used if it overflowed.
5513
5514         * options.h (struct options): New member downloaded_overflow.
5515
5516 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
5517
5518         * wget.h (enum): Remove extra space after last enumeration.
5519
5520 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
5521
5522         * main.c (main): Use legible_very_long() for printing
5523         opt.downloaded.
5524
5525         * utils.c (legible_1): New function that operates on strings and
5526         does the brunt of legible()'s work.
5527         (legible): Use legible_1().
5528         (legible_very_long): New function; dump the argument with
5529         sprintf(), and call legible_1().
5530
5531         * options.h (struct options): Use VERY_LONG_TYPE for
5532         opt.downloaded.
5533
5534         * sysdep.h (VERY_LONG_TYPE): Define it to have a 64-bit or greater
5535         type.
5536
5537         * config.h.in: Make sure that SIZEOF_LONG and SIZEOF_LONG_LONG get
5538         defined.  Define HAVE_LONG_LONG if long long is available.
5539
5540 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
5541
5542         * utils.c (long_to_string): Update with a later, better version.
5543
5544 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
5545
5546         * url.c (path_simplify_with_kludge): New function.
5547         (path_simplify_with_kludge): Disable it.  Instead...
5548         (parse_dir): ...make sure that at this point the right thing is
5549         done, i.e. that "query" part of the URL (?...) is always assigned
5550         to the file, never to the directory portion of the path.
5551
5552 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
5553
5554         * retr.c (retrieve_url): Detect redirection cycles.
5555
5556 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
5557
5558         * url.c (get_urls_html): Decode HTML entities using
5559         html_decode_entities.
5560
5561         * html.c (htmlfindurl): Don't count the `#' in numeric entities
5562         (&#NNN;) as an HTML fragemnt.
5563         (html_decode_entities): New function.
5564
5565 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
5566
5567         * html.c (htmlfindurl): Fix recognition of # HTML fragments.
5568
5569 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
5570
5571         * url.c (construct): Rewritten for clarity.  Avoids the
5572         unnecessary copying and stack-allocation the old version
5573         performed.
5574
5575 2000-10-31  Hrvoje Niksic  <hniksic@arsdigita.com>
5576
5577         * ftp.c (getftp): Ditto.
5578
5579         * http.c (gethttp): Rewind the stream when retrying from scratch.
5580
5581 2000-10-31  Hrvoje Niksic  <hniksic@arsdigita.com>
5582
5583         * retr.c (retrieve_url): Use url_concat() to handle relative
5584         redirections instead of /ad hoc/ code.
5585
5586         * url.c (url_concat): New function encapsulating weird
5587         construct().
5588         (urllen_http_hack): New function.
5589         (construct): When constructing new URLs, recognize that `?' does
5590         not form part of the file name in HTTP.
5591
5592 2000-10-13  Adrian Aichner  <adrian@xemacs.org>
5593
5594         * retr.c: Add msec timing support for WINDOWS.
5595         * retr.c (reset_timer): GetSystemTime() on WINDOWS.
5596         * retr.c (elapsed_time): Calculate delta time to msec on WINDOWS.
5597
5598 2000-10-27  Dan Harkless  <wget@harkless.org>
5599
5600         * retr.c (retrieve_url): Manually applied T. Bharath
5601         <TBharath@responsenetworks.com>'s patch to get wget to grok
5602         illegal relative URL redirects.  Reformatted and re-commented it.
5603
5604 2000-10-23  Dan Harkless  <wget@harkless.org>
5605
5606         * connect.c (make_connection and bindport): Manually applied Rob
5607         Mayoff <mayoff@dqd.com>'s 1.5.3 patch to add --bind-address,
5608         changing coding style to GNU's.
5609
5610         * ftp.c (ftp_loop_internal): --delete-after wasn't implemented for
5611         files downloaded via FTP.  Per a comment, .listing files were not
5612         counted towards number of bytes and files downloaded because they're 
5613         deleted anyway.  Well, they aren't under -nr, so count them then.
5614
5615         * init.c: Manually applied Rob Mayoff's 1.5.3 patch to add
5616         --bind-address, alphabetizing, changing coding style to GNU's,
5617         commenting, and renaming cmd_ip_address() to cmd_address() to
5618         imply hostnames also okay.
5619                 
5620         * main.c (main): --delete-after didn't delete the root of the
5621         tree.  Ignore --convert-links if --delete-after was specified.
5622         Manually applied Rob Mayoff's 1.5.3 patch to add --bind-address,
5623         fixing duplicate use of added-since-1.5.3 case value.
5624         (print_help): Clarified that --delete-after deletes local files.
5625         Rob forgot to add a line for his new --bind-address option.
5626                 
5627         * options.h (struct options): Manually applied Rob Mayoff's patch
5628         to add --bind-address (bind_address structure member).
5629                 
5630         * recur.c (recursive_retrieve): Improved comment; added DEBUGP().
5631         Ignore --convert-links if --delete-after was specified.
5632                 
5633         * retr.c (retrieve_from_file): Just added a DEBUGP().
5634                 
5635 2000-10-19  Dan Harkless  <wget@harkless.org>
5636
5637         * ftp.c (ftp_loop_internal): downloaded_file() enumerators changed.
5638         (getftp): Applied Piotr Sulecki <Piotr.Sulecki@ios.krakow.pl>'s
5639         patch to work around FTP servers that incorrectly respond to the
5640         "REST" command with the remaining size rather than the total file size.
5641                 
5642         * http.c (gethttp): Improved a comment and added code to tack on
5643         ".html" to text/html files without that extension when -E specified.
5644         (http_loop): Use new downloaded_file() enumerators and deal with
5645         the case of gethttp() called xrealloc() on u->local.
5646
5647         * init.c (commands): Added new "htmlextension" command.
5648         Also renamed John Daily's cmd_quad() to the more descriptive
5649         cmd_lockable_boolean(), alpha-sorted the CMD_DECLARE()s and
5650         removed duplicate cmd_boolean() declaration.
5651
5652         * main.c (print_help): Added my new -E / --html-extension option.
5653         (main): Undocumented --email-address option previously used -E synonym.
5654         Stole it away for the much more deserving --html-extension's use.
5655
5656         * options.h (struct options): Added html_extension field.
5657
5658         * url.c (convert_links): URL X that we saved as X.html locally due
5659         to -E needs to be backed up as X.orig, not X.html.orig.  Added comments.
5660         (downloaded_file): Now remembers if we added .html extension to a file.
5661
5662         * url.h (downloaded_file_t): Added extra enumerators to support above.
5663         (downloaded_file): Now takes and returns a downloaded_file_t.
5664
5665         * wget.h (unnamed "dt" enum): Added ADDED_HTML_EXTENSION enumerator.
5666         
5667 2000-10-09  Dan Harkless  <wget@harkless.org>
5668
5669         * html.c (htmlfindurl): Added unneeded initialization to quiet warning.
5670                 
5671         * main.c (print_help): Clarified what --retr-symlinks does.
5672         
5673 2000-09-15  John Daily  <jdaily@cyberdude.com>
5674
5675         * init.c: Add support for "always" and "never" values to allow
5676         .wgetrc to override commandline (useful e.g. with .pm files
5677         calling `wget --passive-ftp' when your firewall doesn't allow that).
5678
5679         * ftp.c (getftp): passive_ftp is first option to support always/never.
5680
5681 2000-08-30  Dan Harkless  <wget@harkless.org>
5682
5683         * ftp.c (ftp_retrieve_list): Use new INFINITE_RECURSION #define.
5684         
5685         * html.c: htmlfindurl() now takes final `dash_p_leaf_HTML' parameter.
5686         Wrapped some > 80-column lines.  When -p is specified and we're at a 
5687         leaf node, do not traverse <A>, <AREA>, or <LINK> tags other than 
5688         <LINK REL="stylesheet">.
5689         
5690         * html.h (htmlfindurl): Now takes final `dash_p_leaf_HTML' parameter.
5691         
5692         * init.c: Added new -p / --page-requisites / page_requisites option.
5693
5694         * main.c (print_help): Clarified that -l inf and -l 0 both allow
5695         infinite recursion.  Changed the unhelpful --mirrior description
5696         to simply give the options it's equivalent to.  Added new -p option.
5697         (main): Added some comments; handle new -p / --page-requisites.
5698         
5699         * options.h (struct options): Added new page_requisites field.
5700
5701         * recur.c: Changed "URL-s" to "URLs" and "HTML-s" to "HTMLs".
5702         Calculate and pass down new `dash_p_leaf_HTML' parameter to
5703         get_urls_html().  Use new INFINITE_RECURSION #define.
5704
5705         * retr.c: Changed "URL-s" to "URLs".  get_urls_html() now takes
5706         final `dash_p_leaf_HTML' parameter.
5707
5708         * url.c: get_urls_html() and htmlfindurl() now take final
5709         `dash_p_leaf_HTML' parameter.
5710
5711         * url.h (get_urls_html): Now takes final `dash_p_leaf_HTML' parameter.
5712
5713         * wget.h: Added some comments and new INFINITE_RECURSION #define.
5714         
5715 2000-08-23  Dan Harkless  <wget@harkless.org>
5716
5717         * main.c (print_help): -B / --base was not mentioned.
5718
5719 2000-08-22  Dan Harkless  <wget@harkless.org>
5720
5721         * main.c (print_help): Modified -nc description to mention that it
5722         also prevents the creation of multiple versions of the same file
5723         with ".<number>" suffixes.
5724
5725 2000-07-14  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
5726
5727         * retr.c (retrieve_url): Consistently strdup opt.referer when
5728         setting u->referer.
5729
5730 2000-06-09  Dan Harkless  <wget@harkless.org>
5731
5732         * main.c (print_help): --help output for --waitretry was over 80 cols.
5733
5734 2000-06-09  Hrvoje Niksic  <hniksic@iskon.hr>
5735
5736         * url.c (encode_string): Fix comment.
5737         Suggested by Herold Heiko <Heiko.Herold@previnet.it>.
5738
5739 2000-06-01  Const Kaplinsky  <const@ce.cctpu.edu.ru>
5740
5741         * ftp.c (ftp_retrieve_list): Change permissions only on plain
5742         files.
5743
5744 2000-06-01  Hrvoje Niksic  <hniksic@iskon.hr>
5745
5746         * url.c (str_url): Print the port number only if it's different
5747         from the default port number for that protocol.
5748
5749 2000-05-22  Dan Harkless  <wget@harkless.org>
5750
5751         * main.c (print_help): Added --help line for Damir Dzeko
5752         <ddzeko@zesoi.fer.hr>'s until-now-undocumented --referer option.
5753         Removed comments that --referer and --waitretry were undocumented.
5754         Changed "`.wgetrc' command" to "`.wgetrc'-style command" on --help
5755         line for --execute.
5756
5757 2000-05-18  Hrvoje Niksic  <hniksic@iskon.hr>
5758
5759         * ftp.c (getftp): Ditto.
5760
5761         * http.c (gethttp): Check for return value of fclose/fflush.
5762
5763 2000-04-12  Hrvoje Niksic  <hniksic@iskon.hr>
5764
5765         * host.c (store_hostaddress): Instead of shifting ADDR, start
5766         copying from the correct address.
5767
5768 2000-04-12  Hrvoje Niksic  <hniksic@iskon.hr>
5769
5770         * http.c (gethttp): Don't free REQUEST -- it was allocated with
5771         alloca().
5772         Pointed out by Gisle Vanem <gvanem@eunet.no>.
5773
5774 2000-04-04  Dan Harkless  <wget@harkless.org>
5775
5776         * host.c (store_hostaddress): R. K. Owen's patch introduces a
5777         "left shift count >= width of type" warning on 32-bit
5778         architectures.  Got rid of it by tricking the compiler w/ a variable.
5779         
5780         * url.c (UNSAFE_CHAR): The macro didn't include all the illegal
5781         characters per RFC1738, namely everything above '~'.  It also
5782         generated a warning on OSes where char =~ unsigned char.  Fixed.
5783         
5784 1998-10-17  Hrvoje Niksic  <hniksic@srce.hr>
5785
5786         * http.c (http_process_type): Removed needless strdup(), a memory
5787         leak.
5788
5789 1998-09-25  Hrvoje Niksic  <hniksic@srce.hr>
5790
5791         * html.c (htmlfindurl): Set PH to the first occurrence of `#'.
5792
5793 1998-09-25  Simon Munton  <simonm@m4data.co.uk>
5794
5795         * init.c (wgetrc_file_name): Don't free HOME under Windows.
5796
5797 1998-12-01  "R. K. Owen"  <rkowen@Nersc.GOV>
5798
5799         * host.c (store_hostaddress): Fix for big endian 64-bit machines.
5800
5801 1998-12-01  Hrvoje Niksic  <hniksic@srce.hr>
5802
5803         * url.c (UNSAFE_CHAR): New macro.
5804         (contains_unsafe): Use it.
5805         (encode_string): Ditto.
5806
5807 1998-12-01  Hrvoje Niksic  <hniksic@srce.hr>
5808
5809         * main.c (i18n_initialize): Use LC_MESSAGES only if available.
5810
5811 2000-03-31  Hrvoje Niksic  <hniksic@srce.hr>
5812
5813         * Use TOUPPER/TOLOWER.
5814
5815 1998-12-22  Alexander V. Lukyanov  <lav@yars.free.net>
5816
5817         * ftp-opie.c (btoe): Zero-terminate OSTORE.
5818
5819 2000-03-21  Hrvoje Niksic  <hniksic@iskon.hr>
5820
5821         * wget.h (DO_REALLOC_FROM_ALLOCA): Ditto.
5822
5823         * sysdep.h (ISALNUM): New macro.
5824         (TOLOWER): Ditto.
5825         (TOUPPER): Ditto.
5826
5827 2000-03-10  Dan Harkless  <wget@harkless.org>
5828
5829         * html.c (idmatch): Implemented checking of my new --follow-tags
5830         and --ignore-tags options.
5831         
5832         * init.c (commands): Added comment reminding people adding new
5833         entries doing allocation to add corresponding freeing in cleanup().
5834         (commands): Added new followtags and ignoretags commands.
5835         (cleanup): Free storage for new followtags and ignoretags.
5836         
5837         * main.c: Use of "comma-separated list" was random -- normalized
5838         it.  Did some alphabetization.  Added comments pointing out
5839         "Options without arguments" and "Options accepting an argument"
5840         sections of long_options[].  Added new options --follow-tags and
5841         -G / --ignore-tags.  Added comment that Damir's --referer is
5842         currently undocumented.  Added comment that Heiko's --waitretry is
5843         partially undocumented (mentioned in --help but not in
5844         wget.texi).  Moved improperly sorted 24, 129, and 'G' cases.
5845         
5846         * options.h (struct options): Added new fields follow_tags and
5847         ignore_tags. 
5848         
5849         * wget.h: Added "#define EQ 0" so we can say "strcmp(a, b) == EQ".
5850         
5851 2000-03-02  Dan Harkless  <wget@harkless.org>
5852
5853         * ftp.c (ftp_loop_internal): Heiko introduced "suggest explicit
5854         braces to avoid ambiguous `else'" warnings.  Eliminated them.
5855         
5856         * http.c (gethttp): Dan Berger's query string patch is totally
5857         bogus.  If you have two different URLs, gen_page.cgi?page1 and
5858         get_page.cgi?page2, they'll both be saved as get_page.cgi and the
5859         second will overwrite the first.  Also, parameters to implicit
5860         CGIs, like "http://www.host.com/db/?2000-03-02" cause the URLs to
5861         be printed with trailing garbage characters, and could seg fault.
5862         Backing out the patch, which Dan B. informed me by email was just
5863         a kludge to download StarOffice from Sun made necessary due to
5864         wget's unconditional escaping of certain characters (room for an
5865         option there?).
5866         (http_loop): Heiko introduced "suggest explicit braces to avoid
5867         ambiguous `else'" warnings.  Eliminated them.
5868         
5869         * main.c: Heiko's --wait / --waitretry backwards compatibility
5870         code looks to have been totally untested -- automatic variable
5871         'wr' was used without being initialized, and a long int was passed
5872         into setval()'s char* val parameter.
5873         
5874         * recur.c (parse_robots): Applied Edward J. Sabol
5875         <sabol@alderaan.gsfc.nasa.gov>'s patch for Guan Yang's reported
5876         problem with "User-agent:<space>*<space>" lines in robots.txt.
5877         
5878         * url.c (parseurl, str_url): Removing Dan Berger's code (see
5879         http.c above for explanation).
5880         
5881 1999-08-25  Heiko Herold  <Heiko.Herold@previnet.it>
5882
5883         * ftp.c: Respect new option waitretry.
5884
5885 2000-01-30  Damir Dzeko  <ddzeko@zesoi.fer.hr>
5886
5887         * http.c (gethttp): Send custom Referer, if required.
5888
5889 1999-09-24  Charles G Waldman  <cgw@fnal.gov>
5890
5891         * netrc.c (parse_netrc): Allow passwords to contain spaces.
5892
5893         * netrc.c (parse_netrc): New function.
5894
5895 1999-09-17  Dan Berger  <dberger@ix.netcom.com>
5896
5897         * http.c (gethttp): Send it.
5898
5899         * url.c (parseurl): Detect query string in HTTP URL-s.
5900         (str_url): Print it.
5901
5902 2000-03-02  HIROSE Masaaki  <hirose31@t3.rim.or.jp>
5903
5904         * html.c (html_allow): Add <link href=...> and <script src=...>.
5905
5906 1999-05-02  andrew deryabin  <djsf@softhome.net>
5907
5908         * http.c (gethttp): Specify port in `Host' header only if it's
5909         different from 80.
5910
5911 1998-11-03  Edward J. Sabol  <sabol@alderaan.gsfc.nasa.gov>
5912
5913         * recur.c (recursive_retrieve): If a finite maximum depth is
5914         specified, and we're are already at that depth, don't download the
5915         HTML file for parsing.
5916
5917 2000-03-01  Dan Harkless  <wget@harkless.org>
5918
5919         * ftp.c (ftp_loop_internal): Call new downloaded_file() function,
5920         even though we don't do conversion on HTML files retrieved via
5921         FTP, so _current_ usage of downloaded_file() makes this call unneeded. 
5922         (ftp_retrieve_list): Added a comment saying where we need to
5923         stat() a .orig file if FTP'd HTML file conversion is ever implemented.
5924         (ftp_retrieve_list): "Local file '%s' is more recent," is sometimes
5925         a lie -- reworded as "Server file no newer than local file '%s' --".
5926         
5927         * http.c (http_loop): Fixed a typo and clarified a comment.
5928         (http_loop): When -K and -N are specified together, compare size
5929         and timestamp of server file X against local file X.orig (if
5930         extant) rather than converted local file X.
5931         (http_loop): "Local file '%s' is more recent," is sometimes a lie
5932         -- reworded as "Server file no newer than local file '%s' --".
5933         (http_loop): Call new downloaded_file() function to prevent
5934         wrongful overwriting of .orig file when -N is specified.
5935         
5936         * url.c (convert_links): When -K specified, only rename X to
5937         X.orig if downloaded_file() returns TRUE.  Otherwise when we skip
5938         file X due to -N, we clobber an X.orig from a previous invocation.
5939         (convert_links): Call the failsafe xstrdup(), not the real strdup().
5940         (convert_links): Added a note asking anyone who understands how
5941         multiple URLs can correspond to a single file to comment it.
5942         (downloaded_file): Added this new function.
5943         
5944         * url.h (downloaded_file): Added prototype for this new function
5945         as well as its downloaded_file_t enum type.
5946
5947         * wget.h (boolean): Added this new typedef and TRUE and FALSE #defines.
5948
5949 2000-02-29  Dan Harkless  <wget@harkless.org>
5950
5951         * version.c: Upped version to developer-only "1.5.3+dev".
5952
5953 2000-02-18  Dan Harkless  <wget@harkless.org>
5954
5955         * init.c (backup_converted): Added this new option.
5956
5957         * main.c (-K / --backup-converted): Added this new option.
5958
5959         * options.h (backup_converted): Added this new option.
5960
5961         * url.c (convert_links): When backup_converted is specified, save
5962         file X as X.orig before converting.
5963
5964         * url.h (urlpos): Fixed typo -- said "Rekative" instead of "Relative".
5965
5966 1998-09-21  Hrvoje Niksic  <hniksic@srce.hr>
5967
5968         * version.c: Wget 1.5.3 is released.
5969
5970 1998-09-21  Hrvoje Niksic  <hniksic@srce.hr>
5971
5972         * host.c (ftp_getaddress): Don't warn when reverse-lookup of local 
5973         address doesn't yield FQDN.
5974
5975 1998-09-21  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
5976
5977         * cmpt.c (strerror): Fix declaration of sys_errlist.
5978
5979 1998-09-11  Hrvoje Niksic  <hniksic@srce.hr>
5980
5981         * main.c (main): Don't use an array subscript as the first
5982         argument to STRDUP_ALLOCA.
5983         From Kaveh R. Ghazi.
5984
5985 1998-09-11  Szakacsits Szabolcs  <szaka@sienet.hu>
5986
5987         * html.c (htmlfindurl): Download table background.
5988
5989 1998-09-11  Hans Grobler  <grobh@conde.ee.sun.ac.za>
5990
5991         * init.c (parse_line): Would free *com before allocating it.
5992         (parse_line): Would free com instead of *com.
5993
5994 1998-09-10  Howard Gayle  <howard@fjst.com>
5995
5996         * url.c (get_urls_html): Would drop the last character of the
5997         link.
5998
5999 1998-09-10  Hrvoje Niksic  <hniksic@srce.hr>
6000
6001         * http.c (http_loop): Don't print status code if quiet.
6002
6003 1998-09-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6004
6005         * log.c: Use <stdarg.h> only when __STDC__.
6006
6007 1998-09-10  Adam D. Moss  <adam@foxbox.org>
6008
6009         * html.c (htmlfindurl): Download <layer src=...>.
6010
6011 1998-09-10  Howard Gayle  <howard@fjst.com>
6012
6013         * ftp.c (ftp_retrieve_list): Don't update the time stamp of a file 
6014         not retrieved.
6015
6016 1998-06-27  Hrvoje Niksic  <hniksic@srce.hr>
6017
6018         * utils.c: Include <libc.h> on NeXT.
6019
6020 1998-06-26  Heinz Salzmann  <heinz.salzmann@intermetall.de>
6021
6022         * url.c (get_urls_html): Fix calculation of URL position.
6023
6024 1998-06-23  Hrvoje Niksic  <hniksic@srce.hr>
6025
6026         * version.c: Wget 1.5.2 is released.
6027
6028 1998-06-23  Dave Love  <d.love@dl.ac.uk>
6029
6030         * ftp.c, init.c, netrc.c: Include errno.h.
6031
6032         * http.c: Include errno.h and time header.
6033
6034         * Makefile.in (exext): Define.
6035         (install.bin, uninstall.bin): Use it.
6036
6037 1998-06-21  Hrvoje Niksic  <hniksic@srce.hr>
6038
6039         * http.c (http_loop): Don't attempt to compare local and remote
6040         sizes if the remote size is unknown.
6041
6042 1998-06-16  Hrvoje Niksic  <hniksic@srce.hr>
6043
6044         * url.c (get_urls_html): Use malloc() instead of alloca in the
6045         loop.
6046
6047 1998-06-13  Hrvoje Niksic  <hniksic@srce.hr>
6048
6049         * version.c: Wget 1.5.2-b4 is released.
6050
6051 1998-06-13  Hrvoje Niksic  <hniksic@srce.hr>
6052
6053         * url.c (get_urls_html): Ignore spaces before and after the URI.
6054
6055 1998-06-08  Wanderlei Antonio Cavassin  <cavassin@conectiva.com.br>
6056
6057         * ftp.c (getftp): Translate `done'.
6058
6059 1998-06-06  Hrvoje Niksic  <hniksic@srce.hr>
6060
6061         * version.c: Wget 1.5.2-b3 is released.
6062
6063 1998-06-06  Alexander Kourakos  <awk@bnt.com>
6064
6065         * init.c (cleanup): Close dfp, don't free it.
6066
6067 1998-06-06  Hrvoje Niksic  <hniksic@srce.hr>
6068
6069         * utils.c (make_directory): Twiddle.
6070
6071         * config.h.in: Added template for access().
6072
6073 1998-06-05  Mathieu Guillaume  <mat@cythere.com>
6074
6075         * html.c (htmlfindurl): Download <input src=...>
6076
6077 1998-06-03  Hrvoje Niksic  <hniksic@srce.hr>
6078
6079         * utils.c (file_exists_p): Use access() with two arguments.
6080
6081 1998-05-27  Martin Kraemer  <Martin.Kraemer@mch.sni.de>
6082
6083         * netrc.c (parse_netrc): Correct logic.
6084
6085 1998-05-27  Hrvoje Niksic  <hniksic@srce.hr>
6086
6087         * ftp.c (getftp): Added `break'; suggested by Lin Zhe Min
6088         <ljm@ljm.wownet.net>.
6089
6090 1998-05-24  Hrvoje Niksic  <hniksic@srce.hr>
6091
6092         * version.c: Wget 1.5.2-b2 is released.
6093
6094 1998-05-18  Juan Jose Rodriguez  <jcnsoft@jal1.telmex.net.mx>
6095
6096         * mswindows.h: Don't translate mkdir to _mkdir under Borland.
6097
6098 1998-05-17  Hrvoje Niksic  <hniksic@srce.hr>
6099
6100         * retr.c (elapsed_time): Return correct value when
6101         HAVE_GETTIMEOFDAY is undefined.
6102
6103 1998-05-13  Hrvoje Niksic  <hniksic@srce.hr>
6104
6105         * version.c: Wget 1.5.2-b1 is released.
6106
6107 1998-05-08  Hrvoje Niksic  <hniksic@srce.hr>
6108
6109         * getopt.c (_getopt_internal): Use exec_name instead of argv[0].
6110         (_getopt_internal): Don't translate `#if 0'-ed strings.
6111
6112 1998-05-06  Douglas E. Wegscheid  <wegscd@whirlpool.com>
6113
6114         * mswindows.c (ws_handler): Use fork_to_background().
6115
6116 1998-05-05  Hrvoje Niksic  <hniksic@srce.hr>
6117
6118         * version.c: Wget 1.5.1 is released.
6119
6120 1998-05-05  Hrvoje Niksic  <hniksic@srce.hr>
6121
6122         * http.c (parse_http_status_line): Avoid `minor' and `major'
6123         names.
6124
6125 1998-05-02  Hrvoje Niksic  <hniksic@srce.hr>
6126
6127         * utils.c (mkdirhier): Renamed to make_directory.
6128
6129 1998-05-01  Hrvoje Niksic  <hniksic@srce.hr>
6130
6131         * mswindows.c (fork_to_background): Define under Windows.
6132
6133         * utils.c (fork_to_background): New function.
6134
6135         * html.c (htmlfindurl): Removed rerdundant casts.
6136
6137 1998-05-01  Douglas E. Wegscheid  <wegscd@whirlpool.com>
6138
6139         * mswindows.c (ws_mypath): Cache the path.
6140
6141 1998-04-30  Douglas E. Wegscheid  <wegscd@whirlpool.com>
6142
6143         * ftp.h: Prefix enum ftype members with FT_.
6144
6145         * ftp-ls.c, ftp.c, html.h: Adjust accordingly.
6146
6147         * mswindows.h: Use stat under Borland, _stat under MSVC.
6148
6149 1998-04-28  Hrvoje Niksic  <hniksic@srce.hr>
6150
6151         * http.c (known_authentication_scheme_p): New function.
6152         (gethttp): Handle authorization more correctly.
6153
6154         * ftp-basic.h: Removed.
6155
6156         * cmpt.h: Removed.
6157
6158         * utils.c: Include <unistd.h> before <pwd.h>; needed under SunOS
6159         with gcc 2.8.
6160         (numdigit): Use `while' loop.
6161
6162         * http.c (create_authorization_line): Detect authentication
6163         schemes case-insensitively.
6164
6165         * http.c (extract_header_attr): Use strdupdelim().
6166         (digest_authentication_encode): Move declaration of local
6167         variables to smaller scope.
6168         (digest_authentication_encode): Reset REALM, OPAQUE and NONCE.
6169         (create_authorization_line): Detect authentication schemes
6170         case-insensitively.
6171
6172         * utils.c (touch): Constify.
6173
6174         * http.c (gethttp): Report a nicer error when no data is received.
6175
6176         * rbuf.h (RBUF_READCHAR): Ditto.
6177
6178         * ftp-basic.c (ftp_response): Use sizeof.
6179
6180 1998-04-27  Hrvoje Niksic  <hniksic@srce.hr>
6181
6182         * retr.c (print_percentage): EXPECTED is long, not int.
6183         (print_percentage): Use floating-point arithmetic to avoid
6184         overflow with large files' sizes multiplied with 100.
6185
6186 1998-04-27  Gregor Hoffleit  <flight@mathi.uni-heidelberg.de>
6187
6188         * config.h.in: Added pid_t stub.
6189
6190         * sysdep.h (S_ISREG): Moved here from mswindows.h (NeXT doesn't
6191         define it).
6192
6193 1998-04-20  Hrvoje Niksic  <hniksic@srce.hr>
6194
6195         * version.c: Wget 1.5.0 is released.
6196
6197 1998-04-18  Hrvoje Niksic  <hniksic@srce.hr>
6198
6199         * url.c (str_url): Ditto.
6200
6201         * ftp-basic.c (ftp_rest): Use new name.
6202
6203         * utils.c (long_to_string): Renamed from prnum().
6204
6205 1998-04-16  Hrvoje Niksic  <hniksic@srce.hr>
6206
6207         * version.c: Wget 1.5-b17 is released.
6208
6209 1998-04-08  Hrvoje Niksic  <hniksic@srce.hr>
6210
6211         * headers.c (header_get): New argument FLAGS.
6212
6213         * http.c (gethttp): If request is malformed, bail out of the
6214         header loop.
6215         (gethttp): Check for empty header *after* the status line checks.
6216         (gethttp): Disallow continuations for status line.
6217
6218 1998-04-08  Hrvoje Niksic  <hniksic@srce.hr>
6219
6220         * version.c: Wget 1.5-b16 is released.
6221
6222 1998-04-08  Hrvoje Niksic  <hniksic@srce.hr>
6223
6224         * init.c (commands): Renamed `always_rest' to `continue'.
6225
6226 1998-04-05  Hrvoje Niksic  <hniksic@srce.hr>
6227
6228         * all: Use it.
6229
6230         * log.c (logputs): New argument.
6231         (logvprintf): Ditto.
6232         (logprintf): Ditto.
6233
6234 1998-04-04  Hrvoje Niksic  <hniksic@srce.hr>
6235
6236         * http.c (http_atotm): Update comment.
6237
6238         * main.c (i18n_initialize): Set LC_MESSAGES, not LC_ALL.
6239
6240         * wget.h: Renamed ENABLED_NLS to HAVE_NLS.
6241
6242         * main.c (i18n_initialize): New function.
6243         (main): Use it.
6244
6245         * log.c: Include <unistd.h>.
6246
6247         * retr.c (show_progress): Cast alloca to char *.
6248
6249 1998-04-04  Hrvoje Niksic  <hniksic@srce.hr>
6250
6251         * version.c: Wget 1.5-b15 is released.
6252
6253 1998-04-04  Hrvoje Niksic  <hniksic@srce.hr>
6254
6255         * utils.h: Declare file_non_directory_p().
6256
6257 1998-04-03  Hrvoje Niksic  <hniksic@srce.hr>
6258
6259         * main.c (main): It's `tries', not `numtries' now.
6260
6261 1998-04-01  Hrvoje Niksic  <hniksic@srce.hr>
6262
6263         * init.c (getperms): Removed.
6264
6265 1998-04-01  Tim Charron  <tcharron@interlog.com>
6266
6267         * log.c (logvprintf): Don't use ARGS twice.
6268
6269 1998-04-01  John  <john@futuresguide.com>
6270
6271         * mswindows.c: Cleaned up.
6272
6273 1998-04-01  Hrvoje Niksic  <hniksic@srce.hr>
6274
6275         * version.c: Wget 1.5-b14 is released.
6276
6277 1998-04-01  Hrvoje Niksic  <hniksic@srce.hr>
6278
6279         * ftp-opie.c (STRLEN4): New macro.
6280         (btoe): Use it.
6281
6282 1998-04-01  Junio Hamano  <junio@twinsun.com>
6283
6284         * http.c: Document all the Digest functions.
6285
6286 1998-04-01  Hrvoje Niksic  <hniksic@srce.hr>
6287
6288         * utils.c (file_non_directory_p): Renamed from isfile().
6289
6290         * mswindows.h (S_ISREG): New macro, suggested by Tim Adam.
6291
6292 1998-03-31  Hrvoje Niksic  <hniksic@srce.hr>
6293
6294         * utils.c (mkdirhier): Use 0777 instead of opt.dirmode.
6295
6296         * init.c (cmd_spec_dotstyle): Use 48 dots per line for binary
6297         style.
6298         (cmd_permissions): Removed.
6299
6300         * config.h.in: Add template for WORDS_BIGENDIAN.
6301
6302 1998-03-31  Junio Hamano  <junio@twinsun.com>
6303
6304         * http.c (HEXD2asc): New macro.
6305         (dump_hash): Use it.
6306
6307 1998-03-31  Hrvoje Niksic  <hniksic@srce.hr>
6308
6309         * version.c: Wget 1.5-b13 is released.
6310
6311 1998-03-31  Hrvoje Niksic  <hniksic@srce.hr>
6312
6313         * main.c (main): Don't try to use `com'.
6314
6315 1998-03-30  Hrvoje Niksic  <hniksic@srce.hr>
6316
6317         * init.c (cmd_permissions): New function.
6318
6319 1998-03-30  Hrvoje Niksic  <hniksic@srce.hr>
6320
6321         * version.c: Wget 1.5-b12 is released.
6322
6323 1998-03-30  Hrvoje Niksic  <hniksic@srce.hr>
6324
6325         * init.c (commands): Renamed `numtries' to `tries'.
6326         (cmd_spec_debug): Removed.
6327         (home_dir): Under Windows, return `C:\' if HOME is undefined.
6328
6329 1998-03-29  Hrvoje Niksic  <hniksic@srce.hr>
6330
6331         * config.h.in: Define _XOPEN_SOURCE.
6332
6333         * init.c (check_user_specified_header): New function.
6334         (cmd_spec_header): Use it.
6335         (cmd_spec_useragent): New function.
6336
6337 1998-03-29  Hrvoje Niksic  <hniksic@srce.hr>
6338
6339         * version.c: Wget 1.5-b11 is released.
6340
6341 1998-03-28  Hrvoje Niksic  <hniksic@srce.hr>
6342
6343         * wget.h: Include <libintl.h> only if NLS is enabled.
6344
6345 1998-03-26  Hrvoje Niksic  <hniksic@srce.hr>
6346
6347         * options.h (struct options): Made `wait' a long.
6348         (struct options): Ditto for `timeout'.
6349
6350 1998-03-19  Hrvoje Niksic  <hniksic@srce.hr>
6351
6352         * utils.c (exists): Renamed to file_exists_p.
6353         (file_exists_p): Use access() if available.
6354
6355 1998-03-17  Hrvoje Niksic  <hniksic@srce.hr>
6356
6357         * utils.c (memfatal): Set save_log_p to 0 to avoid potential
6358         infloop.
6359
6360         * log.c: do_logging -> save_log_p.
6361
6362         * config.h.in: Added template for HAVE_VSNPRINTF.
6363
6364 1998-03-16  Hrvoje Niksic  <hniksic@srce.hr>
6365
6366         * init.c: Ditto.
6367
6368         * http.c: Protect declaration against non-ANSI compiler.
6369
6370         * log.c (logvprintf): Use vsnprintf() if available.
6371
6372         * getopt.c (main): Don't translate test stuff.
6373
6374 1998-03-16  Hrvoje Niksic  <hniksic@srce.hr>
6375
6376         * version.c: Wget 1.5-b10 is released.
6377
6378 1998-03-11  Hrvoje Niksic  <hniksic@srce.hr>
6379
6380         * ftp.c (getftp): Don't translate "CWD %s".
6381
6382         * wget.h (GCC_FORMAT_ATTR): Renamed from FORMAT_ATTR.
6383
6384 1998-03-07  Hrvoje Niksic  <hniksic@srce.hr>
6385
6386         * ftp-opie.c (btoe): Use memcpy() instead of strncat().
6387
6388         * log.c (logputs): New function.
6389         (logvprintf): Renamed from vlogmsg; use logputs().
6390
6391         * retr.c (show_progress): Print `[100%]' when the retrieval is
6392         finished.
6393
6394         * init.c (run_wgetrc): Use FILE, not PATH.
6395         (wgetrc_file_name): Ditto.
6396
6397 1998-03-07  Tim Adam  <tma@osa.com.au>
6398
6399         * recur.c (parse_robots): Correctly reset `entries' on empty
6400         disallow.
6401
6402 1998-03-07  Hrvoje Niksic  <hniksic@srce.hr>
6403
6404         * init.c (cmd_spec_debug): Use cmd_boolean().
6405
6406 1998-02-23  Hrvoje Niksic  <hniksic@srce.hr>
6407
6408         * http.c (gethttp): Create proxy-authorization correctly.
6409
6410 1998-02-22  Hrvoje Niksic  <hniksic@srce.hr>
6411
6412         * md5.c: Ditto.
6413
6414         * getopt.c: Use ANSI function definitions.
6415
6416         * ftp-opie.c: New file.
6417
6418         * options.h: Don't redefine EXTERN.
6419
6420         * init.c: Sort it correctly.
6421
6422 1998-02-22  Hrvoje Niksic  <hniksic@srce.hr>
6423
6424         * version.c: Wget 1.5-b9 is released.
6425
6426 1998-02-22  Hrvoje Niksic  <hniksic@srce.hr>
6427
6428         * recur.c (recursive_retrieve): Reset `first_time'.
6429
6430         * ftp.c (getftp): Added `default' clause to switches of uerr_t.
6431
6432         * rbuf.c (rbuf_peek): Simplified.
6433         (rbuf_flush): Use MINVAL.
6434
6435         * wget.h (MINVAL): Moved from url.h.
6436
6437         * rbuf.h (RBUF_FD): New macro.
6438
6439         * url.c (add_url): Add to the head of the list.
6440
6441         * ftp.c (ftp_retrieve_list): Set the permissions to downloaded
6442         file.
6443         (getftp): Set the default permissions to 0600.
6444
6445 1998-02-21  Hrvoje Niksic  <hniksic@srce.hr>
6446
6447         * url.c (get_urls_html): Ditto.
6448         (convert_links): Ditto.
6449
6450         * recur.c (parse_robots): Ditto.
6451
6452         * html.c (ftp_index): Ditto.
6453
6454         * ftp-ls.c (ftp_parse_unix_ls): Open file as binary.
6455
6456         * init.c (defaults): Initialize `opt' to zero via memset.
6457
6458         * http.c (digest_authentication_encode): goto considered harmful.
6459
6460 1998-02-19  Hrvoje Niksic  <hniksic@srce.hr>
6461
6462         * ftp.c (delelement): Simplify and fix leak.
6463
6464 1998-02-18  Hrvoje Niksic  <hniksic@srce.hr>
6465
6466         * http.c (dump_hash): Use HEXD2ASC instead of home-grown stuff.
6467
6468         * url.h (HEXD2ASC): Removed warning.
6469
6470         * init.c (comind): Use binary search.
6471         (commands): Reorganized.
6472         (setval): Ditto.
6473         (cmd_boolean): New function.
6474         (cmd_number): Ditto.
6475         (cmd_number_inf): Ditto.
6476         (cmd_string): Ditto.
6477         (cmd_vector): Ditto.
6478         (cmd_directory_vector): Ditto.
6479         (cmd_bytes): Ditto.
6480         (cmd_time): Ditto.
6481         (cmd_spec_debug): Ditto.
6482         (cmd_spec_dirmode): Ditto.
6483         (cmd_spec_dirstruct): Ditto.
6484         (cmd_spec_dotstyle): Ditto.
6485         (cmd_spec_header): Ditto.
6486         (cmd_spec_htmlify): Ditto.
6487         (cmd_spec_mirror): Ditto.
6488         (cmd_spec_outputdocument): Ditto.
6489         (cmd_spec_recursive): Ditto.
6490         (settime): Merged with cmd_time().
6491         (setbytes): Merged with cmd_bytes().
6492         (setonoff): Merged with cmd_boolean().
6493         (onoff): Ditto.
6494
6495 1998-02-17  Hrvoje Niksic  <hniksic@srce.hr>
6496
6497         * Makefile.in (distclean): Remove `config.h'.
6498
6499 1998-02-17  Hrvoje Niksic  <hniksic@srce.hr>
6500
6501         * version.c: Wget 1.5-b8 is released.
6502
6503 1998-02-17  Hrvoje Niksic  <hniksic@srce.hr>
6504
6505         * http.c (digest_authentication_encode): New function.
6506         (create_authorization_line): Use it.
6507         (dump_hash): New function.
6508         (digest_authentication_encode): Use it.
6509
6510         * fnmatch.c: Renamed from `mtch.c'.
6511
6512 1998-02-15  Karl Eichwalder  <ke@suse.de>
6513
6514         * main.c (main): Tag "Written by..." string as translatable.
6515
6516 1998-02-15  Hrvoje Niksic  <hniksic@srce.hr>
6517
6518         * wget.h (FREE_MAYBE): New macro.
6519
6520         * http.c (create_authorization_line): Don't use ANSI C string
6521         concatenation feature.
6522         (basic_authentication_encode): Use alloca() for temporary
6523         variables.
6524
6525         * recur.h: Ditto.
6526
6527         * http.c: Ditto.
6528
6529         * headers.h: Ditto.
6530
6531         * ftp-basic.c: Protect declaration against non-ANSI compiler.
6532
6533         * http.c (create_authorization_line): Cast `unsigned char *' to
6534         `char *' for sprintf, to shut up the noisy Digital Unix cc.
6535
6536 1998-02-15  Hrvoje Niksic  <hniksic@srce.hr>
6537
6538         * version.c: Wget 1.5-b7 is released.
6539
6540 1998-02-15  Hrvoje Niksic  <hniksic@srce.hr>
6541
6542         * cmpt.c (strstr): Synched with glibc-2.0.6.
6543
6544         * ftp-basic.c (calculate_skey_response): Ditto.
6545         (calculate_skey_response): Use alloca().
6546
6547         * http.c (create_authorization_line): Work with FSF's version of
6548         md5.c.
6549
6550         * md5.c: New file, from GNU libc.
6551
6552 1998-02-14  Hrvoje Niksic  <hniksic@srce.hr>
6553
6554         * url.h (URL_CLEANSE): Name the temporary variable more carefully.
6555
6556 1998-02-13  Hrvoje Niksic  <hniksic@srce.hr>
6557
6558         * http.c (basic_authentication_encode): New function, instead of
6559         the macro.
6560
6561 1998-02-13  Junio Hamano  <junio@twinsun.com>
6562
6563         * http.c: Add HTTP-DA support.
6564         * ftp-basic.c: Add Opie/S-key support.
6565         * config.h.in, Makefile.in: Add HTTP-DA and Opie/S-key support.
6566         * md5.c, md5.h: New files.
6567
6568 1998-02-13  Hrvoje Niksic  <hniksic@srce.hr>
6569
6570         * http.c (http_process_range): Renamed from hprocrange().
6571         (http_process_range): Parse the whole header.
6572
6573         * headers.c: New file.
6574         (header_process): New function.
6575         (header_get): Renamed from fetch_next_header.
6576
6577         * all: Include utils.h only where necessary.
6578
6579         * wget.h: Declare xmalloc(), xrealloc() and xstrdup() here.
6580
6581         * wget.h: Add provisions for dmalloc.
6582
6583 1998-02-12  Hrvoje Niksic  <hniksic@srce.hr>
6584
6585         * version.c: Wget 1.5-b6 is released.
6586
6587 1998-02-12  Hrvoje Niksic  <hniksic@srce.hr>
6588
6589         * ftp.c (ftp_loop): Determine `filename' more precisely.
6590
6591         * init.c (setval): Don't set `opt.quiet' if output-document is
6592         `-'.
6593
6594         * log.c (log_init): Print to STDERR instead of STDOUT.
6595         (vlogmsg): Use STDERR by default.
6596         (logflush): Ditto.
6597
6598 1998-02-11  Simon Josefsson  <jas@pdc.kth.se>
6599
6600         * host.c: Use addr_in again.
6601
6602 1998-02-08  Karl Eichwalder  <karl@suse.de>
6603
6604         * http.c (gethttp): Fixed typo.
6605
6606 1998-02-08  Hrvoje Niksic  <hniksic@srce.hr>
6607
6608         * version.c: Wget 1.5-b5 is released.
6609
6610 1998-02-08  Hrvoje Niksic  <hniksic@srce.hr>
6611
6612         * retr.c (show_progress): Use it.
6613
6614         * log.c (logflush): New function.
6615
6616         * wget.h: Utilize __attribute__ if on gcc.
6617
6618 1998-02-07  Hrvoje Niksic  <hniksic@srce.hr>
6619
6620         * http.c (base64_encode_line): New argument LENGTH.
6621         (BASIC_AUTHENTICATION_ENCODE): Use it.
6622         (BASIC_AUTHENTICATION_ENCODE): Take length of HEADER into account.
6623
6624         * main.c (main): Fixed fprintf() format mismatch.
6625
6626 1998-02-06  Hrvoje Niksic  <hniksic@srce.hr>
6627
6628         * version.c: Wget 1.5-b4 is released.
6629
6630 1998-02-03  Simon Josefsson  <jas@pdc.kth.se>
6631
6632         * host.c: use sockaddr_in instead of addr_in.
6633
6634 1998-02-04  Hrvoje Niksic  <hniksic@srce.hr>
6635
6636         * init.c (cleanup): Use it.
6637
6638         * recur.c (recursive_cleanup): New function.
6639
6640         * retr.c (retrieve_from_file): Ditto.
6641
6642         * main.c (main): Use it.
6643
6644         * recur.c (recursive_reset): New function.
6645
6646         * retr.c (retrieve_from_file): Ditto.
6647
6648         * main.c (main): Simplify call to recursive_retrieve().
6649
6650         * recur.c (recursive_retrieve): Removed FLAGS argument.
6651
6652         * http.c (gethttp): Changed call to iwrite().
6653
6654 1998-02-03  Hrvoje Niksic  <hniksic@srce.hr>
6655
6656         * url.c (get_urls_html): Ditto.
6657         (free_urlpos): Ditto.
6658         (mkstruct): Ditto.
6659         (construct): Ditto.
6660
6661         * retr.c (retrieve_url): Move declaration of local variables to
6662         smaller scope.
6663
6664         * url.c (urlproto): Use it.
6665         (parseurl): Ditto.
6666         (str_url): Ditto.
6667         (get_urls_html): Ditto.
6668
6669         * utils.h (ARRAY_SIZE): New macro.
6670
6671         * url.c (proto): Moved from url.h.
6672
6673         * url.h (URL_CLEANSE): Reformatted.
6674         (USE_PROXY_P): Renamed from USE_PROXY.
6675
6676         * ftp-basic.c: Adjust to the new interface of iwrite().
6677
6678         * ftp-basic.c (ftp_port): Use alloca().
6679
6680 1998-02-03  Hrvoje Niksic  <hniksic@srce.hr>
6681
6682         * version.c: Wget 1.5-b3 is released.
6683
6684         * host.c (ftp_getaddress): Don't print to stderr directly.
6685
6686         * init.c (setbytes): Support `g' for gigabytes.
6687         (cmdtype): New specification CTIME.
6688         (setval): Use it with settime().
6689         (commands): Use it for WAIT and TIMEOUT.
6690
6691 1998-02-02  Hrvoje Niksic  <hniksic@srce.hr>
6692
6693         * http.c (BASIC_AUTHENTICATION_ENCODE): New macro.
6694         (gethttp): Use it.
6695
6696         * utils.c (unique_name_1): Moved from url.c.
6697         (unique_name): Ditto.
6698
6699         * url.c (url_filename): Ditto.
6700
6701         * log.c (redirect_output): Changed call to unique_name().
6702
6703         * url.c (unique_name_1): Renamed from unique_name().
6704         (unique_name): Changed interface.
6705
6706         * init.c (enum cmdid): Moved from init.h.
6707         (cmdtype): Ditto.
6708         (struct cmd): Ditto.
6709
6710         * main.c (main): Use it.
6711         (main): Moved `--backups' to not have a short option.
6712
6713         * options.h (struct options): New member BACKGROUND.
6714
6715         * main.c (print_help): Rearranged.
6716         (main): New long options for -n* short options: --no-directories,
6717         --no-host-directories, --non-verbose, --no-host-lookup and
6718         --dont-remove-listing.
6719
6720 1998-02-01  Hrvoje Niksic  <hniksic@srce.hr>
6721
6722         * main.c (main): Use log_close().
6723
6724         * log.c: New variable LOGFP.
6725         (vlogmsg): Use it.
6726         (redirect_output): Don't open /dev/null; set LOGFP to stdin
6727         instead.
6728         (log_close): New function.
6729
6730         * options.h (struct options): Removed LFILE.
6731
6732         * log.c (log_enable): Removed.
6733
6734         * main.c (main): Use it.
6735
6736         * log.c (log_init): New function.
6737
6738         * url.c (get_urls_html): Removed needless assignment to BASE.
6739
6740         * host.c (add_hlist): Don't set CMP needlessly.
6741
6742         * utils.c (match_backwards): Ditto.
6743         (in_acclist): Ditto.
6744
6745         * url.c (findurl): Ditto.
6746
6747         * netrc.c (parse_netrc): Ditto.
6748
6749         * log.c (log_dump): Ditto.
6750
6751         * html.c (html_quote_string): Ditto.
6752
6753         * ftp-basic.c (ftp_request): Made static.
6754
6755         * connect.c: Made global variables static.
6756
6757         * url.c (construct): Ditto.
6758
6759         * init.c (init_path): Avoid assignment inside `if'-condition.
6760
6761         * ftp.c: Don't include in.h or winsock.h.
6762
6763         * ftp.c (ftp_loop): Use SZ.
6764
6765         * connect.c (bindport): Cast &addrlen to int *.
6766         (conaddr): Ditto.
6767
6768         * init.c (initialize): Don't use SYSTEM_WGETRC unconditionally.
6769
6770 1998-01-31  Hrvoje Niksic  <hniksic@srce.hr>
6771
6772         * ftp.c (getftp): Initialize opt.ftp_pass here.
6773         (ftp_retrieve_dirs): Use alloca().
6774
6775         * init.c (defaults): Don't initialize opt.ftp_pass.
6776
6777         * sysdep.h (S_ISLNK): Declare for OS/2; ditto for lstat.
6778         From Ivan F. Martinez <ivanfm@ecodigit.com.br>.
6779
6780 1998-01-31  Hrvoje Niksic  <hniksic@srce.hr>
6781
6782         * recur.c (parse_robots): Check for comments more correctly.
6783
6784         * host.c (ftp_getaddress): Use STRDUP_ALLOCA.
6785         (ftp_getaddress): Add diagnostics when reverse-lookup yields only
6786         hostname.
6787
6788 1998-01-31  Hrvoje Niksic  <hniksic@srce.hr>
6789
6790         * version.c: Wget 1.5-b2 is released.
6791
6792         * netrc.c (NETRC_FILE_NAME): Moved from netrc.h.
6793
6794         * utils.c (proclist): Pass FNM_PATHNAME to fnmatch().
6795
6796         * ftp-basic.c (ftp_pasv): Avoid unnecessary casting to unsigned
6797         char.
6798
6799         * log.c: Don't attempt to hide arguments from ansi2knr.
6800
6801         * cmpt.c: Synched strptime() and mktime() with glibc-2.0.6.
6802
6803         * ansi2knr.c: Use a later version, from fileutils-3.16l alpha.
6804
6805         * ftp.c (getftp): Ditto.
6806
6807         * http.c (gethttp): Use it.
6808
6809         * retr.c (get_contents): New argument EXPECTED; pass it to
6810         show_progress().
6811         (show_progress): New argument EXPECTED; use it to display
6812         percentages.
6813
6814         * init.c (setval): Ditto.
6815
6816         * http.c (gethttp): Ditto.
6817         (http_loop): Ditto.
6818
6819         * ftp.c (getftp): Ditto.
6820         (ftp_loop_internal): Ditto.
6821
6822         * ftp-ls.c (ftp_parse_unix_ls): Use abort() instead of assert(0).
6823
6824         * sysdep.h (CLOSE): Simplify; use DEBUGP.
6825
6826         * netrc.c (search_netrc): Use alloca().
6827
6828         * init.c (defaults): Initialize no_flush.
6829
6830         * log.c (vlogmsg): Don't flush if no_flush.
6831
6832         * options.h (struct options): New variable no_flush.
6833
6834         * main.c (main): Don't play games with buffering.
6835
6836         * log.c (vlogmsg): Flush the output after every message.
6837
6838 1998-01-31  Hrvoje Niksic  <hniksic@srce.hr>
6839
6840         * init.c (parse_line): Ditto.
6841
6842         * url.c (get_urls_html): Ditto.
6843
6844         * main.c (main): Don't cast to unsigned char.
6845
6846         * init.c (run_wgetrc): Don't cast to unsigned char.
6847         (parse_line): Accept char instead of unsigned char.
6848
6849         * html.c (htmlfindurl): Use char instead of unsigned char.
6850
6851         * all: Use them.
6852
6853         * sysdep.h: Add wrappers to ctype macros to make them
6854         eight-bit-clean:
6855
6856 1998-01-30  Hrvoje Niksic  <hniksic@srce.hr>
6857
6858         * html.c (htmlfindurl): Download <img lowsrc=...>
6859
6860         * main.c (main): Ignore SIGPIPE.
6861
6862         * connect.c (select_fd): New argument WRITEP.
6863         (iwrite): Call select_fd().
6864
6865 1997-02-27  Fila Kolodny <fila@ibi.com>
6866
6867         * ftp.c (ftp_retrieve_list): If retrieving symlink and the proper
6868         one already exists, just skip it.
6869
6870 1998-01-30  Hrvoje Niksic  <hniksic@srce.hr>
6871
6872         * http.c (gethttp): Cosmetic changes.
6873
6874         * http.c (check_end): Allow `+D...' instead of `GMT'.
6875         From Fabrizio Pollastri <pollastri@cstv.to.cnr.it>.
6876
6877         * url.c (process_ftp_type): New function.
6878         (parseurl): Use it.
6879
6880         * connect.c (iwrite): Allow writing in a few chunks.
6881         (bindport): Made SRV static, so addr can point to it.
6882         (select_fd): Removed HPUX kludge.
6883
6884         * host.c (free_hlist): Incorporated into clean_hosts().
6885
6886 1998-01-29  Hrvoje Niksic  <hniksic@srce.hr>
6887
6888         * host.c (hlist): Made static.
6889         (search_address): Cosmetic change.
6890
6891 1998-01-29  Hrvoje Niksic  <hniksic@srce.hr>
6892
6893         * version.c: Wget v1.5-b1 is released.
6894
6895         * http.c (hgetlen): Use sizeof() to get the header length.
6896         (hgetrange): Ditto.
6897         (hgettype): Ditto.
6898         (hgetlocation): Ditto.
6899         (hgetmodified): Ditto.
6900         (haccepts_none): Ditto.
6901
6902         * main.c (main): Updated `--version' and `--help' output, as per
6903         Francois Pinard's suggestions.
6904
6905         * main.c: Include locale.h; call setlocale(), bindtextdomain() and 
6906         textdomain().
6907
6908         * config.h.in: Define stubs for I18N3.
6909
6910         * wget.h: Include libintl.h.
6911
6912 1998-01-28  Hrvoje Niksic  <hniksic@srce.hr>
6913
6914         * url.c (mkstruct): Check for opt.cut_dirs.
6915         (mkstruct): alloca()-te more, xmalloc() less.
6916
6917         * utils.c (load_file): Check for ferror().
6918
6919         * url.c (get_urls_file): Close only the files we opened.
6920         (get_urls_html): Ditto.
6921         (count_slashes): New function.
6922
6923         * http.h: Removed.
6924
6925         * http.c (gethttp): Respect username and password provided by
6926         proxy URL.
6927         (base64_encode_line): Write into an existing buffer instead of
6928         malloc-ing a new one.
6929         (struct http_stat): Moved from http.h
6930
6931         * retr.c (retrieve_url): Free SUF.
6932
6933         * all: Removed lots of unnecessary .h dependencies.
6934
6935         * html.c (global_state): Made static.
6936
6937         * utils.h (ALLOCA_ARRAY): New macro.
6938
6939         * main.c (main): New option `--cut-dirs'.
6940
6941         * url.c (construct): Use alloca() for T.
6942
6943         * utils.c (mkdirhier): Use STRDUP_ALLOCA.
6944
6945         * host.c (_host_t): Moved from host.h.
6946         (struct host): Renamed from _host_t.
6947         (store_hostaddress): Use STRDUP_ALLOCA for INET_S.
6948         (realhost): Ditto.
6949
6950         * host.h: Don't include url.h.
6951
6952         * ftp.c (LIST_FILENAME): Moved from ftp.h.
6953
6954         * init.c (DEFAULT_FTP_ACCT): Moved from ftp.h.
6955
6956         * main.c (main): Enable log if the output goes to a TTY.
6957
6958         * connect.h: Removed unused constant `BACKLOG'.
6959
6960         * config.h.in: Check for isatty().
6961
6962         * Makefile.in (LINK): Use CFLAGS when linking.
6963
6964 1998-01-27  Hrvoje Niksic  <hniksic@srce.hr>
6965
6966         * mswindows.c (ws_hangup): Use redirect_output().
6967
6968         * main.c (redirect_output_signal): New function; use
6969         redirect_output().
6970
6971         * log.c (redirect_output): New function, based on hangup(), which
6972         is deleted.
6973
6974         * log.c (vlogmsg): New function.
6975
6976         * wget.h (DEBUGP): Use debug_logmsg().
6977
6978         * main.c (hangup): Use it.
6979
6980         * log.c (log_dump): New function.
6981
6982         * utils.h (DO_REALLOC): Use `long' for various sizes.
6983
6984         * http.c (hskip_lws): Use `while', for clarity.
6985         (HTTP_DYNAMIC_LINE_BUFFER): New constant.
6986         (fetch_next_header): Use it instead of DYNAMIC_LINE_BUFFER.
6987
6988         * ftp-basic.c (FTP_DYNAMIC_LINE_BUFFER): New constant.
6989         (ftp_response): Use it instead of DYNAMIC_LINE_BUFFER.
6990
6991         * utils.c (DYNAMIC_LINE_BUFFER): Moved from utils.c.
6992         (LEGIBLE_SEPARATOR): Ditto.
6993         (FILE_BUFFER_SIZE): Ditto.
6994
6995         * retr.c (BUFFER_SIZE): Moved from retr.h.
6996
6997         * log.c: New file.
6998         (logmsg): Moved from utils.c.
6999         (debug_logmsg): New function.
7000
7001         * mswindows.h: Include it here.
7002
7003         * init.c: Ditto.
7004
7005         * utils.c: Don't include <windows.h>.
7006
7007 1998-01-25  Hrvoje Niksic  <hniksic@srce.hr>
7008
7009         * host.c (ftp_getaddress): Ditto.
7010
7011         * main.c (main): Use it.
7012
7013         * utils.h (STRDUP_ALLOCA): New macro.
7014
7015         * init.c: Prepend `wget: ' to error messages printed on stderr.
7016
7017         * utils.c (mkdirhier): Renamed from mymkdir.
7018         (touch): Renamed from my_touch.
7019         (pwd_cuserid): Renamed from my_cuserid().
7020
7021 1998-01-24  Andy Eskilsson  <andy.eskilsson@telelogic.se>
7022
7023         * utils.c (accdir): Process wildcards.
7024         (proclist): New function.
7025         (accdir): Use it to avoid code repetition.
7026
7027 1998-01-24  Hrvoje Niksic  <hniksic@srce.hr>
7028
7029         * recur.c (parse_robots): Respect opt.useragent; use alloca().
7030
7031         * http.c (gethttp): Construct useragent accordingly.
7032
7033         * version.c: Changed version string to numbers-only.
7034
7035         * main.c (print_help): List all the options.
7036
7037         * mswindows.c (windows_main_junk): Initialize argv0 here.
7038
7039 1998-01-24  Karl Heuer  <kwzh@gnu.org>
7040
7041         * netrc.c (search_netrc): Initialize `l' only after processing
7042         netrc.
7043
7044         * main.c (main): Don't trap SIGHUP if it's being ignored.
7045
7046 1998-01-24  Hrvoje Niksic  <hniksic@srce.hr>
7047
7048         * all: Use logmsg().
7049
7050         * utils.c (time_str): Moved from retr.c.
7051         (logmsg): New function.
7052         (logmsg_noflush): Ditto.
7053
7054         * rbuf.c: New file, moved buf_* functions here.
7055
7056         * ftp.c (ftp_expected_bytes): Moved from ftp-basic.c.
7057
7058         * ftp-basic.c (ftp_rest): Use prnum().
7059
7060         * ftp-basic.c: Ditto.
7061
7062         * ftp.c: Use the new reading functions and macros.
7063
7064         * retr.c (buf_initialize): New function.
7065         (buf_initialized_p): Ditto.
7066         (buf_uninitialize): Ditto.
7067         (buf_fd): Ditto.
7068
7069         * http.c (fetch_next_header): Use the BUF_READCHAR macro for
7070         efficiency.
7071         (gethttp): Use alloca() where appropriate.
7072
7073         * retr.c (buf_readchar): Use it.
7074         (buf_peek): Use rstreams.
7075
7076         * retr.h (BUF_READCHAR): New macro.
7077
7078         * init.c (home_dir): Rewritten for clarity.
7079         (init_path): Ditto.
7080
7081         * mswindows.c (ws_backgnd): Made static.
7082         (read_registry): Ditto.
7083         (ws_cleanup): Ditto.
7084         (ws_handler): Ditto.
7085
7086 1998-01-23  Hrvoje Niksic  <hniksic@srce.hr>
7087
7088         * alloca.c: New file.
7089
7090         * Makefile.in (ALLOCA): Define.
7091
7092         * mswindows.c (ws_help): Constify.
7093         (ws_help): Use alloca.
7094
7095         * mswindows.c: Reformat.
7096
7097         * all: Added _(...) annotations for I18N snarfing and translation.
7098
7099         * host.c (ftp_getaddress): Nuke SYSINFO.
7100         (ftp_getaddress): Don't use getdomainname().
7101         (ftp_getaddress): Use uname(), where available.
7102
7103         * http.c (gethttp): Protect a stray fprintf().
7104
7105         * init.c (settime): New function.
7106         (setval): Treat WAIT specially, allowing suffixes like `m' for
7107         minutes, etc.
7108
7109 1998-01-21  Hrvoje Niksic  <hniksic@srce.hr>
7110
7111         * url.c (get_urls_html): Use alloca() for TEMP.
7112
7113 1998-01-21  Jordan Mendelson  <jordy@wserv.com>
7114
7115         * url.c (rotate_backups): New function.
7116
7117         * http.c (gethttp): Ditto.
7118
7119         * ftp.c (getftp): Rotate backups.
7120
7121 1997-12-18  Hrvoje Niksic  <hniksic@srce.hr>
7122
7123         * all: Renamed nmalloc(), nrealloc() and nstrdup() to xmalloc(),
7124         xrealloc() and xstrdup().  Use the new functions.
7125
7126         * url.c (decode_string): Made static.
7127         (has_proto): Ditto.
7128         (parse_dir): Ditto.
7129         (parse_uname): Ditto.
7130         (mkstruct): Ditto.
7131         (construct): Ditto.
7132         (construct_relative): Ditto.
7133
7134         * retr.c (show_progress): Made static.
7135
7136         * recur.c (robots_url): Made static.
7137         (retrieve_robots): Ditto.
7138         (parse_robots): Ditto.
7139         (robots_match): Ditto.
7140
7141         * main.h: Removed.
7142
7143         * main.c (printhelp): Made static.
7144         (hangup): Ditto.
7145
7146         * init.c (comind): Made static.
7147         (defaults): Ditto.
7148         (init_path): Ditto.
7149         (run_wgetrc): Ditto.
7150         (onoff): Ditto.
7151         (setonoff): Ditto.
7152         (setnum): Ditto.
7153         (myatoi): Ditto.
7154         (getperms): Ditto.
7155         (setbytes): Ditto.
7156
7157         * http.c (fetch_next_header): Made static.
7158         (hparsestatline): Ditto.
7159         (hskip_lws): Ditto.
7160         (hgetlen): Ditto.
7161         (hgetrange): Ditto.
7162         (hgettype): Ditto.
7163         (hgetlocation): Ditto.
7164         (hgetmodified): Ditto.
7165         (haccepts_none): Ditto.
7166         (gethttp): Ditto.
7167         (base64_encode_line): Ditto.
7168         (mktime_from_utc): Ditto.
7169         (http_atotm): Ditto.
7170
7171         * html.c (idmatch): Made static.
7172
7173         * host.c (search_host): Made static.
7174         (search_address): Ditto.
7175         (free_hlist): Ditto.
7176
7177         * ftp.c (getftp): Made static.
7178         (ftp_loop_internal): Ditto.
7179         (ftp_get_listing): Ditto.
7180         (ftp_retrieve_list): Ditto.
7181         (ftp_retrieve_dirs): Ditto.
7182         (ftp_retrieve_glob): Ditto.
7183         (freefileinfo): Ditto.
7184         (delelement): Ditto.
7185
7186         * ftp-ls.c (symperms): Made static.
7187         (ftp_parse_unix_ls): Ditto.
7188
7189         * connect.c (select_fd): Made static.
7190
7191         * utils.c (xmalloc): Renamed from nmalloc.
7192         (xrealloc): Renamed from nrealloc.
7193         (xstrdup): Renamed from nstrdup.
7194
7195         * getopt.c (exchange): Use alloca.
7196
7197         * mswindows.c (mycuserid): Use strncpy.
7198
7199         * New files mswindows.c, mswindows.h, sysdep.h.  winjunk.c,
7200         systhings.h, windecl.h and winjunk.h removed.
7201
7202         * mswindows.c (sleep): New function.
7203
7204         * utils.c: Include <windows.h> under Windows.
7205
7206 1997-06-12  Darko Budor  <dbudor@zesoi.fer.hr>
7207
7208         * url.h (URL_UNSAFE): Change default under Windows.
7209
7210         * retr.c (retrieve_from_file): Respect opt.delete_after.
7211
7212         * main.c (main): Call ws_help on Windows.
7213
7214         * winjunk.c (windows_main_junk): New function.
7215
7216         * main.c (main): Junk-process argv[0].
7217
7218         * http.c (mktime_from_utc): Return -1 if mktime failed.
7219
7220         * http.c (http_loop): Ditto.
7221
7222         * ftp.c (ftp_loop_internal): Change title on Windows when using a
7223         new URL.
7224
7225         * winjunk.c (getdomainname): Lots of functions.
7226
7227 1997-06-12  Hrvoje Niksic  <hniksic@srce.hr>
7228
7229         * cmpt.c (strptime_internal): Handle years more correctly for
7230         `%y'.
7231
7232 1997-06-09  Mike Thomas <mthomas@reality.ctron.com>
7233
7234         * http.c (gethttp): Allocate enough space for
7235         `Proxy-Authorization' header.
7236
7237 1997-05-10  Hrvoje Niksic  <hniksic@srce.hr>
7238
7239         * version.c: Wget/1.4.5 is released.
7240
7241 1997-05-10  Hrvoje Niksic  <hniksic@srce.hr>
7242
7243         * retr.c (get_contents): Check return value of fwrite more
7244         carefully.
7245
7246 1997-03-30  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
7247
7248         * cmpt.c (strptime_internal) [case 'Y']: Always subtract 1900 from
7249         year, regardless of century.
7250
7251 1997-03-30  Hrvoje Niksic  <hniksic@srce.hr>
7252
7253         * utils.c (isfile): Use `lstat' instead of `stat'.
7254
7255 1997-03-29  Hrvoje Niksic  <hniksic@srce.hr>
7256
7257         * utils.c (numdigit): Use explicit test.
7258
7259 1997-03-21  Hrvoje Niksic  <hniksic@srce.hr>
7260
7261         * http.c (http_loop): Always use `url_filename' to get u->local.
7262
7263 1997-03-20  Hrvoje Niksic  <hniksic@srce.hr>
7264
7265         * url.c: Recognize https.
7266
7267 1997-03-13  Hrvoje Niksic  <hniksic@srce.hr>
7268
7269         * recur.c (recursive_retrieve): Lowercase just the host name.
7270
7271 1997-03-09  Hrvoje Niksic  <hniksic@srce.hr>
7272
7273         * url.c (get_urls_file): Use the correct test.
7274         (get_urls_html): Ditto.
7275
7276 1997-03-07  Hrvoje Niksic  <hniksic@srce.hr>
7277
7278         * connect.c: Reverted addrlen to int.
7279
7280         * init.c (parse_line): Check for -1 instead of NONE.
7281
7282         * version.c: Changed version to 1.4.5.
7283
7284 1997-02-17  Hrvoje Niksic  <hniksic@srce.hr>
7285
7286         * init.c: New option netrc.
7287         (initialize): Don't parse .netrc.
7288
7289         * cmpt.c (recursive): Return rp.
7290         (strptime_internal): Match the long strings first, the abbreviated
7291         second.
7292
7293 1997-02-16  Hrvoje Niksic  <hniksic@srce.hr>
7294
7295         * http.c (check_end): New function.
7296         (http_atotm): Use it.
7297  
7298 1997-02-13  gilles Cedoc  <gilles@cedocar.fr>
7299
7300         * http.c (gethttp): Use them.
7301
7302         * init.c: New options proxy_user and proxy_passwd.
7303
7304 1997-02-14  Hrvoje Niksic  <hniksic@srce.hr>
7305
7306         * ftp.c (ftp_retrieve_list): Create links even if not relative.
7307
7308 1997-02-10  Hrvoje Niksic  <hniksic@srce.hr>
7309
7310         * recur.c (recursive_retrieve): Lowercase the host name, if the
7311         URL is not "optimized".
7312
7313         * host.c (realhost): Return l->hostname, even if it matches with
7314         host.
7315
7316 1997-02-10  Marin Purgar  <pmc@asgard.hr>
7317
7318         * connect.c: Make addrlen size_t instead of int.
7319         (conaddr): Ditto.
7320
7321 1997-02-09  Gregor Hoffleit  <flight@mathi.uni-heidelberg.DE>
7322
7323         * systhings.h: Define S_ISLNK on NeXT too.
7324
7325 1997-02-09  Hrvoje Niksic  <hniksic@srce.hr>
7326
7327         * version.c: Released 1.4.3.
7328
7329         * url.c: Futher update to list of protostrings.
7330         (skip_proto): Skip `//' correctly for FTP and HTTP.
7331
7332         * url.c (get_urls_html): Handle bogus `http:' things a little
7333         different.
7334
7335         * main.c (main): Removed `follow-ftp' from `f'.
7336         (main): Dumped the `prefix-files' and `file-prefix' options and
7337         features; old and bogus.
7338         (main): Exit on failed setval() in `-e'.
7339
7340         * http.c (fetch_next_header): Use it to detect header continuation
7341         correctly.
7342
7343         * retr.c (buf_peek): New function.
7344
7345 1997-02-08  Hrvoje Niksic  <hniksic@srce.hr>
7346
7347         * wget.h: Include time.h and stuff.
7348
7349 1997-02-08  Roger Beeman  <beeman@cisco.com>
7350
7351         * ftp.c: Include <time.h>
7352
7353 1997-02-07  Hrvoje Niksic  <hniksic@srce.hr>
7354
7355         * url.c (findurl): Would read over buffer limits.
7356
7357 1997-02-06  Hrvoje Niksic  <hniksic@srce.hr>
7358
7359         * ftp-ls.c (ftp_parse_unix_ls): Allow spaces in file names.
7360
7361 1997-02-05  Hrvoje Niksic  <hniksic@srce.hr>
7362
7363         * http.c (http_atotm): Initialize tm.is_dst.
7364
7365 1997-02-02  Hrvoje Niksic  <hniksic@srce.hr>
7366
7367         * http.c (gethttp): Don't print the number of retrieved headers.
7368
7369         * main.c (main): New option `--no-clobber', alias for `-nc'.
7370
7371         * url.c: Recognize `https://'.
7372
7373 1997-02-01  Hrvoje Niksic  <hniksic@srce.hr>
7374
7375         * host.c (herrmsg): Don't use h_errno.
7376
7377 1997-01-30  Hrvoje Niksic  <hniksic@srce.hr>
7378
7379         * host.c (accept_domain): Use it.
7380
7381         * main.c (main): New option `--exclude-domains'.
7382
7383         * retr.c (retrieve_url): Use it.
7384         (retrieve_url): Bail out when an URL is redirecting to itself.
7385
7386         * url.c (url_equal): New function.
7387
7388 1997-01-29  Hrvoje Niksic  <hniksic@srce.hr>
7389
7390         * connect.c: Include arpa/inet.h instead of arpa/nameser.h.
7391
7392         * http.c (mk_utc_time): New function.
7393         (http_atotm): Use it; handle time zones correctly.
7394
7395 1997-01-28  Hrvoje Niksic  <hniksic@srce.hr>
7396
7397         * http.c: Ditto.
7398
7399         * ftp-basic.c: Use it instead of WRITE.
7400
7401         * connect.c (iwrite): New function.
7402
7403 1997-01-27  Hrvoje Niksic  <hniksic@srce.hr>
7404
7405         * cmpt.c (mktime): New function.
7406
7407         * netrc.c: Include <sys/types.h>.
7408
7409         * main.c (main): Wouldn't recognize --spider.
7410
7411         * retr.c (rate): Use `B', `KB' and `MB'.
7412         (reset_timer,elapsed_time): Moved from utils.c.
7413
7414         * ftp.c (ftp_retrieve_list): Ditto.
7415
7416         * http.c (http_loop): Don't touch the file if opt.dfp.
7417
7418 1997-01-24  Hrvoje Niksic  <hniksic@srce.hr>
7419
7420         * cmpt.c: New file.
7421
7422         * ftp.c (ftp_retrieve_glob): New argument semantics.
7423         (ftp_retrieve_dirs): Use it.
7424         (ftp_loop): Ditto.
7425
7426         * html.c (htmlfindurl): Recognize `'' as the quote char.
7427
7428 1997-01-23  Hrvoje Niksic  <hniksic@srce.hr>
7429
7430         * ftp.c (ftp_loop_internal): Use it.
7431
7432         * utils.c (remove_link): New function.
7433
7434 1997-01-22  Hrvoje Niksic  <hniksic@srce.hr>
7435
7436         * retr.c (retrieve_url): Require STRICT redirection URL.
7437
7438         * url.c (parseurl): New argument STRICT.
7439
7440         * http.c (hparsestatline): Be a little-bit less strict about
7441         status line format.
7442
7443 1997-01-21  Hrvoje Niksic  <hniksic@srce.hr>
7444
7445         * http.c (gethttp): Use it.
7446
7447         * main.c (main): Don't use '<digit>' as options.
7448
7449         * init.c: New option ignore_length.
7450
7451         * http.c (gethttp): Ditto.
7452         (http_loop): Check for redirection without Location:.
7453         (gethttp): Don't print Length unless RETROKF.
7454
7455         * ftp.c (getftp): Use it.
7456
7457         * url.c (mkalldirs): New function.
7458
7459         * utils.c (mymkdir): Don't check for existing non-directory.
7460
7461         * url.c (mkstruct): Don't create the directory.
7462
7463 1997-01-20  Hrvoje Niksic  <hniksic@srce.hr>
7464
7465         * init.c (setval): Removed NO_RECURSION checks.
7466
7467 1997-01-19  Hrvoje Niksic  <hniksic@srce.hr>
7468
7469         * version.c: "Released" 1.4.3-pre2.
7470
7471         * recur.c (recursive_retrieve): Bypass host checking only if URL
7472         is ftp AND parent URL is not ftp.
7473
7474         * ftp-basic.c (ftp_request): Print out Turtle Power.
7475
7476         * ftp.c (ftp_loop): Call ftp_retrieve_glob with 0 if there's no
7477         wildcard.
7478         (ftp_retrieve_glob): Call ftp_loop_internal even on empty list, if
7479         not glob.
7480
7481         * http.c (gethttp): Be a little bit smarter about status codes.
7482
7483         * recur.c (recursive_retrieve): Always reset opt.recursive when
7484         dealing with FTP.
7485
7486 1997-01-18  Hrvoje Niksic  <hniksic@srce.hr>
7487
7488         * retr.c (retrieve_url): New variable location_changed; use it for
7489         tests instead of mynewloc.
7490         (retrieve_url): Allow heuristic adding of html.
7491
7492         * url.c (url_filename): Don't use the `%' in Windows file names.
7493
7494         * http.c (http_loop): Always time-stamp the local file.
7495
7496         * http.c (http_loop): Ditto.
7497
7498         * ftp.c (ftp_retrieve_list): Use it.
7499
7500         * utils.c (my_touch): New function.
7501
7502         * ftp.c (ftp_retrieve_list): Use #ifdef HAVE_STRUCT_UTIMBUF
7503         instead of #ifndef NeXT.
7504
7505         * utils.c (strptime): New version, by Ulrich Drepper.
7506
7507 1997-01-17  Hrvoje Niksic  <hniksic@srce.hr>
7508
7509         * http.c (haccepts_none): Renamed from `haccepts_bytes'.
7510         (gethttp): If haccepts_none(), disable ACCEPTRANGES.
7511         (http_loop): Would remove ACCEPTRANGES.
7512
7513         * ftp.c (getftp): Call ftp_list with NULL.
7514
7515 1997-01-15  Hrvoje Niksic  <hniksic@srce.hr>
7516
7517         * html.c (ftp_index): Don't print minutes and seconds if we don't
7518         know them; beautify the output.
7519
7520         * ftp.c (getftp): Don't close the socket on FTPNSFOD.
7521
7522 1997-01-14  Hrvoje Niksic  <hniksic@srce.hr>
7523
7524         * utils.c (strptime): New function.
7525         (strptime): Don't use get_alt_number.
7526         (strptime): Don't use locale.
7527         (match_string): Made it a function.
7528
7529 1997-01-12  Hrvoje Niksic  <hniksic@srce.hr>
7530
7531         * http.c (http_atotm): New function.
7532         (http_loop): Use it.
7533
7534         * atotm.c: Removed from the distribution.
7535
7536         * http.c (base64_encode_line): Rewrite.
7537
7538 1997-01-09  Hrvoje Niksic  <hniksic@srce.hr>
7539
7540         * ftp.c (getftp): Use ftp_expected_bytes; print size.
7541
7542         * ftp-basic.c (ftp_response): Use ftp_last_respline.
7543         (ftp_expected_bytes): New function.
7544
7545         * ftp.c (getftp): Print the unauthoritative file length.
7546
7547         * ftp-ls.c: Renamed from ftp-unix.c.
7548         (ftp_parse_ls): Moved from ftp.c.
7549         (ftp_parse_unix_ls): Recognize seconds in time spec.
7550         (ftp_parse_unix_ls): Recognize year-less dates of the previous
7551         year.
7552
7553 1997-01-08  Hrvoje Niksic  <hniksic@srce.hr>
7554
7555         * ftp-basic.c: Don't declare errno if #defined.
7556
7557         * host.c (ftp_getaddress): Check for sysinfo legally.
7558
7559 1997-01-08  Darko Budor  <dbudor@diana.zems.fer.hr>
7560
7561         * connect.c (iread): Use READ.
7562
7563 1996-12-23  Hrvoje Niksic  <hniksic@srce.hr>
7564
7565         * url.c: Recognize finger, rlogin, tn3270, mid and cid as valid
7566         schemes.
7567
7568 1996-12-22  Hrvoje Niksic  <hniksic@srce.hr>
7569
7570         * host.c (ftp_getaddress): Allow `.' in hostname.
7571
7572 1996-12-26  Darko Budor <dbudor@zems.fer.hr>
7573
7574         * wget.h: READ and WRITE macros for use instead of read and write
7575         on sockets, grep READ *.c, grep WRITE *.c
7576
7577         * wsstartup.c: new file - startup for winsock
7578
7579         * wsstartup.h: new file
7580
7581         * win32decl.h: new file - fixup for <errno.h> and winsock trouble
7582
7583         * configure.bat: Configure utility for MSVC
7584
7585         * src/Makefile.ms,config.h.ms: new files for use with MSVC 4.x
7586
7587 1996-12-22  Hrvoje Niksic  <hniksic@srce.hr>
7588
7589         * version.c: Released 1.4.3-pre.
7590
7591         * utils.c (prnum): Accept long.
7592         (legible): Use prnum().
7593
7594         * connect.c (make_connection): Accept port as short.
7595         (bindport): Ditto.
7596
7597         * http.c (gethttp): Use search_netrc.
7598
7599 1996-12-21  Hrvoje Niksic  <hniksic@srce.hr>
7600
7601         * ftp.c (getftp): Use search_netrc.
7602
7603         * netrc.c (free_netrc): New function.
7604
7605         * init.c (home_dir): New function.
7606
7607         * url.c (convert_links): Allow REL2ABS changes.
7608
7609 1996-12-21  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>
7610
7611         * netrc.c: New file.
7612         (parse_netrc, maybe_add_to_list): New functions.
7613
7614 1996-12-17  Hrvoje Niksic  <hniksic@srce.hr>
7615
7616         * retr.c (retrieve_url): Reset opt.recursion before calling
7617         ftp_loop if it is reached through newloc.
7618
7619         * init.c (run_wgetrc): Print the wgetrc path too, when reporting
7620         error; don't use "Syntax error", since we don't know if it is
7621         really a syntax error.
7622
7623 1996-12-16  Hrvoje Niksic  <hniksic@srce.hr>
7624
7625         * utils.c (acceptable): Extract the filename part of the path.
7626
7627         * recur.c (recursive_retrieve): Call acceptable() with the right
7628         argument; would bug out on wildcards.
7629
7630         * init.c (parse_line): Likewise.
7631
7632         * html.c (htmlfindurl): Cast to char * when calling stuff.
7633
7634 1996-12-15  Hrvoje Niksic  <hniksic@srce.hr>
7635
7636         * ftp.c (getftp): Use ftp_pasv.
7637
7638         * ftp-basic.c (ftp_request): Accept NULL value.
7639         (ftp_pasv): New function.
7640
7641         * options.h (struct options): Add passive FTP option.
7642
7643 1996-12-15  Hrvoje Niksic  <hniksic@srce.hr>
7644
7645         * url.c (parseurl): Debug output.
7646
7647         * utils.c (path_simplify): New one, adapted from bash's
7648         canonicalize_pathname().
7649
7650 1996-12-14  Hrvoje Niksic  <hniksic@srce.hr>
7651
7652         * ftp.c (getftp): Don't discard the buffer.
7653
7654         * retr.c (get_contents): New parameter nobuf.
7655
7656 1996-12-13  Shawn McHorse  <riffraff@txdirect.net>
7657
7658         * html.c (htmlfindurl): Recognize <meta contents="d; URL=...".
7659
7660         * init.c (setval): Strip the trailing slashes on CVECDIR.
7661
7662 1996-12-13  Hrvoje Niksic  <hniksic@srce.hr>
7663
7664         * init.c: Make excludes and includes under CVECDIR instead of
7665         CVEC.
7666
7667 1996-12-13  Shawn McHorse  <riffraff@txdirect.net>
7668
7669         * url.c (get_urls_html): Skip "http:".
7670
7671 1996-12-13  Hrvoje Niksic  <hniksic@srce.hr>
7672
7673         * utils.c (strcasecmp): From glibc.
7674         (strncasecmp): Also.
7675         (strstr): Also.
7676
7677         * url.c: Added javascript: to the list of URLs prefixes.
7678
7679 1996-12-12  Shawn McHorse  <riffraff@txdirect.net>
7680
7681         * recur.c (retrieve_robots): Print the warning message only if
7682         verbose.
7683
7684 1996-12-12  Gregor Hoffleit  <flight@mathi.uni-heidelberg.DE>
7685
7686         * ftp.c (ftp_retrieve_list): Use NeXT old utime interface.
7687
7688 1996-12-12  Hrvoje Niksic  <hniksic@srce.hr>
7689
7690         * systhings.h: New file.
7691
7692         * ../configure.in: Check for utime.h
7693
7694         * ftp.c: Check whether we have unistd.h.
7695
7696 1996-11-27  Hrvoje Niksic  <hniksic@srce.hr>
7697
7698         * recur.c (recursive_retrieve): Send the canonical URL as referer.
7699         (recursive_retrieve): Call get_urls_html with the canonical URL.
7700
7701 1996-12-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7702
7703         * (configure.in, config.h.in, src/Makefile.in, src/*.[ch]): Add
7704         ansi2knr support for compilers which don't support ANSI style
7705         function prototypes and signatures.
7706
7707         * (aclocal.m4, src/ansi2knr.c, src/ansi2knr.1): New files.
7708
7709 1996-11-26  Hrvoje Niksic  <hniksic@srce.hr>
7710
7711         * url.c: Use it; Recognize paths ending with "." and ".." as
7712         directories.
7713         (url_filename): Append .n whenever file exists and could be a
7714         directory.
7715
7716         * url.h (ISDDOT): New macro.
7717
7718         * init.c (parse_line): Use unsigned char.
7719
7720         * url.c (get_urls_html): Cast to unsigned char * when calling
7721         htmlfindurl.
7722
7723         * html.c (htmlfindurl): Use unsigned char.
7724
7725         * version.c: Changed version to 1.4.3.
7726
7727 1996-11-25  Hrvoje Niksic  <hniksic@srce.hr>
7728
7729         * version.c: Released 1.4.2.
7730
7731         * ftp.c (getftp): Simplified assertion.
7732         (ftp_loop_internal): Remove symlink before downloading.
7733         (ftp_retrieve_list): Unlink the symlink name before attempting to
7734         create a symlink!
7735
7736         * options.h (struct options): Renamed print_server_response to
7737         server_response.
7738
7739         * ftp.c (rel_constr): Removed.
7740         (ftp_retrieve_list): Don't use it.
7741         (ftp_retrieve_list): Use opt.retr_symlinks.
7742
7743 1996-11-24  Hrvoje Niksic  <hniksic@srce.hr>
7744
7745         * main.c (main): New option retr_symlinks.
7746
7747         * url.c (convert_links): Print verbose message.
7748
7749 1996-11-24  Hrvoje Niksic  <hniksic@srce.hr>
7750
7751         * http.c (http_loop): Reset newloc in the beginning of function;
7752         would cause FMR in retrieve_url.
7753
7754 1996-11-23  Hrvoje Niksic  <hniksic@srce.hr>
7755
7756         * recur.c (convert_all_links): Find the URL of each HTML document,
7757         and feed it to get_urls_html; would bug out.
7758         (convert_all_links): Check for l2 instead of dl; removed dl.
7759
7760         * url.c (convert_links): Don't refer to freed newname.
7761
7762         * recur.c (recursive_retrieve): Add this_url to urls_downloaded.
7763
7764         * main.c (main): Print the OS_TYPE in the debug output, too.
7765
7766         * recur.c (recursive_retrieve): Check for opt.delete_after.
7767
7768         * main.c (main): New option delete-after.
7769
7770         * init.c (setval): Cleaned up.
7771
7772 1996-11-21  Hrvoje Niksic  <hniksic@srce.hr>
7773
7774         * Makefile.in (wget): Make `wget' the default target.
7775
7776         * ftp.c (ftp_loop_internal): Move noclobber checking out of the
7777         loop.
7778         (ftp_retrieve_list): Warn about non-matching sizes.
7779
7780         * http.c (http_loop): Made -nc non-dependent on opt.recursive.
7781
7782         * init.c (setnum): Renamed from setnuminf; New argument flags.
7783         (setval): Use it.
7784
7785         * main.c (main): Sorted the options.
7786         (main): New option --wait.
7787
7788 1996-11-21  Shawn McHorse  <riffraff@txdirect.net>
7789
7790         * html.c (htmlfindurl): Reset s->in_quote after getting out of
7791         quotes.
7792
7793 1996-11-20  Hrvoje Niksic  <hniksic@srce.hr>
7794
7795         * version.c: Changed version to 1.4.2.
7796
7797 1996-11-20  Hrvoje Niksic  <hniksic@srce.hr>
7798
7799         * version.c: Released 1.4.1.
7800
7801         * html.c (html_quote_string): New function.
7802         (ftp_index): Use it.
7803         (htmlfindurl): A more gentle ending debug message.
7804
7805         * ftp.c (ftp_loop): Check for opt.htmlify.
7806
7807         * init.c: New command htmlify.
7808
7809         * ftp.c (getftp): Nicer error messages, with `'-encapsulated
7810         strings.
7811         (ftp_loop): Print size of index.html.
7812
7813         * init.c (setval): Implement "styles".
7814
7815         * main.c (main): New option dotstyle.
7816
7817 1996-11-19  Hrvoje Niksic  <hniksic@srce.hr>
7818
7819         * ftp.c (getftp): Close the master socket in case of errors, after
7820         bindport().
7821
7822         * connect.c (bindport): Initialize msock to -1.
7823
7824         * ftp.c (getftp): Initialize dtsock to -1.
7825
7826         * connect.c (closeport): Don't close sock if sock == -1.
7827
7828 1996-11-18  Hrvoje Niksic  <hniksic@srce.hr>
7829
7830         * init.c (setnuminf): Nuked default value -- just leave unchanged.
7831         (setval): Don't send default values.
7832         (defaults): Use DEFAULT_TIMEOUT -- aaargh.
7833
7834         * options.h (struct options): Use long for dot_bytes.
7835
7836         * init.c (setquota): Renamed to setbytes.
7837         (setval): Use setbytes on DOTBYTES.
7838
7839 1996-11-17  Hrvoje Niksic  <hniksic@srce.hr>
7840
7841         * ftp.c (getftp): Initialize con->dltime.
7842
7843         * recur.c (recursive_retrieve): Use same_host instead of
7844         try_robots; simply load robots_txt whenever the host is changed.
7845         (recursive_retrieve): Free forbidden before calling parse_robots.
7846
7847 1996-11-16  Hrvoje Niksic  <hniksic@srce.hr>
7848
7849         * retr.c (show_progress): Use them.
7850
7851         * options.h (struct options): New options dot_bytes, dots_on_line
7852         and dot_spacing.
7853
7854 1996-11-16  Mark Boyns  <boyns@sdsu.edu>
7855
7856         * recur.c (recursive_retrieve): Retrieve directories regardless of
7857         acc/rej rules; check for empty u->file.
7858
7859 1996-11-14  Hrvoje Niksic  <hniksic@srce.hr>
7860
7861         * init.c (setval): Use it.
7862
7863         * utils.c (merge_vecs): New function.
7864
7865         * init.c (setval): Reset the list-type functions when encountering
7866         "".
7867
7868 1996-11-14  Shawn McHorse  <riffraff@txdirect.net>
7869
7870         * recur.c (recursive_retrieve): Use base_url instead of this_url
7871         for no_parent.
7872
7873 1996-11-14  Shawn McHorse  <riffraff@txdirect.net>
7874
7875         * html.c (htmlfindurl): Reset s->in_quote after exiting the quote.
7876
7877 1996-11-13  Hrvoje Niksic  <hniksic@srce.hr>
7878
7879         * utils.c (sepstring): Rewrote; don't use strtok.
7880
7881         * recur.c (recursive_retrieve): Enter assorted this_url to slist
7882         when running the first time.
7883         (retrieve_robots): Warn to ignore errors when robots are loaded.
7884
7885         * utils.c (load_file): Moved from url.c.
7886
7887         * http.c: Made static variables const too in h* functions.
7888
7889         * main.c (main): Renamed --continue-ftp to --continue.
7890
7891         * recur.c (recursive_retrieve): Use it.
7892
7893         * utils.c (frontcmp): New function.
7894
7895         * url.c (accdir): New function.
7896
7897         * html.c (htmlfindurl): Recognize <area href=...>.
7898
7899         * ftp.c (ftp_retrieve_dirs): Implemented opt.includes.
7900
7901         * init.c (setval): Free the existing opt.excludes and
7902         opt.includes, if available.
7903
7904         * main.c (main): New option -I.
7905
7906 1996-11-12  Hrvoje Niksic  <hniksic@srce.hr>
7907
7908         * ftp.c (ftp_retrieve_glob): Do not weed out directories.
7909
7910         * version.c: Changed version to 1.4.1.
7911
7912 1996-11-11  Hrvoje Niksic  <hniksic@srce.hr>
7913
7914         * version.c: Released 1.4.0.
7915
7916 1996-11-10  Hrvoje Niksic  <hniksic@srce.hr>
7917
7918         * main.c (main): Free com and val after parse_line.
7919         (printhelp): Reorder the listing.
7920
7921         * http.c: More robust header parsing.
7922
7923         * http.c: Allow any number of spaces, or no spaces, precede ':'.
7924         (hskip_lws): New function.
7925         (haccepts_bytes): New function.
7926         (gethttp): Use it.
7927
7928         * init.c (setval): Check header sanity.
7929         (setval): Allow resetting of headers.
7930
7931 1996-11-10  Hrvoje Niksic  <hniksic@srce.hr>
7932
7933         * http.c (http_loop): Don't use has_wildcards.
7934
7935         * http.c (gethttp): Free all_headers -- would leak.
7936
7937         * recur.c (recursive_retrieve): Initialize depth to 1 instead of
7938         0 -- this fixes a long-standing bug in -rl.
7939
7940 1996-11-09  Hrvoje Niksic  <hniksic@srce.hr>
7941
7942         * ftp.c: Use -1 as "impossible" value for con->fd.
7943
7944         * url.h (URL_SEPARATOR): Don't treat `*' and `+' as separators.
7945
7946         * init.c (parse_line): Use isalpha.
7947
7948         * ftp-unix.c: Use HAVE_UNISTD_H.
7949
7950         * mtch.c (has_wildcards): Don't match \.
7951
7952         * http.c (http_loop): Warn on HTTP wildcard usage.
7953
7954 1996-11-08  Hrvoje Niksic  <hniksic@srce.hr>
7955
7956         * url.c (url_filename): Do not create numbered suffixes if
7957         opt.noclobber -- would bug out on -nc.
7958
7959 1996-11-07  Hrvoje Niksic  <hniksic@srce.hr>
7960
7961         * recur.c (parse_robots): Don't chuck out the commands without
7962         arguments (`Disallow:<empty>' didn't work).
7963         (parse_robots): Compare versions lowercase.
7964         (parse_robots): Match on base_version, not version_string!
7965         (parse_robots): Handle comments properly.
7966         (parse_robots): Match versions in a sane way.
7967
7968         * init.c: Print nicer error messages.
7969
7970         * version.c: Changed version to 1.4.0.
7971
7972 1996-11-06  Hrvoje Niksic  <hniksic@srce.hr>
7973
7974         * version.c: Released 1.4.0-test2.
7975
7976         * init.c (run_wgetrc): Close fp.
7977
7978         * ftp.c (ftp_retrieve_dirs): Allocate the correct length for
7979         u->dir.
7980
7981 1996-11-06  Hrvoje Niksic  <hniksic@srce.hr>
7982
7983         * init.c (setquota): Allow inf as quota specification.
7984
7985 1996-11-05  Hrvoje Niksic  <hniksic@srce.hr>
7986
7987         * ftp.c (ftp_retrieve_dirs): Return QUOTEXC if quota exceeded.
7988         (ftp_retrieve_glob): Return QUOTEXC on quota exceeded.
7989
7990         * main.c (main): Check for quota by comparison with downloaded
7991         stuff, not from status.
7992
7993         * connect.c (select_fd): Should compile on HPUX without warnings now.
7994
7995         * ftp.c (ftp_get_listing): Check whether ftp_loop_internal
7996         returned RETROK.
7997
7998 1996-11-04  Hrvoje Niksic  <hniksic@srce.hr>
7999
8000         * ftp.c (ftp_retrieve_glob): Print the pattern nicely.
8001         (getftp): Return FTPRETRINT on control connection error.
8002
8003         * html.c (htmlfindurl): Recognize <embed src=...> and
8004         <bgsound src=...>.
8005         (ftp_index): Handle username and password correctly.
8006
8007         * main.c (main): Made `-np' a synonim for --no-parent.
8008
8009 1996-11-02  Hrvoje Niksic  <hniksic@srce.hr>
8010
8011         * ftp.c (ftp_loop): Check for opt.ftp_glob too before calling
8012         ftp_retrieve_glob.
8013
8014         * version.c: Changed version to 1.4.0-test2.
8015
8016 1996-11-02  Hrvoje Niksic  <hniksic@srce.hr>
8017
8018         * version.c: Released 1.4.0-test1.
8019
8020         * url.c (str_url): Don't use sprintf when creating %2F-prefixed
8021         directory.
8022         (convert_links): Removed definition of make_backup.
8023
8024         * http.h: Removed definition of MAX_ERROR_LENGTH.
8025
8026         * host.c (ftp_getaddress): Check for "(none)" domains.
8027
8028         * ftp.c (ftp_retrieve_dirs): Docfix.
8029
8030         * http.c (gethttp): Use ou->referer instead of u->referer.
8031
8032         * retr.c (retrieve_url): Reset u to avoid freeing pointers twice;
8033         this was known to cause coredumps on Linux.
8034
8035         * html.c (ftp_index): Cast the argument to local_time to time_t *.
8036
8037 1996-11-01  Hrvoje Niksic  <hniksic@srce.hr>
8038
8039         * connect.c (select_fd): Use exceptfds -- once and for all.
8040
8041         * retr.c (retrieve_from_file): Free filename after
8042         recursive_retrieve.
8043         (retrieve_from_file): Send RFIRST_TIME to recursive_retrieve on
8044         first-time retrieval.
8045         (retrieve_from_file): Return uerr_t; new argument, count.
8046         (retrieve_from_file): Break on QUOTEXC.
8047
8048         * init.c (setquota): Fixed a bug that caused rejection of
8049         non-postfixed values..
8050
8051 1996-10-30  Hrvoje Niksic  <hniksic@srce.hr>
8052
8053         * version.c: Changed name to wget.
8054
8055         * connect.c (iread): Smarter use of select.
8056         (select_fd): Set errno on timeout.  If not timeout, return 1
8057         instead of 0.
8058
8059 1996-10-29  Hrvoje Niksic  <hniksic@srce.hr>
8060
8061         * ftp.c (ftp_loop_internal): Don't use con->cmd before
8062         establishing it.
8063
8064 1996-10-26  Hrvoje Niksic  <hniksic@srce.hr>
8065
8066         * http.c (gethttp): Send correct referer when using proxy.
8067         (gethttp): Use struct urlinfo ou to access the relevant data; send
8068         correct authorization in all cases.
8069
8070         * host.c (same_host): Use skip_uname to skip username and
8071         password.
8072
8073         * url.c (skip_uname): New function.
8074         (parseurl): Use it.
8075
8076         * host.c (same_host): Do not assume HTTP -- same_host should now
8077         be totally foolproof.
8078
8079         * url.c (skip_proto): New function.
8080         (parse_uname): Use it.
8081
8082         * http.c (gethttp): Create local user and passwd from what is
8083         given.
8084
8085         * url.c (parseurl): Check for HTTP username and password too.
8086
8087 1996-10-25  Hrvoje Niksic  <hniksic@srce.hr>
8088
8089         * config.h.in: Removed #define gethostbyname R...
8090
8091 1996-10-22  Hrvoje Niksic  <hniksic@srce.hr>
8092
8093         * version.c: Changed version to 1.4.0-test1.
8094
8095 1996-10-21  Hrvoje Niksic  <hniksic@srce.hr>
8096
8097         * version.c: "Released" 1.4b29.
8098
8099         * recur.c (recursive_retrieve): Check for no_parent.
8100
8101         * init.c (setval): Option update.
8102
8103         * main.c (main): New option no-parent.
8104
8105         * options.h (struct options): New variable no_parent.
8106
8107         * recur.c (recursive_retrieve): Only files are checked for
8108         opt.accepts and opt.rejects.
8109         (recursive_retrieve): Check directories for opt.excludes.
8110         (recursive_retrieve): Make the dir absolute when checking
8111         opt.excludes.
8112
8113         * html.c (htmlfindurl): Recognize <applet code=...> and <script
8114         src=...>
8115
8116 1996-10-18  Hrvoje Niksic  <hniksic@srce.hr>
8117
8118         * ftp.c (getftp): Do not line-break assert entries at all.
8119         (ftp_retrieve_dirs): docfix.
8120
8121         * connect.c (select_fd): Use fd + 1 as nfds.
8122
8123         * version.c: Changed version to 1.4b29.
8124
8125 1996-10-18  Hrvoje Niksic  <hniksic@srce.hr>
8126
8127         * version.c: "Released" 1.4b28.
8128
8129         * ftp.c (ftp_loop_internal): Check whether f->size == len and
8130         don't continue the loop if it is.
8131         (ftp_get_listing): Remove list_filename on unsuccesful loop.
8132
8133 1996-10-17  Hrvoje Niksic  <hniksic@srce.hr>
8134
8135         * ftp.c (ftp_loop_internal): Use strcpy to initialize tmp.
8136         (getftp): Do not use multiline assert.
8137
8138         * http.c (hparsestatline): Use mjr and mnr instead of major and
8139         minor, which don't compile on Ultrix.
8140         (http_loop): Use strcpy() to initialize tmp.
8141
8142         * all: Geturl -> Fetch
8143
8144 1996-10-17  Hrvoje Niksic  <hniksic@srce.hr>
8145
8146         * recur.c (parse_robots): Fixed an off-by-one bug when looking for
8147         ':'.
8148
8149         * html.c (htmlfindurl): Fixed several possible off-by-one bugs by
8150         moving `bufsize &&' to the beginning of each check in for-loops.
8151
8152         * recur.c (parse_robots): Close fp on exit.
8153
8154         * url.c (mymkdir): Check for each directory before creating.
8155
8156 1996-10-16  Hrvoje Niksic  <hniksic@srce.hr>
8157
8158         * version.c: Changed version to 1.4b28.
8159
8160 1996-10-16  Hrvoje Niksic  <hniksic@srce.hr>
8161
8162         * version.c: "Released" 1.4b27.
8163
8164         * init.c (parse_line): Use isspace.
8165         (parse_line): Free *com on all errors.
8166
8167         * ftp.c (ftp_loop): Change FTPOK to RETROK before exiting.
8168         (delelement): Use next instead of f->next and prev instead of
8169         f->prev.
8170         (delelement): Free the members of the deleted element.
8171
8172         * http.c (http_loop): Do not return RETROK on code != 20x.
8173
8174         * init.c (cleanup): Free opt.user_header.
8175         (cleanup): Free opt.domains.
8176
8177         * url.c (freelists): Moved to cleanup().
8178
8179         * http.c (hparsestatline): Docfix.
8180
8181         * main.c (main): Return with error status on unsuccesful
8182         retrieval.
8183
8184         * init.c (setval): Do not remove listing when mirroring.
8185
8186         * url.c (url_filename): Use opt.fileprefix.
8187
8188         * ftp.c (ftp_get_listing): Use url_filename to get filename for
8189         .listing.
8190
8191         * main.c (main): New option: -rn.
8192
8193 1996-10-15  Hrvoje Niksic  <hniksic@srce.hr>
8194
8195         * Makefile.in (RM): Added RM = rm -f.
8196
8197         * host.c (clean_hosts): New function.
8198         (free_hlist): Just free the list, no reset.
8199
8200         * version.c: Changed version to 1.4b27.
8201
8202 1996-10-13  Hrvoje Niksic  <hniksic@srce.hr>
8203
8204         * version.c: "Released" 1.4b26.
8205
8206         * retr.c (retrieve_from_file): If call get_urls_html with
8207         opt.spider to make it silent in spider mode.
8208
8209         * url.c (str_url): Use CLEANDUP instead of URL_CLEANSE.
8210
8211         * url.h (CLEANDUP): New macro.
8212
8213         * http.c (gethttp): Fixed a bug that freed location only when it
8214         was NULL.
8215
8216         * retr.c (retrieve_url): Free url if it will not be stored,
8217         i.e. newloc is NULL.
8218
8219         * html.c (htmlfindurl): Handle exiting from quotes correctly; the
8220         old version would bug out on <a href="x#a"href="y">.
8221
8222         * html.h (state_t): New member in_quote.
8223
8224         * html.c (htmlfindurl): Free s->attr at the beginning of
8225         attr-loop.
8226
8227         * recur.c (recursive_retrieve): Recognize RCLEANUP.
8228         (tried_robots): Make hosts a global variable.
8229         (recursive_retrieve): Free constr after URL host optimization.
8230         (tried_robots): Free urlinfo before exiting.
8231
8232         * utils.c (free_slist): New function.
8233
8234         * recur.c (recursive_retrieve): Use flags to add cleanup
8235         possibility.
8236
8237         * main.c (main): Free filename after recursive_retrieve.
8238
8239         * http.c (gethttp): Store successful responses too.
8240
8241 1996-10-12  Hrvoje Niksic  <hniksic@srce.hr>
8242
8243         * all: Constified the whole source.  This required some minor
8244         changes in many functions in url.c, possibly introducing bugs -- I
8245         hope not.
8246
8247         * ftp-basic.c: Removed last_respline.
8248
8249         * http.c (gethttp): Free type.
8250
8251         * host.c (same_host): Free real1 and real2.
8252
8253         * main.c (main): New option --spider.
8254
8255         * retr.c (get_contents): Don't reset errno.
8256
8257         * main.c (main): Sorted the options.
8258
8259         * connect.c (iread): Set errno to ETIMEDOUT only if it was left
8260         uninitialized by select().
8261
8262         * http.c (http_loop): Print the time when the connection is
8263         closed.
8264         (gethttp): Debug-print the HTTP request.
8265
8266 1996-10-11  Hrvoje Niksic  <hniksic@srce.hr>
8267
8268         * connect.c (iread): Do not try reading after timeout.
8269
8270         * main.c (main): Would bug out on -T.
8271
8272         * connect.c (select_fd): Do not use exceptfds.
8273         (iread): Set ETIMEDOUT on select_fd <= 0.
8274
8275         * version.c: Changed version to 1.4b26.
8276
8277 1996-10-10  Hrvoje Niksic  <hniksic@srce.hr>
8278
8279         * version.c: "Released" 1.4b25.
8280
8281         * ftp-unix.c (ftp_parse_unix_ls): Ignore lines without file name
8282         or link name.
8283
8284         * http.c (gethttp): Add errcode to struct hstat.
8285         (http_loop): Use it.
8286
8287         * url.c (no_proxy_match): Simplify using char** for no_proxy.
8288
8289         * options.h (struct options): Make opt.no_proxy a vector.
8290
8291         * utils.c (sepstring): Use !*s instead of !strlen(s).
8292
8293         * init.c (setval): Set opt.maxreclevel to 0 on --mirror.
8294         (getperms): Use ISODIGIT instead of isdigit.
8295
8296         * ftp.c (getftp): Print time.
8297
8298         * main.c (main): Use legible output of downloaded quantity.
8299
8300         * ftp.c (getftp): Use elapsed_time().
8301         (ftp_loop_internal): Use rate().
8302
8303         * http.c (http_loop): Add download ratio output; Use rate().
8304
8305         * utils.c (rate): New function.
8306
8307 1996-10-09  Hrvoje Niksic  <hniksic@srce.hr>
8308
8309         * http.c (http_loop): Use timer.
8310
8311         * ftp.c: Split to ftp-basic.c and ftp.c
8312
8313         * utils.c (reset_timer): New function.
8314         (elapsed_time): New function.
8315
8316         * retr.c (show_progress): Make bytes_in_line and offs long; should
8317         work on 16-bit machines.
8318
8319 1996-10-08  Hrvoje Niksic  <hniksic@srce.hr>
8320
8321         * url.c (in_acclist): New argument backward.
8322
8323         * ftp.c (ftp_retrieve_glob): Use acceptable() to determine whether
8324         a file should be retrieved according to suffix.
8325         (ftp_get_listing): Check the return value of unlink; Do not call
8326         ftp_retrieve_dirs if depth reached maxreclevel.
8327         (ftp_retrieve_dirs): Check whether the directory is in
8328         exclude-list.
8329
8330         * main.c (main): Print the version number at the beginning of
8331         DEBUG output.
8332         (main): Use strrchr when creating exec_name.
8333
8334         * ftp.c (ftp_retrieve_glob): Do not close control connection.
8335
8336         * version.c: Changed version to 1.4b25.
8337
8338 1996-10-07  Hrvoje Niksic  <hniksic@srce.hr>
8339
8340         * version.c: "Released" 1.4b24.
8341
8342         * Makefile.in: Rewrite.
8343
8344         * ftp.c (ftp_loop_internal): Likewise.
8345
8346         * retr.c (time_str): Check for failed time().
8347
8348         * html.c (htmlfindurl): Recognize <fig src> and <overlay src> from
8349         HTML3.0.
8350
8351         * retr.c (time_str): Return time_t *.
8352
8353         * connect.c (bindport): Close msock on unsuccesful bind.
8354         (bindport): The same for getsockname and listen.
8355
8356         * retr.c (retrieve_url): Allow any number of retries on
8357         proxy.
8358
8359         * http.c (gethttp): Do not treat errno == 0 as timeout.
8360         (http_loop): Likewise.
8361         (http_loop): Cosmetic changes.
8362
8363         * connect.c (iread): Set errno to ETIMEDOUT in case of timeout.
8364
8365         * retr.c (get_contents): Reset errno.
8366
8367         * ftp.c (getftp): Minor fixes.
8368
8369 1996-10-06  Hrvoje Niksic  <hniksic@srce.hr>
8370
8371         * http.c: Do not use backups.
8372
8373         * geturl.1 (WARNING): Warn that man-page could be obsolete.
8374
8375         * getopt.c (getopt_long): Moved to getopt.c
8376
8377         * geturl.texi: Enhanced.
8378
8379         * main.c (main): Use it.
8380
8381         * recur.c (convert_all_links): New function.
8382
8383         * utils.c (add_slist): New argument flags.
8384
8385         * recur.c (recursive_retrieve): Update a list of downloaded URLs.
8386         (parse_robots): Do not chuck out empty value fields.
8387         (parse_robots): Make yourself welcome on empty Disallow.
8388
8389         * version.c: Changed version to 1.4b24.
8390
8391 1996-10-06  Hrvoje Niksic  <hniksic@srce.hr>
8392
8393         * version.c: "Released" 1.4b23.
8394
8395         * ftp.c (ftp_loop_internal): Get the time after getftp.
8396
8397         * Makefile.in (install.info): New target.
8398         (install): Use it.
8399
8400         * http.c (http_loop): Fix output when doing -O.
8401
8402 1996-10-05  Hrvoje Niksic  <hniksic@srce.hr>
8403
8404         * geturl.texi: New file.
8405
8406         * main.c (main): Do not print the warnings and download summary if
8407         opt.quiet is set.
8408
8409         * version.c: Changed version to 1.4b23.
8410
8411 1996-10-05  Hrvoje Niksic  <hniksic@srce.hr>
8412
8413         * "Released" 1.4b22.
8414
8415         * atotm.c (atotm): Use True and False instead of TRUE and FALSE,
8416         to avoid redefinition warnings.
8417
8418         * host.c (store_hostaddress): Use memcpy() to copy the address
8419         returned by inet_addr.
8420
8421         * version.c: Changed version to 1.4b22.
8422
8423 1996-10-04  Hrvoje Niksic  <hniksic@srce.hr>
8424
8425         * version.c: "Released" 1.4b21.
8426
8427         * ftp-unix.c (ftp_parse_ls): Renamed to ftp_parse_unix_ls.
8428
8429         * ftp.c (ftp_port): Use conaddr.
8430         (getftp): Print the file length.
8431         (ftp_retrieve_list): Check the stamps of plain files only.
8432
8433         * connect.c (closeport): Do not call shutdown().
8434         (conaddr): New function.
8435
8436         * html.c (ftp_index): Made it dfp-aware.
8437
8438         * init.c (cleanup): New name of freemem. Close opt.dfp.
8439
8440         * ftp.c (getftp): Use opt.dfp if it is set.
8441
8442         * ftp-unix.c (ftp_parse_ls): Recognize time in h:mm format.
8443
8444         * ftp.c (ftp_retrieve_dirs): Fixed a bug that caused incorrect
8445         CWDs to be sent with recursive FTP retrievals.
8446
8447 1996-10-03  Hrvoje Niksic  <hniksic@srce.hr>
8448
8449         * recur.c (parse_robots): Made it more compliant with "official"
8450         specifications.
8451
8452         * http.c: New function.
8453
8454         * ftp-unix.c (ftp_parse_ls): Added better debug output.
8455
8456         * ftp.c (getftp): Print out the LIST in case of
8457         opt.print_server_response.
8458
8459         * version.c: Changed version to 1.4b21.
8460
8461 1996-10-01  Hrvoje Niksic  <hniksic@srce.hr>
8462
8463         * version.c: "Released" 1.4b20.
8464
8465         * README: Update.
8466
8467         * http.c (gethttp): Preset lengths of various headers instead of
8468         calculating them dynamically.
8469         (gethttp): Check for 206 partial contents.
8470
8471 1996-09-30  Hrvoje Niksic  <hniksic@srce.hr>
8472
8473         * configure.in: Set SYSTEM_GETURLRC to $libdir/geturlrc
8474
8475         * http.c (gethttp): Send the port number in the Host: header.
8476
8477 1996-09-29  Hrvoje Niksic  <hniksic@srce.hr>
8478
8479         * http.c (gethttp): Send host: header.
8480         (gethttp): Add the possibility of user-defined headers.
8481         (gethttp): Move decision about pragma: no-cache to http_loop,
8482         where it belongs.
8483         (gethttp): Pass a struct instead of enormous argument list.
8484         (http_loop): Use a new, fancier display format.
8485         (ftp_loop): Likewise.
8486
8487         * main.c: (hangup): Turn off buffering of the new log file.
8488
8489         * install-sh: Likewise.
8490
8491         * config.sub: Replace with the one in autoconf-2.10
8492
8493         * geturl.1: Update.
8494
8495         * init.c: New options httpuser and httppasswd.
8496
8497         * http.c: (base64_encode_line): New function.
8498         (gethttp): Send authentication.
8499
8500         * connect.c (make_connection): Use store_hostaddress.
8501
8502 1996-09-28  Hrvoje Niksic  <hniksic@srce.hr>
8503
8504         * host.c (store_hostaddress): New function.
8505
8506         * NEWS: Update.
8507
8508         * http.c (hgetrange): New function.
8509         (gethttp): Use ranges.
8510
8511         * utils.c (numdigit): Accept long instead of int.
8512
8513         * http.c (http_loop): Add restart capabilities.
8514
8515         * ftp.c (ftp_retrieve_glob): Fixed a bug that could cause matchres
8516         being used uninitialized.
8517         (ftp_retrieve_list): Similar fix.
8518
8519         * host.c (add_hlist): Fixed a bug that could cause cmp being used
8520         uninitialized.
8521
8522         * url.c (construct_relative): New function.
8523
8524         * recur.c (recursive_retrieve): Use it.
8525
8526         * retr.c (convert_links): New function.
8527
8528 1996-09-27  Hrvoje Niksic  <hniksic@srce.hr>
8529
8530         * url.c (free_urlpos): New function.
8531
8532         * recur.c (recursive_retrieve): Adapt.
8533
8534         * url.c (get_urls_html): Return a linked list instead of a vector.
8535
8536         * url.c (get_urls_file): Return a linked list instead of a vector.
8537
8538         * geturl.1: Update.
8539
8540         * http.c (gethttp): Implement it.
8541
8542         * init.c (setval): New option: SAVEHEADERS
8543
8544         * ftp.c (ftp_loop_internal): Do not set restval if listing is to
8545         be retrieved. Lack of this test caused bugs when the connection
8546         was lost during listing.
8547
8548         * retr.c (retrieve_url): Fixed a bug that caused
8549         coredumps. *newloc is now reset by default.
8550         (retrieve_url): Lift the twenty-tries limit on proxies.
8551
8552         * version.c: Changed version to 1.4b20.
8553
8554 1996-09-20  Hrvoje Niksic  <hniksic@srce.hr>
8555
8556         * version.c: "Released" 1.4b19.
8557
8558 1996-09-19  Hrvoje Niksic  <hniksic@srce.hr>
8559
8560         * ftp.c (ftp_loop_internal): Renamed from ftp_1fl_loop.
8561         (getftp): Changed prototype to accept ccon *.
8562
8563 1996-09-17  Hrvoje Niksic  <hniksic@srce.hr>
8564
8565         * ftp.c (ftp_retrieve_list): Fixed a bug that caused setting
8566         incorrect values to files pointed to by symbolic links.
8567         (ftp_1fl_loop): Do not count listings among the downloaded URL-s.
8568
8569 1996-09-16  Hrvoje Niksic  <hniksic@srce.hr>
8570
8571         * url.c (mkstruct): Do not prepend "./" in front of a pathname.
8572
8573         * main.c (main): New option: --user-agent.
8574
8575         * geturl.1: Ditto.
8576
8577         * init.h: Ditto.
8578
8579         * init.c (setval): Ditto.
8580
8581         * main.c (main): Rename "server-headers" to "server-response".
8582
8583         * ftp-unix.c (ftp_parse_ls): Check for asterisks at the end of
8584         executables in 'ls -F' listings.
8585
8586 1996-09-15  Hrvoje Niksic  <hniksic@srce.hr>
8587
8588         * url.c (parseurl): Remove realloc() and sprintf().
8589         (str_url): Get rid of sprintf().
8590
8591         * recur.c (recursive_retrieve): Enable FTP recursion through proxy
8592         servers.
8593
8594         * url.h (URL_CLEANSE): Made it else-resistant.
8595         (USE_PROXY): New macro.
8596
8597 1996-09-14  Hrvoje Niksic  <hniksic@srce.hr>
8598
8599         * NEWS: Update.
8600
8601         * version.c: Changed version to 1.4b19.
8602
8603 1996-09-14  Hrvoje Niksic  <hniksic@srce.hr>
8604
8605         * version.c: "Released" 1.4b18.
8606
8607         * url.c: Made it reallocate space exponentially.
8608
8609 1996-09-14  Drazen Kacar  <dave@fly.cc.fer.hr>
8610
8611         * html.c (htmlfindurl): Added <frame src> and <iframe src> among
8612         the list of stuff to fetch.
8613
8614 1996-09-13  Hrvoje Niksic  <hniksic@srce.hr>
8615
8616         * url.c (get_urls_html): Fixed a bug that caused SIGSEGV's with
8617         -Fi.
8618
8619         * html.c (htmlfindurl): Rewrite.
8620
8621         * http.c (gethttp): Use opt.proxy_cache.
8622
8623         * main.c (main): Added --cache option.
8624
8625         * ftp.c (ftp_response): Print server response if opt.print_server
8626         response is set.
8627         (getftp): Print newlines after each request if the server response
8628         is to be printed.
8629         (ftp_response): Copy the last response line to last_respline.
8630
8631         * http.c (gethttp): Add Pragma: nocache for retried
8632         proxy-retrievals.
8633
8634         * ftp.c (getftp): Use it.
8635
8636         * retr.c (buf_discard): New function.
8637
8638         * ftp.c (ftp_response): Use buf_readchar().
8639         (getftp): Flush the control connection buffer before calling
8640         get_contents().
8641
8642         * retr.c (buf_readchar): New function.
8643         (buf_flush): New function.
8644         (get_contents): Use buf_readchar() instead of read(x, x, 1).
8645         (get_contents): Use buf_flush.
8646
8647 1996-09-12  Hrvoje Niksic  <hniksic@srce.hr>
8648
8649         * ftp.c: Incorporate changes to ftp_response.
8650
8651         * ftp.c (ftp_response): Allocate the server response dynamically,
8652         as in read_whole_line and fetch_next_header.
8653
8654         * utils.c (read_whole_line): Fixed a bug that prevented reading
8655         the last line if it is not \n-terminated. Also fixed a possible
8656         memory overflow.
8657
8658         * http.c (fetch_next_header): Return malloc-ed string as large as
8659         needed.
8660         (gethttp): Use new fetch_next_header.
8661
8662 1996-09-12  Hrvoje Niksic  <hniksic@srce.hr>
8663
8664         * http.c (hgetlen): Compute the header length the first time only.
8665         (hgettype): Ditto.
8666         (hgetlocation): Ditto.
8667         (hgetmodified): Ditto.
8668
8669 1996-09-11  Hrvoje Niksic  <hniksic@srce.hr>
8670
8671         * sample.geturlrc: Update.
8672
8673 1996-09-10  Hrvoje Niksic  <hniksic@srce.hr>
8674
8675         * http.c (http_loop): Ditto.
8676
8677         * ftp.c (getftp): Open the output file as binary.
8678
8679         * version.c: Changed version to 1.4b18.
8680
8681 1996-09-10  Hrvoje Niksic  <hniksic@srce.hr>
8682
8683         * version.c: "Released" 1.4b17.
8684
8685         * ftp-unix.c (ftp_parse_ls): If unable to open file, return NULL
8686         instead of failed assertion.
8687
8688 1996-09-09  Hrvoje Niksic  <hniksic@srce.hr>
8689
8690         * ftp.c (ftp_get_listing): Add a numbered suffix to LIST_FILENAME
8691         if a file of that name already exists.
8692
8693 1996-09-05  Hrvoje Niksic  <hniksic@srce.hr>
8694
8695         * ftp.c (ftp_1fl_loop): Handler FTPPORTERR and FOPENERR correctly.
8696
8697         * config.h.in: Define gethostbyname as Rgethostbyname when using
8698         Socks.
8699
8700         * configure.in: Check for -lresolv if using Socks.
8701
8702         * version.c: Changed version to 1.4b17.
8703
8704 1996-07-15  Hrvoje Niksic  <hniksic@srce.hr>
8705
8706         * version.c: "Released" 1.4b16.
8707
8708         * http.c (gethttp): More intelligent check for first line of HTTP
8709         response.
8710         (gethttp): Would bug out on time-stamping.
8711
8712         * version.c: Changed version to 1.4b16.
8713
8714 1996-07-11  Hrvoje Niksic  <hniksic@srce.hr>
8715
8716         * version.c: Released 1.4b15.
8717
8718         * http.c (http_loop): Print \n after the loop entry, not before.
8719
8720         * url.c (url_filename): Use ISDOT.
8721
8722         * url.h (ISDOT): New macro.
8723
8724         * recur.c (recursive_retrieve): Change only opt.recursive for
8725         following FTP.
8726
8727 1996-07-11  Antonio Rosella <antonio.rosella@agip.it>
8728
8729         * socks/geturl.cgi: Fixed version No.
8730
8731         * socks/download-netscape.html: Ditto.
8732
8733         * socks/download.html: Changed socks.html to download.html.
8734
8735 1996-07-11  Hrvoje Niksic  <hniksic@srce.hr>
8736
8737         * url.c (url_filename): Check for opt.dirstruct instead for
8738         opt.recursive && opt.dirstruct.
8739
8740         * init.c (defaults): Ditto.
8741         (defaults): Reset dirstruct by default.
8742         (setval): Set opt.dirstruct whenever setting recursive.
8743
8744         * init.h: Removed FORCEDIRHIER.
8745
8746         * INSTALL: Added -L to socks-description.
8747
8748         * version.c: Changed version to 1.4b15.
8749
8750 1996-07-10  Hrvoje Niksic  <hniksic@srce.hr>
8751
8752         * version.c: "Released" 1.4b14.
8753
8754         * geturl.1: Update AUTHOR to include Rosella as contributor.
8755
8756         * NEWS: Update.
8757
8758         * socks/geturl.cgi: Simplified command creation, nuked <blink>.
8759
8760         * socks/geturl.cgi: Wrap nutscape extensions within if $netscape.
8761         (cal_time): Fix == to eq.
8762
8763         * socks/geturl.cgi: GPL-ized with permission of A. Rosella.
8764
8765         * geturl.1 (hostname): Moved URL CONVENTIONS to the beginning.
8766
8767         * Makefile.in: Use @VERSION@.
8768
8769         * configure.in: Check version from version.c.
8770
8771         * socks/geturl.cgi: Changed /pub/bin/perl to /usr/bin/perl.
8772
8773         * socks/download.html: Created from download-netscape.html, made
8774         HTML-2.0 compliant.
8775
8776         * recur.c (recursive_retrieve): Set opt.force_dir_hier when
8777         following FTP links from recursions.
8778
8779 1996-07-09  Hrvoje Niksic  <hniksic@srce.hr>
8780
8781         * url.c (mymkdir): Fixed a bug that prevented mymkdir() to create
8782         absolute directories correctly.
8783
8784         * version.c: Changed version to 1.4b14.
8785
8786 1996-07-09  Hrvoje Niksic  <hniksic@srce.hr>
8787
8788         * version.c: "Released" 1.4b13.
8789
8790         * url.c (make_backup): New function.
8791
8792         * http.c (http_loop): Make a backup copy of the local file (using
8793         rename(2)) before opening it.
8794
8795         * main.c (main): Added --backups.
8796
8797         * host.c (ftp_getaddress): Bail out on failed mycuserid().
8798         (ftp_getaddress): Check for leading dot on MY_DOMAIN.
8799         (ftp_getaddress): Check for empty, null or (null) domain.
8800
8801         * url.c (get_urls_html): If this_url is NULL, the base must have a
8802         protocol.
8803         (parseurl): Use has_proto.
8804
8805         * retr.c (retrieve_url): Warn when proxy is used with more than 20
8806         retries.
8807
8808         * url.c (mkstruct): Create the directory (calling mymkdir()) only
8809         if it is not already there.
8810         (has_proto): New function.
8811         (get_urls_html): Eliminate the remaining call to findurl -- use
8812         has_proto.
8813
8814         * geturl.1: Ditto.
8815
8816         * main.c: Change -X to -x.
8817
8818         * url.c (url_filename): Simplify creation of filename if
8819         prefix_files is set.
8820         (url_filename): Simplify everything. And I do mean *everything*.
8821         (mkstruct): Add dir_prefix before hostname.
8822         (path_simplify): Fixed a bug that caused writing outside the path
8823         string in case of "." and ".." path strings.
8824
8825 1996-07-06  Hrvoje Niksic  <hniksic@srce.hr>
8826
8827         * init.c: Added --mirror.
8828
8829         * main.c (main): Added -X to force saving of directory hierarchy.
8830
8831         * ftp.c (ftp_retrieve_list): Added recursion depth counter.
8832         (ftp_retrieve_list): Check whether quota is exceeded.
8833
8834         * url.c (get_urls_html): Skip leading blanks for absolute URIs.
8835
8836         * http.c (gethttp): Use referer if present.
8837
8838         * recur.c (recursive_retrieve): Set u->referer before calling
8839         retrieve_url.
8840
8841         * url.c (newurl): Use memset to nullify the struct members.
8842         (freeurl): Free the referer field too.
8843
8844         * url.h: Added referer to urlinfo.
8845
8846         * geturl.1: Updated the manual to document some of the new features.
8847
8848         * utils.c (numdigit): Moved from url.c.
8849
8850         * README: Rewritten.
8851
8852         * config.h.in: Add the support for socks.
8853
8854         * configure.in: Add the support for socks.
8855
8856         * url.c (url_filename): If the dir_prefix is ".", work with just
8857         the file name.
8858         (url_filename): Do not look for .n extensions if timestamping if
8859         turned on.
8860
8861         * retr.c (show_progress): Skip the over-abundant restval data, and
8862         print the rest of it with ',' instead of '.'.
8863
8864 1996-07-05  Hrvoje Niksic  <hniksic@srce.hr>
8865
8866         * retr.c (show_progress): Changed second arg. to long (as it
8867         should be).
8868         (show_progress): Moved to retr.c.
8869         (get_contents): Moved to retr.c.
8870
8871         * version.c: Change version to 1.4b13.
8872
8873 1996-07-05  Hrvoje Lacko <hlacko@fly.cc.fer.hr>
8874
8875         * url.c (in_acclist): Would return after the first suffix.
8876
8877 1996-07-04  Hrvoje Niksic  <hniksic@srce.hr>
8878
8879         * version.c: "Released" 1.4b12.
8880
8881         * url.c (path_simplify): More kludgifications.
8882         (get_urls_html): Use new parameters for htmlfindurl.
8883
8884         * html.c: Removed memorizing "parser states", since the new
8885         organization does not require them.
8886
8887         * init.c (run_geturlrc): Use read_whole_line.
8888
8889         * ftp-unix.c (ftp_parse_ls): Use read_whole_line.
8890
8891         * recur.c (parse_robots): Use read_whole_line.
8892
8893         * utils.c (read_whole_line): New function.
8894
8895         * recur.c (tried_robots): Use add_slist/in_slist, *much* cleaner.
8896
8897         * host.c (ngethostbyname): Call inet_addr just once. Yet to be
8898         tested on OSF and Ultrix.
8899         (add_hlist): New function.
8900         (free_hlist): New function.
8901         (search_host): New function.
8902         (search_address): New function.
8903         (realhost): Use search_host, search_address and add_hlist.
8904         (same_host): Replaced realloc() with strdupdelim(), made
8905         case-insensitive, fixed a memory leak.
8906
8907         * html.c (ftp_index): Fixed tm_min and tm_sec to be tm_hour and
8908         tm_min, like intended.
8909
8910         * version.c: Change user agent information to
8911         Geturl/version.
8912
8913 1996-07-03  Hrvoje Niksic  <hniksic@srce.hr>
8914
8915         * utils.c: Renamed nmalloc.c to utils.c, .h likewise.
8916
8917         * url.c (acceptable): Always accept directories.
8918
8919         * ftp-unix.c (ftp_parse_ls): Support brain-damaged "ls -F"-loving
8920         servers by stripping trailing @ from symlinks and trailing / from
8921         directories.
8922
8923         * ftp.c (ftp_loop): Debugged the "enhanced" heuristics. :-)
8924
8925         * url.c (skip_url): Use toupper instead of UCASE.
8926
8927         * host.c (sufmatch): Made it case-insensitive.
8928
8929         * url.c (match_backwards_or_pattern): Fixed i == -1 to j == -1.
8930         (match_backwards): New function, instead of
8931         match_backwards_or_pattern.
8932
8933         * recur.c (recursive_retrieve): Increased performance by
8934         introducing inl, which reduces number of calls to in_slist to only
8935         one.
8936
8937         * ftp.c (ftp_loop): Enhanced the heuristics that decides which
8938         routine to use.
8939
8940         * main.c (printhelp): Removed the warranty stuff.
8941
8942 1996-07-02  Hrvoje Niksic  <hniksic@srce.hr>
8943
8944         * url.c (add_slist): Simplify.
8945         (match_backwards_or_pattern): New function.
8946         (in_acclist): Use match_backwards_or_pattern.
8947         (matches): Remove.
8948
8949 1996-06-30  Hrvoje Niksic  <hniksic@srce.hr>
8950
8951         * ftp.c (ftp_loop): Call ftp_index on empty file names, if not
8952         recursive.
8953
8954         * html.c (ftp_index): Fixed to work. Beautified the output.
8955
8956         * ftp.c (ftp_retrieve_glob): Another argument to control whether
8957         globbing is to be used.
8958         (ftp_retrieve_list): Compare the time-stamps of local and remote
8959         files to determine whether to download.
8960
8961 1996-06-29  Hrvoje Niksic  <hniksic@srce.hr>
8962
8963         * ftp.c (rel_constr): New function.
8964
8965         * retr.c (retrieve_from_file): Check for text/html before
8966         retrieving recursively.
8967
8968         * main.c (main): Check whether the file is HTML before going into
8969         recursive HTML retrieving.
8970
8971         * ftp.c (ftp_retrieve_list): Manage directories.
8972         (ftp_retrieve_glob): Pass all the file-types to ftp_retrieve_list.
8973         (ftp_1fl_loop): Fixed a bug that caused con->com to be incorrectly
8974         initialized, causing bugchecks in getftp to fail.
8975
8976         * configure.in: Check for symlink.
8977
8978         * ftp.c (ftp_retrieve_list): Added support for symlinks.
8979
8980         * version.c: "Released" 1.4b10.
8981
8982         * atotm.c (atotm): Redeclared as time_t.
8983
8984         * init.c: New variable "timestamping".
8985
8986         * main.c (main): New option 'N'.
8987
8988         * http.c (hgetlocation): Case-insensitive match.
8989         (hgetmodified): New function.
8990         (http_loop): Implement time-stamping.
8991
8992 1996-06-28  Hrvoje Niksic  <hniksic@srce.hr>
8993
8994         * version.c: Changed version to 1.4b10
8995
8996         * atotm.c: New file, from phttpd.
8997
8998         * options.h (struct options): New parameter timestamping.
8999
9000         * version.c: 1.4b9 "released".
9001
9002         * recur.c (recursive_retrieve): Used linked list (ulist) for
9003         faster storing of URLs.
9004
9005         * url.c (get_urls_html): Removed the old kludge with comparing the
9006         outputs of htmlfindurl and findurl.
9007         (get_urls_html): Added better protocol support here.
9008         (create_hash): Removed, as well as add_hash and in_hash.
9009         (addslist): New function.
9010         (in_slist): ditto
9011
9012         * version.c: Released 1.4b8, changed version to b9.
9013
9014 1996-06-27  Hrvoje Niksic  <hniksic@srce.hr>
9015
9016         * ftp.c (freefileinfo): New function.
9017         (delelement): New function.
9018
9019         * everywhere: GPL!
9020
9021         * ftp.c (ftp_loop): Use ccon.
9022         (ftp_retrieve_glob): Likewise.
9023
9024         * ftp.h: Define ccon, to define status of control connection.
9025
9026         * ftp.c (ftp_get_listing): New function.
9027         (ftp_retrieve_more): New function.
9028         (ftp_retrieve_glob): New function.
9029
9030 1996-06-25  Hrvoje Niksic  <hniksic@srce.hr>
9031
9032         * configure.in: Removed the search for cuserid().
9033
9034         * init.c (getmode): Renamed to getperms.
9035
9036 1996-06-24  Hrvoje Niksic  <hniksic@srce.hr>
9037
9038         * version.c: New version.
9039
9040         * main.c (hangup): New function, that handles hangup. Hangup
9041         signal now causes geturl to stop writing on stdout, and to write
9042         to a log file.
9043
9044         * ftp.c (getftp): "Released" 1.4b7.
9045
9046         * html.c (htmlfindurl): Ignore everything inside <head>...</head>.
9047         (ftp_index): Use fileinfo/urlinfo.
9048
9049         * ftp-unix.c (ftp_parse_ls): New function.
9050         (symperms): New function.
9051
9052         * ftp.c (ftp_1fl_loop): New function, to handle 1-file loops.
9053
9054         * retr.c (retrieve_url): Added FTP support.
9055
9056 1996-06-23  Hrvoje Niksic  <hniksic@srce.hr>
9057
9058         * geturl.h: Removed NOTFTP2HTML enum.
9059         Added DO_LOGIN, DO_CWD and DO_LIST. LIST_ONLY is obsolete.
9060
9061         * ftp.c (getftp): Resynched with urlinfo.
9062         (getftp): Removed HMTL-ization of index.html from getftp.
9063
9064         * version.c: 1.4b6 "released".
9065
9066         * options.h (options): New struct, to keep options in.
9067
9068         * http.c (http_loop,gethttp): Synched with proxy.
9069
9070         * retr.c (retrieve_url): Implemented proxy retrieval.
9071
9072         * main.c (main): Use retrieve_from_file.
9073
9074 1996-06-22  Hrvoje Niksic  <hniksic@srce.hr>
9075
9076         * retr.c (retrieve_from_file): New function.
9077
9078         * url.c (parseurl): Modified to return URLOK if all OK. Protocol
9079         can be found in u->proto.
9080
9081         * ftp.c (ftp_response): Fixed to accept multi-line responses as
9082         per RFC 959.
9083
9084         * recr.c (recursive_retrieve): Take newloc from retrieve_url.
9085
9086         * url.c (mymkdir): Removed the file of the same name, if one
9087         exists.
9088         (isfile): New function.
9089         (mkstruct): Fixed the '/' glitches.
9090         (path_simplify): Hacked to treat something/.. correctly.
9091
9092 1996-06-21  Hrvoje Niksic  <hniksic@srce.hr>
9093
9094         * http.c (gethttp): Close the socket after error in headers.
9095         (http_loop): HEOF no longer a fatal header.
9096
9097         * loop.c (retrieve_url): When dt is NULL, do not modify it. This
9098         simplifies the syntax of calling retrieve_url.
9099
9100         * recr.c (recursive_retrieve): Modified to use get_urls_html.
9101
9102         * url.c (get_urls_file): New function.
9103         (get_urls_html): New function.
9104
9105         * recr.c (recursive_retrieve): Patched up to conform to the
9106         standards.
9107
9108         * http.c (gethttp): Synched with the rest...
9109         (gethttp): Treat only CONREFUSED specially, with connection
9110         errors.
9111
9112         * init.c,geturl.1,http.c (http_loop): Removed kill_error.
9113
9114 1996-06-20  Hrvoje Niksic  <hniksic@srce.hr>
9115
9116         * http.c (http_loop): New function.
9117
9118         * loop.c: Removed *lots* of stuff from retrieve_url.
9119
9120         * url.c (parseurl): Changed to work with urlinfo. Integrated
9121         username finding and path parsing.
9122         (newurl): New function.
9123         (freeurl): New function.
9124         (mkstruct): Removed the old bogosities, made it urlinfo-compliant.
9125         (url_filename): Likewise.
9126         (path_simplify): Accept relative paths too.
9127         (opt_url): Made urlinfo-compliant, removed bogosities.
9128         (path_simplify): Expanded to accept relative paths.
9129         (str_url): A replacement for hide_url
9130         (decode_string): Fixed a bug that caused malfunctioning when
9131         encountering an illegal %.. combination.
9132         (opt_url): Removed the argument. Dot-optimizations are now default.
9133
9134         * nmalloc.c (strdupdelim): New function.
9135
9136         * url.h: Added the urlinfo structure
9137
9138 1996-06-19  Hrvoje Niksic  <hniksic@srce.hr>
9139
9140         * url.c (hide_url): Thrown out the protocol assertion. Do not
9141         change the URL if the protocol if not recognized.
9142         (findurl): Put continue instead of break.
9143
9144 1996-06-18  Hrvoje Niksic  <hniksic@srce.hr>
9145
9146         * sample.geturlrc: Changed the defaults to be commented out and
9147         harmless (previous defaults caused pains if copied to
9148         ~/.geturlrc).
9149
9150         * http.c (gethttp): Print the HTTP request in debug mode.
9151
9152         * connect.c (iread): Added EINTR check loop to select-ing
9153         too. EINTR is now correctly handled with select().
9154
9155         * TODO: new file
9156
9157 1996-05-07  Hrvoje Niksic  <hniksic@srce.hr>
9158
9159         * host.c (same_host): Made the function a little bit more
9160         intelligent regarding diversified URL syntaxes.
9161
9162         * url.c (skip_url): Spaces are now skipped after URL:
9163
9164         * Released 1.3.1 with the patch to prevent crashing when sending
9165         NULL to robot* functions and the patch to compile "out of the box"
9166         on AIX.
9167
9168         * recr.c (recursive_retrieve): Added checking whether this_url is
9169         NULL when calling the robot functions.
9170
9171         * ChangeLog: New file.