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