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