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