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