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