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