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