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