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