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