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