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