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