]> sjero.net Git - wget/blob - src/ChangeLog
Use the gnulib snprintf module.
[wget] / src / ChangeLog
1 2010-05-30  Giuseppe Scrivano  <gscrivano@gnu.org>
2
3         * html-parse.c (NAME_CHAR_P): Consider '<' an invalid character.
4         (advance_declaration): Close the tag if '<' is found.
5         (map_html_tags): Likewise.
6
7 2010-05-27  Giuseppe Scrivano  <gscrivano@gnu.org>
8
9         * Makefile.am (wget_SOURCES): Remove `snprintf.c'.
10
11         * snprintf.c: Remove file.
12
13 2010-05-27  Giuseppe Scrivano  <gscrivano@gnu.org>
14
15         * main.c (main): Exit with failure when -k is specified and -O is not
16         a regular file.
17
18 2010-05-27  Giuseppe Scrivano  <gscrivano@gnu.org>
19
20         * http.c (gethttp): Consider new cookies retrieved when the
21         authorization fails.
22
23 2010-05-25  Giuseppe Scrivano  <gscrivano@gnu.org>
24
25         * host.c (sufmatch): Do not consider zero length entries.
26
27         * http.c (H_10X): New macro.
28         (gethttp): Silently ignore 1xx responses.
29
30 2010-05-24  Giuseppe Scrivano  <gscrivano@gnu.org>
31
32         * iri.h (dummy_iri): Define static.
33
34         * css-tokens.h (css_tokens): Remove variable.
35
36 2010-05-23  Giuseppe Scrivano  <gscrivano@gnu.org>
37
38         * http.c (http_atotm): Count the NUL character when copying the locale
39         string.
40         Reported by: Florian Weimer <fw@deneb.enyo.de>
41
42 2010-05-16  Giuseppe Scrivano  <gscrivano@gnu.org>
43
44         * Makefile.am (LDADD): Remove MD5_LDADD.
45         (MD5_LDADD): Remove definition.
46         (AM_CPPFLAGS): Remove MD5_CPPFLAGS.
47         (version.c): Remove dependency from MD5_LDADD.
48         (../md5/libmd5.a): Remove rule.
49
50         * ftp-opie.c: Include "md5.h".  Do not include "gen-md5.h".
51         (skey_response): New variable ctx.  Use md5 functions from the gnulib
52         module instead of functions defined previously in the "gen-md5.h" file.
53
54         * gen-md5.h: Remove file.
55         * gen-md5.c: Likewise.
56
57         * http.c: Include "md5.h".  Do not include "gen-md5.h".
58         (digest_authentication_encode): New variable ctx.  Use md5 functions
59         from the gnulib module instead of functions defined previously in the
60         "gen-md5.h" file.
61
62 2010-05-15  Giuseppe Scrivano  <gscrivano@gnu.org>
63
64         * Makefile.am: Quote any path using $(top_srcdir) or $(top_builddir).
65         (version.c): Remove dependency from configure.ac and Makefile.am.
66
67         * css.l: Include "wget.h".
68
69 2010-05-08  Giuseppe Scrivano  <gscrivano@gnu.org>
70
71         * Makefile.am: Update copyright years.
72
73         * cmpt.c: Likewise.
74
75         * connect.h: Likewise.
76
77         * convert.c: Likewise.
78
79         * convert.h: Likewise.
80
81         * cookies.c: Likewise.
82
83         * cookies.h: Likewise.
84
85         * css-tokens.h: Likewise.
86
87         * css-url.c: Likewise.
88
89         * css-url.h: Likewise.
90
91         * css.l: Likewise.
92
93         * exits.c: Likewise.
94
95         * exits.h: Likewise.
96
97         * ftp-basic.c: Likewise.
98
99         * ftp-ls.c: Likewise.
100
101         * ftp-opie.c: Likewise.
102
103         * ftp.c: Likewise.
104
105         * ftp.h: Likewise.
106
107         * gen-md5.c: Likewise.
108
109         * gen-md5.h: Likewise.
110
111         * gettext.h: Likewise.
112
113         * gnutls.c: Likewise.
114
115         * hash.c: Likewise.
116
117         * hash.h: Likewise.
118
119         * host.c: Likewise.
120
121         * host.h: Likewise.
122         * html-parse.c: Likewise.
123
124         * html-parse.h: Likewise.
125
126         * html-url.c: Likewise.
127
128         * html-url.h: Likewise.
129
130         * http-ntlm.c: Likewise.
131
132         * http-ntlm.h: Likewise.
133
134         * http.c: Likewise.
135
136         * http.h: Likewise.
137
138         * init.c: Likewise.
139
140         * init.h: Likewise.
141
142         * iri.c: Likewise.
143
144         * iri.h: Likewise.
145
146         * log.c: Likewise.
147
148         * log.h: Likewise.
149
150         * main.c: Likewise.
151
152         * mswindows.c: Likewise.
153
154         * mswindows.h: Likewise.
155
156         * netrc.c: Likewise.
157
158         * netrc.h: Likewise.
159
160         * openssl.c: Likewise.
161
162         * options.h: Likewise.
163         * progress.c: Likewise.
164
165         * progress.h: Likewise.
166
167         * ptimer.c: Likewise.
168
169         * ptimer.h: Likewise.
170
171         * recur.c: Likewise.
172
173         * recur.h: Likewise.
174
175         * res.c: Likewise.
176
177         * res.h: Likewise.
178
179         * retr.c: Likewise.
180
181         * retr.h: Likewise.
182
183         * spider.c: Likewise.
184
185         * spider.h: Likewise.
186
187         * ssl.h: Likewise.
188
189         * sysdep.h: Likewise.
190
191         * test.c: Likewise.
192
193         * test.h: Likewise.
194
195         * url.c: Likewise.
196
197         * url.h: Likewise.
198
199         * utils.c: Likewise.
200
201         * utils.h: Likewise.
202
203         * wget.h: Likewise.
204
205 2010-05-07  Giuseppe Scrivano  <gscrivano@gnu.org>
206
207         * gnutls.c (wgnutls_close): Use always `close', not `closesocket'.
208
209         * openssl.c (openssl_close): Use always `close', not `closesocket'.
210         (ssl_connect_wget): Get the real socket handle by FD_TO_SOCKET.
211         Define FD_TO_SOCKET if it is not yet defined.
212
213         * Makefile.am (libunittest_a_CPPFLAGS): Add -I$(top_builddir)/lib.
214
215         * mswindows.h: Always include <winsock2.h> and <ws2tcpip.h>.  Do not
216         include <winsock.h>.
217         [! INHIBIT_WRAP]: Remove macro's socket, bind, connect, accept, recv,
218         send, select, getsockname, getpeername, setsockopt, closesocket.
219         Remove wrapped_socket, wrapped_bind, wrapped_connect, wrapped_listen,
220         wrapped_accept, wrapped_recv, wrapped_send, wrapped_select,
221         wrapped_getsockname, wrapped_getpeername, wrapped_setsockopt,
222         wrapped_closesocket prototypes.
223
224         * mswindows.c:  Remove wrapped_socket, wrapped_bind, wrapped_connect,
225         wrapped_listen, wrapped_accept, wrapped_recv, wrapped_send,
226         wrapped_select, wrapped_getsockname, wrapped_getpeername,
227         wrapped_setsockopt, wrapped_closesocket functions.  Remove WRAP macro.
228
229         * host.h [WINDOWS]: Include <winsock2.h> not <winsock.h>.
230
231         * connect.c: Include <sys/socket.h> and <sys/select.h> on any platform,
232         gnulib ensures they exist.  Remove `read', `write', `close' macros.
233
234         * Makefile.am: Copy build_info.c.in only if we are working in a VPATH.
235         (AM_CPPFLAGS): Add directory with generated gnulib files.
236
237 2010-05-06  Giuseppe Scrivano  <gscrivano@gnu.org>
238
239         * Makefile.am (build_info.c): Generate build_info.c in the builddir,
240         not srcdir.
241
242 2010-05-05  Giuseppe Scrivano  <gscrivano@gnu.org>
243
244         * http.c (gethttp): Give a nicer message on a malformed status line.
245
246 2010-05-04  Giuseppe Scrivano  <gscrivano@gnu.org>
247
248         * http.c (gethttp): Check `resp_status' return code and handle
249         errors.
250
251 2010-05-01  Giuseppe Scrivano <gscrivano@gnu.org>
252
253         * http.c (request_send): Specify 1.1 as HTTP version for requests.
254         (skip_short_body): Accept new parameter `chunked'.  New variable
255         `remaining_chunk_size'.  Handle the chunked transfer encoding.
256         (gethttp): New variable `chunked_transfer_encoding`.  Set `keepalive'
257         by default to true.  Check if the server is using the chunked transfer
258         encoding.
259
260         * retr.h: Define `rb_chunked_transfer_encoding'.
261
262         * retr.c (fd_read_body): New variable `chunked'.  New variable
263         `remaining_chunk_size'.  Handle the chunked transfer encoding.
264
265 2010-03-04  Steven Schubiger  <stsc@member.fsf.org>
266
267         * ftp.c (ftp_loop_internal): Omit input file from being
268         deleted after retrieval.
269
270         * retr.c (input_file_url): New function.
271
272         * retr.h: Add declaration for input_file_url.
273
274 2010-03-02  Steven Schubiger  <stsc@member.fsf.org>
275
276         * retr.c (retrieve_from_file): Improve checking for a URL
277         by invoking url_valid_scheme instead of url_has_scheme.
278
279         * url.c (url_valid_scheme): New function.
280
281         * url.h: Add declaration for url_valid_scheme.
282
283 2010-03-02  Steven Schubiger  <stsc@member.fsf.org>
284
285         * retr.c (retrieve_from_file): Free memory of input file.
286
287 2010-03-01  Steven Schubiger  <stsc@member.fsf.org>
288
289         * retr.c (retrieve_url): Retrieve the local filename from ftp_loop.
290         (retrieve_from_file): Return if there's no input file.
291
292         * ftp.c (ftp_loop_internal): Duplicate the local filename into
293         retrieve_url's scope when a valid reference is being passed.
294         (ftp_loop): Call ftp_loop_internal here with passing a
295         reference to the local filename, elsewhere with NULL.
296
297         * ftp.h: Adjust declaration of ftp_loop.
298
299 2010-01-27  Paul Townsend  <aab@purdue.edu>  (tiny change)
300
301         * retr.c (fd_read_body): Be sure to measure timer when time has
302         elapsed, too, not just when we've made progress.
303
304 2010-01-13  Micah Cowan  <micah@cowan.name>
305
306         * openssl.c: Fixed some mixed declarations-and-code.
307
308 2010-01-09  Micah Cowan  <micah@cowan.name>
309
310         * init.c, main.c, http.c, ftp.c, options.h: Renamed
311         --no-match-server-timestamps to --no-use-server-timestamps, and
312         add it to print_help.
313
314 2010-01-09  David Holman  <holman.david@gmail.com>  (tiny change)
315
316         * init.c, main.c, http.c, ftp.c, options.h: Added support for
317         --no-match-server-timestamps.
318
319 2009-12-03  Peter Rosin  <peda@lysator.liu.se>
320
321         * snprintf.c (dopr): Output %p as unsigned.
322
323 2010-01-09  Jeremy Olexa  <darkside@gentoo.org>  (tiny change)
324
325         * init.c: Deal with systems which provide PATH_MAX in
326         sys/param.h rather than limits.h.
327
328 2009-10-09  Steven Schweda  <sms@antinode.info>
329
330         * utils.c: Added characters " : \ | to the list of normal
331         caret-escaped (ODS5) characters in the char_prop[] table.
332
333 2009-09-22  Arvind Jamuna Dixit  <ardsrk@gmail.com>
334
335         * http.c (extract_param, parse_content_disposition): Support
336         RFC 2231 while parsing Content-Disposition header
337
338 2009-10-24  Petr Pisar  <petr.pisar@atlas.cz>
339
340         * openssl.c: Implement support for (multiple) subjectAltNames in
341         X509 certificates, not just the commonName.
342
343 2009-10-09  Micah Cowan  <micah@cowan.name>
344
345         * main.c: Fix declaration of compiled_features.
346
347         * build_info.c.in: Adapt to new input format. Added a check for
348         large-file support. Replaced the "openssl" and "gnutls"
349         advertisements with a single "ssl/foo" advertisement.
350
351 2009-09-30  Micah Cowan  <micah@cowan.name>
352
353         * sysdep.h: Unconditionally include stdbool.h (gnulib has it for
354         systems that don't supply it.)
355
356         * vms.c: Added functions vms_basename(), used to extract the
357         bare executable name from argv[0], and vms_getpass(), a
358         VMS-specific replacement for GNU getpass().
359
360          vms.c: Added global string constants: compilation_string
361         (NULL), link_string (NULL), and version_string (real).
362
363 2009-09-24  Micah Cowan  <micah@cowan.name>
364
365         * vms.c: Moved from vms/vms.c.
366
367         * sysdep.h: Use proper prototypes for snprintf, vsnprintf (thanks
368         to Steven Schweda).
369
370 2009-09-24  Steven Schweda  <sms@antinode.info>
371
372         * main.c (print_version): Remove VMS-conditional build info
373         string; the new VMS builders use OS_TYPE.
374
375         * ftp.c (getftp): Fix accidental use of target -> targ.
376
377 2009-09-24  Micah Cowan  <micah@cowan.name>
378
379         * host.c (host_errstr): host_errstr should return const char *.
380
381 2009-09-22  Micah Cowan  <micah@cowan.name>
382
383         * Makefile.am (version.c): Explicitly tell Mercurial where the
384         top-source repository should be, so it doesn't accidentally use
385         the repository for a containing directory (for instance, if the
386         user's home directory is managed by a Mercurial repo). Also
387         ensures we find the repository, even if the build directory is
388         outside the source directory.
389
390         * wget.h: define WINDOWS if _WIN32 or __WIN32__ is defined, but
391         not __CYGWIN__.
392
393         * mswindows.c (xsleep): Check for availability of the sleep
394         function, in addition to the usleep function.
395         (get_winsock_error, windows_strerror): Removed (gnulib already
396         supplies this functionality).
397
398         * mswindows.h [NEED_GAI_STRERROR]: define gai_strerror
399         to (gnulib's) strerror, rather than windows_strerror. Removed
400         error macro definitions provided by gnulib.
401         (windows_strerror): Removed (gnulib already supplies this
402         functionality).
403
404         * host.c: Don't declare h_errno when building on Windows.
405
406         * Makefile.am (LIBS): Added @W32LIBS@.
407         (EXTRA_wget_SOURCES): Removed (it's in LIBOBJ now).
408         (version.c): Removed dependency on $(LDADD), since it may include
409         dependencies that are not part of the Wget sources (-lwsock32, for
410         instance).
411
412         * openssl.c (ssl_check_certificate): Avoid reusing the same buffer
413         space for successive quoted arguments. Thanks to Steven Schweda
414         for pointing out the problem.
415
416 2009-09-21  Micah Cowan  <micah@cowan.name>
417
418         * progress.c (update_speed_ring): "the the" -> "the".
419
420         * css-url.c, iri.c, mswindows.c: Removed assert.h inclusion (not
421         using it).
422
423 2009-09-11  Steven Schweda  <sms@antinode.info>
424
425         * utils.c, utils.h (fopen_excl): Make second argument an int,
426         rather than a bool (so it can handle the appropriate VMS version
427         of the flag).
428
429         * main.c (print_version): Don't print LOCALEDIR unless NLS is
430         enabled.
431
432         * http.c (gethttp): Pass FOPEN_BIN_FLAG, instead of true.
433
434         * ftp.c (ftp_retrieve_glob): Cast strcmp to assign to cmp, for a
435         silly HP build environment.
436
437 2009-09-08  Steven Schubiger  <stsc@member.fsf.org>
438
439         * main.c, init.c: Mark the --preserve-permissions and
440         --html-extension option as deprecated.
441
442 2009-09-06  Micah Cowan  <micah@cowan.name>
443
444         * ftp.c (getftp, ftp_loop_internal): Separate "len" input/output
445         parameter (with different meanings for input and output), into two
446         separate parameters, one input (passed_expected_bytes) and one
447         output (qtyread). Fixes bug #26870.
448
449 2009-09-05  Steven Schubiger  <stsc@member.fsf.org>
450
451         * retr.h: Declare set_local_file() to avoid build warnings.
452
453 2009-09-05  Gisle Vanem  <gvanem@broadpark.no>
454
455         * connect.c, init.c, main.c, openssl.c, options.h:  Replace
456         "ifdef MSDOS" with "ifdef USE_WATT32" since DOS-targets in fact
457         use the Watt-32 tcp/ip stack.
458
459 2009-09-04  Micah Cowan  <micah@cowan.name>
460
461         * Makefile.am: Move build_info.c to wget_SOURCES from
462         nodist_wget_SOURCES, reduce dependencies, and invoke build_info.pl
463         in its new home, $(top_srcdir)/build-aux.
464
465 2009-09-03  Micah Cowan  <micah@cowan.name>
466
467         * ftp-ls.c (ftp_parse_vms_ls): Replace use of localtime_r with
468         localtime, as not all platforms have localtime_r.
469
470         * Makefile.am (wget_SOURCES): Rearranged some of the file order,
471         so .c files and .h files are apart. Added gettext.h, so that it
472         shows up in the dist.
473
474 2009-09-02  Micah Cowan  <micah@cowan.name>
475
476         * gettext.h: Refreshed from gettext 0.17.
477
478         * test.c: Added definition of program_name variable, required by
479         lib/error.c (libgnu.a). Doesn't cause problems until you try to
480         build on a non-GNU system...
481
482         * build_info.c.in: Removed useless "+gettext" feature ad.
483
484 2009-08-29  Steven Schubiger  <stsc@member.fsf.org>
485
486         * convert.c (local_quote_string): Percent-encode semicolons
487         in local file strings.
488
489 2009-08-27  Micah Cowan  <micah@cowan.name>
490
491         * wget.h (uerr_t): added new VERIFCERTERR code for SSL certificate
492         problems. Marked exit codes that are defined but never used (at
493         least, the ones I could find).
494
495         * retr.c, retr.h (retrieve_url): Added a new boolean argument to
496         determine whether an exit status should be recorded.
497         (retrieve_from_file): Adjust to new retrieve_url signature.
498
499         * res.c (res_retrieve_file): Don't have retrieve_url record an
500         exit status for robots.txt.
501
502         * recur.c (retrieve_tree): Adjust to new retrieve_url signature.
503
504         * main.c (main): Use the exit status stored by retrieve_url.
505
506         * http.c (gethttp): Distinguish certificate verification problems
507         from SSL connection issues.
508         (http_loop): Handle newly-created VERIFCERTERR error code.
509
510         * exits.c, exits.h: Newly added.
511
512         * Makefile.am (wget_SOURCES): Add exits.c and exits.h.
513
514 2009-08-27  Micah Cowan  <micah@cowan.name>
515
516         * http.c (gethttp): Make sure Wget heeds cookies when they
517         are sent with a 401 response; or any other sort of response for
518         that matter (#26775).
519
520 2009-08-19  Micah Cowan  <micah@cowan.name>
521
522         * openssl.c (ssl_check_certificate): Only warn about an attack if
523         the hostname would otherwise have matched. Also some formatting
524         cleanup.
525
526 2009-08-19  Joao Ferreira  <joao@joaoff.com>
527
528         * openssl.c (ssl_check_certificate): Detect embedded NUL
529         characters in the SSL certificate common name.
530
531 2009-08-17  Tony Lewis  <tlewis@exelana.com>
532
533         * http.c (gethttp): Ensure that we parse Content-Length before we
534         attempt to refer to its value. Without this fix, NTLM support was
535         completely buggered. #27192
536
537 2009-08-09  Michael Baeuerle  <michael.baeuerle@gmx.net>
538
539         * ftp.c: #include <strings.h> for strcasecmp.
540
541 2009-07-28  Micah Cowan  <micah@cowan.name>
542
543         * main.c (option_data): Rename --html-extension to
544         --adjust-extension.
545         (print_help): Ditto.
546
547         * options.h (struct option): Rename html_extension to
548         adjust_extension.
549         * http.c (gethttp): Ditto.
550         * convert.c (local_quote_string): Ditto.
551
552         * init.c (commands): Add "adjustextension", and reflect rename
553         change for opt.adjust_extension, for both "adjustextension" and
554         "htmlextension".
555
556 2009-07-27  Micah Cowan  <micah@cowan.name>
557
558         * options.h (struct options): Added restrict_files_nonascii
559         boolean field.
560
561         * url.c (FILE_CHAR_TEST): Add check for chars outside the ASCII
562         range.
563
564         * init.c (defaults): Add restrict_files_nonascii to initialization.
565         (cmd_spec_restrict_file_names): Allow parsing of "ascii" keyword.
566
567 2009-07-27  Marcel Telka  <marcel@telka.sk>
568
569         * iri.c (do_conversion): Typo: invalide -> invalid
570
571 2009-07-27  Petr Pisar  <petr.pisar@atlas.cz>
572
573         * main.c (print_help): Fixed a couple typos.
574
575 2009-07-26  Micah Cowan  <micah@cowan.name>
576
577         * main.c (option_data): Rename --locale option to --local-encoding
578         (print_help): Document --no-iri, --local-encoding, and
579         --remote-encoding, within usage message. Remove defunct
580         --preserve-permissions.
581
582 2009-07-23  Micah Cowan  <micah@cowan.name>
583
584         * progress.c (get_eta): Change "Translation note" in comment to
585         "TRANSLATORS", so it actually appears in wget.pot.
586
587 2009-07-06  Micah Cowan  <micah@cowan.name>
588
589         * main.c (print_help): Improve documentation of --base.
590
591 2009-07-05  Micah Cowan  <micah@cowan.name>
592
593         * html-url.c (tag_handle_meta): Handle meta name="robots"
594         properly: deal with whitespace, commas after...
595
596         * netrc.c (parse_netrc): Rename local-scope variable "quote" to
597         "qmark", to avoid conflict with the function name.
598
599 2009-07-05  Petr Pisar  <petr.pisar@atlas.cz>
600
601         * main.c (print_version): Mark initial line for translation, along
602         with (env), (user), and (system). Change copyright year to 2009.
603
604         * http.c (http_loop): Space after colon.
605
606         * gnutls.c (ssl_check_certificate): Use quote function, rather
607         than explicit quotes.
608
609 2009-07-05  Micah Cowan  <micah@cowan.name>
610
611         * Makefile.am (version.c): Add dependency on configure.ac.
612
613         * iri.c: Mark some strings for translation.
614
615 2009-07-04  Steven Schweda  <sms@antinode.info>
616
617         * wget.h (ORIG_SFX): Macro added, to supply an alternative "_orig"
618         suffix on VMS.
619
620         * connect.c, host.c, host.h, main.c: Include "vms_ip.h" rather
621         than <netdb.h> on VMS systems.
622
623         * convert.c (write_backup_file): Use "_orig" rather than ".orig"
624         on VMS.
625
626         * ftp-basic.c (ftp_list): Don't use LIST -a on VMS servers.
627
628         * ftp.c [__VMS]: Include "vms.h"
629         * ftp.c (getftp): Disable some unhelpful "for VMS" code. Pass the
630         OS type to ftp_list.
631         (getftp) [__VMS]: Alter the filename as required, and invoke fopen
632         with extra optional arguments.
633         (ftp_retrieve_list): Set permissions before setting the times.
634
635         * ftp-ls.c [__VMS]: Various improvements.
636
637         * http.c (SET_USER_AGENT): Added. Include operating-system info in
638         the User-Agent header.
639         (gethttp): Use ORIG_SFX macro.
640         (gethttp) [__VMS]: invoke fopen with extra arguments to
641         communicate file type.
642         (http_loop): Add cast to time_t.
643
644         * init.c (wgetrc_user_file_name) [__VMS]: Adjustments for where to
645         find the .wgetrc.
646
647         * log.c: Adjustments to improve handling of log files on VMS.
648
649         * main.c [__VMS]: Added --ftp-stmlf option (and associated
650         documentation). Adjust description of backup-suffixes, as they now
651         differ for VMS.
652         (print_help, print_version): Include OS type in version
653         information.
654         (main) [__VMS]: Invoke fopen with extra options, to specify file
655         type information.
656
657         * netrc.c (search_netrc) [__VMS]: Fix .netrc-finding.
658
659         * openssl.c, openssl.h (ssl_connect_wget): Renamed from ssl_connect.
660
661         * options.h (struct options): Add ftp_stmlf field.
662
663         * retr.c (write_data) [__VMS]: Avoid fflush.
664
665         * url.c [__VMS]: Include vms.h.
666         * url.c (url_file_name) [__VMS]: Handle naming as required for VMS.
667
668         * utils.c [__VMS]: Include vms.h. Various added facilities for VMS
669         needs.
670
671 2009-07-04  Micah Cowan  <micah@cowan.name>
672
673         * main.c (print_version): Allow localization of the version-info
674         labels, eschew attempts at alignment (which is complicated when
675         handling translated strings), and avoid using printf() with
676         variable-stored format strings that lack conversion
677         specifications.
678         (format_and_print_line): For similar reasons, don't calculate
679         line-continuation tabulation based on the number of bytes in a
680         string.
681
682 2009-07-04  Steven Schubiger  <stsc@member.fsf.org>
683
684         * url.c (url_parse): If an URL scheme is invalid, distinguish
685         between an unsupported or missing scheme.
686
687         * url.c: Add a "missing scheme" entry to parse_errors.
688
689 2009-07-03  Micah Cowan  <micah@cowan.name>
690
691         * iri.h (iri_dup): Provide macro definition for when IRIs are
692         disabled.
693
694         * Makefile.am (LIBS): Added @LIBICONV@.
695         (wget_SOURCES): Added iri.h.
696         (EXTRA_wget_SOURCES): Added iri.c, so it gets packaged even if IRI
697         support was disabled.
698
699 2009-07-02  Micah Cowan  <micah@cowan.name>
700
701         * recur.c (url_enqueue): Quote enqueue/dequeue debug messages.
702
703         * html-url.c (append_url): Change "merge()" quoting style from
704         locale_quoting_style to escape_quoting_style.
705
706 2009-07-01  Micah Cowan  <micah@cowan.name>
707
708         * retr.c (retrieve_url): Use the existing "redirect" label,
709         instead of superfluous "second_try". Removed no-longer-accurate
710         debug statement. Use the "newloc" parameter to store the fallback
711         URL, when IRI version was rejected.
712
713         * recur.c (retrieve_tree): Always use the parsed URL for tracking
714         the Referer, since that's the one we actually requested (if
715         there's a difference in terms of percent-encodings and such).
716
717 2009-07-01  Steven Schubiger  <stsc@member.fsf.org>
718
719         * Makefile.am: Add a rule to generate build_info.c and list
720         the build_info.c.in file in EXTRA_DIST. Adjust elsewhere
721         where needed.
722
723         * build_info.c: Remove this static source file.
724
725         * build_info.c.in: Data for generation of build_info.c.
726
727 2009-06-29  Micah Cowan  <micah@cowan.name>
728
729         * html-url.c (append_url): Quote some more arguments that might
730         contain characters that are inappropriate to display for the
731         current locale.
732
733         * retr.c (retrieve_from_file): Be sure to pass iri information
734         when parsing an input-fle url, and be sure to hand a clean iri
735         struct, off to retrieve_tree and retrieve_url.
736
737         * iri.c, iri.h (iri_dup): Added.
738
739         * retr.c (retrieve_url): Re-parse for IRI fallback.
740
741         * main.c (main): Set up iri before the url_parse invocation (so we
742         can use it).
743
744 2009-06-20  Jay Krell  <jay.krell@cornell.edu>
745
746         * sysdep.h (_ALL_SOURCE): (small change) Define the _ALL_SOURCE
747         macro on INTERIX systems. (I switched the location from ftp.c to
748         sysdep.h --mjc)
749
750 2009-06-15  Micah Cowan  <micah@cowan.name>
751
752         * ftp.c (getftp): If we can't accept the connection, return
753         CONERROR, not whatever the contents of err happens to be. Fixes
754         bug #25015.
755
756         * retr.c (fd_read_body): Make both args to progress_create
757         consistent, resulting in an accurate progress display. Fixes bug
758         #24948.
759
760 2009-06-14  Micah Cowan  <micah@cowan.name>
761
762         * Makefile.am (wget_SOURCES): css-tokens.h needs to ship with
763         dist, too.
764
765 2009-06-13  Micah Cowan  <micah@cowan.name>
766
767         * init.c: Rename setval_internal_wrapper to setval_internal_tilde,
768         ensure we don't "replace" the tilde unless it's actually
769         present. Clean up some minor GNU style issues.
770
771 2009-06-13  Julien Pichon  <julienpichon7@gmail.com>
772
773         * init.c: Handle tilde-expansion in wgetrc commands, without
774         resorting to setting/unsetting globals to change behavior in one
775         call location.
776
777 2009-06-12  Micah Cowan  <micah@cowan.name>
778
779         * host.c: Include <sys/types.h> before <sys/socket.h>. Not
780         required by POSIX any more, but some older systems (such as
781         FreeBSD 4.1) still need it, and it doesn't seem like it could
782         hurt...
783
784         * build_info.c (library): Handle "https" as a feature in its own
785         right, apart from "gnutls" and "openssl".
786
787         * host.c: Declare h_errno if no declaration is provided. Idea
788         thanks to Maciej W. Rozycki.
789
790 2009-06-11  Xin Zou  <zouxin2008@gmail.com>
791
792         * http.c (gethttp): Fix some memory leaks.
793
794 2009-06-11  Micah Cowan  <micah@cowan.name>
795
796         * http.c (http_atotm): Handle potential for setlocale's return
797         value to be static storage. Thanks to Benjamin Wolsey
798         <bwy@benjaminwolsey.de>.
799
800         * sysdep.h: Need NAMESPACE_TWEAKS on non-Linux glibc-based
801         systems, too. Thanks to Robert Millan.
802
803 2009-05-28  Steven Schubiger  <stsc@member.fsf.org>
804
805         * ftp.c (ftp_get_listing): Update the "listing file"
806         string after calling ftp_loop_internal().
807
808 2009-05-27  Steven Schubiger  <stsc@member.fsf.org>
809
810         * ftp.c (ftp_get_listing): Duplicate the "listing file"
811         string to avoid memory corruption when FOPEN_EXCL_ERR is
812         encountered.
813
814 2009-05-17  Steven Schubiger  <stsc@member.fsf.org>
815
816         * progress.c (eta_to_human_short): Fix the remaining hours
817         to be displayed. Spotted by Tadeu Martins (#26411).
818
819 2009-04-24  Micah Cowan  <micah@cowan.name>
820
821         * hash.c: Change stdint.h inclusion to use HAVE_STDINT_H, not C99
822         check.
823
824         * connect.c: stdint.h inclusion added.
825
826         Thanks to Markus Duft <mduft@gentoo.org> for a similar patch.
827
828 2009-04-20  Micah Cowan  <micah@cowan.name>
829
830         * Makefile.am (version.c): Fix unportable use of "echo -n".
831
832 2009-04-13  Steven Schubiger  <stsc@member.fsf.org>
833
834         * ftp.c (ftp_retrieve_list): Move the duplicated code that
835         determines the local file to a function.
836
837         * http.c (http_loop): Likewise.
838
839         * retr.c (set_local_file): New function.
840
841 2009-04-11  Steven Schubiger  <stsc@member.fsf.org>
842
843         * init.c (initialize): Run a custom SYSTEM_WGETRC when
844         provided as an environment variable.
845
846 2009-02-27  Gisle Vanem  <gvanem@broadpark.no>
847
848         * main.c (main): "freopen (NULL,.." causes an assertion in MSVC
849         debug-mode.  I.e. NULL isn't legal. But the "CONOUT$" device works
850         fine.
851
852 2009-02-27  Steven Schubiger  <stsc@member.fsf.org>
853
854         * ftp.c (ftp_loop_internal): Don't claim for FTP retrievals
855         when writing to standard output either that the document
856         has been saved. Addresses bug #20520 again.
857
858 2009-02-21  Steven Schubiger  <stsc@member.fsf.org>
859
860         * http.c (http_loop): When a document is written to
861         standard output, don't claim it has been saved to a file.
862         Addresses bug #20520.
863
864 2009-02-18  Steven Schubiger  <stsc@members.fsf.org>
865
866         * recur.h: Remove the dangling declaration for recursive_cleanup().
867
868 2009-02-01  Gerardo E. Gidoni  <gerel@gnu.org>
869
870         * main.c, recur.c, recur.h, res.c, retr.c, retr.h: restructured code to
871         avoid multiple 'url_parse' calls.
872
873 2008-11-13  Micah Cowan  <micah@cowan.name>
874
875         * http.c (gethttp): Don't do anything when content-length >= our
876         requested range.
877
878 2008-11-27  Saint Xavier  <wget@sxav.eu>
879
880         * http.c (gethttp): Move authentication code before filename
881         allocation avoiding fallbacking on default filename because
882         "Content-Disposition" header wasn't present before authentcation
883         has been completed. Fixes bug #24862.
884
885 2008-11-16  Steven Schubiger  <stsc@members.fsf.org>
886
887         * main.c: Declare and initialize the numurls counter.
888
889         * ftp.c, http.c: Make the counter visible here and use it.
890
891         * options.h: Remove old declaration from options struct.
892
893 2008-11-15  Steven Schubiger  <stsc@members.fsf.org>
894
895         * init.c (defaults): Set default waitretry value.
896
897 2008-11-14  Steven Schubiger  <stsc@members.fsf.org>
898
899         * main.c (format_and_print_line): Use a custom format
900         string for printing leading spaces.
901
902 2008-11-12  Micah Cowan  <micah@cowan.name>
903
904         * ftp-ls.c (ftp_index): HTML-escape dir name in title, h1, a:href.
905
906 2008-11-12  Alexander Belopolsky  <alexander.belopolsky@gmail.com>
907
908         * url.c, url.h (url_escape_unsafe_and_reserved): Added.
909
910         * ftp-ls.c (ftp_index): URL-escape, rather than HTML-escape, the
911         filename appearing in the link.
912
913 2008-11-12  Steven Schubiger  <stsc@members.fsf.org>
914
915         * main.c (print_version): Hand the relevant
916         xstrdup/xfree calls back to format_and_print_line().
917
918 2008-11-11  Steven Schubiger  <stsc@members.fsf.org>
919
920         * main.c (format_and_print_line): Move both the memory
921         allocating and freeing bits upwards to print_version().
922
923 2008-11-10  Saint Xavier  <wget@sxav.eu>
924
925         * http.c: Make --auth-no-challenge works with user:pass@ in URLs.
926
927 2008-11-05  Micah Cowan  <micah@cowan.name>
928
929         * ftp.c (print_length): Should print humanized "size remaining"
930         only when it's at least 1k.
931
932 2008-10-31  Micah Cowan  <micah@cowan.name>
933
934         * main.c (print_version): Add information about the mailing list.
935
936 2008-10-31  Alexander Drozdov  <dzal_mail@mtu-net.ru>
937
938         * retr.c (fd_read_hunk): Make assert deal with maxsize == 0.
939
940         * ftp-ls.c (clean_line): Prevent underflow on empty lines.
941
942 2008-10-26  Gisle Vanem  <gvanem@broadpark.no>
943
944         * main.c (format_and_print_line): Put variables on top of
945         blocks (not all compilers are C99). Add an extra '\n' if
946         SYSTEM_WGETRC isn't defined and printed.
947
948 2008-09-09  Gisle Vanem  <gvanem@broadpark.no>
949
950         * url.c (url_error): Use aprintf, not asprintf.
951
952 2008-09-09  Micah Cowan  <micah@cowan.name>
953
954         * init.c (home_dir): Save the calculated value for home,
955         to avoid duplicated work on repeated calls.
956         (wgetrc_file_name) [WINDOWS]: Define and initialize home var.
957
958         * build_info.c, main.c: Remove unnecessary extern vars
959         system_wgetrc and locale_dir.
960
961         * main.c: Define program_name for lib/error.c.
962
963 2008-09-02  Gisle Vanem  <gvanem@broadpark.no>
964
965         * mswindows.h: Must ensure <stdio.h> is included before
966         we redefine ?vsnprintf().
967
968 2008-08-08  Steven Schubiger  <stsc@members.fsf.org>
969
970         * main.c, utils.h: Removed some dead conditional DEBUG_MALLOC code.
971
972 2008-08-03  Micah Cowan  <micah@cowan.name>
973
974         * main.c (print_help): Added --default-page.
975
976 2008-08-01  Joao Ferreira  <joao@joaoff.com>
977
978         * init.c, main.c, options.h, url.c: Added option --default-page
979         to support alternative default names for index.html
980
981 2008-08-03  Micah Cowan  <micah@cowan.name>
982
983         * build_info.c, css-url.c: #include wget.h, not config.h.
984
985 2008-08-03  Steven Schubiger  <stsc@members.fsf.org>
986
987         * url.c, url.h (url_error): Better messages for unsupported
988         schemes, especially https.
989
990         * html-url.c, recur.c, retr.c: Adjust to new url_error
991         invocation, and free result.
992
993 2008-07-17  Steven Schubiger  <stsc@members.fsf.org>
994
995         * retr.c (retrieve_from_file): When given an URL as input file,
996         use it as baseref if none was specified and treat the input file
997         as HTML if its content type is text/html.
998
999         * init.c (cleanup): Free the memory associated with the base
1000         option (when DEBUG_MALLOC is defined).
1001
1002 2008-07-02  Xavier Saint  <wget@sxav.eu>
1003
1004         * iri.c, iri.h  : New function idn_decode() to decode ASCII
1005         encoded hostname to the locale.
1006
1007         * host.c : Show hostname to be resolved both in locale and
1008         ASCII encoded.
1009
1010 2008-06-28  Steven Schubiger  <stsc@members.fsf.org>
1011
1012         * retr.c (retrieve_from_file): Allow for reading the links from
1013         an external file (HTTP/FTP).
1014
1015 2008-06-26  Xavier Saint  <wget@sxav.eu>
1016
1017         * iri.c, iri.h : New functions locale_to_utf8() and
1018         idn_encode() adding basic capabilities of IRI/IDN.
1019
1020         * url.c : Convert URLs from locale to UTF-8 allowing a basic
1021         support of IRI/IDN
1022
1023 2008-06-25  Steven Schubiger  <stsc@members.fsf.org>
1024
1025         * ftp.c (getftp): When spidering a FTP URL, emit a diagnostic
1026         message if the remote file exists.
1027
1028 2008-06-24  Steven Schubiger  <stsc@members.fsf.org>
1029
1030         * http.c (http_loop): Replace escnonprint() occurence with
1031         a quotearg_style() call.
1032
1033 2008-06-24  Micah Cowan  <micah@cowan.name>
1034
1035         * ftp-ls.c (ftp_index): Don't assume time_t* is compatible with
1036         long*. Fixes crash on Windows, and probably other systems.
1037
1038 2008-06-22  Steven Schubiger  <stsc@members.fsf.org>
1039
1040         * http.c: Explicitly initialize and deallocate the message
1041         string used by the -nv --spider functionality.
1042
1043 2008-06-22  Steven Schubiger  <schubiger@gmail.com>
1044
1045         * http.c: Make -nv --spider include the file's name when it
1046         exists.
1047
1048 2008-06-22  Micah Cowan  <micah@cowan.name>
1049
1050         * Makefile.am (version.c): Fixed version string invocation so it
1051         once again can't result in unterminated strings, made all the
1052         string vars pointers-to-const, and moved line lengths
1053         below 80 (in Makefile.am, not in version.c).
1054
1055 2008-06-19  Xavier Saint  <wget@sxav.eu>
1056
1057         * iri.c, iri.h : New function check_encoding_name() as
1058         a preliminary encoding name check.
1059
1060         * main.c, iri.c : Make use of check_encoding_name().
1061
1062 2008-06-19  Xavier Saint  <wget@sxav.eu>
1063
1064         * iri.c : Include missing stringprep.h file and add a
1065         cast.
1066
1067         * init.c : set a default initial value for opt.enable_iri,
1068         opt.locale and opt.encoding_remote.
1069
1070 2008-06-19  Xavier Saint  <wget@sxav.eu>
1071
1072         * iri.c, iri.h : Add a new function find_locale() to find
1073         out the local system encoding.
1074
1075         * main.c : Make use of find_locale().
1076
1077 2008-06-19  Xavier Saint  <wget@sxav.eu>
1078
1079         * html-url.c : Add "content-type" meta tag parsing for
1080         retrieving page encoding.
1081
1082         * iri.h : Make no-op version of parse_charset() return
1083         NULL.
1084
1085 2008-06-16  Micah Cowan  <micah@cowan.name>
1086
1087         * http.c (http_loop): When hstat.len is higher than the
1088         successfully completed content's length, but it's because we
1089         _set_ it that way, don't abort.
1090
1091 2008-06-14  Xavier Saint  <wget@sxav.eu>
1092
1093         * iri.c, iri.h : New files.
1094
1095         * Makefile.am : Add files iri.h and conditional iri.c.
1096
1097         * build_info.c : Add compiled feature "iri".
1098
1099         * http.c : include iri.h and parse charset from Content-Type
1100         header.
1101
1102         * init.c, main.c, options.h : if an options isn't supported
1103         at compiled time, don't get rid off it and show a dummy
1104         message instead if they are used.
1105
1106 2008-06-13  Micah Cowan  <micah@cowan.name>
1107
1108         * build_info.c: ENABLE_NTLM, not HAVE_NTLM; distinguish OpenSSL
1109         from "ssl".
1110
1111 2008-06-13  Madhusudan Hosaagrahara <com.gmail.hrmadhu>
1112
1113         * Makefile.am, main.c, init.c, init.h, build_info.c: Adds build
1114         information to the --version command line option. Fixes bug
1115         #20636.
1116
1117 2008-06-01  Micah Cowan  <micah@cowan.name>
1118
1119         * main.c [WINDOWS]: Reopen stdout in binary mode, when -O - is
1120         given.
1121
1122 2008-05-31 Micah Cowan  <micah@cowan.name>
1123
1124         * html-url.c, http.c: Avoid casts in a couple spots.
1125
1126 2008-05-30 Henri Häkkinen  <henux@users.sourceforge.net>
1127
1128         * cookies.c, ftp-basic.c, hash.c, html-url.c, http-ntlm.c, http.c,
1129         init.c, log.c, main.c, progress.c, ptimer.c, spider.c, url.c,
1130         utils.c: Minor changes to silence warnings when using -Wall.
1131
1132 2008-05-26  Steven Schubiger  <schubiger@gmail.com>
1133
1134         * ftp.c (getftp): Replace last remaining invocation of escnonprint
1135         with gnulib quote.
1136
1137 2008-05-19  Micah Cowan  <micah@cowan.name>
1138
1139         * main.c (main): Password prompt should be done only once (not
1140         once per argument), and should be done prior to the background
1141         fork.
1142
1143 2008-05-17  Steven Schubiger  <schubiger@gmail.com>
1144
1145         * init.c (defaults): Set the preferred IP family to `none' by
1146         default.
1147
1148 2008-05-17  Kenny Parnell  <k.parnell@gmail.com>
1149
1150         (cmd_spec_prefer_family): Initialize prefer_family to prefer_none.
1151
1152 2008-05-17  Micah Cowan  <micah@cowan.name>
1153
1154         * main.c (main): Handle Ctrl-D on command-line.
1155
1156 2008-05-15  Steven Schubiger  <schubiger@gmail.com>
1157
1158         * ftp.c (getftp): Verify that the file actually exists in FTP, by
1159         checking it against the listing.
1160
1161 2008-05-15  Micah Cowan  <micah@cowan.name>
1162
1163         * main.c (prompt_for_password): Use the quote module.
1164
1165 2008-05-14  Micah Cowan  <micah@cowan.name>
1166
1167         * ftp.c (ftp_retrieve_list): Symlinks and other filenames
1168         should be fully quoted.
1169
1170 2008-05-12  Micah Cowan  <micah@cowan.name>
1171
1172         * main.c (main): Downgrade "-N with -O" to a warning, and switch
1173         it off to avoid confusing messages.
1174
1175 2008-04-30  Micah Cowan  <micah@cowan.name>
1176
1177         * progress.c (create_image): Fix glitch where too many spaces are
1178         printed on lines that don't display the ETA, in multibyte
1179         locales.
1180
1181 2008-04-30  Steven Schubiger  <stsc@members.fsf.org>
1182
1183         * main.c (main): New code that handles prompting for passwords
1184         when specified explicitly via command-line option (using gnulib's
1185         getpass-gnu module).
1186         (main): Include the getpass header.
1187
1188         * init.c: Add "ask-password" to the list of recognized commands.
1189
1190         * options.h: Add an according boolean member to the options
1191         struct.
1192
1193         * sysdep.h: Comment the defines __EXTENSIONS__ and _GNU_SOURCE
1194         out, because they're now defined independently by config.h.
1195
1196 2008-04-27  Rabin Vincent  <rabin@rab.in>
1197
1198         * http.c (http_loop): Fix return for the case where we don't
1199         download a file because of -nc.
1200
1201 2008-04-27  Micah Cowan  <micah@cowan.name>
1202
1203         * url.c (path_simplify): Go back to allowing leading ".." in
1204         paths, but only for FTP URLs.
1205         (test_path_simplify): Add scheme-specificness to tests, adapt for
1206         mu_run_test.
1207
1208         * test.c (all_tests): Add test_path_simplify.
1209
1210         * main.c (main): Downgrade -r, -p with -O to a warning rather than
1211         an error; elaborate just a bit more for other -O combination
1212         cases.
1213
1214 2008-04-26  Micah Cowan  <micah@cowan.name>
1215
1216         * http.c (gethttp): Move proxy CONNECT handling to below the
1217         retry_with_auth label, to deal with properly reconnecting to
1218         proxies when we need to authenticate.
1219
1220 2008-04-25  Micah Cowan  <micah@cowan.name>
1221
1222         * Makefile.am: -I foo -> -Ifoo.
1223
1224 2008-04-24  Micah Cowan  <micah@cowan.name>
1225
1226         * main.c: Revised usage description of --convert-links to apply
1227         to CSS as well as to HTML.
1228
1229 2008-04-23  Micah Cowan  <micah@cowan.name>
1230
1231         * utils.c (test_dir_matches_p): Added a test for the case
1232         described in issue #20518.
1233
1234 2008-04-22  Micah Cowan  <micah@cowan.name>
1235
1236         * Makefile.am, css.lex, css.l: Renamed css.lex to css.l.
1237         * recur.c (retrieve_tree): Fix typo to allow text/css files to
1238         be parsed.
1239
1240 2008-04-22  Ted Mielczarek  <ted.mielczarek@gmail.com>
1241
1242         * css.lex, css-url.c, css-url.h: Added to implement support for
1243         parsing CSS in Wget.
1244         * convert.c: Convert links in CSS files, too.
1245         * convert.h (convert_options): Added for options link_css_p,
1246         link_expect_css.
1247         * convert.h: Added prototype for new register_css function.
1248         * html-parse.c: Added support for parsing element content, in
1249         addition to tag starts and ends.
1250         * html-parse.h (taginfo): Added delimiter fields for element
1251         content.
1252         * html-url.h: Added.
1253         * html-url.c (append_url): No longer internal-linkage only. Now
1254         takes position and size as explicit parameters.
1255         * html-url.c: Use new html-url.h header, add support for
1256         handling of "style" HTML attributes. Mark URIs obtained from
1257         link tags with rel="stylesheet" with link_expect_css. Adapt
1258         uses of append_url to supply the newly-added parameters for
1259         position and size.
1260         * http.c: Add detection for when the content-type is text/css;
1261         and ensure that such files have the ".css" filename extension,
1262         when --convert-links is active.
1263         * recur.h: Remove declarations for functions found in
1264         html-url.c (moved to html-url.h).
1265         * recur.c: Add support for culling links from CSS files, too,
1266         and tracking for when we're expecting the file to be CSS (even
1267         when its content type isn't text/css).
1268         * retr.c (retrieve_url): Add registration of CSS files.
1269         * wget.h: Added TEXTCSS to dt flags enum.
1270         * Makefile.am: Added css.lex, css-url.c, css-url.h, html-url.h
1271         to wget_SOURCES.
1272
1273 2008-04-22  Jim Paris  <jim@jtan.com>
1274
1275         * openssl.c (ssl_init): Enable combined certificate/key in
1276         single file (apparent regression from ~1.9). Resolves issue
1277         #22767.
1278
1279 2008-04-22  Steven Schubiger  <schubiger@gmail.com>
1280
1281         * http.c (print_response_line): Changed to make responses always
1282         be logged, even in --quiet mode, if --server-response was
1283         specified. This is to bring http.c's handling of the situation
1284         in line with ftp.c's.
1285
1286 2008-04-22  Pranab Shenoy  <pranab.loosinit.shenoy@gmail.com>
1287
1288         * init.c: Added test_commands_sorted unit test to check is
1289         commands are sorted.  Fixes bug #21245.
1290
1291         * test.c: Added test_commands_sorted to the test suite.
1292
1293 2008-04-22  Rabin Vincent  <rabin@rab.in>
1294
1295         * ftp.c (ftp_get_listing): Only remove .listing if it has been
1296         created.
1297
1298 2008-04-22  Alain Guibert  <alguibert+bts@free.fr>
1299
1300         * test.h (mu_run_test): Move declaration before statements, for
1301         C90 conformance. Fixes bug #22789.
1302
1303 2008-04-22  Mike Frysinger  <vapier@gentoo.org>
1304
1305         * Makefile.am: Move @LIBS@ after other libraries, for better
1306         static-linking support. Fixes bug #22143.
1307
1308 2008-04-16  Steven Schubiger  <schubiger@gmail.com>
1309
1310         * ftp.c: Use Gnulib's quote function for printing filenames and
1311         such.
1312         * connect.c: Likewise.
1313         * convert.c: Likewise.
1314         * cookies.c: Likewise.
1315         * ftp-opie.c: Likewise.
1316         * gnutls.c: Likewise.
1317         * init.c: Likewise.
1318         * log.c: Likewise.
1319         * mswindows.c: Likewise.
1320         * openssl.c: Likewise.
1321         * progress.c: Likewise.
1322         * recur.c: Likewise.
1323         * res.c: Likewise.
1324         * utils.c: Likewise.
1325
1326 2008-04-16  Steven Schubiger  <schubiger@gmail.com>
1327
1328         * sysdep.h: Comment the defines __EXTENSIONS__ and _GNU_SOURCE
1329         out, because they're now defined independently by config.h.
1330
1331 2008-04-14  Steven Schubiger  <schubiger@gmail.com>
1332
1333         * http.c: Use Gnulib's quote function for printing filenames and
1334         such.
1335         * wget.h: #include "quote.h".
1336
1337 2008-04-12  Rabin Vincent  <rabin@rab.in>
1338
1339         * mswindows.c (fake_fork_child): Don't create a logfile for
1340         --background when --quiet is used, but not --server-response.
1341         Fixes bug #20917.
1342
1343         * utils.c (fork_to_background): Likewise.
1344
1345 2008-04-12  Micah Cowan  <micah@cowan.name>
1346
1347         * utils.c (aprintf): Minor formatting changes to Alex's code (80-
1348         column limit, concatenated string literals, avoiding nesting
1349         levels), and removed invocation of free (since we're aborting
1350         anyway).
1351
1352 2008-04-11  Alexander Dergachev  <cy6erbr4in@gmail.com>
1353
1354         * utils.c (aprintf): Now we are setting limits (1 Mb) for text
1355         buffer when we use non-C99 vsnprintf.
1356
1357 2008-04-11  Micah Cowan  <micah@cowan.name>
1358
1359         * ftp.c (getftp, ftp_loop_internal): Don't append to an existing
1360         .listing when --continue is used.  Fixes bug #22825. Thanks to
1361         Rabin Vincent <rabin@rab.in> for pointing the way with a
1362         suggested fix!
1363
1364 2008-04-10  Alexander Dergachev  <cy6erbr4in@gmail.com>
1365
1366         * xmalloc.c, xmalloc.h (memfatal): Now exported; accepts an
1367         "unknown" value for the attempted allocation size.
1368         * utils.c (aprintf): Now calls memfatal, instead of aborting.
1369
1370 2008-03-19  Micah Cowan  <micah@cowan.name>
1371
1372         * utils.c (test_dir_matches_p): More tests related for
1373         dir_matches_p.
1374
1375 2008-03-17  Micah Cowan  <micah@cowan.name>
1376
1377         * connect.c: Include sys/time.h to support use of the select
1378         function on older systems.
1379
1380 2008-02-11  Benno Schulenberg  <bensberg@justemail.net>
1381
1382         * http.c: More accurate and descriptive messages for when a file
1383         won't be retrieved during spider-mode.
1384
1385 2008-02-10  Micah Cowan  <micah@cowan.name>
1386
1387         * http.c: Added existence_checked member to the http_stat
1388         struct.
1389         (gethttp): Mark hs->existence_checked when we've checked whether
1390         a file-to-download exists; so we don't check it again if the
1391         connection gets lost (and potentially pick a new "unique" name).
1392         This fixes bug 22251.
1393         * progress.c (create_image): Add space for an extra column in
1394         the "eta" portion of the progress bar image; to deal with
1395         too-long Czech translation.
1396         * main.c, http.c, init.c: Added --auth-no-challenge option, to
1397         bring back 1.10.2 unsafe auth behavior when needed. This fixes
1398         bug #22242.
1399
1400 2008-02-07  Micah Cowan  <micah@cowan.name>
1401
1402         * progress.c (create_image): Remove assertion on exceeding
1403         screen width, which given the less-than-robust code there, can
1404         be broken by a number of factors (such as large file downloads).
1405
1406 2008-02-06  Micah Cowan  <micah@cowan.name>
1407
1408         * progress.c (countcols): Use strlen() when mbtowc or wcwidth
1409         not available (or not using NLS).
1410         * utils.c: Ensure we use single-byte separators when not doing
1411         NLS progress-bars.
1412         * wget.h: Determine whether to use NLS for progress-bars, based
1413         on whether wcwidth and mbtowc are available.
1414
1415 2008-02-03  Micah Cowan  <micah@cowan.name>
1416
1417         * progress.c (create_image): Use number of characters/columns
1418         consumed, rather than number of bytes, to determine how much of
1419         a line we've used. Fixes assertion errors and field alignment
1420         bugs (#22161, #20481)
1421         (get_eta, count_cols): Added to support the changes for
1422         create_image.
1423         * http.c (http_loop): Put no-clobber logic back into http_loop,
1424         before starting to fetch, for when we're not doing
1425         content-disposition.
1426
1427 2008-01-31  Micah Cowan  <micah@cowan.name>
1428
1429         * http.c (gethttp): Don't derive hs->contlen from possibly
1430         invalid/missing Content-Length; instead, get the appropriate
1431         value from the Content-Range header values.
1432         (parse_content_range): Handle '*' instance-length field.
1433
1434 2008-01-25  Micah Cowan  <micah@cowan.name>
1435
1436         * main.c: Added notes to translators regarding (C), diacritics
1437         in names.
1438         * Makefile.am, cmpt.c, connect.c, connect.h, convert.c,
1439         cookies.c, cookies.h, ftp-basic.c, ftp-ls.c, ftp-opie.c, ftp.c,
1440         ftp.h, gen-md5.c, gen-md5.h, gnutls.c, hash.c, hash.h, host.c,
1441         host.h, html-parse.c, html-parse.h, html-url.c, http-ntlm.c,
1442         http-ntlm.h, http.c, http.h, init.c, init.h, log.c, log.h,
1443         main.c, mswindows.c, mswindows.h, netrc.c, netrc.h, openssl.c,
1444         options.h, progress.c, progress.h, ptimer.c, ptimer.h, recur.c,
1445         recur.h, res.c, res.h, retr.c, retr.h, spider.c, spider.h,
1446         ssl.h, sysdep.h, test.c, test.h, url.c, url.h, utils.c,
1447         utils.h, wget.h, xmalloc.c, xmalloc.h: Updated copyright year.
1448
1449 2007-12-10  Micah Cowan  <micah@cowan.name>
1450
1451         * main.c: The option is --content-disposition, not
1452         --no-content-disposition (at the moment).
1453
1454 2007-12-08  Hrvoje Niksic  <hniksic@xemacs.org>
1455
1456         * ftp.c (ftp_retrieve_glob): Print both arguments of fnmatch in
1457         fnmatch error message.
1458         (ftp_retrieve_glob): Don't match with fnmatch if we're only
1459         supposed to get one file.
1460
1461 2007-12-07  Micah Cowan  <micah@cowan.name>
1462
1463         * Makefile.am: Plug in vars to include stuff from
1464         $(top_srcdir)/md5 when appropriate.
1465
1466 2007-12-05  Micah Cowan  <micah@cowan.name>
1467
1468         * utils.c (subdir_p): Handle the case where d1 is "".
1469         * convert.c (convert_all_links): Don't return without
1470         deallocating timer.
1471
1472 2007-11-28  Micah Cowan  <micah@cowan.name>
1473
1474         * Makefile.am, cmpt.c, connect.c, connect.h, convert.c,
1475         convert.h, cookies.c, cookies.h, ftp-basic.c, ftp-ls.c,
1476         ftp-opie.c, ftp.c, ftp.h, gen-md5.c, gen-md5.h, gnutls.c,
1477         hash.c, hash.h, host.c, host.h, html-parse.c, html-parse.h,
1478         html-url.c, http-ntlm.c, http-ntlm.h, http.c, http.h, init.c,
1479         init.h, log.c, log.h, main.c, mswindows.c, mswindows.h,
1480         netrc.c, netrc.h, openssl.c, options.h, progress.c, progress.h,
1481         ptimer.c, ptimer.h, recur.c, recur.h, res.c, res.h, retr.c,
1482         retr.h, safe-ctype.c, safe-ctype.h, spider.c, spider.h, ssl.h,
1483         sysdep.h, test.c, test.h, url.c, url.h, utils.c, utils.h,
1484         wget.h, xmalloc.c, xmalloc.h: Updated license exception for
1485         OpenSSL, per the SFLC.
1486
1487 2007-10-30  Micah Cowan  <micah@cowan.name>
1488
1489         * main.c (main): Declare argv parameter as char **argv, rather
1490         than char *const *argv. This fixes usage of getopt_long,
1491         regardless of whether getopt_long has a constified argv or not.
1492
1493 2007-10-22  Gisle Vanem  <gvanem@broadpark.no>
1494
1495         * mswindows.c: Move INHIBIT_WRAP macro definition up with wget.h
1496         inclusion.
1497
1498 2007-10-18  Steven Schweda  <sms@antinode.org>
1499
1500         * sysdep.h: #include <stdint.h> as well as <inttypes.h>, to work
1501         around a glitch on Tru64 systems.
1502
1503 2007-10-18  Micah Cowan  <micah@cowan.name>
1504
1505         * Makefile.am: version.c should not be distributed. Removed
1506         config-post.h. Add version.c dependency and gnulib include path
1507         for libunittest.a.
1508         * sysdep.h: Got contents of config-post.h
1509         * config-post.h: Removed.
1510         * wget.h: #include "config.h".
1511         * alloca.c, cmpt.c, connect.c, convert.c, cookies.c,
1512         ftp-basic.c, ftp-ls.c, ftp-opie.c, ftp.c, gen-md5.c, gnutls.c,
1513         hash.c, host.c, html-parse.c, html-url.c, http-ntlm.c, http.c,
1514         init.c, log.c, main.c, mswindows.c, netrc.c, openssl.c,
1515         progress.c, ptimer.c, recur.c, res.c, retr.c, spider.c, url.c,
1516         utils.c, xmalloc.c: Use wget.h at very top, and instead of
1517         config.h.
1518
1519 2007-10-15  Micah Cowan  <micah@cowan.name>
1520
1521         * Makefile.am: Remove intermediary hg-id file generation, make
1522         version.c-generation more portable.
1523
1524 2007-10-14  Micah Cowan  <micah@cowan.name>
1525
1526         * cmpt.c, cookies.c, ftp-basic.c, ftp-ls.c, ftp.c, hash.c,
1527         host.c, html-parse.c, html-url.c, http-ntlm.c, http.c, init.c,
1528         log.c, main.c, netrc.c, openssl.c, res.c, url.c, utils.c,
1529         wget.h: Replace uses of ISSPACE, etc with c_isspace, etc.
1530         * gnu-md5.c, gnu-md5.h: Removed, in deference to gnulib.
1531         * Makefile.am: Removed gnu-md5.h from wget_SOURCES.
1532         * gen-md5.c: Changed #inclusion of gnu-md5.h to md5.h (gnulib's).
1533         * recur.c (download_child_p): Print error if unlink of
1534         robots.txt fails.
1535         * main.c (main): --spider or --delete-after now implies
1536         --no-directories (thanks, Josh Williams).
1537
1538 2007-10-14  Joshua David Williams  <yurimxpxman@gmail.com>
1539
1540         * recur.c (download_child_p): Remove robots.txt if
1541         --delete-after or --spider is on.
1542
1543 2007-10-13  Micah Cowan  <micah@cowan.name>
1544
1545         * Makefile.am: Make version.c depend on Wget dependencies (source
1546         files, plus such things as LIBOBJS so we get things like
1547         http-ntlm.c). Removed getopt.[ch], as we're now using gnulib for
1548         these.
1549
1550 2007-10-10  Micah Cowan  <micah@cowan.name>
1551
1552         * http-ntlm.c: Include openssl/opensslv.h explicitly, instead of
1553         hoping it'll be included by accident in openssl/des.h.
1554
1555 2007-10-09  Gisle Vanem  <gvanem@broadpark.no>
1556
1557         * mswindows.c: 'argc' and 'argv' in 'windows_main()' are no longer
1558         needed.  Hence simply the prototype. Free 'exec_name' at exit.
1559
1560 2007-10-09  Micah Cowan  <micah@cowan.name>
1561
1562         * gettext.h: Imported from /usr/share/gettext, fuller handling
1563         of --disable-nls.
1564         * wget.h: Remove logic for handling lack of NLS (now in
1565         gettext.h).
1566         * main.c: Use gettext's ENABLE_NLS rather than HAVE_NLS.
1567         * Makefile.am: added @LIBINTL@ to LIBS (though it probably
1568         belongs in LDADD, along with everything else currently assigned
1569         to LIBS).
1570
1571 2007-10-08  Micah Cowan  <micah@cowan.name>
1572
1573         * http.c (http_loop): Add send_head_first conditional back
1574         around code that needs it, but not around the last-modified
1575         header-parsing stuff this time. Removed no-longer-useful (was it
1576         ever?) restart_loop boolean, continuing unconditionally at end
1577         of send_head_first conditional block (if we haven't jumped out).
1578
1579 2007-10-04  Micah Cowan  <micah@cowan.name>
1580
1581         * http.c (http_loop): We've got_name if content_disposition
1582         support isn't on; make sure we continue properly in that case,
1583         even though we're not sending HEAD.
1584         * Makefile.in: Removed, replaced by Makefile.am.
1585         * Makefile.am: Converted from Makefile.in.
1586
1587 2007-10-02  Gisle Vanem  <gvanem@broadpark.no>
1588
1589         * ftp.c: Use "_listing" for MSDOS (".listing" is illegal).
1590
1591         * url.c: Update comment for 'filechr_not_windows'.
1592
1593         * utils.c: Include <process.h> for 'getpid()' on Watcom.
1594
1595 2007-10-02  Micah Cowan  <micah@cowan.name>
1596
1597         * ftp.c (getftp, ftp_loop_internal), http.c (http_loop), main
1598         (main): Use datetime_str instead of time_str, for those who have
1599         potentially long-running sessions. Based on suggestions by Saso
1600         Tomat <miskox@hotmail.com> and Steven M. Schweda
1601         <sms@antinode.org>.
1602         * http.c (gethttp): Warn about host lookup failures. Adjusted
1603         from Stephen Gildea's patch.
1604
1605 2007-10-02  Stephen Gildea  <stepheng+wget@gildea.com>
1606
1607         * connect.c (connect_to_host): Warn about host lookup failures.
1608
1609 2007-09-25  Micah Cowan  <micah@cowan.name>
1610
1611         * Makefile.in: Use EXEEXT instead of exeext.
1612
1613 2007-09-24  Gisle Vanem  <giva@bgnett.no>
1614
1615         * connect.c, init.c, main.c, openssl.c, options.h, sysdep.h,
1616         url.c, utils.c: Added support for building on MS-DOS.
1617
1618 2007-09-24  Jochen Roderburg  <roderburg@uni-koeln.de>
1619
1620         * http.c (http_zero): Remove no-longer-used local_size variable.
1621         Fixes bug #21057.
1622
1623 2007-09-12  Micah Cowan  <micah@cowan.name>
1624
1625         * http.c (http_loop): Remove send_head_first from condition for
1626         parsing timestamp.
1627
1628 2007-08-29  Micah Cowan  <micah@cowan.name>
1629
1630         * openssl.c (ssl_init): Re un-const-ified the meth local
1631         variable, to match current versions of openssl.
1632         * spider.c: Removed visited_url function, as it may be very
1633         inefficient.
1634         (print_broken_links): Removed traversal of referrers, until such
1635         time as a more efficient implementation can be written.
1636         * spider.h: Replaced declaration of visited_url with an
1637         empty-bodied, function-like macro.
1638
1639 2007-08-27  Gisle Vanem  <giva@bgnett.no>
1640
1641         * mswindows.c (run_with_timeout): Ensure that the correct
1642         conversion specification is used for the return result of
1643         the GetLastError function.
1644         * getopt.c: Fix missing (but, accidentally, legal) comment
1645         delimiter after licensing text.
1646         * recur.c (retrieve_tree): Inserted missing cast for strip_auth.
1647         Includes adjustment by Ralf Wildenhues.
1648         * openssl.c (ssl_init): const-ified the meth local variable.
1649         * main.c: Include all the static function definitions in the
1650         "#ifndef TESTING" clause, leaving just the definitions for
1651         exec_name (not set), and opt.
1652         * utils.c (run_with_timeout): Now returns bool, to align with
1653         declaration in utils.h.
1654
1655 2007-08-27  Micah Cowan  <micah@cowan.name>
1656
1657         * wget.h: Added macro replacement for ngettext, for environs
1658         that lack NLS.
1659
1660 2007-08-26  Micah Cowan  <micah@cowan.name>
1661
1662         * spider.c (print_broken_links): Fixed incorrect plurals msgid
1663         usage, switched to use ngettext function.
1664
1665 2007-08-24  Micah Cowan  <micah@cowan.name>
1666
1667         * http.c (http_loop): Introduced time_came_from_head boolean
1668         flag, to help avoid parsing the same Last-Modified header twice.
1669         Replaced spidering returns of RETRUNNEEDED for some situations,
1670         to RETROK, as otherwise it will be interpreted as an error.
1671         RETRUNNEEDED appears never to be referenced outside of
1672         http.c (and wget.h), and, when returned by gethttp, is
1673         translated by http_loop to RETROK.
1674         * url.c (are_urls_equal): Don't call getchar_from_escaped_string
1675         if u2 is shorter than u1.
1676         (getchar_from_escaped_string): Don't decode reserved characters.
1677         Handle illegally appearing '%'s as literal '%'s. Ensure hex
1678         digits before attempting to decode.
1679         (test_are_urls_equal): Added tests to handle u2 shorter than u1,
1680         and %2f not treated the same as /.
1681         * spider.c (in_url_list_p): Don't call are_urls_equal if one of
1682         them is NULL.
1683
1684 2007-08-23  Joshua David Williams  <yurimxpxman@gmail.com>
1685
1686         * spider.c (in_url_list_p): Removed the bool verbose argument
1687
1688 2007-08-22  Mauro Tortonesi  <mauro@ferrara.linux.it>
1689
1690         * http.c (http_loop): Fall back to GET if HEAD fails with a 500 or 501
1691         error code.
1692
1693 2007-08-21  Mauro Tortonesi  <mauro@ferrara.linux.it>
1694
1695         * http.c (http_loop): Send preliminary HEAD request if -N is given and
1696         the destination file exists already.
1697
1698 2007-08-10  Mauro Tortonesi  <mauro@ferrara.linux.it>
1699
1700         * http.c (http_loop): Fixed HTTP HEAD requests logic when --spider is
1701         given.
1702
1703 2007-08-10  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1704
1705         * url.c (append_uri_pathel): Do not assume dest string to be
1706         zero-terminated.
1707         (test_append_uri_pathel): Terminate string to fix test failure.
1708
1709 2007-08-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1710
1711         * url.c (url_string): Use comparison, not assignment, in
1712         check for auth_mode == URL_AUTH_HIDE_PASSWD.
1713
1714 2007-08-09  Micah Cowan  <micah@cowan.name>
1715
1716         * http.c (http_loop): If we got a HEAD and then a GET, and the
1717         GET had a timestamp, use that one, not any we may have gotten
1718         from the HEAD.
1719
1720 2007-08-08  Micah Cowan  <micah@cowan.name>
1721
1722         * init.c (defaults): Content disposition will not be default,
1723         since it currently results in extra round-trips.
1724
1725 2007-07-31  Micah Cowan  <micah@cowan.name>
1726
1727         * http.c (gethttp): Set contlen = -1 when we encounter a
1728         negative-valued Content-Length header, so we don't consider it
1729         an internal error later on and call abort().
1730
1731 2007-07-29  Micah Cowan  <micah@cowan.name>
1732
1733         * url.h, url.c (url_string): Replaced bool arg of the url_string
1734         function with enum url_auth_mode, with added option to
1735         completely remove user/pass auth information.
1736         * http.c, ftp.c, url.c, recur.c: Adapted call to url_string
1737         function to fit new usage.
1738         * recur.c (retrieve_tree): Remove auth info from Referer header.
1739
1740 2007-07-28  Micah Cowan  <micah@cowan.name>
1741
1742         * options.h, init.c, retr.c, main.c: renamed opt maxredirect
1743         field to max_redirect, for improved consistency.
1744         * init.c: changed max_redirect parser from cmd_number_inf to
1745         cmd_number, as infinite redirects may not be appropriate.
1746         Alternatively, if cmd_number_inf should be used, then
1747         opt.max_redirect's value should be checked a bit differently in
1748         retr.c, to allow for the "infinite" meaning of zero.
1749
1750 2007-07-25  Micah Cowan  <micah@cowan.name>
1751
1752         * http.c (create_authorization_line)
1753         (basic_authentication_encode, known_authentication_scheme_p)
1754         (load_cookies): Moved declarations up.
1755         (basic_authed_hosts): Added. Tracks what hosts have issued Basic
1756         challenge and been given the global username, password.
1757         (maybe_send_basic_creds): Added. Sends Basic creds for hosts that
1758         have issued Basic challenges.
1759         (register_basic_auth_host): Added. Instantiates
1760         basic_authed_hosts if necessary, then registers the host that
1761         has issued a challenge.
1762         (gethttp) <auth>: Only send authentication credentials after
1763         we've received a challenge from that host. This is a stop-gap
1764         fix until a proper fix can be implemented; still isn't quite
1765         right, as we should only be sending credentials automatically
1766         for authenticated paths and below, and not for the entire host.
1767
1768 2007-07-16  Joshua David Williams  <yurimxpxman@gmail.com>
1769
1770         * options.h: added maxredirect to options struct
1771         * init.c: added maxredirect to list of variables
1772         * retr.c (retrieve_url): replaced MAX_REDIRECTIONS with opt.maxredirect
1773         * main.c: added option --max-redirect
1774
1775 2007-07-16  Joshua David Williams  <yurimxpxman@gmail.com>
1776
1777         * test.h: tests made more verbose; now displays the name
1778         of each test run.
1779
1780 2007-07-10  Mauro Tortonesi  <mauro@ferrara.linux.it>
1781
1782         * http.c (http_loop): Fixed the HTTP requests logic. Now it skips the
1783         preliminary HEAD request if either -O or --no-content-disposition are
1784         given, and neither --spider and -N are given.
1785
1786 2007-07-05  Micah Cowan  <micah@cowan.name>
1787
1788         * cmpt.c, connect.c, connect.h, convert.c, convert.h:
1789         * cookies.c, cookies.h, ftp-basic.c, ftp.c, ftp.h, ftp-ls.c:
1790         * ftp-opie.c, gen-md5.c, gen-md5.h, getopt.c, getopt.h, gnu-md5.c:
1791         * gnu-md5.h, gnutls.c, hash.c, hash.h, host.c, host.h:
1792         * html-parse.c, html-parse.h, html-url.c, http.c, http.h:
1793         * http-ntlm.c, http-ntlm.h, init.c, init.h, log.c, log.h, main.c:
1794         * Makefile.in, mswindows.c, mswindows.h, netrc.c, netrc.h:
1795         * openssl.c, options.h, progress.c, progress.h, ptimer.c:
1796         * ptimer.h, recur.c, recur.h, res.c, res.h, retr.c, retr.h:
1797         * safe-ctype.c, safe-ctype.h, spider.c, spider.h, ssl.h, sysdep.h:
1798         * test.c, test.h, url.c, url.h, utils.c, utils.h, wget.h:
1799         * xmalloc.c, xmalloc.h:
1800         Updated GPL reference to version 3 or later, removed FSF
1801         address.
1802
1803 2007-07-04  Mauro Tortonesi  <mauro@ferrara.linux.it>
1804
1805         * http.c (http_loop): Skip HEAD request and start immediately with GET
1806         if -O is given.
1807
1808 2007-02-02  Hrvoje Niksic  <hniksic@xemacs.org>
1809
1810         * http.c (print_server_response): Escape non-printable characters
1811         in server respone.
1812
1813 2007-02-02  Hrvoje Niksic  <hniksic@xemacs.org>
1814
1815         * netrc.c: Don't make netrc_list static, as it prevents
1816         compilation with DEBUG_MALLOC.
1817
1818         * utils.c (aprintf): Don't use vasprintf when DEBUG_MALLOC is
1819         requested because, in that case, we want the calls to malloc to be
1820         coming from us.
1821
1822 2007-01-23  Hrvoje Niksic  <hniksic@xemacs.org>
1823
1824         * cookies.c (parse_set_cookie): Would erroneously discard cookies
1825         with unparsable expiry time.
1826
1827 2007-01-23  Hrvoje Niksic  <hniksic@xemacs.org>
1828
1829         * progress.c (create_image): Check for ETA overflow.
1830         (print_row_stats): Ditto.
1831
1832 2007-01-09  Mauro Tortonesi  <mauro@ferrara.linux.it>
1833
1834         * init.c (cmd_spec_prefer_family): Small fix to get rid of a gcc
1835         warning about strict-aliasing violation.
1836
1837 2007-01-09  Steven M. Schweda  <sms@antinode.org>
1838
1839         * ftp-basic.c (ftp_syst): Fixed segfault if response text is missing.
1840
1841 2006-12-29  Gisle Vanem  <giva@bgnett.no>
1842
1843         * mswindows.c: Avoid a warning if 'ws_hangup()' is unused.
1844
1845 2006-12-27  Mauro Tortonesi  <mauro@ferrara.linux.it>
1846
1847         * http.c (parse_content_disposition): Consider directory prefix, if
1848         specified.
1849
1850 2006-11-21  Hrvoje Niksic  <hniksic@xemacs.org>
1851
1852         * retr.c (retrieve_from_file): Ditto.
1853         (url_uses_proxy): New function.
1854
1855         * main.c (main): Don't check for opt.use_proxy when deciding
1856         whether to call retrieve_url or retrieve_tree; check whether the
1857         proxy would be used for *this* URL.
1858
1859 2006-10-17  Mike Grant  <mggr@pml.ac.uk>
1860
1861         * ftp.c (ftp_loop_internal): Would incorrectly skip changing
1862         working directory when retrying after a failed FTP attempt.
1863         Originally reported by Nate Eldredge.
1864
1865 2006-10-12  Mauro Tortonesi  <mauro@ferrara.linux.it>
1866
1867         * convert.c (downloaded_file): Fixed bug which used to break -E -k -K
1868         mode.
1869
1870 2006-08-28  Mauro Tortonesi  <mauro@ferrara.linux.it>
1871
1872         * http.c: #include'd spider.h to get rid of compiler warnings.
1873
1874         * main.c: Ditto.
1875
1876         * recur.c: Ditto.
1877
1878 2006-08-24  Mauro Tortonesi  <mauro@ferrara.linux.it>
1879
1880         * Makefile.in: Added spider.c to the list of files to compile and
1881         spider.h to the list of header files. Updated copyright information.
1882
1883         * http.c: Major changes to recursive spider mode. Now for every
1884         resource we are supposed to check, we send a HEAD request to find out
1885         if it exists. If the resource is a HTML file, we retrieve it and parse
1886         it to discover links to other resources.
1887
1888         * recur.c: Ditto.
1889
1890         * res.c (res_retrieve_file): Disable opt.timestamping and opt.spider
1891         when retrieving robots.txt. Updated copyright information.
1892
1893         * convert.c: Moved code tracking broken links to spider.c.
1894
1895         * convert.h: Ditto.
1896
1897         * spider.c: Created new file to keep track of visited URLs in spider
1898         mode.
1899
1900         * spider.h: Ditto.
1901
1902 2006-08-21  Mauro Tortonesi  <mauro@ferrara.linux.it>
1903
1904         * http.c: Fixed timestamping-related bug.
1905
1906 2006-08-16  Mauro Tortonesi  <mauro@ferrara.linux.it>
1907
1908         * http.c: Fixed bug which broke --continue feature. Now if -c is
1909         given, http_loop sends a HEAD request to find out the destination
1910         filename before resuming download.
1911
1912 2006-08-08  Hrvoje Niksic  <hniksic@xemacs.org>
1913
1914         * utils.c (datetime_str): Avoid code repetition with time_str.
1915
1916 2006-07-21  Hrvoje Niksic  <hniksic@xemacs.org>
1917
1918         * init.c (commands): Correctly place "contentdisposition".
1919
1920 2006-07-14  Mauro Tortonesi  <mauro@ferrara.linux.it>
1921
1922         * sysdep.h: If intptr_t isn't defined, simply typedef it to long.
1923
1924         * http.c: Added explicit cast to int in logprintf call to remove
1925         compiler warnings on 64-bit platforms.
1926
1927         * connect.c: Added a few casts to intptr_t to remove compiler warnings
1928         on 64-bit platforms.
1929
1930         * main.c: Disable -r, -p and -N when -O is used. Disable -k when -O is
1931         used and multiple URLs are given. Update maintainer information.
1932
1933         * all: Update copyright information.
1934
1935 2006-07-10  KJKHyperion  <hackbunny@reactos.com>
1936
1937         * url.c (filechr_table): Mark DEL (0x7f) as a control character
1938         and | as a character Windows can't handle.
1939
1940 2006-06-28  Mauro Tortonesi  <mauro@ferrara.linux.it>
1941
1942         * res.c: Implemented is_robots_txt_url function for detection of
1943         robots.txt URLs and related test routine.
1944
1945         * res.h: Ditto.
1946
1947         * url.c: Implemented are_urls_equal function for URL comparison and
1948         related testing routine.
1949
1950         * url.h: Ditto.
1951
1952         * convert.c: Fixes for recursive spider mode: don't consider
1953         non-existing robots.txt as a broken link, and use are_urls_equal
1954         instead of strcasecmp for referrer URLs comparison.
1955
1956         * test.c: Call tests routines for are_urls_equal and
1957         is_robots_txt_url.
1958
1959 2006-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
1960
1961         * wget.h (wgint): Typedef to any 64-bit (or larger) type we can
1962         find, not necessarily off_t or long.
1963
1964 2006-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
1965
1966         * cmpt.c (strtoll): Check for overflow and underflow without
1967         relying on (technically) undefined behavior.  Don't assume that
1968         strtoll_type is 64 bits wide.
1969
1970 2006-06-21  Hrvoje Niksic  <hniksic@xemacs.org>
1971
1972         * utils.c (base64_encode): Cast void pointer to char * before
1973         doing arithmetic.
1974
1975 2006-06-20  Hrvoje Niksic  <hniksic@xemacs.org>
1976
1977         * utils.c (base64_encode): Made TBL const.
1978         (base64_decode): Made the base64_char_to_value table const.
1979
1980 2006-06-19  Hrvoje Niksic  <hniksic@xemacs.org>
1981
1982         * utils.c (base64_encode): Made the DATA pointer void * so the
1983         callers can pass it any kind of pointer (including both signed and
1984         unsigned char pointers).
1985         (base64_decode): Ditto for DEST.
1986
1987 2006-06-19  Hrvoje Niksic  <hniksic@xemacs.org>
1988
1989         * utils.c (base64_encode): Would read past end of STR.
1990         Reported by rick@eckle.org.
1991
1992 2006-06-13  Mauro Tortonesi  <mauro@ferrara.linux.it>
1993
1994         * options.h (struct options): Introduced member restrict_files_case to
1995         keep track of preferences on character case restrictions for
1996         filenames.
1997
1998         * init.c: Modified defaults and cmd_spec_restrict_file_names to
1999         support character case restrictions for filenames. Added
2000         test_cmd_spec_restrict_file_names unit test.
2001
2002         * url.c: Modified append_uri_pathel to support character case
2003         restrictions for filenames. Added test_append_uri_pathel unit test.
2004
2005         * test.c: Added test_cmd_spec_restrict_file_names and
2006         test_append_uri_pathel to the list of unit tests to run.
2007
2008 2006-06-12  Mauro Tortonesi  <mauro@ferrara.linux.it>
2009
2010         * retr.c (retrieve_from_file): Use retrieve_tree and automatically
2011         turn on opt.follow_ftp in case of recursive FTP retrieval through HTTP
2012         proxy.
2013
2014         * main.c: Automatically turn on opt.follow_ftp in case of recursive
2015         FTP retrieval through HTTP proxy.
2016
2017 2006-06-12  Tony Lewis  <tlewis@exelana.com>
2018
2019         * main.c: Improved CHEN Peng's patch by proposing a simpler logic.
2020
2021 2006-06-12  CHEN Peng  <chenpeng@alumni.nus.edu.sg>
2022
2023         * main.c: Use retrieve_tree in case of recursive FTP retrieval through
2024         HTTP proxy.
2025
2026 2006-05-25  Mauro Tortonesi  <mauro@ferrara.linux.it>
2027
2028         * convert.c: Added mechanisms to keep track broken links.
2029
2030         * convert.h: Ditto.
2031
2032         * wget.h: Reordered and enumerated uerr_t constants.
2033
2034         * recur.c: Fixes to support recursive spider mode.
2035
2036         * http.c: Ditto.
2037
2038         * main.c: Print broken links in case of recursive spider mode.
2039
2040         * retr.c: Changed interface of retrieve_url.
2041
2042         * retr.h: Ditto.
2043
2044         * ftp.c: Changed interface of ftp_loop.
2045
2046         * ftp.h: Ditto.
2047
2048         * res.c: Minor change to reflect changes in interface of retrieve_url.
2049
2050 2006-05-18  Lawrence Jones  <lawrence.jones@ugs.com>
2051
2052         * ftp-ls.c (ftp_parse_unix_ls): Correct size parsing, add size
2053         and filename debugging output.
2054
2055 2006-04-28  Mauro Tortonesi  <mauro@ferrara.linux.it>
2056
2057         * http.c: If Content-Disposition header is present, allow unique
2058         filename generation unless -nc is given. Permit to disable parsing of
2059         Content-Disposition header.
2060
2061         * options.h: Added option --no-content-disposition to disable parsing
2062         of HTTP Content-Disposition header.
2063
2064         * init.c: Ditto.
2065
2066         * main.c: Ditto.
2067
2068 2006-04-11  Hrvoje Niksic  <hniksic@xemacs.org>
2069
2070         * hash.c (TOLOWER): Wrap macro arg in parentheses.
2071
2072 2006-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
2073
2074         * http.c (parse_content_disposition): Doc fix.
2075
2076 2006-03-15  Mauro Tortonesi  <mauro@ferrara.linux.it>
2077
2078         * utils.c: Restricted operational semantics of frontcmp and proclist
2079         from generic strings to directory names and them to subdir_p and
2080         dir_matches_p respectively.  Applied George Ogata's one line patch to
2081         restrict algorithm of subdir_p to full directory name matching.  Added
2082         testcases for subdir_p and dir_matches_p.
2083
2084         * utils.h: Changed all frontcmp occurrences to subdir_p.
2085
2086         * recur.c: Ditto.
2087
2088         * test.c: Changed type returned by test functions from char * to const
2089         char *.  Added test_subdir_p and test_dir_matches_p to the list of
2090         tests to run.
2091
2092         * http.c (test_parse_content_disposition): Changed return type from
2093         char * to const char *.
2094
2095 2006-03-14  Mauro Tortonesi  <mauro@ferrara.linux.it>
2096
2097         * recur.c (struct queue_element): Changed type of html_allowed member
2098         to bool.
2099
2100 2006-03-09  Mauro Tortonesi  <mauro@ferrara.linux.it>
2101
2102         * ftp.c (ftp_list): Try `LIST -a' command first and revert to `LIST'
2103         in case of failure.
2104
2105 2006-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
2106
2107         * hash.c (TOLOWER): Fix definition when STANDALONE.
2108         Reported by Beni Serfaty.
2109
2110 2006-03-02  Mauro Tortonesi  <mauro@ferrara.linux.it>
2111
2112         * http.c (http_loop): Fixed recursive HTTP retrieval.
2113
2114 2006-02-28  Hrvoje Niksic  <hniksic@xemacs.org>
2115
2116         * http.c (extract_param): Declare extern so it can be used from
2117         other files.
2118         (extract_param): Return error for empty name.
2119
2120 2006-02-28  Hrvoje Niksic  <hniksic@xemacs.org>
2121
2122         * url.c (find_last_char): Define in terms of memrchr.
2123
2124         * cmpt.c (memrchr): Define it on systems that don't have it.
2125
2126         * http.c (extract_param): New function for parsing header values
2127         with parameters.
2128         (parse_content_disposition): Use it.  Don't allow slashes and
2129         backslashes in the file name.
2130
2131 2006-02-27  Hrvoje Niksic  <hniksic@xemacs.org>
2132
2133         * url.c (path_simplify): Don't preserve ".." at beginning of path.
2134         Suggested by Frank McCown.
2135
2136 2006-02-25  Hrvoje Niksic  <hniksic@xemacs.org>
2137
2138         * http.c (gethttp): Only use FILE.N.html if FILE.html exists.
2139
2140 2006-02-09  Hrvoje Niksic  <hniksic@xemacs.org>
2141
2142         * mswindows.c (run_with_timeout): Made thread_hnd non-static.
2143
2144 2006-02-05  Hrvoje Niksic  <hniksic@xemacs.org>
2145
2146         * retr.c (sleep_between_retrievals): Sleep at a minimum of 1/2 of
2147         the specified wait period.
2148
2149 2006-02-03  Hrvoje Niksic  <hniksic@xemacs.org>
2150
2151         * utils.c (number_to_string): Don't use sprintf for printing
2152         WGINT_MIN; simply divide n by 10 and defer printing the last
2153         digit.
2154         (number_to_string): Removed the SPRINTF_WGINT macro.
2155
2156 2006-02-03  Mauro Tortonesi  <mauro@ferrara.linux.it>
2157
2158         * http.c: Fixed support for Content-Disposition header.
2159
2160         * test.c: Added test_parse_content_disposition to the list of unit
2161         tests to run.
2162
2163 2006-02-02  Hrvoje Niksic  <hniksic@xemacs.org>
2164
2165         * hash.c: Don't define countof if it's already defined.
2166
2167         * hash.c: Obtain the definition of uintptr_t when standalone.
2168
2169 2006-01-30  Mauro Tortonesi  <mauro@ferrara.linux.it>
2170
2171         * http.c: Changed output format. Removed excessively verbose debugging
2172         output.
2173
2174 2005-12-07  Mauro Tortonesi  <mauro@ferrara.linux.it>
2175
2176         * http.c: Fixed pre-download verbose output which was broken by
2177         HTTP code refactoring.
2178
2179 2005-11-23  Mauro Tortonesi  <mauro@ferrara.linux.it>
2180
2181         * http.c: Refactored HTTP code.  If -O is not used, the new code
2182         delays the choice of the file name where the downloaded resource
2183         will be saved until the HTTP headers have been retrieved.
2184         Added support for Content-Disposition header.
2185
2186 2005-11-19  Hrvoje Niksic  <hniksic@xemacs.org>
2187
2188         * hash.c (INVALID_PTR): Use uintptr_t instead of unsigned long.
2189         (hash_pointer): Don't assume a pointer fits in `unsigned long'.
2190
2191 2005-11-02  Mauro Tortonesi  <mauro@ferrara.linux.it>
2192
2193         * Makefile.in: Removed support for unit testing (now it is in
2194         tests/Makefile.in).
2195
2196 2005-10-27  Mauro Tortonesi  <mauro@ferrara.linux.it>
2197
2198         * Makefile.in: Added basic support for unit testing.
2199
2200         * test.c: Ditto.
2201
2202         * test.h: Ditto.
2203
2204 2005-10-13  Daniel Stenberg  <daniel@haxx.se>
2205
2206         * http-ntlm.c (ntlm_output): Fixed buffer overflow vulnerability.
2207
2208 2005-10-09  Russ Allbery  <rra@stanford.edu>
2209
2210         * snprintf.c: Remove round to round_int and pow10 to pow10_int, to
2211         avoid warnings from GCC 4.0.
2212
2213 2005-10-05  Mauro Tortonesi  <mauro@ferrara.linux.it>
2214
2215         * retr.c: Changed semantics of no_proxy_match.
2216
2217 2005-09-17  Hrvoje Niksic  <hniksic@xemacs.org>
2218
2219         * main.c (main): Don't print the summary if nothing has been downloaded.
2220
2221 2005-09-17  Hrvoje Niksic  <hniksic@xemacs.org>
2222
2223         * retr.c (retr_rate): Rename parameter from MSECS to SECS since it
2224         no longer holds milliseconds.
2225
2226 2005-09-01  Hrvoje Niksic  <hniksic@xemacs.org>
2227
2228         * progress.c: Introduce symbolic constants for "magic" values of
2229         0.2 and 0.9, REFRESH_INTERVAL and ETA_REFRESH_INTERVAL.
2230
2231 2005-08-27  Hrvoje Niksic  <hniksic@xemacs.org>
2232
2233         * cmpt.c (strtoll): Correctly handle strtoll("0x", ptr, 0) and
2234         strtoll("0x<nonhexchar>", ptr, 0) -- in both cases *ptr must be
2235         set to the position of 'x', not after it.
2236
2237 2005-08-27  Hrvoje Niksic  <hniksic@xemacs.org>
2238
2239         * hash.c (hash_table_map): Rename to hash_table_for_each and
2240         update callers.
2241         Document the meaning of the callback's return value.
2242         (hash_table_iterate): New function.
2243         (hash_table_iter_next): Likewise.
2244         Update most places that used hash_table_for_each to use the
2245         iteration, which doesn't require a temporary function with
2246         explicit state management.
2247
2248 2005-08-26  Albert Chin  <wget@mlists.thewrittenword.com>
2249
2250         * Makefile.in: Use @datadir@.  Define localedir as $(datadir)/locale.
2251
2252 2005-08-26  Jeremy Shapiro  <jnshapiro@gmail.com>
2253
2254         * openssl.c (ssl_init): Set SSL_MODE_AUTO_RETRY.
2255
2256 2005-08-23  Hrvoje Niksic  <hniksic@xemacs.org>
2257
2258         * host.c (address_list_from_ipv4_addresses): Use IP_INADDR_DATA.
2259
2260 2005-08-12  Hrvoje Niksic  <hniksic@xemacs.org>
2261
2262         * wget.h: Renamed strtoll_return to strtoll_type.
2263
2264 2005-08-11  Hrvoje Niksic  <hniksic@xemacs.org>
2265
2266         * progress.c (eta_to_human_short): Switch to days when printing
2267         more than 48h rather than 100h.  (It's not immediately apparent
2268         how many days there are in 83h.)
2269
2270 2005-08-11  Hrvoje Niksic  <hniksic@xemacs.org>
2271
2272         * cmpt.c (strtoll): Define it if missing on the system and if Wget
2273         needs it.
2274
2275         * mswindows.c (str_to_int64): Move to cmpt.c and rename to strtoll.
2276
2277 2005-08-10  Hrvoje Niksic  <hniksic@xemacs.org>
2278
2279         * host.c (print_address): Always use inet_ntop when IPv6 is
2280         enabled.
2281
2282         * host.h (ip_address): Simplify the data union.
2283
2284 2005-08-09  Hrvoje Niksic  <hniksic@xemacs.org>
2285
2286         * mswindows.c (inet_ntop): Also handle IPv4 addresses for
2287         completeness.
2288
2289 2005-08-09  Hrvoje Niksic  <hniksic@xemacs.org>
2290
2291         * http.c (gethttp): Don't read more than the amount of data
2292         specified by the content-length header.
2293
2294 2005-08-09  Vasil Dimov  <vd@datamax.bg>
2295
2296         * ftp.c (getftp): Don't free RESPLINE if ftp_response returns a
2297         status other than FTPOK.
2298
2299 2005-08-04  Giuseppe Bonacci  <g.bonacci@libero.it>
2300
2301         * ftp-ls.c (ftp_parse_unix_ls): Remember the position of the
2302         previous token instead of backtracking back to it.
2303
2304 2005-07-08  Gisle Vanem  <giva@bgnett.no>
2305
2306         * mswindows.h: Include process.h to get getpid() declaration.
2307
2308 2005-07-08  Hrvoje Niksic  <hniksic@xemacs.org>
2309
2310         * utils.c (aprintf): Use vasprintf where available.
2311
2312 2005-07-08  Hrvoje Niksic  <hniksic@xemacs.org>
2313
2314         * url.c (rewrite_shorthand_url): Simplify code using aprintf and
2315         strspn.
2316
2317 2005-07-07  Hrvoje Niksic  <hniksic@xemacs.org>
2318
2319         * gnutls.c (ssl_check_certificate): Check for the validity of the
2320         presented X509 certificate.
2321
2322 2005-07-07  Hrvoje Niksic  <hniksic@xemacs.org>
2323
2324         * openssl.c (ssl_check_certificate): Print custom error messages
2325         for frequent X509 certificate problems.
2326
2327 2005-07-07  Hrvoje Niksic  <hniksic@xemacs.org>
2328
2329         * mswindows.h: Define an alias for stat and fstat, as requested by
2330         config-compiler.h.
2331         (gai_strerror): Define to windows_strerror if NEED_GAI_STRERROR is
2332         defined.
2333
2334 2005-07-06  Hrvoje Niksic  <hniksic@xemacs.org>
2335
2336         * mswindows.h: Use strtoll where available.
2337
2338 2005-07-06  Hrvoje Niksic  <hniksic@xemacs.org>
2339
2340         * sysdep.h: Add a full declaration of fnmatch.h.
2341
2342 2005-07-06  Hrvoje Niksic  <hniksic@xemacs.org>
2343
2344         * utils.c: Unconditionally include <setjmp.h>.
2345
2346 2005-07-06  Hrvoje Niksic  <hniksic@xemacs.org>
2347
2348         * utils.c (fnmatch_nocase): New function.
2349         (proclist): Use it instead of fnmatch when opt.ignore_case is
2350         requested.
2351         (in_acclist): Respect opt.ignore_case.
2352         (frontcmp): Respect opt.ignore_case.
2353
2354         * options.h (struct options): New flag opt.ignore_case.
2355
2356 2005-07-06  Hrvoje Niksic  <hniksic@xemacs.org>
2357
2358         * ptimer.c: Measure time in seconds rather than milliseconds.
2359         Adjusted all callers.
2360
2361 2005-07-06  Hrvoje Niksic  <hniksic@xemacs.org>
2362
2363         * http.c (gethttp): When freeing MESSAGE, take into account that
2364         it can be NULL.
2365
2366 2005-07-05  Hrvoje Niksic  <hniksic@xemacs.org>
2367
2368         * cmpt.c (timegm): Handle years after 2099.
2369
2370 2005-07-05  Hrvoje Niksic  <hniksic@xemacs.org>
2371
2372         * cmpt.c (timegm): Remove unused variable.
2373
2374 2005-07-05  Hrvoje Niksic  <hniksic@xemacs.org>
2375
2376         * cmpt.c (timegm): Don't call mktime; simply count the seconds
2377         between 1970-01-01 and the specified date.
2378
2379 2005-07-05  Hrvoje Niksic  <hniksic@xemacs.org>
2380
2381         * wget.h (or): Define HAVE_SSL when either HAVE_OPENSSL or
2382         HAVE_GNUTLS are defined.
2383
2384         * gnutls.c: New file.
2385
2386 2005-07-05  Hrvoje Niksic  <hniksic@xemacs.org>
2387
2388         * http.c (gethttp): Don't print the request write error message
2389         twice.
2390
2391 2005-07-04  Hrvoje Niksic  <hniksic@xemacs.org>
2392
2393         * openssl.c (openssl_errstr): Instead of always using a large
2394         static buffer, only allocate the error string when there is an
2395         actual error.
2396
2397 2005-07-04  Hrvoje Niksic  <hniksic@xemacs.org>
2398
2399         * xmalloc.c (debugging_free): Prefix hex pointer value with "0x"
2400         when printing.
2401
2402 2005-07-04  Hrvoje Niksic  <hniksic@xemacs.org>
2403
2404         * utils.c (NEXT_BASE64_CHAR): Rename to NEXT_CHAR and simplify to
2405         get the next non-whitespace character.
2406
2407 2005-07-04  Hrvoje Niksic  <hniksic@xemacs.org>
2408
2409         * utils.c (base64_decode): Don't silently tolerate non-base64
2410         non-white-space characters in the base64 stream.
2411
2412 2005-07-04  Hrvoje Niksic  <hniksic@xemacs.org>
2413
2414         * connect.c (LAZY_RETRIEVE_INFO): Make last_tick unsigned to match
2415         transport_map_modified_tick.
2416
2417 2005-07-04  Hrvoje Niksic  <hniksic@xemacs.org>
2418
2419         * config-post.h (alloca): Updated declaration to not enumerate all
2420         Windows compilers.
2421
2422 2005-07-04  Hrvoje Niksic  <hniksic@xemacs.org>
2423
2424         * openssl.c (openssl_errstr): Separate error messages with "; ".
2425
2426 2005-07-03  Hrvoje Niksic  <hniksic@xemacs.org>
2427
2428         * ftp.c (getftp): Ditto.
2429
2430         * http.c (gethttp): Use fd_errstr.
2431
2432         * connect.c (fd_register_transport): Restructure parameters to
2433         include only a single structure that describes transport
2434         implementation.
2435
2436         * openssl.c (openssl_errstr): New function: dump SSL error strings
2437         into a static buffer and return a pointer to the buffer.
2438
2439         * connect.c (fd_errstr): New function; returns transport-specific
2440         error message, or strerror(errno) if transport doesn't supply one.
2441
2442 2005-07-03  Hrvoje Niksic  <hniksic@xemacs.org>
2443
2444         * mswindows.h: Also wrap accept() and listen().
2445
2446 2005-07-03  Hrvoje Niksic  <hniksic@xemacs.org>
2447
2448         * url.c (path_end): Skip separators appropriate for the scheme.
2449         (strpbrk_or_eos): Remove gcc-specific version, as the optimization
2450         it tried to perform no longer applies.
2451
2452 2005-07-02  Hrvoje Niksic  <hniksic@xemacs.org>
2453
2454         * host.c: Don't include "connect.h" now that we no longer have
2455         socket_has_inet6.
2456
2457 2005-07-02  Hrvoje Niksic  <hniksic@xemacs.org>
2458
2459         * host.c: Remove extraneous definition of netdb.h.
2460
2461 2005-07-02  Hrvoje Niksic  <hniksic@xemacs.org>
2462
2463         * http.c (gethttp): Skip error message body in the keep-alive
2464         case.
2465
2466 2005-07-02  Hrvoje Niksic  <hniksic@xemacs.org>
2467
2468         * url.c (url_parse): Would crash when parsing fragments.  Support
2469         fragments for FTP URLs too.
2470
2471 2005-07-02  Hrvoje Niksic  <hniksic@xemacs.org>
2472
2473         * version.c: Don't use "cvs" in version name, since we're not
2474         using CVS anymore.
2475
2476 2005-07-02  Hrvoje Niksic  <hniksic@xemacs.org>
2477
2478         * progress.c (create_image): Ditto.
2479
2480         * retr.c (retr_rate): Display smaller rate numbers with greater
2481         precision.
2482
2483 2005-07-02  Hrvoje Niksic  <hniksic@xemacs.org>
2484
2485         * http.c (response_head_terminator): Minor optimization.
2486
2487         * retr.c (fd_read_hunk): Call terminator with pointer to the start
2488         of the data and the pointer to the current data.  Changed all
2489         callers.
2490
2491 2005-07-01  Hrvoje Niksic  <hniksic@xemacs.org>
2492
2493         * url.c (url_parse): Make sure u->params is not initialized for
2494         http/https URLs.
2495         (url_parse): Don't crash on garbage following []-delimited IPv6
2496         addresses.
2497
2498 2005-07-01  Hrvoje Niksic  <hniksic@xemacs.org>
2499
2500         * main.c (print_help): Don't refer to the non-existent -nr in
2501         description of --mirror.
2502
2503 2005-06-30  Hrvoje Niksic  <hniksic@xemacs.org>
2504
2505         * host.c (pretty_print_address): Renamed to just print_address.
2506         Clarify documentation.
2507
2508 2005-06-30  Hrvoje Niksic  <hniksic@xemacs.org>
2509
2510         * http.c (gethttp): Explicitly document the different cases when
2511         generating the Host header.
2512
2513 2005-06-30  Hrvoje Niksic  <hniksic@xemacs.org>
2514
2515         * host.c (pretty_print_address): Handle error result from
2516         inet_ntop.
2517
2518 2005-06-30  Gisle Vanem  <giva@bgnett.no>
2519
2520         * mswindows.c (inet_ntop): New function.  Print IPv6 addresses
2521         using WSAAddressToString.
2522
2523 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
2524
2525         * progress.c (dot_update): Remove unused variable row_qty.
2526
2527 2005-06-29  Hrvoje Niksic  <hniksic@xemacs.org>
2528
2529         * main.c: Check for both SIGHUP and SIGUSR1 before using them.
2530
2531 2005-06-29  Hrvoje Niksic  <hniksic@xemacs.org>
2532
2533         * utils.c: Unconditionally include locale.h.
2534
2535 2005-06-29  Hrvoje Niksic  <hniksic@xemacs.org>
2536
2537         * ptimer.c: Include sys/time.h to get struct timeval.
2538
2539 2005-06-29  Hrvoje Niksic  <hniksic@xemacs.org>
2540
2541         * wget.h: Remove obsolete definition of with_thousand_seps_sum.
2542
2543 2005-06-29  Hrvoje Niksic  <hniksic@xemacs.org>
2544
2545         * gnu-md5.h: Unconditionally include limits.h.
2546
2547 2005-06-29  Hrvoje Niksic  <hniksic@xemacs.org>
2548
2549         * utils.c (random_number): Use lrand48 if available.
2550         (random_float): Use drand48 if available.
2551
2552 2005-06-29  Hrvoje Niksic  <hniksic@xemacs.org>
2553
2554         * main.c (secs_to_human_time): Use print_decimal when printing
2555         total download time in seconds.
2556
2557         * progress.c (print_row_stats): Use it to print total download
2558         time at the end of the download.
2559         (create_image): Ditto.
2560
2561         * utils.c (print_decimal): New function; print small decimal
2562         numbers with more precision than large ones.
2563
2564         * progress.c (print_row_stats): New function.  Print ETA after the
2565         download rate at the end of each row.
2566
2567 2005-06-28  Hrvoje Niksic  <hniksic@xemacs.org>
2568
2569         * init.c (parse_line): Check for alphanumerics.
2570
2571 2005-06-28  Hrvoje Niksic  <hniksic@xemacs.org>
2572
2573         * (dot_create): Remove unnecessary casts.
2574
2575 2005-06-28  Hrvoje Niksic  <hniksic@xemacs.org>
2576
2577         * ftp.c (getftp): Delete trailing newlines from LIST output so
2578         lines don't come out with trailing \015\012 with -S.
2579
2580 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
2581
2582         * mswindows.h: Remove superfluous includes.
2583
2584 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
2585
2586         * config-post.h (alloca): Amend alloca declaration to take care of
2587         all Win32 compilers, not just MSVC and MinGW.
2588
2589 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
2590
2591         * utils.c (get_grouping_data): Force separator to "." rather than
2592         " " when "," is taken.
2593
2594 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
2595
2596         * wget.h (PTR_FORMAT): Cast the result of sizeof to int before
2597         passing it to printf's %*.
2598
2599         * retr.h: Declare output_stream and output_stream_regular.
2600
2601         * ftp.h: Declare ftp_last_respline.
2602
2603         * convert.h: Declare dl_url_file_map.
2604
2605         * http.h: New file.
2606
2607 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
2608
2609         * cookies.c: Make cookies_now static.
2610
2611 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
2612
2613         * utils.c (human_readable): Remove intermediary cast to long; MSVC
2614         has problems casting *unsigned* __int64 to double.
2615
2616 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
2617
2618         * sysdep.h: Use the system-provided fnmatch by default.
2619
2620 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
2621
2622         * http.c (mktime_from_utc): Renamed to timegm and moved to cmpt.c.
2623         Don't compile it if GNU timegm is available.
2624         (http_atotm): Use timegm.
2625
2626 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
2627
2628         * http.c (http_atotm): Correctly query the old locale value.
2629
2630 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
2631
2632         * config-post.h (alloca): Don't #define alloca under MinGW32,
2633         which defines it in malloc.h, included from mswindows.h.
2634
2635 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
2636
2637         * utils.c (get_grouping_data): Force the use of separators in C
2638         locale.
2639
2640 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
2641
2642         * main.c (i18n_initialize): Set all locale categories.
2643
2644         * http.c (http_atotm): Temporarily set locale to "C".
2645
2646 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
2647
2648         * http.c (gethttp): Improve "POST data file missing" error
2649         message.
2650
2651 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
2652
2653         * progress.c (set_progress_implementation): Type COLON as const
2654         char *.
2655
2656 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
2657
2658         * utils.c (with_thousand_seps): Handle negative numbers.
2659
2660 2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
2661
2662         * progress.c (create_image): Mark the "eta" string for translation.
2663
2664 2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
2665
2666         * html-url.c (get_urls_file): Don't explicitly set entry->next to
2667         NULL since entry is already zeroed out.
2668
2669 2005-06-26  Gisle Vanem  <giva@bgnett.no>
2670
2671         * mswindows.h: Define gai_strerror under MinGW.
2672
2673 2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
2674
2675         * utils.c (with_thousand_seps): Correctly implement thousand seps
2676         consisting of more than one character.
2677
2678 2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
2679
2680         * main.c (secs_to_human_time): Ditto.
2681
2682         * progress.c (create_image): Print more exact duration of very
2683         short downloads.
2684
2685         * main.c (secs_to_human_time): Don't translate time suffixes "h",
2686         "m", and "s", which are not strictly SI, but are "accepted for use
2687         with SI".
2688         (secs_to_human_time): Print really small intervals as 0s, not
2689         0.00s.
2690
2691 2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
2692
2693         * config-post.h: Replace the alloca declaration with the one from
2694         the latest Autoconf manual.  This should remove a warning with GCC
2695         on AIX.
2696
2697 2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
2698
2699         * ftp.c (getftp): Always invoke SIZE, not only when continuing a
2700         download.
2701
2702         * main.c (main): Ditto here.
2703
2704         * progress.c (create_image): When the download is finished, print
2705         how long it took.
2706
2707 2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
2708
2709         * main.c (main): Print the downloaded and quota amounts with the
2710         "human_readable" function.
2711
2712         * ftp.c (print_length): Ditto.
2713
2714         * http.c (gethttp): Don't display thousand separators.
2715
2716         * utils.c (with_thousand_seps): Rewritten to respect locale
2717         settings and to be type size agnostic.
2718
2719 2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
2720
2721         * utils.c (human_readable): Divide with 1024 instead of shifting
2722         so the operation can work with non-integer N.
2723
2724 2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
2725
2726         * progress.c (eta_to_human): New logic for more human-readable
2727         ETA.
2728
2729 2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
2730
2731         * utils.c (with_thousand_seps_sum): Decrease buffer size so it
2732         cannot overrun add_thousand_seps's buffer.
2733
2734 2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
2735
2736         * utils.c (SPRINTF_WGINT): The correct format is %I64d, not just
2737         %I64.
2738
2739 2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
2740
2741         * http.c (http_loop): Don't warn about wildcards in HTTP URLs if
2742         globbing isn't requested in the first place.
2743
2744         * retr.c (retrieve_url): Temporarily turn off globbing when
2745         processing HTTP->FTP redirects.
2746
2747 2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
2748
2749         * utils.c (with_thousand_seps_sum): Now defined only if
2750         SUM_SIZE_INT is double.
2751
2752         * wget.h (SUM_SIZE_INT): Instead of bothering with long, long
2753         long, __int64, and friends, simply either use wgint or double, end
2754         of story.  Since we know how to print either, we no longer need
2755         LARGE_INT_FMT.
2756
2757         * sysdeps.h (LARGE_INT): Renamed to SUM_SIZE_INT to better reflect
2758         its intent, and moved to wget.h.
2759
2760 2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
2761
2762         * Makefile.in: No need to clean .libs.
2763
2764 2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
2765
2766         * cookies.c (parse_set_cookies): Cast pointer subtraction to int
2767         before using it with %d; AIX compiler warns on this.
2768         Reported by Jens Schleusener.
2769
2770 2005-06-24  Hrvoje Niksic  <hniksic@xemacs.org>
2771
2772         * http.c (gethttp): Don't prepend / here.
2773
2774         * cookies.c (cookie_handle_set_cookie): Prepend / to PATH.
2775         (cookie_header): Ditto.
2776
2777 2005-06-24  Hrvoje Niksic  <hniksic@xemacs.org>
2778
2779         * init.c: opt.verbose must be declared as int.
2780
2781 2005-06-23  Hrvoje Niksic  <hniksic@xemacs.org>
2782
2783         * cmpt.c (strpbrk): Removed.
2784         (mktime): Removed.
2785         Include <time.h>.
2786
2787 2005-06-23  Hrvoje Niksic  <hniksic@xemacs.org>
2788
2789         * utils.c (read_file): Ditto.
2790
2791         * main.c (main): Use struct_fstat.
2792
2793         * mswindows.h (struct_fstat): Define a struct_fstat to deal with
2794         the fact that Borland 5.5 has 64-bit stat, but not 64-bit fstat!
2795
2796 2005-06-23  Hrvoje Niksic  <hniksic@xemacs.org>
2797
2798         * sysdep.h: Remove code that deals with Watcom.
2799
2800 2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
2801
2802         * all: Use bool instead of int and false/true instead of 0/non-0
2803         for boolean variables and values.
2804
2805 2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
2806
2807         * sysdep.h: Include the stdbool.h/_Bool/bool blurb from Autoconf.
2808
2809 2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
2810
2811         * init.c (cmd_lockable_boolean): Removed.
2812
2813 2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
2814
2815         * cookies.c (struct cookie): Use 1-bit bitfields for booleans
2816         which makes the structure takes less space at no cost in
2817         complexity.
2818
2819 2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
2820
2821         * Makefile.in ($(OBJ)): Add the config.h dependency.
2822
2823 2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
2824
2825         * openssl.c, connect.c, host.c: Replace instances of #ifdef
2826         ENABLE_DEBUG if (opt.debug) {...} #endif with IF_DEBUG {...}.
2827
2828         * main.c: Rename the IF_DEBUG defined here to WHEN_DEBUG.
2829
2830         * wget.h (IF_DEBUG): New macro.
2831         (DEBUGP): Define in terms of IF_DEBUG.
2832
2833 2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
2834
2835         * http.c (gethttp): Only handle --set-cookies (and assert that
2836         cookie jar exists) if opt.cookies is true.  Failure to do so
2837         triggered the assert when --no-cookies was used and the server
2838         sent a Set-Cookie header.  Ouch!
2839
2840 2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
2841
2842         * connect.c (select_fd): Expect select() to exist.
2843
2844         * utils.c (xsleep): Always use select() as sleep fallback on
2845         non-Windows platforms.
2846
2847         * ptimer.c: Delete the implementation of PTIMER_TIME.
2848
2849         * main.c: Assume existence of signal(), test for different signal
2850         names instead.
2851
2852         * cmpt.c: Better document reasons why certain functions are
2853         included.
2854
2855 2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
2856
2857         * Makefile.in: Remove the manually maintained dependency list;
2858         make all object files depend on every header.
2859
2860 2005-06-20  Hrvoje Niksic  <hniksic@xemacs.org>
2861
2862         * hash.c: Rename "mapping" to "cell" to avoid confusion with the
2863         term "mapping" (or "map") sometimes being used for the entire hash
2864         table.  Also rename "non-empty" to "occupied" for easier reading
2865         of if (!NON_EMPTY (...)) ... .
2866
2867 2005-06-20  Hrvoje Niksic  <hniksic@xemacs.org>
2868
2869         * main.c, ptimer.c, sysdep.h, utils.c: Use #elif to simplify reading of
2870         chained if-else-else-else-... statements.
2871
2872 2005-06-20  Hrvoje Niksic  <hniksic@xemacs.org>
2873
2874         * all: Return type of signal handlers is `void'.  Include signal.h
2875         unconditionally.
2876
2877         * all: Don't explicitly cast values returned by malloc.  We no
2878         longer support ancient compilers that don't declare malloc, and we
2879         never supported C++ builds.
2880
2881 2005-06-19  Hrvoje Niksic  <hniksic@xemacs.org>
2882
2883         * all: Don't declare errno.  Include both time.h and sys/time.h,
2884         as long as sys/time.h exists.  Don't dereference function pointers
2885         when invoking the functions they point to.
2886
2887         * cmpt.c (memmove): Remove function mandated by C89.
2888         (strerror): Ditto.
2889         (strstr): Ditto.
2890
2891         * all: Undo the K&R-ization changes from 2005-05-03.
2892
2893         * all: Remove support for K&R compilers: use C89 function
2894         declarations, remove definition of PARAMS, remove support for
2895         varargs, and remove ansi2knr.  Assume the presence of time.h,
2896         string.h, and other headers mandated by C89.
2897
2898 2005-06-19  Hrvoje Niksic  <hniksic@xemacs.org>
2899
2900         * init.c (cmd_lockable_boolean): Don't recognize literal "2" and
2901         "-1" values; unlike 0 and 1, those should never be exposed to the
2902         user.  Update the error message to be more self-consistent, as
2903         proposed by Benno Schulenberg.
2904
2905 2005-06-18  Hrvoje Niksic  <hniksic@xemacs.org>
2906
2907         * http.c (gethttp): Don't free "head" before using it to save
2908         headers.
2909
2910 2005-06-18  Hrvoje Niksic  <hniksic@xemacs.org>
2911
2912         * http.c (gethttp): When -E is in use, check for file existence
2913         after appending ".html" to the name and modify the file name if
2914         necessary.
2915
2916 2005-06-17  Hrvoje Niksic  <hniksic@xemacs.org>
2917
2918         * connect.c (socket_has_inet6): Removed.
2919
2920         * host.c (lookup_host): Don't use the AI_ADDRCONFIG getaddrinfo
2921         hint.
2922
2923 2005-06-16  Hrvoje Niksic  <hniksic@xemacs.org>
2924
2925         * init.c (cmd_lockable_boolean): Improve the error message so it
2926         lists the more useful values first.
2927
2928 2005-06-15  Hrvoje Niksic  <hniksic@xemacs.org>
2929
2930         * http.c (gethttp): Also report the system error when the POST
2931         data file is missing.
2932
2933 2005-06-15  Benno Schulenberg  <benno@nietvergeten.nl>
2934
2935         * ftp.c, http.c, connect.c, cookies.c, html-url.c, init.c, res.c:
2936         Gettext-ize messages that were previously missed.
2937
2938 2005-06-15  Hrvoje Niksic  <hniksic@xemacs.org>
2939
2940         * host.h (ip_address): Remove the trailing comma from the type
2941         enum in the no-IPv6 case.
2942
2943         * main.c (struct cmdline_option): Remove the trailing comma from
2944         the enum.
2945
2946         Reported by Jens Schleusener.
2947
2948 2005-05-30  Hrvoje Niksic  <hniksic@xemacs.org>
2949
2950         * url.c (strpbrk_or_eos): Check for a recent GCC version before
2951         using the statement-as-expression extension.
2952
2953 2005-05-30  Hrvoje Niksic  <hniksic@xemacs.org>
2954
2955         * http.c (gethttp): Don't attempt to "skip short body" if we're
2956         issuing a HEAD request (in which case the response head is not
2957         followed by a body).
2958
2959 2005-05-30  Hrvoje Niksic  <hniksic@xemacs.org>
2960
2961         * init.c (cmd_spec_header): Don't split the string along the
2962         commas using cmd_vector; just append the new value using
2963         vec_append instead.
2964
2965         * utils.c (vec_append): New function.
2966
2967 2005-05-27  Andreas Beckmann  <debian@abeckmann.de>
2968
2969         * html-url.c (tag_handle_link): Mark the content from the <link
2970         src="..."> tag as expecting HTML.
2971
2972 2005-05-24  Hrvoje Niksic  <hniksic@xemacs.org>
2973
2974         * http.c (http_atotm): Document the origin of the "cookie date"
2975         format.
2976
2977 2005-05-21  Hrvoje Niksic  <hniksic@xemacs.org>
2978
2979         * init.c (setval_internal): Report exact command name alongside
2980         the "display name".
2981
2982 2005-05-18  Hrvoje Niksic  <hniksic@xemacs.org>
2983
2984         * cookies.c (update_cookie_field): Explicitly cast -1 to time_t to
2985         cope with systems where time_t is unsigned.
2986
2987         * cookies.c: Remove unnecessary casts to time_t from values
2988         already of that type.
2989
2990 2005-05-17  Hrvoje Niksic  <hniksic@xemacs.org>
2991
2992         * ftp.c (ftp_loop_internal): Same here.
2993
2994         * http.c (http_loop): Don't clobber the file when -c is specified
2995         and the first attempt to retrieve the file fails.
2996
2997 2005-05-16  Hrvoje Niksic  <hniksic@xemacs.org>
2998
2999         * openssl.c (ssl_check_certificate): Print all issues with a
3000         certificate.
3001
3002 2005-05-16  Hrvoje Niksic  <hniksic@xemacs.org>
3003
3004         * ftp-basic.c: Don't xfree() the line returned by ftp_response if
3005         the returned code is not FTPOK.
3006
3007 2005-05-16  Hrvoje Niksic  <hniksic@xemacs.org>
3008
3009         * init.c (cleanup): Don't free the non-existent opt.ftp_acc.  Free
3010         the SSL-related stuff.
3011
3012 2005-05-16  Hrvoje Niksic  <hniksic@xemacs.org>
3013
3014         * ftp.c (print_length): Consistently print \n at end of the
3015         "Length" line.
3016
3017 2005-05-14  Hrvoje Niksic  <hniksic@xemacs.org>
3018
3019         * openssl.c (ssl_connect): Announce the beginning and the end of
3020         the SSL handshake when in debug mode.
3021
3022         * wget.h (PTR_FORMAT): New macro for easier printing of pointer
3023         values.  Use %0*lx along with PTR_FORMAT instead of %p.
3024
3025 2005-05-14  Hrvoje Niksic  <hniksic@xemacs.org>
3026
3027         * http.c (gethttp): Would forget to close the connection when
3028         keep_alive was not used.
3029
3030 2005-05-13  Hrvoje Niksic  <hniksic@xemacs.org>
3031
3032         * openssl.c (pattern_match): Document the code that decides
3033         whether "*" matches ".".
3034
3035 2005-05-12  Hrvoje Niksic  <hniksic@xemacs.org>
3036
3037         * ftp-ls.c (ftp_index): Use %d to print the port number, which is
3038         now int.
3039         From Steven M. Schweda's VMS patches.
3040
3041 2005-05-12  Hrvoje Niksic  <hniksic@xemacs.org>
3042
3043         * url.c (rewrite_shorthand_url): Don't rewrite "https://host" to
3044         "ftp://https//host" when SSL is not used.
3045
3046 2005-05-11  Hrvoje Niksic  <hniksic@xemacs.org>
3047
3048         * openssl.c (ssl_check_server_identity): Renamed to
3049         ssl_check_certificate because it does more than just checking the
3050         server's identity.
3051         (ssl_check_certificate): Tell the user about
3052         --no-check-certificate.
3053
3054 2005-05-11  Hrvoje Niksic  <hniksic@xemacs.org>
3055
3056         * openssl.c (ssl_init): Always use SSL_VERIFY_NONE, so that the
3057         handshake finishes even if the certificate is invalid.  That way
3058         ssl_check_server_identity can provide better diagnostics on why
3059         the verification failed.
3060
3061 2005-05-11  Hrvoje Niksic  <hniksic@xemacs.org>
3062
3063         * openssl.c (pattern_match): New function.
3064         (ssl_check_server_identity): Treat peer certificate common name as
3065         wildcard.
3066
3067 2005-05-10  Hrvoje Niksic  <hniksic@xemacs.org>
3068
3069         * openssl.c (ssl_check_server_identity): Print certificate subject
3070         and issuer.
3071
3072 2005-05-10  Hrvoje Niksic  <hniksic@xemacs.org>
3073
3074         * res.c (res_register_specs): Correctly pass pointers to
3075         hash_table_get_pair.
3076
3077 2005-05-10  Hrvoje Niksic  <hniksic@xemacs.org>
3078
3079         * http.c (gethttp): Call ssl_check_server_identity.
3080
3081         * openssl.c (ssl_check_server_identity): New function, verifies
3082         that the host name in the certificate matches the actual host
3083         name.
3084         (verify_cert_callback): Removed, since it didn't do anything
3085         except returning the preverify_ok argument.
3086
3087         * connect.c (fd_transport_context): Allow retrieval of the context
3088         pointer registered with fd_register_transport.
3089
3090 2005-05-09  Hrvoje Niksic  <hniksic@xemacs.org>
3091
3092         * openssl.c (verify_cert_callback): Renamed from verify_callback.
3093         Always return the received "ok" value.  Print the X509 name in
3094         debug mode.
3095         (ssl_init): Enable partial writes in SSL context.
3096
3097 2005-05-08  Hrvoje Niksic  <hniksic@xemacs.org>
3098
3099         * http.c (http_loop): Check for wildcards in the URL path
3100         component, not in the whole URL.
3101
3102         * ftp.c (ftp_loop): Check for wildcards in URL path before
3103         unescaping, so the users can escape globbing metacharacters with %
3104         escapes.
3105
3106 2005-05-08  Hrvoje Niksic  <hniksic@xemacs.org>
3107
3108         * init.c (run_command): Correctly interpret the return value of
3109         parse_line.
3110         (commands): Re-alphabetize.
3111
3112 2005-05-08  Hrvoje Niksic  <hniksic@xemacs.org>
3113
3114         * netrc.c (parse_netrc): Explicitly check for assignment != NULL
3115         to silence warning from Borland C.
3116
3117         * url.c (sync_path): Don't unnecessarily increment p.
3118         (url_parse): Don't unnecessarily set url_encode to NULL just
3119         prior to return from the function.
3120
3121 2005-05-08  Hrvoje Niksic  <hniksic@xemacs.org>
3122
3123         * log.c (escnonprint_internal): Place variable declarations
3124         before other statements.
3125
3126 2005-05-08  Hrvoje Niksic  <hniksic@xemacs.org>
3127
3128         * html-url.c: Include recur.h.
3129
3130         * http.c (request_new): Define as accepting no args.
3131
3132 2005-05-07  Hrvoje Niksic  <hniksic@xemacs.org>
3133
3134         * url.c (strpbrk_or_eos): Made inline.  Use strchr(s, '\0') for
3135         finding the NUL char position.
3136
3137 2005-05-07  Hrvoje Niksic  <hniksic@xemacs.org>
3138
3139         * url.c (decide_copy_method): Renamed to char_needs_escaping.
3140         Since it now returns only two possible values, change it to return
3141         boolean (int).
3142
3143 2005-05-07  Hrvoje Niksic  <hniksic@xemacs.org>
3144
3145         * ftp-basic.c (ftp_request): Prevent newlines in VALUE causing
3146         inadvertent sending of multiple FTP commands.
3147
3148 2005-05-07  Hrvoje Niksic  <hniksic@xemacs.org>
3149
3150         * url.c (decide_copy_method): Never cause reencode_escapes to
3151         decode % escapes; it is too intrusive and breaks some servers.
3152
3153 2005-05-07  Hrvoje Niksic  <hniksic@xemacs.org>
3154
3155         * http.c (gethttp): When tunnelling SSL traffic over proxy with
3156         CONNECT, we're really talking to the remote server directly.
3157         Because of this, the request-line argument must be the URL path
3158         rather than the whole URL, as it would be when using regular
3159         proxies.
3160         Reported by Charles Lane.
3161
3162 2005-05-06  Hrvoje Niksic  <hniksic@xemacs.org>
3163
3164         * init.c (cmd_spec_useragent): Allow empty User-Agent.
3165
3166         * http.c (gethttp): Don't print "unknown authentication scheme"
3167         for failed Basic authentication.
3168         (SET_USER_AGENT): Don't set user-agent if opt.useragent is empty.
3169         (gethttp): Use alloca for allocation of www_authenticate.
3170
3171 2005-05-06  Hrvoje Niksic  <hniksic@xemacs.org>
3172
3173         * main.c (print_help): Fix wording of --secure-protocol help text.
3174
3175 2005-05-06  Hrvoje Niksic  <hniksic@xemacs.org>
3176
3177         * cmpt.c (strstr): Updated from glibc 2.3.5.
3178
3179 2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
3180
3181         * http.c (http_atotm): Zero out the whole struct tm being passed
3182         to strptime.
3183
3184 2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
3185
3186         * main.c (main): Propagate option name to setoptval.
3187
3188         * init.c (setoptval): Accept another argument, OPTNAME.  Propagate
3189         that argument as the option name independently of the actual
3190         command, determined by command_by_name(com).
3191
3192 2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
3193
3194         * init.c (parse_line): Make the return value indicate whether
3195         there was a syntax error or a setter failed.
3196         (run_wgetrc): Return an indication on whether an error has been
3197         encountered.
3198         (initialize): Abort if there have been errors running either
3199         .wgetrc file.
3200
3201 2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
3202
3203         * log.c (copy_and_escape): Slightly reduce code repetition between
3204         the two loops.
3205
3206 2005-05-05  Charles C.Fu  <ccwf@bacchus.com>
3207
3208         * utils.c (proclist): Strip leading slash when calling fnmatch
3209         too, otherwise wildcard comparisons always fail.
3210
3211 2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
3212
3213         * utils.c (touch): Set access time to current time.
3214
3215 2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
3216
3217         * url.c (url_unescape): Don't unescape %00, it effectively
3218         truncates the string.
3219
3220 2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
3221
3222         * log.c (copy_and_escape): Replace the FOR_URI argument with a
3223         slightly more general mechanism for specifying different kinds of
3224         escape.
3225
3226 2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
3227
3228         * ftp-basic.c (ftp_response): Fix printing FTP server response.
3229
3230 2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
3231
3232         * retr.c (limit_bandwidth_reset): Reset sleep_adjust.
3233         (limit_bandwidth): Don't allow huge "adjustment" values that
3234         result from being suspended for a while.
3235
3236 2005-05-04  Hrvoje Niksic  <hniksic@xemacs.org>
3237
3238         * wget.h: If gettext was found but libtintl.h wasn't, declare
3239         gettext's return type to avoid type mismatches.
3240
3241 2005-05-03  Hrvoje Niksic  <hniksic@xemacs.org>
3242
3243         * url.c (url_parse): Rename label `error' to avoid conflict with
3244         identifier.
3245
3246         * retr.c (fd_read_body): Rename label `out' to avoid conflict with
3247         identifier.
3248         (fd_read_hunk): Use explicit double constant.
3249         (retrieve_from_file): Don't use string concatenation.
3250         (sleep_between_retrievals): Make sure xsleep is called with a
3251         `double' argument.
3252         (no_proxy_match): Define as static, like it is declared.
3253
3254         * progress.c (bar_create): Use 0.0 instead of 0 because K&R
3255         compilers can't automatically promote it.
3256
3257         * http-ntlm.c (ntlm_output): Replace \xHH sequences with \OOO for
3258         the sake of old compilers.
3259
3260         * ftp.c (ftp_loop_internal): Don't use string concatenation.
3261
3262         * http.c (request_send): Use explicit double constants when
3263         calling fd_read and fd_write.
3264         (post_file): Ditto.
3265         (gethttp): Ditto.
3266         (skip_short_body): Ditto.
3267
3268         * ftp-basic.c: When calling fd_write, specify the last argument as
3269         a `double' constant for the sake of K&R compilers which don't see
3270         the prototype and therefore can't promote it to double
3271         automatically.
3272
3273         * cookies.c (cookie_jar_load): Rename abort label to abort_cookie
3274         to avoid name conflict in K&R compilers.
3275
3276 2005-04-29  Hrvoje Niksic  <hniksic@xemacs.org>
3277
3278         * ptimer.c (posix_init): Since we allow _POSIX_MONOTONIC_CLOCK==0,
3279         it is not enough to check for _POSIX_MONOTONIC_CLOCK-0, we must
3280         also check for defined(_POSIX_MONOTONIC_CLOCK).
3281
3282 2005-04-28  Hrvoje Niksic  <hniksic@xemacs.org>
3283
3284         * ftp.c, hash.c, connect.c, host.c, http.c: Remove unreached code,
3285         such as "break" following return or abort.
3286
3287 2005-04-28  Hrvoje Niksic  <hniksic@xemacs.org>
3288
3289         * init.c (commands): Wrap the use of opt.random_file in #ifdef
3290         HAVE_SSL.
3291
3292 2005-04-28  Hrvoje Niksic  <hniksic@xemacs.org>
3293
3294         * http.c (gethttp): Correctly set the user agent.
3295
3296 2005-04-27  Hrvoje Niksic  <hniksic@xemacs.org>
3297
3298         * init.c (cmd_spec_useragent): Free the old value of
3299         opt.useragent before setting the new one.
3300
3301 2005-04-27  Mauro Tortonesi  <mauro@ferrara.linux.it>
3302
3303         * main.c: Map --ftp-password, --http-password and --proxy-password to
3304         the new ftppassword, httppassword and proxypassword commands
3305         respectively.  Document the --user and --password options in the help
3306         string.
3307
3308 2005-04-27  Mauro Tortonesi  <mauro@ferrara.linux.it>
3309
3310         * ftp.c: Add support for --user and --password.
3311
3312         * http.c: Add support for --user and --password.
3313
3314         * init.c: Deprecated ftppasswd, httppasswd, login, passwd and
3315         proxypasswd commands.  Added ftppassword, ftpuser, httppassword,
3316         password, proxypassword and user commands.
3317
3318         * main.c: Renamed --ftp-passwd to --ftp-password.  Added --ftp-user,
3319         --http-password, --password, --proxy-password and --user.  Deprecated
3320         --http-passwd and --proxy-passwd.  Added documentation for new options
3321         and removed documentation for deprecated options in the help string.
3322
3323         * options.h (struct options): Added user and passwd members to handle
3324         --user and --password respectively.  Renamed ftp_acc and ftp_pass
3325         members to ftp_user and ftp_passwd for consistency.
3326
3327 2005-04-27  Hrvoje Niksic  <hniksic@xemacs.org>
3328
3329         * main.c (print_help): Advertise "DER", not "ASN1".
3330
3331 2005-04-27  Hrvoje Niksic  <hniksic@xemacs.org>
3332
3333         * openssl.c (init_prng): Disable the weak random seed by default.
3334
3335         * http.c (gethttp): Simplify SSL initialization; disable SSL when
3336         anything goes wrong with the initialization.
3337
3338         * options.h (struct options): New option opt.random_file.
3339
3340 2005-04-27  Hrvoje Niksic  <hniksic@xemacs.org>
3341
3342         * init.c: Wrap private key commands in IF_SSL.
3343
3344 2005-04-27  Hrvoje Niksic  <hniksic@xemacs.org>
3345
3346         * openssl.c (ssl_init): Ditto.
3347
3348         * options.h (struct options): Allow separate specification of key
3349         type and certificate type.
3350
3351         * init.c (cmd_spec_cert_type): Provide a "der" synonym for "asn1"
3352         certificate encoding.
3353
3354 2005-04-26  Hrvoje Niksic  <hniksic@xemacs.org>
3355
3356         * openssl.c: Renamed "gen_sslfunc.c" to "openssl.c" and
3357         "gen_sslfunc.h" to "openssl.h".  This reflects the intent of
3358         openssl.c encapsulating the OpenSSL-specific code.
3359
3360 2005-04-26  Hrvoje Niksic  <hniksic@xemacs.org>
3361
3362         * init.c: Renamed "closure" (a synonym for context in some
3363         cultures) to "place", which more accurately reflects the usage.
3364
3365 2005-04-26  Hrvoje Niksic  <hniksic@xemacs.org>
3366
3367         * gen_sslfunc.c (ssl_init): Use default locations for loading the
3368         certificate bundles.
3369         (ssl_init_prng): Disable the cryptographically weak PRNG
3370         initialization fallback.
3371
3372         * init.c: Renamed SSL command-line arguments and wgetrc commands.
3373         (defaults): Check the server certificate by default.
3374
3375 2005-04-26  Hrvoje Niksic  <hniksic@xemacs.org>
3376
3377         * cookies.c (cookie_handle_set_cookie): Delete the part of the
3378         path after the trailing slash.
3379
3380         * http.c (gethttp): Call cookie_handle_set_cookie with path that
3381         begins with '/'.
3382
3383 2005-04-26  Hrvoje Niksic  <hniksic@xemacs.org>
3384
3385         * http.c (gethttp): Call skip_short_body only if keep_alive is in
3386         use.
3387         (gethttp): Send the User-Agent header with the CONNECT request as
3388         well.
3389
3390 2005-04-25  Hrvoje Niksic  <hniksic@xemacs.org>
3391
3392         * main.c (option_data): Removed support for the undocumented flag
3393         --use-proxy.
3394
3395 2005-04-25  Hrvoje Niksic  <hniksic@xemacs.org>
3396
3397         * main.c (option_data): Don't treat -Y as a boolean switch; treat
3398         it as a value switch instead, so "-Y off" continues to work.
3399
3400 2005-04-24  Hrvoje Niksic  <hniksic@xemacs.org>
3401
3402         * utils.c (aprintf): Delete unreachable statement.
3403
3404 2005-04-24  Hrvoje Niksic  <hniksic@xemacs.org>
3405
3406         * host.c (cmp_prefer_ipv4): New function.
3407         (cmp_prefer_ipv6): New function.
3408         (lookup_host): Use the appropriate comparator according to
3409         opt.prefer_family.
3410
3411         * init.c: New option prefer_family.
3412
3413         * host.c (is_valid_ipv6_address): Spell NS_* constants in lower
3414         case to avoid clash with system headers.
3415         (lookup_host): Reorder the addresses so that IPv4 ones come first.
3416
3417         * utils.c (stable_sort): New function.
3418
3419 2005-04-24  Hrvoje Niksic  <hniksic@xemacs.org>
3420
3421         * connect.c (retryable_socket_connect_error): Return 0 for
3422         ENETUNREACH and EHOSTUNREACH.
3423
3424 2005-04-23  Hrvoje Niksic  <hniksic@xemacs.org>
3425
3426         * cmpt.c: Reenable the memmove implementation for systems that
3427         lack it.
3428
3429         * http.c (gethttp): Store the "authorized" state of the persistent
3430         connection.
3431         (request_remove_header): New function.
3432         (gethttp): Don't send the "Basic" authentication if the connection
3433         is already authorized.
3434
3435 2005-04-23  Hrvoje Niksic  <hniksic@xemacs.org>
3436
3437         * utils.c (base64_encode): Treat input as unsigned chars.
3438         Required for correct encoding of binary stuff.
3439
3440 2005-04-23  Hrvoje Niksic  <hniksic@xemacs.org>
3441
3442         * http-ntlm.c: Format the function definitions in an
3443         ansi2knr-friendly fashion.
3444
3445 2005-04-22  Hrvoje Niksic  <hniksic@xemacs.org>
3446
3447         * http.c (gethttp): Handle multiple WWW-Authentication headers,
3448         only one of which is recognized.  Those are sent by IIS with NTLM
3449         authorization.
3450         (create_authorization_line): Propagate information whether
3451         authorization is finished.
3452         (gethttp): Only stop authorization when it's really finished, not
3453         after fixed two steps.
3454
3455 2005-04-21  Hrvoje Niksic  <hniksic@xemacs.org>
3456
3457         * gen_sslfunc.c (ssl_init): Fix warning message text; mark the
3458         message as translatable.
3459
3460 2005-04-21  Hrvoje Niksic  <hniksic@xemacs.org>
3461
3462         * main.c (print_help): Print the EGD option outside the cluster of
3463         SSL options.
3464
3465 2005-04-21  Hrvoje Niksic  <hniksic@xemacs.org>
3466
3467         * http-ntlm.c (ntlm_output): Fix setting the domain.
3468         Suggested by Sami Krank.
3469
3470 2005-04-20  Mauro Tortonesi  <mauro@ferrara.linux.it>
3471
3472         * connect.c: Set IPV6_V6ONLY socket option when -6 switch is used.
3473
3474 2005-04-20  FUJISHIMA Satsuki  <sf@FreeBSD.org>
3475
3476         * http.c (request_set_header): Fix the check whether a new header
3477         needs to be allocated.
3478
3479 2005-04-18  Hrvoje Niksic  <hniksic@xemacs.org>
3480
3481         * utils.c (base64_encode): Use the parameter order that makes more
3482         sense.  Return the length of the base64 written.  Updated all
3483         callers.
3484
3485 2005-04-17  Hrvoje Niksic  <hniksic@xemacs.org>
3486
3487         * http.c (request_set_header): Free NAME when VALUE is NULL and
3488         freeing the header name is requested.
3489
3490 2005-04-17  Hrvoje Niksic  <hniksic@xemacs.org>
3491
3492         * snprintf.c (fmtstr): Declare VALUE as const char *.
3493         Based on patch by Russ Allbery.
3494
3495 2005-04-17  Hrvoje Niksic  <hniksic@xemacs.org>
3496
3497         * snprintf.c (fmtfp): More correct handling of significant digit
3498         count with %g -- 0.002 has one significant digit, not three.
3499
3500 2005-04-16  Hrvoje Niksic  <hniksic@xemacs.org>
3501
3502         * retr.c (fd_read_body): Respect read timeout with non-interactive
3503         or no progress gauge -- treat ETIMEDOUT specially only when
3504         progress_interactive.
3505         Reported by FUJISHIMA Satsuki.
3506
3507 2005-04-16  FUJISHIMA Satsuki  <sf@FreeBSD.org>
3508
3509         * http.c (gethttp): Don't use HTTP/1.0 persistent connections over
3510         proxy.
3511
3512 2005-04-16  Hrvoje Niksic  <hniksic@xemacs.org>
3513
3514         * snprintf.c: Use the PARAMS macro to handle prototypes.  Write
3515         function definitions in the ansi2knr-friendly way.
3516         (fmtstr): If string precision is specified, don't read VALUE past
3517         it.
3518         (dopr): Actually print %g and %e formats.
3519         (fmtfp): Fix a bug that caused 0.01 to be printed as 0.1.
3520         (fmtfp): Use LLONG in floating point conversions to be able to
3521         convert more digits.
3522         (fmtfp): Interpret precision as number of significant digits with
3523         %g.
3524         (fmtfp): Omit trailing decimal zeros with %g.
3525
3526         * snprintf.c: Don't include <ctype.h> because none of it is used.
3527         Include strings.h/string.h, as per Autoconf.
3528
3529 2005-04-15  Hrvoje Niksic  <hniksic@xemacs.org>
3530
3531         * ptimer.c: Use _POSIX_TIMERS - 0 > 0, which handles the case when
3532         _POSIX_TIMERS is defined but empty, as well as the case when it is
3533         undefined.  Do the same with the check for _POSIX_MONOTONIC_CLOCK.
3534         Suggested by Larry Jones.
3535
3536 2005-04-15  Hrvoje Niksic  <hniksic@xemacs.org>
3537
3538         * ptimer.c: Check that _POSIX_TIMERS is defined as well as > 0.
3539         Problem reported by Steven M. Schweda.
3540
3541 2005-04-14  Hrvoje Niksic  <hniksic@xemacs.org>
3542
3543         * http.c (skip_short_body): Print the skipped body data in debug
3544         mode.
3545         (skip_short_body): Don't skip more than 4k of body data.
3546         (skip_short_body): Return whether the skipping was successful.
3547         (gethttp): If skip_short_body failed, invalidate the connection.
3548
3549 2005-04-12  Gisle Vanem  <giva@bgnett.no>
3550
3551         * ftp.c (getftp): Ditto.
3552
3553         * http.c (gethttp): Open the output file in binary mode.
3554
3555 2005-04-11  Hrvoje Niksic  <hniksic@xemacs.org>
3556
3557         * hash.c: Conditionalize including config.h on HAVE_CONFIG_H
3558         instead of on STANDALONE.
3559
3560 2005-04-11  Hrvoje Niksic  <hniksic@xemacs.org>
3561
3562         * gen_sslfunc.c (ssl_print_errors): Made static.
3563         (ssl_print_errors): Eliminate potentially dangerous fixed-size
3564         error buffer.  Passing NULL to ERR_error_string causes it to use
3565         its own static buffer, which is fine for our purposes.
3566
3567         * gen_sslfunc.c: Include gen_sslfunc.h.  Make the declarations of
3568         ssl_init and ssl_conect match the actual definitions.
3569         (ssl_connect): Simply return a boolean, the SSL context is no
3570         longer useful as a return value.
3571
3572         * retr.c: Don't include SSL headers; we don't need them.
3573
3574 2005-04-11  Hrvoje Niksic  <hniksic@xemacs.org>
3575
3576         * config-post.h: Don't define _VA_LIST under Solaris; it breaks
3577         compilation with GCC 3.4 under Solaris 10.  (It was defined to
3578         avoid a warning with previous versions of GCC.)
3579
3580 2005-04-11  Hrvoje Niksic  <hniksic@xemacs.org>
3581
3582         * xmalloc.c (register_ptr): Warn the user to increase SZ prior to
3583         aborting.
3584
3585 2005-04-11  Hrvoje Niksic  <hniksic@xemacs.org>
3586
3587         * convert.c (convert_cleanup): Free converted_files.
3588
3589 2005-04-10  Hrvoje Niksic  <hniksic@xemacs.org>
3590
3591         * wget.h (DEBUGP): Use __builtin_expect to give a hint to GCC that
3592         opt.debug is false in the vast majority of cases.
3593
3594 2005-04-10  Hrvoje Niksic  <hniksic@xemacs.org>
3595
3596         * config-post.h: Declare alloca as void *, not char *.
3597
3598 2005-04-09  Hrvoje Niksic  <hniksic@xemacs.org>
3599
3600         * recur.c (download_child_p): When -p is used, (temporarily)
3601         ignore accept/reject rules for HTMLs, even when they are at the
3602         maximum recursion depth.  That is because with -p we are, if
3603         necessary, overstepping the max. depth to get the requisites.
3604
3605 2004-06-12  Larry Jones <lawrence.jones@ugsplm.com>
3606
3607         * recur.c (download_child_p): Correct the logic in check number 6:
3608         test opt.reclevel (not DEPTH) against INFINITE_RECURSION.
3609
3610 2005-04-09  Hrvoje Niksic  <hniksic@xemacs.org>
3611
3612         * url.c: Use "static const" in preference to "const static".
3613         Sun's cc warns that "storage class after type is obsolescent".
3614
3615         * url.c (urlchr_table): Don't mark ~ as unsafe, too many broken
3616         web sites are confused when ~ is changed to %7E.  Their servers
3617         redirect /%7Efoo/ to /~foo/, which Wget again accesses using %7E,
3618         causing further redirections, therefore looping infinitely.  See
3619         Debian bug #301624 for an example.
3620
3621 2005-04-09  Hrvoje Niksic  <hniksic@xemacs.org>
3622
3623         * alloca.c: Include wget.h to be able to use xmalloc.  In addition
3624         to defining malloc to xmalloc, also define free to xfree.
3625
3626 2005-04-09  Hrvoje Niksic  <hniksic@xemacs.org>
3627
3628         * http-ntlm.c (ntlm_output): Use "char", not "unsigned char" for
3629         ntlmbuf.  Our base64 functions accept char anyway.
3630         (ntlm_output): Join up the format string, since we nominally
3631         support K&R compilers.
3632         (ntlm_output): Ditto.
3633
3634 2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
3635
3636         * ptimer.c: Use Windows timers under Cygwin, whose POSIX timer
3637         implementation is incomplete.
3638
3639 2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
3640
3641         * ptimer.c (struct ptimer): Remove the unused initialized field.
3642
3643         * ptimer.c: Renamed function parameters from WT (which used to
3644         stand for wget_timer or wtimer) to PT.
3645
3646 2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
3647
3648         * ptimer.c (posix_init): Be smarter about choosing clocks.  In
3649         decreasing order of preference, use CLOCK_MONOTONIC,
3650         CLOCK_HIGHRES, and CLOCK_REALTIME.
3651         (ptimer_allocate): Removed.
3652
3653         * ptimer.c: Refactor the code by cleanly separating the
3654         architecture-dependent code from the architecture-independent
3655         code.
3656
3657 2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
3658
3659         * ptimer.c (ptimer_init): Explicitly check that
3660         _POSIX_MONOTONIC_CLOCK is *both* defined and >=0.  (Undefined
3661         symbols are >=0.)
3662
3663 2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
3664
3665         * ptimer.c (ptimer_diff): Fix typo affecting Windows build.
3666
3667 2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
3668
3669         * ptimer.c (ptimer_init): In fact, _POSIX_MONOTONIC_CLOCK needs to
3670         be >= 0.
3671
3672         * ptimer.c (ptimer_init): Check whether _POSIX_MONOTONIC_CLOCK is
3673         defined instead of whether it's greater than 0.  glibc defines it
3674         to 0, but still makes it available via sysconf.
3675
3676 2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
3677
3678         * mswindows.c (str_to_int64): Rename OVERFLOW and UNDERFLOW to
3679         INT64_OVERFLOW and INT64_UNDERFLOW, since those names are used.
3680
3681 2005-04-07  Hrvoje Niksic  <hniksic@xemacs.org>
3682
3683         * ptimer.c: New file.  Move the "wtimer" functions from utils.c to
3684         this file and rename them to ptimer_.
3685
3686 2005-04-07  Hrvoje Niksic  <hniksic@xemacs.org>
3687
3688         * host.c (NO_ADDRESS): Define NO_ADDRESS only after the system
3689         headers have been included.
3690
3691 2005-04-06  Hrvoje Niksic  <hniksic@xemacs.org>
3692
3693         * http.c (pconn): Include NTLM data, which is per-connection.
3694         (known_authentication_scheme_p): Recognize NTLM authorization.
3695         (create_authorization_line): Call ntlm_input and ntlm_output.
3696
3697         * http-ntlm.c: New file, donated by Daniel Stenberg and originally
3698         written for curl, heavily modified for Wget.
3699
3700         * utils.c (base64_encode): Relocated from http.c, since it is now
3701         used by http-ntlm.c, and will possibly be used elsewhere.
3702         (base64_decode): New function, originally based on code from GNU
3703         recode.
3704
3705 2005-04-02  Hrvoje Niksic  <hniksic@xemacs.org>
3706
3707         * ftp.c (ftp_loop): Ditto.
3708
3709         * ftp-basic.c (ftp_pasv): Use the xzero shorthand for memset(0).
3710         (ftp_lpsv): Ditto.
3711
3712 2005-04-05  Mauro Tortonesi  <mauro@ferrara.linux.it>
3713
3714         * Makefile.in: removed string_t.c from list of source files.
3715
3716 2005-04-04  Mauro Tortonesi  <mauro@ferrara.linux.it>
3717
3718         * string_t.c: Removed.
3719
3720         * string_t.h: Removed.
3721
3722 2005-04-02  Hrvoje Niksic  <hniksic@xemacs.org>
3723
3724         * url.c (rewrite_shorthand_url): Only accept recognized schemes.
3725         That way "foo:80" will correctly be rewritten to "http://foo:80"
3726         instead of left unchanged and ultimately rejected because of
3727         "unsupported scheme foo".
3728
3729 2005-03-31  Hrvoje Niksic  <hniksic@xemacs.org>
3730
3731         * utils.c (number_to_string): Avoid explicit 64-bit constants;
3732         construct them by multiplication at compile-time.
3733
3734         * utils.c, elsewhere: Don't append "L" to 32-bit integer
3735         constants; we aren't really compilable on 16-bit systems anyway.
3736
3737         * hash.c (prime_size): Remove primes larger than 2^31, but include
3738         2^31-1, which is prime.
3739
3740 2005-03-30  Hrvoje Niksic  <hniksic@xemacs.org>
3741
3742         * utils.c (string_set_to_array): New function.
3743
3744         * convert.c: Replace the use of "slists" with sets/hash-tables,
3745         which in fact suit the intended purpose much better.
3746         downloaded_html_list is removed altogether.
3747
3748 2005-03-29  Hrvoje Niksic  <hniksic@xemacs.org>
3749
3750         * ftp.h (enum): Rename GLOBALL, GETALL, and GETONE to
3751         GLOB_GLOBALL, GLOB_GETALL, and GLOB_GETONE to avoid conflict with
3752         Linux headers.
3753
3754 2005-03-29  Hrvoje Niksic  <hniksic@xemacs.org>
3755
3756         * utils.c (numdigit): More correct handling of negative numbers.
3757
3758 2005-03-21  Hrvoje Niksic  <hniksic@xemacs.org>
3759
3760         * http.c (gethttp): Print the human-readable size.
3761
3762         * ftp.c (getftp): Print the human-readable size of the file to be
3763         downloaded.
3764
3765         * utils.c (human_readable): New function.
3766
3767         * utils.c: Renamed "legible" to "with_thousand_seps",
3768         "legible_large_int" to "with_thousand_seps_large", and "legible_1"
3769         to "add_thousand_seps".
3770
3771 2005-03-21  Hrvoje Niksic  <hniksic@xemacs.org>
3772
3773         * http.c (gethttp): Inhibit persistent connections when talking to
3774         proxies, as mandated by RFC 2068.
3775
3776 2005-03-20  Hrvoje Niksic  <hniksic@xemacs.org>
3777
3778         * url.c (unescape_single_char): New function.
3779         (url_escape_dir): Use it to unescape slashes in directory
3780         components.
3781         (url_string): Escape unsafe chars in host name, except for the ':'
3782         charaters, which can appear in IPv6 addresses.
3783
3784         * main.c (main): Don't access the cookie jar directly.
3785
3786         * log.c (escnonprint_internal): Correctly calculate the needed
3787         string size.  Don't forget the buffer's new size after having
3788         reallocated it.
3789         (log_cleanup): New function.  Free the escnonprint ring data.
3790
3791         * init.c (cleanup): Don't free the cookie jar explicitly, it is
3792         now done by http_cleanup.
3793         (cleanup): opt.user_headers is now a vector, free it with
3794         free_vec.
3795
3796         * http.c (gethttp): Make sure to free the request data, the status
3797         message, and the response data before returning from the function.
3798         (save_cookies): New function.
3799         (http_cleanup): Free the cookie jar here.
3800
3801         * hash.c: Renamed string_hash to hash_string and ptrhash to
3802         hash_pointer.  Exported hash_pointer.
3803
3804         * xmalloc.c: Organized malloc_table (previously malloc_debug) as a
3805         simple EQ hash table.  register_ptr and unregister_ptr are now of
3806         O(1) complexity.
3807
3808         * xmalloc.c: Renamed "*_debug" to debugging_* and "*_real" to
3809         checking_*.
3810
3811 2005-03-12  Hrvoje Niksic  <hniksic@xemacs.org>
3812
3813         * utils.c (debug_test_md5): Moved to gen-md5.c.
3814
3815         * mswindows.h: Don't declare inet_ntop, since we don't use it.
3816
3817         * mswindows.h: For consistency, also wrap closesocket, it being
3818         a Winsock call.
3819
3820         * mswindows.h: Don't declare sleep and usleep; we're defining
3821         xsleep now.
3822
3823         * mswindows.h (mkdir): Don't special-case Borland C, _mkdir
3824         works there as well.
3825
3826         * host.c: Don't include winsock header files; the correct ones
3827         are already included by mswindows.h.
3828
3829         * mswindows.c (xsleep): Round toward the nearest millisecond
3830         in an attempt to avoid average short sleeps.
3831
3832         * utils.c (wtimer_granularity): Report correct values for
3833         Windows timers and for high-resolution timers.
3834
3835         * utils.c (wtimer_initialize_once): New function, called to
3836         initialize the timer frequency.
3837
3838         * utils.c: Replace the use of GetSystemTime with high-resolution
3839         counters under Windows.  When high-resolution counters are
3840         unavailable, use GetTickCount().
3841
3842 2005-03-15  Hrvoje Niksic  <hniksic@xemacs.org>
3843
3844         * retr.c (fd_read_body): Undo the 2004-11-18 change.  Instead,
3845         always be "exact".
3846
3847 2005-03-17  Hrvoje Niksic  <hniksic@xemacs.org>
3848
3849         * ftp-basic.c (ftp_login): Don't free the string if ftp_response
3850         returned an error status because the line didn't get allocated in
3851         the first place.
3852
3853 2005-03-15  Hrvoje Niksic  <hniksic@xemacs.org>
3854
3855         * http.c (read_http_response_head): Limit the response size to 64k
3856         bytes.
3857
3858         * retr.c (fd_read_hunk): Accept a MAXSIZE argument that limits the
3859         number of bytes the function is allowed to allocate.
3860         (fd_read_line): Limit the line to 4096 bytes.
3861
3862 2005-03-12  Hrvoje Niksic  <hniksic@xemacs.org>
3863
3864         * wget.h: Include options.h after wgint has been defined.
3865
3866         * options.h (struct options): Declare options processed with
3867         cmd_bytes as wgint, not long.
3868
3869 2005-03-18  Hrvoje Niksic  <hniksic@xemacs.org>
3870
3871         * init.c (cmd_file): Use concat_strings.
3872
3873         * http.c (basic_authentication_encode): Use concat_strings.
3874
3875         * ftp-ls.c (ftp_index): Use concat_strings.
3876
3877         * ftp-basic.c (ftp_request): Use concat_strings.
3878
3879         * utils.c (concat_strings): New function.
3880
3881 2005-03-12  Hrvoje Niksic  <hniksic@xemacs.org>
3882
3883         * init.c (simple_atof): Handle negative numbers; skip whitespace
3884         before the number.
3885         (simple_atoi): Ditto.  Also, check for overflow and underflow.
3886         (cmd_number): Bail out on negative numbers.
3887         (parse_bytes_helper): Ditto.
3888
3889 2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
3890
3891         * http.c (gethttp): Handle multiple Set-Cookie headers sent by
3892         remote server.
3893
3894 2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
3895
3896         * init.c (defaults): Use passive FTP by default.
3897
3898 2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
3899
3900         * mswindows.c: Provide wrappers to Winsock functions that set
3901         errno to WSAGetLastError() in case of failure.  Also provide a
3902         Windows-specific version of strerror.
3903
3904         * mswindows.h: Wrap calls to socket, bind, connect, recv, send,
3905         select, getsockname, getpeername, and setsockopt.
3906
3907 2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
3908
3909         * url.c (url_parse): Reject port numbers larger than 65535.  We
3910         also check for overflow while parsing port numbers.
3911
3912 2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
3913
3914         * utils.c (read_file): Don't use wgint for file size; LFS won't
3915         work since the file is mmap'ed as a whole.
3916
3917         * options.h: Don't include stdio.h.
3918
3919         * log.c: Ditto.
3920
3921         * init.c: Disambiguate assignment from non-zero test to avoid
3922         Borland C warning.
3923
3924         * http.c (response_new): Don't needlessly post-increment count.
3925
3926         * hash.c: Include stdio.h.
3927
3928         * gnu-md5.h: Don't include stdio.h.
3929
3930         * getopt.h (struct option): Always use const.
3931
3932         * ftp.c (getftp): Avoid unnecessary assignment to RES to avoid
3933         Borland C warning.
3934
3935         * ftp-ls.c: Disambiguate assignment from non-zero test to avoid
3936         Borland C warning.
3937
3938         * cmpt.c (strptime_internal): Don't initialize rp_backup when
3939         !_NL_CURRENT to avoid Borland C warning.
3940
3941 2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
3942
3943         * utils.c (fopen_excl): Fix parse error when O_BINARY is
3944         available.
3945
3946 2005-03-05  Hrvoje Niksic  <hniksic@xemacs.org>
3947
3948         * url.c (url_file_name): Don't allow hosts named ".." to be
3949         appended as path elements.
3950
3951 2005-03-03  Hrvoje Niksic  <hniksic@xemacs.org>
3952
3953         * retr.c (retrieve_url): Escape location header.
3954
3955         * http.c (print_server_response_1): Escape server response when
3956         printing it.
3957         (gethttp): Escape host name, status message, location header, and
3958         content type.
3959         (http_loop): Escape error message from server.
3960
3961         * host.c (lookup_host): Escape host name when printing it.
3962
3963         * ftp.c (getftp): Escape user name when printing it.
3964         (getftp): Escape remote file and directory for printing.
3965         (getftp): Escape server listing when printing it.
3966         (ftp_retrieve_list): Escape link name and file name.
3967         (ftp_retrieve_glob): Escape file name.
3968
3969         * ftp-basic.c (ftp_response): Escape server response when printing
3970         it.
3971
3972         * cookies.c (parse_set_cookies): Escape the cookie field when
3973         printing it.
3974         (parse_set_cookies): Escape contents of remote header.
3975         (cookie_handle_set_cookie): Escape host name and cookie domain.
3976
3977         * connect.c (connect_to_ip): Escape the host name.
3978
3979         * log.c (escnonprint): New function, used for printing strings
3980         coming from the server that possibly contain non-ASCII characters.
3981         (escnonprint_uri): Ditto.
3982
3983 2005-02-24  Hrvoje Niksic  <hniksic@xemacs.org>
3984
3985         * ftp.c (getftp): Ditto.
3986
3987         * http.c (gethttp): When we're not supposed to overwrite files,
3988         use fopen_excl to open the file and recompute the file name.
3989
3990         * log.c (redirect_output): Use unique_create to avoid a race
3991         condition.
3992
3993         * mswindows.c (fake_fork_child): Use unique_create.
3994
3995         * utils.c (fopen_excl): New function that opens a stdio stream
3996         with the O_EXCL flag (where available).
3997         (unique_create): New function, like unique_name, but also creating
3998         the file and returning a file pointer.
3999         (fork_to_background): Use unique_create to create the file
4000         immediately to avoid race condition with multiple instances of
4001         wget -b.
4002
4003 2005-02-24  Hrvoje Niksic  <hniksic@xemacs.org>
4004
4005         * host.c (lookup_host): Test for AI_ADDRCONFIG directly, instead
4006         of checking for HAVE_GETADDRINFO_AI_ADDRCONFIG.
4007
4008 2005-02-23  Hrvoje Niksic  <hniksic@xemacs.org>
4009
4010         * host.c (is_valid_ipv6_address): Move here from url.c.
4011         (lookup_host): If the address is numeric, don't print the
4012         "resolving..." line, don't set up DNS timeouts, and set the
4013         AI_NUMERICHOST hint, where available.
4014
4015 2005-02-26  Gisle Vanem  <giva@bgnett.no>
4016
4017         * utils.c: Use the nnnLL syntax under GCC.  Define struct_stat to
4018         struct _stati64 under __MINGW32__ as well as under MS VC.
4019
4020 2005-02-26  Hrvoje Niksic  <hniksic@xemacs.org>
4021
4022         * utils.c: Use the nnnI64 syntax for __int64 constants under all
4023         Windows compilers.
4024         (SPRINTF_WGINT): Use "%I64" under all Windows compilers.
4025
4026         * mswindows.h (WGINT_MAX): Use the nnnI64 syntax for
4027         __int64 constants under all Windows compilers.
4028         (struct_stat): Use `struct stati64' under Borland C.
4029         (fstat): Don't redefine to _fstati64 under Borland.
4030
4031         * mswindows.c: Define str_to_int64 under Borland C as well as
4032         under (older) Visual C.
4033
4034 2005-02-25  Hrvoje Niksic  <hniksic@xemacs.org>
4035
4036         * ftp.c (getftp): Initialize err to suppress compiler warning.
4037
4038 2005-02-24  Hrvoje Niksic  <hniksic@xemacs.org>
4039
4040         * ftp.c (ftp_expected_bytes): Fix bug that caused infloop because
4041         of not correctly skipping the '(' character.
4042
4043 2005-02-24  Hrvoje Niksic  <hniksic@xemacs.org>
4044
4045         * mswindows.c (wget_ftello): Removed.
4046
4047         * mswindows.h: Remove bogus definition of stat.
4048         (wget_ftello): Remove the leftover ftello replacement.
4049
4050 2005-02-20  Hrvoje Niksic  <hniksic@xemacs.org>
4051
4052         * mswindows.c (wget_ftello): Wget's replacement for ftello.
4053
4054         * utils.c (file_size): Use ftello where available.
4055
4056         * ftp-ls.c (ftp_parse_unix_ls): Use str_to_wgint to parse the file
4057         size.
4058         (ftp_parse_winnt_ls): Ditto.
4059
4060         * ftp-basic.c (ftp_size): Use str_to_wgint to convert number to
4061         wgint; pass 10 instead of 0 as the BASE argument.
4062
4063         * ftp.c (ftp_expected_bytes): Use str_to_wgint to parse the file
4064         size.
4065
4066         * sysdep.h (LARGE_INT_FMT): Use __int64 as LARGE_INT on
4067         MSVC/Windows; print it with "%I64".
4068
4069         * wget.h: Define a `wgint' type, normally aliased to (the possibly
4070         64-bit variant of) off_t.
4071
4072         * all: Use `wgint' instead of `long' for numeric variables that
4073         can hold file sizes.
4074
4075         * utils.c (number_to_string): Support printing of `wgint'
4076         argument.
4077         (number_to_static_string): New function.
4078
4079         * all: Replace printf("%ld", long_value) with printf("%s",
4080         number_to_static_string(wgint_value)).
4081
4082 2005-02-18  Mauro Tortonesi <mauro@ferrara.linux.it>
4083
4084         * main.c: Added the --ftp-passwd command line option.
4085
4086         * init.c: Renamed command passwd to ftppasswd.
4087
4088 2005-02-11  Mauro Tortonesi <mauro@ferrara.linux.it>
4089
4090         * string_t.c: Fixed a bug in do_escape and triggered escape of
4091         backslashes in string_escape to avoid ambiguities in the result
4092         string.
4093
4094 2005-02-10  Mauro Tortonesi <mauro@ferrara.linux.it>
4095
4096         * string.h: Renamed to string_t.h to fix a compilation conflict
4097         with the string.h header in the standard C library.
4098
4099         * string.c: Renamed to string_t.c for consistency with string.h.
4100
4101         * string_t.c: Ditto.
4102
4103         * string_t.h: Ditto.
4104
4105 2004-12-31  Mauro Tortonesi <mauro@ferrara.linux.it>
4106
4107         * string.c: New file.
4108
4109         * string.h: New file.
4110
4111         * Makefile.in: Added string.c to the list of modules to compile.
4112
4113         * main.c: Updated copyright.
4114
4115 2004-11-18  Ulf Harnhammar <ulf.harnhammar.9485@student.uu.se>
4116
4117         * ftp-ls.c: Fixed a problem in ftp_parse_winnt_ls that could allow a
4118         malicious remote FTP server to crash wget.
4119
4120 2004-11-18  Hans-Andreas Engel <engel@node.ch>
4121
4122         * http.c: Enable --convert-links (-k) when a single page is downloaded
4123         via --output-document (-O).
4124
4125 2004-11-18  Mauro Tortonesi <mauro@deepspace6.net>
4126
4127         * connect.c: Minor correction to the comment in front of fd_peek.
4128
4129 2004-11-18  Leonid Petrov <nouser@lpetrov.net>
4130
4131         * retr.c: Fix a timeout problem in fd_read_body when using http_proxy.
4132
4133 2004-11-15  YAMAZAKI Makoto <Yamazaki.Makoto@fujixerox.co.jp>
4134
4135         * netrc.c: Fix termination by assertion bug in netrc parsing.
4136
4137 2004-05-09  David Fritz  <zeroxdf@att.net>
4138
4139         * mswindows.c (fake_fork): Pass entire command line to the child
4140         process.
4141
4142 2004-03-31  Hrvoje Niksic  <hniksic@xemacs.org>
4143
4144         * http.c (gethttp): Fix typo: SCHEME_SSL -> SCHEME_HTTPS.
4145
4146 2004-03-30  Hrvoje Niksic  <hniksic@xemacs.org>
4147
4148         * http.c (gethttp): Send the Proxy-Authorization header over
4149         non-SSL connections too.
4150
4151 2004-03-25  David Fritz  <zeroxdf@att.net>
4152
4153         * mswindows.c (fake_fork_child): Ignore error code when
4154         OpenFileMapping() fails; assume it failed because the object does
4155         not exist.
4156
4157 2004-03-24  David Fritz  <zeroxdf@att.net>
4158
4159         * mswindows.c (fake_fork): New function.
4160
4161         * mswindows.c (fork_to_background): Use it.
4162
4163 2004-03-19  David Fritz  <zeroxdf@att.net>
4164
4165         * mswindows.c (ws_hangup): Incorporate old fork_to_background()
4166         code.  Add event name argument.
4167         (fork_to_backgorund): Now a simple wrapper around ws_hangup().
4168         (ws_handler): Correctly handle the case when neither CTRLC_BACKGND
4169         nor CTRLBREAK_BACKGND are defined.  Don't bother handling close,
4170         logoff, or shutdown events.  Call ws_hangup() with the correct
4171         event name; don't assume it was CTRL+Break.
4172
4173 2004-03-19  Hrvoje Niksic  <hniksic@xemacs.org>
4174
4175         * url.c (url_parse): Decode %HH sequences in host name.
4176
4177 2004-03-04  Hrvoje Niksic  <hniksic@xemacs.org>
4178
4179         * convert.c (local_quote_string): Quote "#" as "%23" and "%" as
4180         "%25" when creating links to local files.
4181
4182 2004-03-02  David Fritz  <zeroxdf@att.net>
4183
4184         * mswindows.c (ws_percenttitle): Guard against future changes by
4185         doing nothing if the proper variables have not been initialized.
4186         Clamp percentage value.
4187
4188 2004-03-04  Gisle Vanem  <giva@bgnett.no>
4189
4190         * retr.c (fd_read_body): Don't change console title if quiet.
4191
4192 2004-02-25  David Fritz  <zeroxdf@att.net>
4193
4194         * mswindows.c (set_sleep_mode): Remove argument and return value.
4195         Call GetModuleHandle() instead of LoadLibrary()/FreeLibrary() for
4196         kernel32.dll.  Use typedef for function-pointer.  Don't cast
4197         l-value.  Don't use dereference operator when calling through
4198         function-pointer.
4199         (ws_startup): Update call to set_sleep_mode().
4200         (ws_cleanup): Remove call to set_sleep_mode().
4201
4202 2004-02-23  David Fritz  <zeroxdf@att.net>
4203
4204         * http.c (http_loop): Ditto.
4205
4206         * ftp.c (ftp_loop_internal): Update call to ws_changetitle().
4207
4208         * main.c (main): Don't bother calling ws_changetitle().
4209
4210         * mswindows.h (ws_changetitle): Update prototype.
4211
4212         * mswindows.c (ws_changetitle): Remove second argument.  Use
4213         xfree_null().
4214         (ws_percenttitle): Only update title when percentage has changed.
4215
4216 2004-02-23  David Fritz  <zeroxdf@att.net>
4217
4218         * mswindows.h: Ditto.
4219
4220         * mswindows.c: Misc. formatting/comment tweaks throughout.
4221
4222 2004-02-20  David Fritz  <zeroxdf@att.net>
4223
4224         * main.c (print_help): Remove call to ws_help().
4225
4226         * mswindows.c (ws_help): Remove.
4227
4228         * mswindows.h (ws_help): Remove.
4229
4230 2004-02-16  David Fritz  <zeroxdf@att.net>
4231
4232         * init.c (home_dir): Use aprintf() instead of xmalloc()/sprintf().
4233         Under Windows, if $HOME is not defined, use the directory that
4234         contains the Wget binary instead of hard-coded `C:\'.
4235         (wgetrc_file_name): Under Windows, look for $HOME/.wgetrc then, if
4236         not found, look for wget.ini in the directory of the Wget binary.
4237
4238         * mswindows.c (ws_mypath): Employ slightly more robust methodology.
4239         Strip trailing path separator.
4240
4241 2004-02-06  Hrvoje Niksic  <hniksic@xemacs.org>
4242
4243         * http.c (gethttp): Respect --ignore-length.
4244         (gethttp): Inhibit keep-alive if --ignore-length is specified.
4245
4246 2004-02-06  Hrvoje Niksic  <hniksic@xemacs.org>
4247
4248         * connect.c (sockaddr_set_data): Zero out
4249         sockaddr_in/sockaddr_in6.  Apparently BSD-derived stacks need this
4250         when binding a socket to local address.
4251
4252 2004-02-04  Hrvoje Niksic  <hniksic@xemacs.org>
4253
4254         * hash.c: Make the file compilable outside Wget source tree when
4255         -DSTANDALONE is used.
4256
4257 2004-01-29  Hrvoje Niksic  <hniksic@xemacs.org>
4258
4259         * utils.c (determine_screen_width): Return 0 if not running on
4260         Windows or on a TIOCGWINSZ-capable system.
4261
4262 2004-01-28  David Fritz  <zeroxdf@att.net>
4263
4264         * utils.c (determine_screen_width): Correctly determine console
4265         width under Windows.
4266
4267 2004-01-28  Christian Biere  <christianbiere@gmx.de>
4268
4269         * progress.c (bar_set_params): Fixed syntax error when HAVE_ISATTY
4270         was undefined.
4271
4272         * ftp.c (ftp_loop_internal): Allocate a larger buffer in case
4273         "try" gets translated to something large.  Ditto in http_loop in
4274         http.c.
4275
4276         * http.c (response_header_copy): Don't write to buf[BUFSIZE].
4277
4278         * ftp-opie.c (skey_response): Eliminate unnecessary string
4279         concatenation; just call gen_md5_update twice.
4280
4281 2004-01-25  Hrvoje Niksic  <hniksic@xemacs.org>
4282
4283         * utils.c (xsleep): Don't call usleep with values larger than
4284         1,000,000.
4285
4286 2003-12-16  Hrvoje Niksic  <hniksic@xemacs.org>
4287
4288         * http.c (gethttp): Fix generation of `Content-Length'.
4289
4290 2003-12-15  Gisle Vanem  <giva@bgnett.no>
4291
4292         * url.c (url_skip_credentials): Fixed return value; 'url' if no
4293         credentials.
4294
4295 2003-12-14  Hrvoje Niksic  <hniksic@xemacs.org>
4296
4297         * url.c (url_skip_credentials): Return a pointer directly.
4298
4299 2003-12-14  Hrvoje Niksic  <hniksic@xemacs.org>
4300
4301         * url.c (url_file_name): Ditto.
4302         (parse_errors): Ditto.
4303
4304         * retr.c (retr_rate): Ditto.
4305
4306         * progress.c (create_image): Ditto.
4307
4308         * netrc.c (parse_netrc): Ditto.
4309
4310         * main.c (struct cmdline_option): Ditto.
4311         (redirect_output_signal): Ditto.
4312
4313         * init.c (commands): Ditto.
4314
4315         * ftp-ls.c (ftp_index): Ditto.
4316
4317         * cookies.c (check_domain_match): Declare the pointer to a literal
4318         string as `const'.
4319
4320 2003-12-12  Hrvoje Niksic  <hniksic@xemacs.org>
4321
4322         * retr.c (fd_read_body): Pass total size to progress_create, not
4323         the remaining amount.
4324
4325 2003-12-12  Hrvoje Niksic  <hniksic@xemacs.org>
4326
4327         * retr.c (fd_read_body): Don't fiddle with "interactive timeout"
4328         if read timeout is unset.
4329
4330 2003-12-12  Hrvoje Niksic  <hniksic@xemacs.org>
4331
4332         * connect.c (bind_local): Don't set the IPV6_V6ONLY option on the
4333         socket.
4334
4335 2003-12-06  Hrvoje Niksic  <hniksic@xemacs.org>
4336
4337         * url.c (url_file_name): Respect the setting of
4338         opt.protocol_directories.
4339
4340         * main.c (main): Only check for ret=='?' when longindex is unset.
4341         (option_data): New option --protocol-directories.
4342
4343 2003-12-06  Hrvoje Niksic  <hniksic@xemacs.org>
4344
4345         * ftp.c (getftp): Ditto.
4346
4347         * http.c (gethttp): Correctly calculate bandwidth as total data
4348         read divided with download time.
4349
4350         * retr.c (fd_read_body): Separate the return values for data
4351         written and read.
4352
4353 2003-12-05  Hrvoje Niksic  <hniksic@xemacs.org>
4354
4355         * http.c (H_REDIRECTED): Respect the HTTP/1.1 "303 See Other"
4356         response code.
4357         Suggested by Dan Razzell.
4358
4359 2003-11-30  Hrvoje Niksic  <hniksic@xemacs.org>
4360
4361         * retr.c (fd_read_body): Report the amount of data *written* as
4362         amount_read.  This is not entirely logical, but that's what the
4363         callers expect, and it's not easy to change.
4364
4365         * ftp.c (ftp_loop_internal): Ditto.
4366
4367         * http.c (http_loop): Be smarter about assigning restval; if we're
4368         in the nth pass of a download, simply use the information we have
4369         about how much data has been retrieved as restval.
4370
4371         * ftp.c (getftp): Ditto for FTP "REST" command.
4372
4373         * http.c (gethttp): When the server doesn't respect range, skip
4374         the first RESTVAL bytes of the read body.  Never truncate the
4375         output file.
4376
4377         * retr.c (fd_read_body): Support skipping initial STARTPOS octets.
4378
4379 2003-11-30  Hrvoje Niksic  <hniksic@xemacs.org>
4380
4381         * http.c (skip_short_body): Renamed skip_body to skip_short_body;
4382         don't bother calling fd_read_body.
4383
4384 2003-11-30  Hrvoje Niksic  <hniksic@xemacs.org>
4385
4386         * retr.c (fd_read_body): Sanitize arguments and document them
4387         better.  Make sure the timer is created and updated only if
4388         necessary.  Updated callers.
4389
4390 2003-11-30  Hrvoje Niksic  <hniksic@xemacs.org>
4391
4392         * http.c (skip_body): New function.
4393         (gethttp): Use it to skip the body of the responses we don't care
4394         to download.  That allows us to reuse the connection.
4395         (gethttp): Trust that the HEAD requests will not generate body
4396         data.
4397
4398         * retr.c (fd_read_body): Don't write to OUT if it's NULL.
4399
4400 2003-11-29  Hrvoje Niksic  <hniksic@xemacs.org>
4401
4402         * http.c (gethttp): Initialize SSL only the first time when SSL
4403         URL is downloaded.
4404
4405 2003-11-29  Hrvoje Niksic  <hniksic@xemacs.org>
4406
4407         * cookies.c (cookie_header): Only generate the contents of the
4408         header, not the leading "Cookie: " or the trailing "\r\n".
4409
4410         * http.c (gethttp): When adding headers specified with `--header',
4411         allow them to override the headers generated by Wget.
4412
4413         * init.c (cmd_spec_header): Made opt.user_headers a vector.
4414
4415         * http.c (request_new): New function.  Returns a request structure
4416         which can be modified in various ways, most notably by adding HTTP
4417         headers to the request.
4418         (request_set_header): New function for adding the header to the
4419         request.  If the header is already available, it gets replaced.
4420         (request_send): Construct and send the request.
4421         (gethttp): Use the request_* functions to generate the request.
4422
4423 2003-11-28  Hrvoje Niksic  <hniksic@xemacs.org>
4424
4425         * http.c (gethttp): Don't include the Proxy-Authorization header
4426         in the request tunneled through proxy.
4427
4428 2003-11-28  Hrvoje Niksic  <hniksic@xemacs.org>
4429
4430         * http.c (gethttp): Use the CONNECT handle to establish SSL
4431         passthrough through non-SSL proxies.
4432
4433 2003-11-28  Hrvoje Niksic  <hniksic@xemacs.org>
4434
4435         * init.c: Don't #include netinet/Winsock stuff.
4436
4437 2003-11-28  Hrvoje Niksic  <hniksic@xemacs.org>
4438
4439         * http.c: Deleted the old functions header_process,
4440         header_extract_number, header_exists, header_strdup,
4441         http_process_range, http_process_none, http_process_type, and
4442         http_process_connection.
4443
4444         * http.c (response_new): New function.
4445         (response_header_bounds): Ditto.
4446         (response_header_copy): Ditto.
4447         (response_header_strdup): Ditto.
4448         (response_status): Ditto.
4449         (gethttp): Use the new response_* functions to parse the response.
4450         Support HTTP/0.9 responses.
4451
4452 2003-11-27  Hrvoje Niksic  <hniksic@xemacs.org>
4453
4454         * progress.c (create_image): Don't calculate ETA if nothing has
4455         been downloaded yet, because it causes division by zero.
4456
4457 2003-11-27  Hrvoje Niksic  <hniksic@xemacs.org>
4458
4459         * connect.c (bind_local): Rename sa_len to addrlen because IRIX
4460         headers define sa_len as a macro.
4461
4462 2003-11-26  Hrvoje Niksic  <hniksic@xemacs.org>
4463
4464         * html-parse.c (convert_and_copy): Remove embedded newlines when
4465         AP_TRIM_BLANKS is specified.
4466
4467 2003-11-26  Hrvoje Niksic  <hniksic@xemacs.org>
4468
4469         * ftp.c: Set con->csock to -1 where rbuf_uninitialize was
4470         previously used.
4471
4472 2003-11-26  Hrvoje Niksic  <hniksic@xemacs.org>
4473
4474         * Makefile.in (http$o): Added the trailing backslash that was
4475         missing.
4476
4477 2003-11-21  Hrvoje Niksic  <hniksic@xemacs.org>
4478
4479         * headers.c: Removed.  The file is no longer relevant, now that no
4480         special handling of headers is done by the rbuf code.  Moved
4481         portions to http.c.
4482
4483 2003-11-21  Hrvoje Niksic  <hniksic@xemacs.org>
4484
4485         * rbuf.c: Removed.
4486
4487         * ftp-basic.c (ftp_response): Use fd_read_line.  No longer use
4488         struct rbuf.  Updated all callers.
4489
4490         * http.c (gethttp): Use fd_read_head to read all the headers in
4491         one go.
4492         (next_header): New function.
4493
4494         * retr.c (fd_read_line): New function: reads a line from FD,
4495         leaving the rest of the data unread.
4496         (fd_read_head): New function.
4497
4498         * connect.c (fd_peek): New function, implements peeking.
4499         (poll_internal): New function.
4500         (fd_read): Use it.
4501         (fd_write): Ditto.
4502         (fd_peek): Ditto.
4503         (fd_register_transport): Allow registering a "peeker" callback.
4504
4505 2003-11-20  Hrvoje Niksic  <hniksic@xemacs.org>
4506
4507         * connect.c: Renamed xread/xwrite/xclose to
4508         fd_read/fd_write/fd_close.  The "x" prefix is not appropriate
4509         because the semantics have diverged from read/write/close too
4510         significantly.  Updated all callers.
4511
4512 2003-11-20  Hrvoje Niksic  <hniksic@xemacs.org>
4513
4514         * connect.c (sock_write): It's not necessary to initialize RES.
4515
4516 2003-11-19  Hrvoje Niksic  <hniksic@xemacs.org>
4517
4518         * main.c (main): Don't reference opt.ipv4_only and opt.ipv6_only
4519         if IPv6 is disabled.
4520
4521 2003-11-19  Hrvoje Niksic  <hniksic@xemacs.org>
4522
4523         * connect.c (socket_has_inet6): Only compile it if IPv6 is enabled
4524         and AI_ADDRCONFIG is missing.
4525
4526 2003-11-18  Hrvoje Niksic  <hniksic@xemacs.org>
4527
4528         * gen_sslfunc.c (ssl_init_prng): Warn the user when using a weak
4529         random seed.
4530
4531 2003-11-18  Hrvoje Niksic  <hniksic@xemacs.org>
4532
4533         * host.c (address_list_contains): Renamed address_list_find to
4534         address_list_contains because its result is boolean.
4535
4536 2003-11-18  Hrvoje Niksic  <hniksic@xemacs.org>
4537
4538         * connect.c (select_fd): Return 1 if select is not available.
4539
4540 2003-11-17  Hrvoje Niksic  <hniksic@xemacs.org>
4541
4542         * connect.c (connect_to_host): Don't reference address list after
4543         releasing it.
4544
4545 2003-11-17  Hrvoje Niksic  <hniksic@xemacs.org>
4546
4547         * main.c (print_help): Fix alignment of FTP options output.
4548
4549 2003-11-17  Hrvoje Niksic  <hniksic@xemacs.org>
4550
4551         * host.c (lookup_host): Check for the ability to create IPv6
4552         sockets here.
4553
4554         * init.c (defaults): Don't auto-set --inet4-only on IPv6-less
4555         systems.
4556
4557 2003-11-16  Hrvoje Niksic  <hniksic@xemacs.org>
4558
4559         * main.c (print_help): Fix typo in `-O' help message.  Fix docs of
4560         -Y/--proxy.  Fix docs of `--cookies' and `--glob'.  Improve docs
4561         of --convert-links.  Fix docs of SSL options.
4562
4563 2003-11-16  Hrvoje Niksic  <hniksic@xemacs.org>
4564
4565         * ftp-basic.c: Don't include <arpa/inet.h> and others because
4566         they're no longer needed.
4567
4568 2003-11-16  Hrvoje Niksic  <hniksic@xemacs.org>
4569
4570         * main.c (main): Don't allow setting of both opt.ipv4_only and
4571         opt.ipv6_only.
4572
4573         * init.c (defaults): Mark opt.ipv4_only specially when set
4574         automatically.
4575
4576 2003-11-15  Hrvoje Niksic  <hniksic@xemacs.org>
4577
4578         * host.c (lookup_host): Use AI_ADDRCONFIG only if the family is
4579         unspecified.  This ensures that specifying `--no-inet4' on systems
4580         where IPv6 resolves, but doesn't work behaves the same regardless
4581         of the availability of AI_ADDRCONFIG.
4582
4583 2003-11-15  Hrvoje Niksic  <hniksic@xemacs.org>
4584
4585         * host.c: Don't refer to the now-removed function
4586         forget_host_lookup in the documentation of lookup_host.
4587
4588 2003-11-15  Hrvoje Niksic  <hniksic@xemacs.org>
4589
4590         * http.c (persistent_available_p): Correctly specify the endpoint
4591         argument to socket_ip_address.
4592         (gethttp): When printing the "reusing connection to..." message,
4593         specify the host name of the reused connection, not the current
4594         host name.  That makes more sense because it provides a useful
4595         piece of information -- we know to which host we're supposed to
4596         connect anyway!
4597
4598 2003-11-15  Hrvoje Niksic  <hniksic@xemacs.org>
4599
4600         * init.c: Make sure the options are in alphabetic order!
4601
4602         * host.c (lookup_host): Merge lookup_host_passive and lookup_host
4603         after all -- having both would result in some code duplication.
4604         (lookup_host): Set hints.ai_family to AF_INET if ipv4_only is
4605         requested.  Likewise, set it to AF_INET6 for ipv6_only.  Specify
4606         AI_ADDRCONFIG where available.
4607         (lookup_host): New flag LH_REFRESH that specifies that a cached
4608         entry for HOST should be refreshed.
4609         (cache_query): New function.
4610         (cache_store): Ditto.
4611         (cache_remove): Ditto.
4612         (forget_host_lookup): No longer necessary, replaced with static
4613         function cache_remove.
4614
4615 2003-11-14  Hrvoje Niksic  <hniksic@xemacs.org>
4616
4617         * main.c: Enable -4 and -6 only if IPv6 is enabled.
4618
4619 2003-11-14  Hrvoje Niksic  <hniksic@xemacs.org>
4620
4621         * connect.c (register_transport): Renamed from register_extended.
4622         Explain the intended usage.
4623
4624 2003-11-14  Hrvoje Niksic  <hniksic@xemacs.org>
4625
4626         * url.c (uri_merge): Merging "foo" and "bar" should result in
4627         "bar", not in "foo/bar".
4628         (path_simplify): Don't remove empty path elements; don't
4629         special-case leading slash.
4630         (path_simplify): Don't swallow ".."'s at the beginning of string.
4631         E.g. simplify "foo/../../bar" as "../bar", not as "bar".
4632         (append_uri_pathel): Defang ".." path element upon encountering
4633         it.
4634
4635 2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
4636
4637         * http.c (persistent_available_p): Don't attempt to talk to two
4638         different SSL sites over the same secure connection.
4639
4640 2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
4641
4642         * http.c (gethttp): Ditto.
4643
4644         * ftp.c (getftp): Use retryable_socket_connect_error instead of
4645         CONNECT_ERROR.
4646
4647         * wget.h (CONNECT_ERROR): Removed.
4648
4649         * connect.c (retryable_socket_connect_error): New function instead
4650         of unsupported_socket_family_error.
4651
4652 2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
4653
4654         * wget.h (CONNECT_ERROR): Use it.
4655
4656         * connect.c (unsupported_socket_family_error): New function.
4657
4658 2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
4659
4660         * connect.c (bind_local): Renamed bindport to bind_local; return
4661         the socket directly.  Updated callers.
4662         (accept_connection): Renamed acceptport to accept_connection;
4663         return the created socket directly.  Updated callers.
4664
4665 2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
4666
4667         * init.c (defaults): Turn on opt.ipv4_only if we're compiling with
4668         IPv6, and AI_ADDRINFO is not available, and AF_INET6 sockets can't
4669         be created.
4670
4671 2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
4672
4673         * host.c (lookup_host): Document the fact that the addresses are
4674         returned in order.
4675
4676 2003-11-12  Hrvoje Niksic  <hniksic@xemacs.org>
4677
4678         * utils.c: Use limits.h only where available.
4679
4680         * hash.c: Use INVALID_PTR and INVALID_PTR_BYTE.  Include limits.h.
4681
4682 2003-11-11  Hrvoje Niksic  <hniksic@xemacs.org>
4683
4684         * main.c: Added options --inet4-only and --inet6-only.
4685
4686 2003-11-11  Hrvoje Niksic  <hniksic@xemacs.org>
4687
4688         * host.c (host_errstr): Use the more standard message "Unknown
4689         host".
4690
4691 2003-11-10  Hrvoje Niksic  <hniksic@xemacs.org>
4692
4693         * connect.c (connect_to_host): Use that flag to decide whether to
4694         re-resolve the host name.
4695
4696         * host.c (struct address_list): Added a flag that maintains
4697         whether the connection worked at some point.
4698
4699 2003-11-10  Hrvoje Niksic  <hniksic@xemacs.org>
4700
4701         * host.c (lookup_host): Special-case the numeric addresses only in
4702         the non-IPv6 case.
4703
4704 2003-11-10  Hrvoje Niksic  <hniksic@xemacs.org>
4705
4706         * connect.c (resolve_bind_address): Call lookup_host_passive.
4707         Make sure that opt.bind_address is resolved only once.
4708
4709         * host.c (lookup_host_passive): New function, handles "passive"
4710         lookups.
4711         (lookup_host): Remove the passive flags.  Remove the
4712         family-related flags -- use ip_default_family instead.
4713
4714 2003-11-09  Hrvoje Niksic  <hniksic@xemacs.org>
4715
4716         * html-url.c: Get URLs from <object data="...">.
4717
4718 2003-11-09  Hrvoje Niksic  <hniksic@xemacs.org>
4719
4720         * main.c (option_data): Specify the command to use for --mirror.
4721
4722 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
4723
4724         * cookies.c (cookie_handle_set_cookie): Specify exact match for
4725         unspecified domains.
4726
4727 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
4728
4729         * main.c (main): Removed one-letter options `-C', `-g', `-G', and
4730         `-s'.
4731
4732 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
4733
4734         * main.c (main): Add --dont-remove-listing for backward
4735         compatibility with previous versions.
4736         (print_help): Fix typo, spotted by Dennis Smit.
4737
4738 2003-11-08  Gisle Vanem  <giva@bgnett.no>
4739
4740         * ftp-basic.c: Support Windows-2000 ftp servers. Win-2000 *is*
4741         Win-NT 5.0 so calling it ST_WINNT is okay I guess.
4742
4743 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
4744
4745         * progress.c (update_speed_ring): Clear the speed ring when the
4746         download stalls.
4747
4748         * retr.c (get_contents): Specify 0.95s read timeout, so that the
4749         progress gauge can be updated even when data arrives very slowly
4750         or stalls.
4751
4752 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
4753
4754         * utils.c (wtimer_allocate): Bless the use of wtimer_read on a
4755         timer that has merely been allocated because get_contents() does
4756         that.
4757         (wtimer_update): Abort if the timer is not initialized.
4758
4759 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
4760
4761         * retr.c (get_contents): Pass the timer to limit_bandwidth().
4762
4763         * utils.c (wtimer_update): New function instead of wget_elapsed;
4764         just update the timer, but don't return anything.
4765         (wtimer_read): Read and return the last known value of the timer.
4766
4767 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
4768
4769         * http.c (persistent_available_p): Instead of matching all the
4770         addresses of HOST and last host, determine the peer's IP address
4771         with socket_ip_address and see if that address is one of those
4772         HOST resolves to.
4773
4774         * host.c (address_list_match_all): Removed.
4775         (address_list_find): New function, finds an IP address in the
4776         address list.
4777
4778         * ftp.c (ftp_do_pasv): Get the peer's address here, and pass it to
4779         ftp_epsv so it doesn't need to call getpeername.
4780
4781         * ftp-basic.c (ftp_port): Use socket_ip_address instead of
4782         getpeername.
4783         (ftp_lprt): Ditto.
4784
4785         * connect.c (socket_ip_address): Replaces conaddr, generalized to
4786         either get peer's or local address.
4787         (sockaddr_get_data): Made local to this file.
4788
4789 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
4790
4791         * hash.c (HASH_POSITION): Explicitly accept the hash function.
4792         (grow_hash_table): Extract ht->hash_function outside the loop.
4793         (hash_table_remove): Ditto.
4794         (hash_table_clear): Fill entries with 0xff to clear them.
4795         (hash_table_remove): Mark entries as deleted with the correct
4796         marker.
4797
4798 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
4799
4800         * http.c (persistent_available_p): No reason for the host lookup
4801         to be silent -- it's a lookup like any other.
4802
4803 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
4804
4805         * connect.c (register_extended): Check that fd >= 0.
4806
4807 2003-11-07  Hrvoje Niksic  <hniksic@xemacs.org>
4808
4809         * connect.c (LAZY_RETRIEVE_INFO): Set LAST_INFO.
4810
4811 2003-11-07  Hrvoje Niksic  <hniksic@xemacs.org>
4812
4813         * hash.c (NON_EMPTY): Use the all-bit-set value as the marker that
4814         the field is empty.  This allows NULL pointer and 0 value to be
4815         used as keys, which is necessary for the connect.c code to work
4816         when fd==0.
4817         (hash_table_new): Fill mappings with 0xff.
4818         (grow_hash_table): Ditto.
4819
4820 2003-11-07  Hrvoje Niksic  <hniksic@xemacs.org>
4821
4822         * url.c (url_parse): Allow empty ports.
4823
4824 2003-11-07  Hrvoje Niksic  <hniksic@xemacs.org>
4825
4826         * main.c (print_help): Break the help string into multiple chunks.
4827         (cmdline_option): New option handler OPT_FUNCALL.  Generalized
4828         HANDLE_CMD to generic DATA.
4829         (option_data): Use the new OPT_FUNCALL feature.
4830
4831 2003-11-06  Hrvoje Niksic  <hniksic@xemacs.org>
4832
4833         * log.h: Declare log_init, log_close, and
4834         log_request_redirect_output here.
4835
4836 2003-11-05  Dennis Smit  <ds@nerds-incorporated.org>
4837
4838         * main.c: (main): added --preserve-permissions option.
4839
4840         * ftp.c (ftp_retrieve_list): added support for
4841         --preserve-permissions option.
4842
4843         * init.c: added support for --preserve-permission option.
4844
4845         * option.h: added support for --preserve-permission option.
4846
4847 2003-11-06  Hrvoje Niksic  <hniksic@xemacs.org>
4848
4849         * main.c (init_switches): New function.  Convert option_data to
4850         long_options and short_options, which can be fed to getopt_long.
4851         (main): Execute command-line options by consulting option_data.
4852
4853 2003-11-06  Hrvoje Niksic  <hniksic@xemacs.org>
4854
4855         * gen_sslfunc.c (ssl_read): Implement a more correct check for
4856         EINTR.
4857         (ssl_write): Ditto.
4858         (init_ssl): Use a global SSL context.
4859
4860 2003-11-06  Hrvoje Niksic  <hniksic@xemacs.org>
4861
4862         * connect.c (xclose): Free INFO even if it doesn't provide a
4863         closer.
4864
4865 2003-11-06  Hrvoje Niksic  <hniksic@xemacs.org>
4866
4867         * connect.c: Updated all callers of
4868         iread/ssl_iread/iwrite/ssl_iwrite to use xread and xwrite instead.
4869
4870         * rbuf.h (struct rbuf): Removed the SSL member because SSL is
4871         handled automatically by xread.
4872
4873         * hash.c (ptrhash): Made private.
4874         (ptrcmp): Ditto.
4875         (inthash): Removed.
4876
4877         * connect.c (select_fd): Don't set errno, leave it to the caller.
4878
4879         * gen_sslfunc.c (connect_ssl): Use register_extended to register
4880         SSL callbacks for communication with SSL-enabled endpoints.
4881         (ssl_read): New function.
4882         (ssl_write): Ditto.
4883         (ssl_poll): Ditto.
4884         (ssl_close): Ditto.
4885
4886         * connect.c (register_extended): New function -- register
4887         callbacks for basic socket operations.
4888         (xread): Ditto.
4889         (xwrite): Ditto.
4890         (xclose): Ditto.
4891         (sock_read): New function, default implementation for reading.
4892         (sock_write): Ditto for writing.
4893         (sock_poll): Ditto for polling.
4894         (sock_close): Ditto for closing.
4895
4896 2003-11-05  Hrvoje Niksic  <hniksic@xemacs.org>
4897
4898         * connect.c (bindport): Fix compilation under pre-C99 compilers.
4899
4900 2003-11-05  Hrvoje Niksic  <hniksic@xemacs.org>
4901
4902         * connect.c (connect_to_ip): More compact error checking.
4903         (bindport): Don't treat failed setsockopt as a fatal error.
4904
4905 2003-11-05  Hrvoje Niksic  <hniksic@xemacs.org>
4906
4907         * connect.c (resolve_bind_address): Use a more accurate error
4908         message -- we're not binding to ANY, we're disabling bind
4909         altogether.
4910
4911 2003-11-05  Hrvoje Niksic  <hniksic@xemacs.org>
4912
4913         * cookies.c (save_cookies_mapper): Respect the setting of
4914         keep-session-cookies.
4915         (cookie_jar_load): Import session cookies.
4916         Based on code submitted by Nicolas Schodet.
4917
4918         * utils.c (datetime_str): Use information in TM when it's
4919         non-NULL.
4920
4921         * main.c (main): New option `--keep-session-cookies'.
4922
4923 2003-11-04  Hrvoje Niksic  <hniksic@xemacs.org>
4924
4925         * Makefile.in (realclean): Delete config.h.in.
4926
4927 2003-11-04  Hrvoje Niksic  <hniksic@xemacs.org>
4928
4929         * config-post.h: New file, included from now autogenerated
4930         config.h.in.
4931
4932 2003-11-04  Hrvoje Niksic  <hniksic@xemacs.org>
4933
4934         * progress.c (progress_handle_sigwinch): Don't call
4935         determine_screen_width() from the signal handler.  Instead, just
4936         set a volatile variable.
4937         (bar_create): Check whether SIGWINCH was received.
4938         (bar_update): Ditto.
4939
4940         * sysdep.h: Define SYSTEM_FNMATCH only if HAVE_FNMATCH_H is true.
4941
4942 2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
4943
4944         * utils.c (xsleep): New function.  Uses nanosleep where available,
4945         resuming sleeps interrupted by signals.  Updated callers of sleep
4946         and usleep to use xsleep.
4947
4948 2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
4949
4950         * ftp-basic.c (ftp_login): Remove shadowing (and bogus)
4951         declaration of SEED.
4952
4953 2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
4954
4955         * log.c (logvprintf): Documented better.  Renamed to
4956         log_vprintf_internal to avoid confusion with the public API
4957         functions logprintf and logputs.
4958
4959 2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
4960
4961         * wget.h (N_): Don't parenthesize argument.
4962
4963 2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
4964
4965         * host.h (ADDRESS_IPV4_DATA): Don't take the address of in.s_addr
4966         because that doesn't work on machines that define it as bitfield.
4967
4968 2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
4969
4970         * connect.c (select_fd): Generalize the third argument into WAIT,
4971         so that the caller can request waiting for both read and write.
4972         Updated callers.
4973
4974 2003-11-02  Hrvoje Niksic  <hniksic@xemacs.org>
4975
4976         * html-url.c (cleanup_html_url): Destroy the hash tables, don't
4977         just call free on them.
4978         (init_interesting): Use hash_table_put instead of string_set_add
4979         because we don't need the strdup that the latter function
4980         performs.
4981
4982         * init.c (cleanup): Don't pass NULL to cookie_jar_delete.
4983
4984         * xmalloc.c (xfree_real): Abort when passed a NULL pointer.
4985         (xfree_debug): Print at the file and line of the offending call to
4986         free.
4987
4988 2003-11-02  Hrvoje Niksic  <hniksic@xemacs.org>
4989
4990         * wget.h: Retired the `boolean' type.  Moved the DEFAULT_LOGFILE
4991         define to log.h.  Moved the INFINITE_RECURSION define to recur.h.
4992
4993         * xmalloc.h: Renamed FREE_MAYBE to xfree_null and moved the
4994         definition from wget.h to xmalloc.h.
4995
4996 2003-11-02  Hrvoje Niksic  <hniksic@xemacs.org>
4997
4998         * html-parse.c (decode_entity): New function; split the decoding
4999         of entities here.
5000         (convert_and_copy): Use it to decode entities.
5001         (decode_entity): Handle the &apos entity.
5002         (decode_entity): Don't decode Latin 1 numeric entities.  Don't
5003         decode &#0.
5004
5005 2003-11-01  Hrvoje Niksic  <hniksic@xemacs.org>
5006
5007         * ftp-opie.c (calculate_skey_response): Use uint32_t instead of
5008         `unsigned long' for the cheksum array.  Document the function.
5009
5010 2003-11-01  Hrvoje Niksic  <hniksic@xemacs.org>
5011
5012         * connect.c (acceptport): Don't call select_fd when timeout is not
5013         requested.
5014
5015 2003-11-01  Hrvoje Niksic  <hniksic@xemacs.org>
5016
5017         * host.c: Removed the ip_default_family global variable.
5018
5019         * host.c (lookup_host): Document the function.  Fixed declaration
5020         of VEC.
5021
5022 2003-10-31  Hrvoje Niksic  <hniksic@xemacs.org>
5023
5024         * various: Use new macros xnew, xnew0, xnew_array, and xnew0_array
5025         in various places.
5026
5027 2003-10-31  Hrvoje Niksic  <hniksic@xemacs.org>
5028
5029         * wget.h: Move declarations of malloc and logging code to
5030         xmalloc.h and log.h respectively to unclutter this file.
5031         (STRDUP_ALLOCA): Made it side-effect free.
5032
5033         * xmalloc.h: New files.  Define macros xnew, xnew0, xnew_array,
5034         and xnew0_array.
5035
5036         * xmalloc.c: New file.  Move the xmalloc routines here.
5037
5038 2003-10-31  Hrvoje Niksic  <hniksic@xemacs.org>
5039
5040         * connect.c (sockaddr_set_data): Remove the broken code that
5041         checked for NULL address.
5042
5043 2003-10-31  Hrvoje Niksic  <hniksic@xemacs.org>
5044
5045         * host.c (address_list_from_single): Removed.
5046         (address_list_from_ipv4_addresses): Renamed from
5047         address_list_from_vector.
5048
5049 2003-10-31  Hrvoje Niksic  <hniksic@xemacs.org>
5050
5051         * sysdep.h (CLOSE): Don't call close on file descriptors less than
5052         0, i.e. on uncreated sockets.
5053
5054         * connect.c (resolve_bind_address): Work on struct sockaddr
5055         directly.
5056         (connect_to_host): Replacement for connect_to_many.  Resolve HOST
5057         and connect to any of its addresses.  If we can't connect and the
5058         host name lookup was cached, try to resolve it again.  This should
5059         fix problems with hosts behind dynamic DNS.  Updated all callers.
5060         (connect_to_ip): Replacement for connect_to_one.  Removed SILENT;
5061         added the argument PRINT instead.  Updated all callers.
5062         (set_connection_host_name): Removed.
5063
5064         * host.c (address_list_address_at): New function instead of
5065         address_list_copy_one. It returns a pointer to ip_address *, so
5066         it's not necessary to copy the data.
5067         (address_list_cached_p): New function.
5068         (forget_host_lookup): Ditto.
5069
5070         * connect.c: Got rid of the MSOCK global variable.  Made bindport
5071         return the local socket it creates.  Added a new argument to
5072         acceptport, the socket to call accept on.  Updated callers.
5073         (closeport): Removed.
5074
5075         * connect.c: Moved the sockaddr code from host.c to this file,
5076         because most of that stuff is used for connecting, and has nothing
5077         to do with host names anyway.
5078         (sockaddr_set_data, sockaddr_get_data): New functions, replace the
5079         old sockaddr_set_address, sockaddr_set_port, sockaddr_get_address,
5080         and sockaddr_get_port.
5081
5082 2003-10-30  Hrvoje Niksic  <hniksic@xemacs.org>
5083
5084         * sysdep.h: Use `S >= 8' rather than `S == 8' when looking for
5085         large integers.
5086
5087 2003-10-30  Hrvoje Niksic  <hniksic@xemacs.org>
5088
5089         * url.c (append_uri_pathel): New argument ESCAPED_P that says
5090         whether [B, E) is to be treated as URL-escaped or not.  If
5091         ESCAPED_P is false, don't unescape the region.
5092         (url_file_name): u->file is not URL-escaped.
5093
5094 2003-10-30  Hrvoje Niksic  <hniksic@xemacs.org>
5095
5096         * retr.c (retrieve_from_file): Use retrieve_tree for
5097         page-requisites.
5098
5099         * main.c (main): Don't define opt.recursive when -p is used.
5100         Instead, make sure that recursion is used for HTTP in that case.
5101
5102 2003-10-29  Hrvoje Niksic  <hniksic@xemacs.org>
5103
5104         * host.h: Defined accessors for elements of ip_address.  Updated
5105         all callers.
5106         (address_list_match_all): Use memcmp in the non-IPv6 case.
5107
5108         * wget.h (CONNECT_ERROR): Don't retry connecting if connect()
5109         returned EAFNOSUPPORT.
5110
5111 2003-10-27  Mauro Tortonesi <mauro@deepspace6.net>
5112
5113         * connect.h: changed bindport prototype and added the related
5114         BIND_ON_IPV4_ONLY and BIND_ON_IPV6_ONLY flags.
5115
5116         * connect.c: changed bindport and resolve_bind_address to allow
5117         protocol-version specific DNS resolution. modified conaddr,
5118         acceptport and connect_to_one to make use of struct
5119         sockaddr_storage and of the new ip_address structure.
5120
5121         * ftp-basic.c: added LPRT/LPSV (RFC1639) support, refactored
5122         PORT/PASV (RFC959) and EPRT/EPSV (RFC2428) support code.
5123
5124         * ftp.c: added the ftp_do_port and ftp_do_pasv functions to
5125         handle FTP over IPv6.
5126
5127         * ftp.h: changed prototype of ftp_epsv and added prototypes for
5128         ftp_lpsv, ftp_lprt and ftp_eprt.
5129
5130         * host.c: renamed the
5131         wget_sockaddr_set_address and wget_sockaddr_get_addr, and
5132         wget_sockaddr_{s,g}et_port couples to sockaddr_{s,g}et_address and
5133         sockaddr_{g,s}et_port respectively.  changed
5134         address_list_match_all, address_list_from_addrinfo sockaddr_len,
5135         pretty_print_address, lookup_host, sockaddr_{s,g}et_address and
5136         sockaddr_{g,s}et_port to make use of struct sockaddr_storage and
5137         of the new ip_address structure.  removed map_ipv4_to_ip and
5138         map_ip_to_ipv4.
5139
5140         * host.h: redefined structure ip_address and removed structure
5141         wget_sockaddr.
5142
5143 2003-10-26  Hrvoje Niksic  <hniksic@xemacs.org>
5144
5145         * sysdep.h: Include inttypes.h where available.
5146
5147         * host.c: Switch from u_int32_t to uint32_t.
5148
5149 2003-10-26  Hrvoje Niksic  <hniksic@xemacs.org>
5150
5151         * netrc.c (parse_netrc): Reset the QUOTE flag after the closing
5152         quote.
5153
5154 2003-10-25  Hrvoje Niksic  <hniksic@xemacs.org>
5155
5156         * url.c (is_valid_ipv6_address): Reformat to GNU coding style.
5157         Use enums for NS_IN* constants.  Use ISXDIGIT.
5158
5159         * convert.c (construct_relative): Document better how the function
5160         works.
5161
5162 2003-10-23  Hrvoje Niksic  <hniksic@xemacs.org>
5163
5164         * config.h.in: Deploy preprocessor magic to avoid Ultrix's
5165         <netdb.h> include <bitypes.h> which defines its own u_int32_t.
5166         Reported by Bernhard Simon.
5167
5168 2003-10-23  Hrvoje Niksic  <hniksic@xemacs.org>
5169
5170         * version.c: Bump version.
5171
5172 2003-10-23  Hrvoje Niksic  <hniksic@xemacs.org>
5173
5174         * url.c: Ditto.
5175
5176         * html-parse.c (advance_declaration): Don't use trailing comma in
5177         enum because older compilers don't support it.
5178
5179         * utils.c: Don't redefine HAVE_SIGSETJMP.
5180
5181 2003-10-16  Hrvoje Niksic  <hniksic@xemacs.org>
5182
5183         * convert.c (construct_relative): Don't handle absolute files
5184         specially -- for example, -P/tmp/foo shouldn't imply that
5185         converted files must refer to "/tmp/foo/..."!
5186
5187 2003-10-15  Hrvoje Niksic  <hniksic@xemacs.org>
5188
5189         * http.c: Consider status 307 a valid redirect.
5190
5191 2003-10-15  Philip Stadermann  <philip.stadermann@credativ.de>
5192
5193         * ftp.c (ftp_retrieve_glob): Correctly loop through the list whose
5194         elements might have been deleted.
5195
5196 2003-10-13  Hrvoje Niksic  <hniksic@xemacs.org>
5197
5198         * html-url.c (tag_handle_meta): Set the Refresh link to expect
5199         HTML.
5200         (append_one_url): Renamed to append_url.
5201
5202 2003-10-13  Hrvoje Niksic  <hniksic@xemacs.org>
5203
5204         * sysdep.h: Only define u_int32_t.
5205
5206 2003-10-11  Hrvoje Niksic  <hniksic@xemacs.org>
5207
5208         * utils.c (large_int_to_string): Use snprintf() to print the
5209         number.  This will work even on systems where libc doesn't
5210         understand %lld, but the compiler does, because it will use our
5211         snprintf replacement.
5212
5213         * init.c (parse_bytes_helper): New function.
5214         (cmd_bytes): Use it to parse bytes, but cast the result to long.
5215         (cmd_bytes_large): Ditto, but store the result to LARGE_INT.  Used
5216         for --quota so that --quota=10G works even on machines without
5217         long long.
5218
5219         * options.h (struct options): Declare quota as LARGE_INT.
5220
5221         * retr.c (downloaded_exceeds_quota): Removed.
5222         (downloaded_increase): Ditto.
5223         (total_downloaded_bytes): New variable, replaces opt.downloaded,
5224         which was the wrong place for it anyway.  Updated callers of
5225         downloaded_exceeds_quota and downloaded_increase to check this
5226         variable directly.
5227
5228         * sysdep.h: Get rid of VERY_LONG_TYPE.  Use LARGE_INT for the same
5229         purpose, defined as `long', `long long' or `double', depending on
5230         size of long and whether long long is available.
5231
5232 2003-10-11  Hrvoje Niksic  <hniksic@xemacs.org>
5233
5234         * sysdep.h: Also check size of short for int32_t.
5235
5236 2003-10-11  Hrvoje Niksic  <hniksic@xemacs.org>
5237
5238         * host.c (lookup_host): Use u_int32_t to store the result of
5239         inet_addr().  That removes the need for offset fiddling, caring
5240         about endian-ness, etc.
5241
5242         * sysdep.h: Define int32_t and u_int32_t if not available.
5243
5244 2003-10-11  Hrvoje Niksic  <hniksic@xemacs.org>
5245
5246         * ftp-basic.c (ftp_epsv): Use socklen_t * as the third argument to
5247         getpeername.
5248
5249         * config.h.in: Define socklen_t stub.
5250
5251         * host.c (sockaddr_len): Return socklen_t.
5252
5253         * connect.c (conaddr): Use socklen_t as the third argument to
5254         accept, getsockname, and connect.
5255
5256 2003-10-10  Hrvoje Niksic  <hniksic@xemacs.org>
5257
5258         * recur.c (retrieve_tree): Don't descend into documents that are
5259         not expected to contain HTML, regardless of their content-type.
5260
5261         * html-url.c (tag_url_attributes): Record which attributes are
5262         supposed to yield HTML links that can be followed.
5263         (tag_find_urls): Propagate that information to the caller through
5264         struct urlpos.
5265
5266 2003-10-10  Hrvoje Niksic  <hniksic@xemacs.org>
5267
5268         * hash.c (find_mapping): Return the next available mapping when
5269         the key is not found, not NULL.
5270         (hash_table_put): Use find_mapping to find the storage for the new
5271         data.
5272         (hash_table_put): Grow the table before exceeding maximum
5273         fullness, not afterwards.
5274
5275 2003-10-10  Hrvoje Niksic  <hniksic@xemacs.org>
5276
5277         * hash.c (hash_table_new): Slightly change the meaning of the
5278         first parameter.  Instead of being the minimum initial size, it is
5279         now the minimum number of items that the hash table can take
5280         without needing to resize.
5281
5282 2003-10-09  Hrvoje Niksic  <hniksic@xemacs.org>
5283
5284         * html-url.c (init_interesting): Initialize interesting_tags and
5285         interesting_attributes as hash tables.  This simplifies the code
5286         immensely because hash tables handle allocation and remove
5287         duplicates automatically.
5288         (find_tag): Removed.
5289         (collect_tags_mapper): Instead of calling find_tag, simply get the
5290         entry from interesting_tags hash table, which is both simpler and
5291         faster.
5292
5293 2003-10-09  Hrvoje Niksic  <hniksic@xemacs.org>
5294
5295         * hash.c (hash_table_get): Declare hash-table argument as const.
5296         (find_mapping): Ditto.
5297         (hash_table_get_pair): Ditto.
5298         (hash_table_contains): Ditto.
5299         (hash_table_count): Ditto.
5300
5301 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
5302
5303         * html-url.c (get_urls_html): Parse the appropriate flags to
5304         html-parse.c.
5305
5306         * html-parse.c (map_html_tags): Accept FLAGS from the caller
5307         instead of examining OPT.
5308
5309 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
5310
5311         * html-url.c (find_tag): Switch to binary search.
5312
5313 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
5314
5315         * main.c (print_help): Fix typo; stured -> stored.
5316
5317 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
5318
5319         * getopt.c: Add definitions of getopt_long and getopt_long_only.
5320
5321 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
5322
5323         * config.h.in: Renamed DEBUG to ENABLE_DEBUG.  ENABLE_DEBUG is, I
5324         think, a better name, because it implies that debugging output is
5325         merely possible, not "on by default", as might be construed from
5326         just DEBUG.
5327
5328 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
5329
5330         * ftp.c (has_insecure_name_p): Define it here.
5331
5332         * utils.c (has_wildcards_p): Define it here.
5333
5334         * sysdep.h: Declare fnmatch-related macros here, if not using
5335         system fnmatch().  Update .c files to not declare fnmatch.h
5336         directly.
5337
5338         * cmpt.c (fnmatch): Moved here.  Use it only under non-GNU libc.
5339
5340 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
5341
5342         * getopt.c: Newer version, imported from Free libit.
5343
5344 2003-10-07  Hrvoje Niksic  <hniksic@xemacs.org>
5345
5346         * cookies.c (struct cookie): Remove unused backpointer to cookie
5347         jar.
5348
5349 2003-10-07  Hrvoje Niksic  <hniksic@xemacs.org>
5350
5351         * cmpt.c (memmove): Comment out, since it's no longer used.
5352
5353         * cookies.c (cookie_jar_generate_cookie_header): Allocate room for
5354         chains in one pass.
5355         (find_chains_of_host): Assume that the caller has allocated DEST
5356         to be sufficiently large to take all the data.
5357         (eliminate_dups): Run through the array and eliminate dups on the
5358         fly instead of using memmove.
5359         (cookie_jar_process_set_cookie): Free cookie->domain before
5360         re-setting it.
5361
5362 2003-10-05  Gisle Vanem  <giva@bgnett.no>
5363
5364         * mswindows.c (set_sleep_mode): Fix type of
5365         _SetThreadExecutionState.
5366
5367 2003-10-05  Hrvoje Niksic  <hniksic@xemacs.org>
5368
5369         * utils.c (file_size): Return -1 if fopen() returns NULL.  Prior
5370         to this patch, wget --post-file=nosuchfile dumped core.
5371
5372 2003-10-04  Gisle Vanem  <giva@bgnett.no>
5373
5374         * mswindows.c (run_with_timeout): Use WaitForSingleObject to wait
5375         for thread termination.
5376
5377 2003-10-04  Hrvoje Niksic  <hniksic@xemacs.org>
5378
5379         * log.c: Use `...' in function definitions; ansi2knr will convert
5380         them to va_dcl.  This allowed removal of the ugly VA_START_1 and
5381         VA_START_2 macros.
5382
5383 2003-10-03  Gisle Vanem  <giva@bgnett.no>
5384
5385         * connect.c: And don't include them here.
5386
5387         * mswindows.h: Include winsock headers here.
5388
5389 2003-10-03  Hrvoje Niksic  <hniksic@xemacs.org>
5390
5391         * html-parse.c (convert_and_copy): Move variable declarations
5392         before statements.
5393
5394 2003-10-02  Gisle Vanem  <giva@bgnett.no>
5395
5396         * mswindows.c (run_with_timeout): For Windows: Run the 'fun' in a
5397         thread via a helper function. Continually query the thread's
5398         exit-code until finished or timed out.
5399
5400 2003-10-02  Hrvoje Niksic  <hniksic@xemacs.org>
5401
5402         * wget.h (XMALLOC_ARRAY): Removed.
5403         (ALLOCA_ARRAY): Ditto.
5404
5405         * html-parse.c: Renamed alloca_p to resized.
5406         (GROW_ARRAY): Renamed DO_REALLOC_FROM_ALLOCA to GROW_ARRAY and
5407         returned it to html-parse.c, since nothing else was using it.
5408
5409 2003-10-02  Hrvoje Niksic  <hniksic@xemacs.org>
5410
5411         * retr.c (retrieve_url): Initialize DUMMY storage for DT.  Caught
5412         by valgrind.
5413
5414 2003-10-02  Hrvoje Niksic  <hniksic@xemacs.org>
5415
5416         * html-parse.c (convert_and_copy): Handle numeric entities in
5417         hexadecimal, &#xHH.
5418         (convert_and_copy): Copy the contents directly to the pool without
5419         a stack-allocated intermediary.
5420
5421 2003-10-02  Hrvoje Niksic  <hniksic@xemacs.org>
5422
5423         * utils.c (alarm_set): New function; use either setitimer or alarm
5424         to set up the alarm.
5425         (alarm_cancel): New function; cancel the alarm set up by
5426         alarm_set.
5427         (run_with_timeout): Use them.
5428
5429 2003-10-01  Hrvoje Niksic  <hniksic@xemacs.org>
5430
5431         * url.c (url_parse): Don't leak memory when a reencoded URL turns
5432         out to be invalid.
5433
5434         * url.c (parse_errors): Mark error messages for translation.
5435         (url_error): Translate error messages returned to the caller.
5436
5437 2003-10-01  Hrvoje Niksic  <hniksic@xemacs.org>
5438
5439         * ftp.c (ftp_loop_internal): Initialize TMRATE to NULL to shut up
5440         the compiler.
5441
5442 2003-09-26  Gisle Vanem  <giva@bgnett.no>
5443
5444         * src/mswindows.c: Added ws_percenttitle() showing progress in the
5445         window titlebar. Called from retr.c. Secured ws_mypath().
5446
5447         * windows/config.h.ms: alloca() prototype not needed.  Removed
5448         "#undef ENABLE_NLS"; should be in Makefile IMHO. Moved
5449         WGET_USE_STDARG from mswindows.h to config.ms.h because of #ifdef
5450         in log.c. (MSVC's vararg.h and stdarg.h are incompatible).
5451
5452 2003-09-29  Aaron Hawley <Aaron.Hawley@uvm.edu>
5453
5454         * ftp.c (getftp): --spider option should now work with FTP
5455         downloads.
5456         (ftp_loop_internal): quiet reports and calculations of downloads
5457         when --spider option set, nor try deleting when --delete-after
5458         also set.
5459         (ftp_loop): --spider will skip HTML-ification of .listing file.
5460
5461 2003-09-26  Gisle Vanem  <giva@bgnett.no>
5462
5463         * mswindows.c (read_registry): Removed.
5464         (set_sleep_mode): New function.
5465         (windows_main_junk): Call it.
5466
5467 2003-09-26  Gisle Vanem  <giva@bgnett.no>
5468
5469         * mswindows.c (read_registry): Fix invocation of registry
5470         functions.
5471
5472         * mswindows.c (read_registry): Condition definitions of sleep and
5473         usleep with not HAVE_SLEEP and HAVE_USLEEP respectively.  Define
5474         HAVE_SLEEP and HAVE_USLEEP under __DMC__.
5475
5476 2003-09-24  Hrvoje Niksic  <hniksic@xemacs.org>
5477
5478         * url.c (url_escape_1): Revert unintentional change to lowercase
5479         xdigit escapes.
5480         (url_escape_dir): Document that this function depends on the
5481         output of url_escape_1.
5482
5483 2003-09-23  Hrvoje Niksic  <hniksic@xemacs.org>
5484
5485         * progress.c (create_image): Print the current ETA if we're done
5486         with the download.
5487         (create_image): Change '-' display char to '+' in the progress bar.
5488
5489         * Makefile.in (clean): Remove .libs.
5490
5491 2003-09-23  Hrvoje Niksic  <hniksic@xemacs.org>
5492
5493         * cookies.c (struct cookie): New flag domain_exact.
5494         (update_cookie_field): Skip leading dot in domain.
5495         (find_matching_chains): Match numeric addresses exactly; don't
5496         needlessly copy HOST to the stack.
5497         (matching_cookie): Added argument HOST.  If cookie->domain_exact
5498         is set, check that HOST is equal to cookie->domain.
5499         (cookie_jar_load): Only use TAB as delimiter.  Document the
5500         meaning of DOMAIN-FLAG.  Skip leading dot in domain.
5501         (cookie_jar_load): Don't ignore DOMAIN-FLAG -- instead, set
5502         domain_exact to true if DOMAIN-FLAG is false.
5503         (save_cookies_mapper): If domain_exact is false, prepend the
5504         domain with dot, like Mozilla does.
5505
5506 2003-09-22  Hrvoje Niksic  <hniksic@xemacs.org>
5507
5508         * progress.c (create_image): Print the initial part of the
5509         download with '-' characters, analogous to how dot progress prints
5510         the initial part with ','.
5511
5512         * hash.c (ptrhash): New function.
5513         (ptrcmp): Ditto.
5514         (hash_table_new): Default to identity hash table.
5515
5516 2003-09-22  Hrvoje Niksic  <hniksic@xemacs.org>
5517
5518         * safe-ctype.h (_sch_test): The cast of BIT to unsigned char was
5519         broken -- _sch_istable bitmasks are 16-bit, not 8-bit!  Cast BIT
5520         to unsigned short instead.
5521
5522 2003-09-22  Hrvoje Niksic  <hniksic@xemacs.org>
5523
5524         * url.c (path_simplify): Instead of calls to memmove, handle "./"
5525         and "../" by advancing pointers.
5526
5527 2003-09-22  Hrvoje Niksic  <hniksic@xemacs.org>
5528
5529         * retr.c (getproxy): Moved from url.c.
5530
5531         * convert.c: Split off link conversion from url.c into separate
5532         file.  Also included the book-keeping stuff from recur.c.
5533
5534 2003-09-21  Hrvoje Niksic  <hniksic@xemacs.org>
5535
5536         * init.c: Improved documentation of functions.
5537         (cmd_boolean): Attempt to make code that tries to avoid calling
5538         strcmp for "speed" a bit more readable.
5539
5540         * init.c (simple_atof): Report error on encountering non-digit,
5541         non-"." character.
5542         (simple_atoi): Replacement for myatoi(), calling interface
5543         compatible with simple_atof.  Updated myatoi's callers.
5544
5545 2003-09-21  Bertrand Demiddelaer  <bert@b3rt.org>
5546
5547         * url.c (path_simplify): Would read two bytes past the end of the
5548         string in the "./" case.
5549
5550 2003-09-21  Matthew J. Mellon  <mellon@tymenet.com>
5551
5552         * http.c (gethttp): Recognize content-type "application/xhtml+xml"
5553         as what Wget considers "text/html".
5554
5555 2003-09-21  Hrvoje Niksic  <hniksic@xemacs.org>
5556
5557         * connect.c (connect_with_timeout): Made timeout type double.
5558
5559         * options.h (struct options): New members read_timeout,
5560         dns_timeout, and connect_timeout.
5561         Use them.
5562
5563 2003-09-21  Hrvoje Niksic  <hniksic@xemacs.org>
5564
5565         * init.c (simple_atof): New function.
5566         (cmd_time): Use it.
5567         (cmd_bytes): Accept things like "1.5k" and such.  Use simple_atof
5568         to parse decimals.
5569
5570         * retr.c (limit_bandwidth): Adjust each sleep by the error of the
5571         previous one.
5572
5573 2003-09-21  Hrvoje Niksic  <hniksic@xemacs.org>
5574
5575         * main.c (main): Use setoptval() for setting the options.  Use
5576         run_command for `-e'.
5577
5578         * init.c (parse_line): Rewritten to return COMIND right away.
5579         Changed linkage to static.
5580         (run_wgetrc): Use the available comind when calling setval, so it
5581         doesn't have to be computed twice.
5582         (setval_internal): New function, runs the command's action without
5583         any error checking.
5584         (setoptval): New function, does what setval used to do, but exits
5585         in case of error.
5586         (run_command): New function.
5587
5588 2003-09-21  Hrvoje Niksic  <hniksic@xemacs.org>
5589
5590         * connect.c (select_fd): Change MAXTIME's type to double.  Handle
5591         its decimal part.
5592
5593         * retr.c (sleep_between_retrievals): In the random-wait case, use
5594         random_float() to wait between 0 and 2*opt.wait seconds.
5595
5596         * utils.c (run_with_timeout): Accept `double' timeouts.  Correctly
5597         handle timeout values in (0, 1) range.
5598         (random_float): New function.
5599
5600         * options.h (struct options): Change the types of wait, waitretry,
5601         and timeout to double.
5602
5603         * init.c (cmd_time): Accept floating point time.
5604
5605 2003-09-20  Hrvoje Niksic  <hniksic@xemacs.org>
5606
5607         * retr.c (get_contents): Cosmetic fixes.
5608
5609 2003-09-20  Hrvoje Niksic  <hniksic@xemacs.org>
5610
5611         * url.c (uri_merge): Get rid of uri_merge_1.
5612         (uri_merge): Merge "foo//", "bar" as "foo//bar", not "foo///bar",
5613         i.e. don't add an extra slash merely because BASE ends with two
5614         slashes.
5615         (parse_credentials): Renamed from parse_uname.  Rewrittern in
5616         standard [beg, end) calling style.
5617         (url_skip_credentials): Renamed from url_skip_uname.  Made static.
5618         (url_skip_credentials): Include # and ; as terminators.  Old code
5619         would mistakenly consider "http://foo.com#hniksic@iskon.hr" to
5620         contain a username.
5621         (url_skip_scheme): Removed because it was unused.
5622         (url_has_scheme): Require "scheme" to be at least one char long.
5623
5624 2003-09-19  Hrvoje Niksic  <hniksic@xemacs.org>
5625
5626         * url.c (url_file_name): Expect NULL dir_prefix.
5627
5628         * init.c (cmd_file): Use a macro to prevent multiple #ifdef
5629         WINDOWS.
5630         (defaults): Set dir_prefix to NULL by default.
5631
5632 2003-09-19  Hrvoje Niksic  <hniksic@xemacs.org>
5633
5634         * safe-ctype.h (_sch_test): Cast BIT to unsigned char, like latest
5635         gcc does.
5636
5637 2003-09-19  Hrvoje Niksic  <hniksic@xemacs.org>
5638
5639         * wget.h (BOUNDED_TO_ALLOCA): Evaluate PLACE only once.
5640         (ARRAY_SIZE): Renamed to countof.  All callers updated.
5641
5642 2003-09-19  Hrvoje Niksic  <hniksic@xemacs.org>
5643
5644         * main.c (main): New option --strict-comments.
5645
5646         * html-parse.c (find_comment_end): New function: simple BM search
5647         for "-->".
5648         (map_html_tags): Use it if looking at a comment and not in strict
5649         comments mode.
5650
5651 2003-09-17  Aurelien Marchand  <artaxerxes@users.sf.net>
5652
5653         * ftp.h: Added OS400 system in enum
5654         * ftp-basic.c: recognize OS400 systems
5655         * ftp.c: don't prepend the CWD if talking to OS400, since it
5656         breaks the change in library
5657
5658 2003-09-18  Hrvoje Niksic  <hniksic@xemacs.org>
5659
5660         * retr.c (get_contents): Pass the correct argument to ssl_iread.
5661
5662 2003-09-18  Hrvoje Niksic  <hniksic@xemacs.org>
5663
5664         * safe-ctype.h: Don't #define ctype.h macros to errors because
5665         that loses when someone #include's ctype.h after safe-ctype.h.
5666
5667 2003-09-17  Hrvoje Niksic  <hniksic@xemacs.org>
5668
5669         * url.c: Undef U, W, C after use.
5670
5671 2003-09-17  Hrvoje Niksic  <hniksic@xemacs.org>
5672
5673         * init.c (cmd_spec_restrict_file_names): Allow the OS setting to
5674         be augmented by ",nocontrol" which means don't escape the control
5675         characters, but otherwise keep OS settings.
5676
5677         * url.c (file_unsafe_char): Deleted.
5678         (append_uri_pathel): Query filechr_table directly.
5679         (filechr_table): Separated Unix, Windows, and control-unsafe
5680         characters.
5681
5682 2003-09-17  Hrvoje Niksic  <hniksic@xemacs.org>
5683
5684         * url.c (url_escape_1): New function.
5685         (url_escape): Use it.
5686         (sync_path): Handle pathological cases where u->file and u->dir
5687         contain really strange characters.
5688         (ENCODE): Deleted.
5689         (REENCODE): Deleted.
5690
5691 2003-09-16  Hrvoje Niksic  <hniksic@xemacs.org>
5692
5693         * url.c (url_file_name): Don't reallocate FNAME if the file
5694         doesn't exist, as is usually the case.
5695
5696         * utils.c (unique_name): New flag allow_passthrough.
5697
5698 2003-09-16  Hrvoje Niksic  <hniksic@xemacs.org>
5699
5700         * utils.c (wtimer_sys_diff): Convert the time difference to signed
5701         __int64, then to double.  This works around MS VC++ 6 which can't
5702         convert unsigned __int64 to double directly.
5703
5704 2003-09-16  Hrvoje Niksic  <hniksic@xemacs.org>
5705
5706         * Makefile.in (clean): Also remove the core.<number> files
5707         produced by recent Linux systems.
5708
5709 2003-09-16  Hrvoje Niksic  <hniksic@xemacs.org>
5710
5711         * http.c (post_file): Don't pad the file if it's not large
5712         enough.  Bail out instead.
5713
5714 2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
5715
5716         * retr.c (get_contents): Reduce the buffer size to the amount of
5717         data that may pass through for one second.  This prevents long
5718         sleeps when limiting bandwidth.
5719
5720         * connect.c (connect_to_one): Reduce the socket's RCVBUF when
5721         bandwidth limitation to small values is requested.
5722
5723 2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
5724
5725         * progress.c (update_speed_ring): Moved the speed ring update to a
5726         separate function and documented it better.
5727
5728         * progress.c: Use `double' for most timers to support granularity
5729         smaller than 1ms.
5730
5731 2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
5732
5733         * wget.h (XDIGIT_TO_XCHAR): Implement as index into a literal
5734         string.
5735         (XDIGIT_TO_xchar): Ditto.
5736
5737 2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
5738
5739         * utils.c: Change the type of timer-related functions from long to
5740         double, for better precision.  On machines supporting gettimeofday
5741         the timers now work with granularity of less than one millisecond.
5742
5743 2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
5744
5745         * cookies.c (parse_set_cookies): Fixed the parser to handle more
5746         edge conditions.
5747         (test_cookies): New function, contains a test suite for
5748         parse_set_cookies.
5749
5750 2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
5751
5752         * url.c (strpbrk_or_eos): Implement as a macro under Gcc.
5753
5754 2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
5755
5756         * cookies.c (parse_set_cookies): Allow trailing space in
5757         set-cookies header.  Also, allow any amount of whitespace, not
5758         only one character.  Allow empty set-cookies header without
5759         spewing an error.
5760
5761 2003-09-14  Hrvoje Niksic  <hniksic@xemacs.org>
5762
5763         * url.c (append_uri_pathel): Use opt.restrict_file_names when
5764         calling file_unsafe_char.
5765
5766         * init.c: New command restrict_file_names.
5767
5768         * main.c (main): New option --restrict-file-names[=windows,unix].
5769
5770         * url.c (url_file_name): Renamed from url_filename.
5771         (url_file_name): Add directory and hostdir prefix here, not in
5772         mkstruct.
5773         (append_dir_structure): New function, does part of the work that
5774         used to be in mkstruct.  Iterates over path elements in u->path,
5775         calling append_uri_pathel on each one to append it to the file
5776         name.
5777         (append_uri_pathel): URL-unescape a path element and reencode it
5778         with a different set of rules, more appropriate for handling of
5779         files.
5780         (file_unsafe_char): New function, uses a lookup table to decide
5781         whether a character should be escaped for use in file name.
5782         (append_string): New utility function.
5783         (append_char): Ditto.
5784         (file_unsafe_char): New argument restrict_for_windows, decide
5785         whether Windows file names should be escaped in run-time.
5786
5787         * connect.c: Include <stdlib.h> to get prototype for abort().
5788
5789 2003-09-14  Hrvoje Niksic  <hniksic@xemacs.org>
5790
5791         * utils.c (wtimer_sys_set): Extracted the code that sets the
5792         current time here.
5793         (wtimer_reset): Call it.
5794         (wtimer_sys_diff): Extracted the code that calculates the
5795         difference between two system times here.
5796         (wtimer_elapsed): Call it.
5797         (wtimer_elapsed): Don't return a value smaller than the previous
5798         one, which could previously happen when system time is set back.
5799         Instead, reset start time to current time and note the elapsed
5800         offset for future calculations.  The returned times are now
5801         guaranteed to be monotonically nondecreasing.
5802
5803 2003-09-10  Hrvoje Niksic  <hniksic@xemacs.org>
5804
5805         * host.c (lookup_host): Print the result of the DNS lookup.
5806
5807 2003-09-10  Hrvoje Niksic  <hniksic@xemacs.org>
5808
5809         * init.c (cmd_boolean): Accept yes/no along with on/off.
5810         (cmd_lockable_boolean): Ditto.
5811
5812 2003-09-10  Hrvoje Niksic  <hniksic@xemacs.org>
5813
5814         * init.c: New command dns_cache.
5815
5816         * main.c (main): New option --dns-cache[=off].
5817
5818 2003-09-09  Hrvoje Niksic  <hniksic@xemacs.org>
5819
5820         * config.h.in: Initialize HAVE_GETADDRINFO and ENABLE_IPV6.
5821
5822         * all: Use #ifdef ENABLE_IPV6 instead of the older INET6.  Use
5823         HAVE_GETADDRINFO for getaddrinfo-related stuff.
5824
5825 2003-09-09  Hrvoje Niksic  <hniksic@xemacs.org>
5826
5827         * url.c (url_parse): Return an error if the URL contains a [...]
5828         IPv6 numeric address and we don't support IPv6.
5829
5830 2003-09-05  Hrvoje Niksic  <hniksic@xemacs.org>
5831
5832         * url.c (is_valid_ipv6_address): Modified to not require
5833         zero-terminated strings.
5834         (is_valid_ipv4_address): Ditto.
5835
5836 2003-09-05  Mauro Tortonesi <mauro@deepspace6.net>
5837
5838         src/url.c: added RFC 2732 compliance for URL parsing. The
5839         functions is_*_address valid are a modified version of
5840         glibc 2.3.2 inet_pton's code.
5841
5842 2003-09-03  Ahmon Dancy  <dancy@dancysoft.com>
5843
5844         * main.c init.c options.h: Added --retry-connrefused option so
5845         that Connection Refused failures are treated as non-fatal (when
5846         trying to retrieve from busy servers).
5847
5848         * wget.h: New CONNECT_ERROR macro for encapsulating this
5849         modification.
5850
5851         * ftp.c http.c : Use CONNECT_ERROR macro in places where
5852         ECONNREFUSED was checked.
5853
5854 2003-01-11  Ian Abbott  <abbotti@mev.co.uk>
5855
5856         * ftp.c (ftp_retrieve_glob): Reject insecure filenames as determined
5857         by calling new function has_insecure_name_p.  This is based on a
5858         patch by Red Hat.
5859
5860         * fnmatch.c (has_insecure_name_p): New function: returns non-zero
5861         if filename starts with `/' or contains `../' and is therefore
5862         considered insecure.
5863
5864         * fnmatch.h: Declare has_insecure_name_p().
5865
5866 2002-08-03  Hrvoje Niksic  <hniksic@xemacs.org>
5867
5868         * init.c (cmd_file): Allocate RESULT correctly.
5869
5870 2002-07-24  Hrvoje Niksic  <hniksic@xemacs.org>
5871
5872         * recur.c (retrieve_tree): Check whether downloaded_html_set is
5873         non-NULL before using it.
5874
5875 2002-05-27  Hrvoje Niksic  <hniksic@arsdigita.com>
5876
5877         * html-parse.c (NAME_CHAR_P): Allow almost any character here.
5878
5879 2002-05-24  Hrvoje Niksic  <hniksic@arsdigita.com>
5880
5881         * progress.c (bar_set_params): Fall back to dot progress if the
5882         terminal type is "emacs".
5883
5884 2002-05-20  Hrvoje Niksic  <hniksic@arsdigita.com>
5885
5886         * log.c: Don't #undef WGET_USE_STDARG.
5887
5888 2002-05-16  Hrvoje Niksic  <hniksic@arsdigita.com>
5889
5890         * hash.c (prime_size): Store the offset of the prime number in the
5891         prime table.  When searching, start with the given offset.
5892         (hash_table_new): Pass the pointer to ht->prime_offset to
5893         prime_size.
5894         (grow_hash_table): Ditto.
5895         (prime_size): Make 13 the first prime to make empty hash tables
5896         slightly smaller.
5897
5898 2002-05-16  Ian Abbott  <abbotti@mev.co.uk>
5899
5900         * recur.c (download_child_p): Minor optimization to avoid an
5901         unnecessary additional call to schemes_are_similar_p function.
5902
5903 2002-05-16  Ian Abbott  <abbotti@mev.co.uk>
5904
5905         * url.c (schemes_are_similar_p): New function to test enumerated
5906         scheme codes for similarity.
5907
5908         * url.h: Declare it.
5909
5910         * recur.c (download_child_p): Use it to compare schemes.  This
5911         also fixes a bug that allows hosts to be spanned (without the
5912         -H option) when the parent scheme is https and the child's is
5913         http or vice versa.
5914
5915 2002-05-14  Bill Richardson  <bill@riverstonenet.com>
5916
5917         * ftp.c (getftp): Don't ftruncate stdout.
5918
5919         * http.c (gethttp): Don't ftruncate stdout.
5920
5921 2002-05-09  Ian Abbott  <abbotti@mev.co.uk>
5922
5923         * cmpt.c (strptime_internal): Synched with glibc-2.1.3.
5924         (get_number): Ditto.
5925         (get_alt_number): Ditto.
5926         (__isleap): New function-like macro used by strptime.
5927         (day_of_the_week): New function used by strptime.
5928         (day_of_the_year): Ditto.
5929         (__mon_yday): Now shared by mktime and strptime implementations.
5930
5931 2002-05-08  Hrvoje Niksic  <hniksic@arsdigita.com>
5932
5933         * cookies.c (check_domain_match): Use match_tail in case
5934         insensitive mode.
5935
5936         * utils.c (match_tail): Allow the caller to specify case
5937         insensitive mode.
5938
5939         * cookies.c (store_cookie): When expiry_time is 0, print it as
5940         undefined, not indefinite.
5941
5942 2002-05-07  Ian Abbott  <abbotti@mev.co.uk>
5943
5944         * cookies.c (cookie_jar_process_set_cookie): Do not store
5945         discarded cookie.
5946
5947 2002-04-21  Hrvoje Niksic  <hniksic@arsdigita.com>
5948
5949         * cookies.c (check_domain_match): Allow cookies to be set for
5950         subdomains of unknown top-level domains under some circumstances.
5951
5952 2002-04-21  Thomas Lussnig  <thomas.lussnig@bewegungsmelder.de>
5953
5954         * gen_ssl.c:
5955         - allow checking of server cert
5956         - allow defining client cert type
5957         - allow limit of ssl protocol
5958         - check more return values
5959         - added debug message on break
5960
5961 2002-04-21  Hrvoje Niksic  <hniksic@arsdigita.com>
5962
5963         * recur.c (download_child_p): Revert order of items in check
5964         number 6 for clarity.
5965
5966 2002-04-20  Hrvoje Niksic  <hniksic@arsdigita.com>
5967
5968         * init.c: Ditto.
5969
5970         * main.c: Ditto.
5971
5972         * http.c: Use the new interface.
5973
5974         * cookies.c: Provide an OO-style "cookie jar" interface to enable
5975         separate cookie jars.
5976
5977         * http.c (http_atotm): Declare argument as const.
5978
5979 2002-04-20  Hrvoje Niksic  <hniksic@arsdigita.com>
5980
5981         * cookies.c (cookie_new): Default to PORT_ANY.
5982         (find_cookie_chain_exact): Only search by DOMAIN.
5983         (find_matching_cookie): Also check that PORT matches.
5984         (store_cookie): Only match the domain.
5985         (set_cookie_header_cb): When a cookie "fakes" a domain, assume it
5986         is valid for that host rather than discarding it completely.
5987         (find_matching_chains): Don't search by PORT.
5988         (matching_cookie): Also match PORT.
5989         (load_cookies): Set the port if specified, otherwise leave it as
5990         ANY.
5991         (save_cookies_mapper): Save the port if specified, otherwise leave
5992         it empty.
5993
5994 2002-04-19  Thomas Lussnig  <thomas.lussnig@bewegungsmelder.de>
5995
5996         * init.c: The option `egdfile' was not in sort order.
5997
5998 2002-04-16  Hrvoje Niksic  <hniksic@arsdigita.com>
5999
6000         * ftp.c (getftp): Treat directories that begin with <letter>: as
6001         absolute.
6002         (getftp): Strip trailing slashes from con->id before merging it
6003         with TARGET.
6004
6005 2002-04-16  Hrvoje Niksic  <hniksic@arsdigita.com>
6006
6007         * http.c (gethttp): If Content-Type is not given, assume
6008         text/html.
6009
6010 2002-04-15  Hrvoje Niksic  <hniksic@arsdigita.com>
6011
6012         * recur.c (download_child_p): Don't ignore rejection of HTML
6013         documents that are themselves leaves of recursion.
6014
6015 2002-04-15  Ian Abbott  <abbotti@mev.co.uk>
6016
6017         Makefile.in: Updated several dependencies for object files to take
6018         account of nested include files.
6019
6020 2002-04-15  Ian Abbott  <abbotti@mev.co.uk>
6021
6022         Makefile.in: The target `connect$o' (connect.o) now depends on
6023         `utils.h'
6024
6025 2002-04-15  Ian Abbott  <abbotti@mev.co.uk>
6026
6027         * host.c (SET_H_ERRNO): New function-like macro to set `h_errno'.
6028         (gethostbyname_with_timeout): Use it.
6029
6030         * utils.c: Don't define `SETJMP()', `run_with_timeout_env' or
6031         `abort_run_with_timeout()' when `USE_SIGNAL_TIMEOUT' is undefined.
6032
6033 2002-04-15  Hrvoje Niksic  <hniksic@arsdigita.com>
6034
6035         * host.c (getaddrinfo_with_timeout): New function.
6036         (gethostbyname_with_timeout): Ditto.
6037         (lookup_host): Use them.
6038
6039 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
6040
6041         * utils.c (number_to_string): Handle the case when n < -INT_MAX.
6042
6043 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
6044
6045         * init.c (comind): Use a marginally faster implementation of
6046         binary search.  To quote Martin Buchholz, "a nanosecond saved is a
6047         nanosecond earned."
6048
6049 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
6050
6051         * main.c (print_help): Document `--post-data' and `--post-file'.
6052
6053 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
6054
6055         * http.c (gethttp): Ditto.
6056
6057         * retr.c (retrieve_url): Initialize variables to appease the
6058         compiler.
6059
6060         * gen_sslfunc.c (ssl_iread): Don't handle EINTR when calling
6061         select_fd.
6062         (ssl_iwrite): Ditto.
6063
6064         * connect.c (select_fd): Rewrite to handle EINTR.  Set errno to
6065         ETIMEDOUT in case of timeout.
6066         (iread): No need to handle EINTR when calling select_fd.
6067         (iwrite): Ditto.
6068
6069 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
6070
6071         * retr.c (retrieve_url): Make sure that POST is not honored for
6072         redirections.
6073
6074         * http.c (gethttp): Send the POST data when requested.
6075         (post_file): New function.
6076         (gethttp): Use it.
6077
6078         * main.c (main): Ditto.
6079
6080         * init.c: Add new options.
6081
6082         * options.h (struct options): New options post_data and
6083         post_file_name.
6084
6085 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
6086
6087         * connect.c (connect_with_timeout): Firing SIGALRM can result in
6088         connect() exiting with EINTR.  Treat EINTR the same as ETIMEDOUT.
6089
6090 2002-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
6091
6092         * connect.c (connect_with_timeout): Use it.
6093
6094         * utils.c (run_with_timeout): New function.
6095
6096 2002-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
6097
6098         * url.c (getproxy): Accept a struct url argument.  This obviates
6099         the need for USE_PROXY_P.
6100
6101         * retr.c (retrieve_url): Allow proxy to be a non-FTP URL.
6102
6103         * ftp.c (getftp): Recognize FWTK-style proxy.
6104
6105 2002-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
6106
6107         * config.h.in: Only define _VA_LIST when compiled with gcc.
6108
6109 2002-04012  Ian Abbott  <abbotti@mev.co.uk>
6110
6111         * http.c (http_loop): Compensate for MS Windows two-second
6112         granularity of file modification time when comparing timestamps.
6113
6114         * ftp.c (ftp_retrieve_list): Ditto.
6115
6116 2002-04-12  Ian Abbott  <abbotti@mev.co.uk>
6117
6118         * utils.c (has_html_suffix_p): New function to test filename for
6119         common html extensions.
6120
6121         * utils.h: Declare it.
6122
6123         * http.c (http_loop): Use it instead of previous test.
6124
6125         * retr.c (retrieve_url): Ditto.
6126
6127         * recur.c (download_child_p): Ditto.
6128
6129 2002-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
6130
6131         * config.h.in: Define _VA_LIST on Solaris to prevent stdio.h from
6132         declaring va_list.
6133         From Kevin Rodgers <kevinr@ihs.com>.
6134
6135 2002-04-12  Ian Abbott  <abbotti@mev.co.uk>
6136
6137         * Makefile.in: Specify libtool mode explicitly when linking.
6138
6139 2002-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
6140
6141         * connect.c (connect_with_timeout): New function.
6142         (connect_to_one): Use it.
6143
6144         * config.h.in: Add stubs for HAVE_SIGSETJMP, HAVE_SIGBLOCK, and
6145         HAVE_SETJMP_H.
6146
6147 2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
6148
6149         * log.c: Set WGET_USE_STDARG if __STDC__ is defined and stdarg.h
6150         is present.
6151
6152 2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
6153
6154         * progress.c (bar_create): If INITIAL is larger than TOTAL, fix
6155         TOTAL.
6156         (bar_finish): Likewise.
6157
6158 2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
6159
6160         * html-url.c (tag_handle_form): New function.  Pick up form
6161         actions and mark them for conversion only.
6162
6163 2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
6164
6165         * progress.c (struct progress_implementation): Use PARAMS when
6166         declaring the parameters of *create, *update, *finish, and
6167         *set_params.
6168
6169         * netrc.c: Ditto.
6170
6171         * http.c: Reformat some function definitions so that ansi2knr can
6172         read them.
6173
6174         * hash.c (struct hash_table): Use the PARAMS macro around
6175         parameters in the declaration of hash_function and test_function.
6176         (prime_size): Spell 2580823717UL and 3355070839UL as (unsigned
6177         long)0x99d43ea5 and (unsigned long)0xc7fa5177 respectively, so
6178         that pre-ANSI compilers can read them.
6179         (find_mapping): Use PARAMS when declaring EQUALS.
6180         (hash_table_put): Ditto.
6181
6182         * ftp.h: Wrap the parameters of ftp_index declaration in PARAMS.
6183
6184         * cookies.c (cookie_new): Use (unsigned long)0 instead of 0UL,
6185         which was unsupported by pre-ANSI compilers.
6186
6187         From Nelson H. F. Beebe <beebe@math.utah.edu>, for the most part.
6188
6189 2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
6190
6191         * url.c (url_filename): Use compose_file_name regardless of
6192         whether opt.dirstruct is set.
6193         (mkstruct): Don't handle the query and the reencoding of DIR; that
6194         is done in compose_file_name.
6195
6196 2002-04-10  Hrvoje Niksic  <hniksic@arsdigita.com>
6197
6198         * wget.h: Ditto for extern char *exec_name.
6199
6200         * options.h: Don't guard against OPTIONS_DEFINED_HERE -- it is
6201         perfectly legal to follow an `extern' with a non-`extern' ones,
6202         provided the types match.
6203
6204         * main.c: Don't define OPTIONS_DEFINED_HERE.
6205
6206 2002-04-10  Hrvoje Niksic  <hniksic@arsdigita.com>
6207
6208         * progress.c (create_image): Revert to calculating ETA based on
6209         average download speed.
6210         (create_image): Don't print ETA until the download has been active
6211         for at least 3 seconds.
6212         (create_image): When ETA is not available, don't print anything.
6213         The previous version would print --:--.
6214
6215 2002-04-10  Hrvoje Niksic  <hniksic@arsdigita.com>
6216
6217         * progress.c (bar_update): Keep updating a subinterval until it
6218         reaches or exceeds a watermark.  That way the measurement will be
6219         guaranteed to span a configurable minimum of time.  The current
6220         default is 3s in 30 100ms intervals.
6221
6222 2002-04-09  Hrvoje Niksic  <hniksic@arsdigita.com>
6223
6224         * progress.c (bar_update): Maintain an array of the time it took
6225         to perform previous 30 network reads.
6226         (create_image): Calculate the download speed and ETA based on the
6227         last 30 reads, not the entire download.
6228         (create_image): Make sure that the ETA is not changed more than
6229         once per second.
6230
6231 2002-04-09  Ian Abbott  <abbotti@mev.co.uk>
6232
6233         * mswindows.c (borland_utime): New function conditionally defined
6234         when `HACK_BCC_UTIME_BUG' is defined.  A reimplementation of
6235         `utime()' as Borland's `utime()' function is broken on Windows 9x
6236         systems.  (Original patch by Chin-yuan Kuo <sr1111111@yahoo.com.tw>.)
6237
6238 2002-04-08  Hrvoje Niksic  <hniksic@arsdigita.com>
6239
6240         * ftp.c (ftp_loop): Propagate the result of ftp_retrieve_glob.
6241
6242 2002-03-26  Ian Abbott  <abbotti@mev.co.uk>
6243
6244         * Makefile.in: Updated several dependencies for object files.
6245
6246 2002-03-20  Ian Abbott  <abbotti@mev.co.uk>
6247
6248         * mswindows.c: Include "utils.h".
6249
6250 2002-03-18  Ian Abbott  <abbotti@mev.co.uk>
6251
6252         * host.h: Don't include netdb.h on windows.
6253
6254 2002-02-19  Hrvoje Niksic  <hniksic@arsdigita.com>
6255
6256         * recur.c (retrieve_tree): Handle the case when start_url doesn't
6257         parse.
6258
6259 2002-02-19  Andreas Damm  <andreas-sourceforge@radab.org>
6260
6261         * wget.h (DO_REALLOC_FROM_ALLOCA): Multiply with sizeof(type) when
6262         calling xmalloc and memcpy.
6263
6264 2002-02-19  Hrvoje Niksic  <hniksic@arsdigita.com>
6265
6266         * host.h: Include Unix-specific includes #ifndef WINDOWS.
6267         Patch originally provided by Christian Lackas.
6268
6269 2002-02-11  Christian Lackas  <delta@lackas.net>
6270
6271         * recur.c: recurive downloading for https fixed.
6272
6273 2002-02-19  Alan Eldridge  <alane@geeksrus.net>
6274
6275         * host.h: Also include <netinet/in.h> and <sys/socket.h>.
6276
6277         * ftp-basic.c: Also include <netinet/in.h>.
6278
6279 2002-02-05  Ian Abbott  <abbotti@mev.co.uk>
6280
6281         * http.c (gethttp): when -c used, mark already fully retrieved
6282         file as successfully retrieved.
6283
6284 2002-02-19  Hrvoje Niksic  <hniksic@arsdigita.com>
6285
6286         * url.c (url_parse): Don't treat '?' as query string separator
6287         when parsing FTP URLs.
6288
6289 2002-02-01  Hrvoje Niksic  <hniksic@arsdigita.com>
6290
6291         * html-url.c (tag_handle_meta): Don't crash on <meta
6292         http-equiv=refresh> where content is missing.
6293
6294 2002-01-31  Herold Heiko  <Heiko.Herold@previnet.it>
6295
6296         * ftp-basic.c, host.c: don't include sys/socket.h, arpa/inet.h,
6297         netdb.h on windows.
6298
6299 2002-01-30  Hrvoje Niksic  <hniksic@arsdigita.com>
6300
6301         * retr.c (retrieve_url): Remove redirection cycle detection.  This
6302         is because some sites legitimately redirect the user back to the
6303         same location, e.g. after an authorization check performed by
6304         another page.  MAX_REDIRECTIONS is still used to prevent infinite
6305         redirection loops.
6306
6307 2002-01-26  Hrvoje Niksic  <hniksic@arsdigita.com>
6308
6309         * http.c (gethttp): Wrap host name in square brackets if it
6310         contains a colon.
6311
6312 2002-01-26  Hrvoje Niksic  <hniksic@arsdigita.com>
6313
6314         * url.c (url_parse): Allow all hex digits, not only decimal ones,
6315         to form an IP address.
6316
6317 2002-01-26  Hrvoje Niksic  <hniksic@arsdigita.com>
6318
6319         * url.c (urlchr_table): Make square braces reserved, so we can
6320         parse http://[::1]/.
6321         (url_parse): Handle host in braces.
6322         (url_string): If url->host contains colons, wrap it in braces.
6323
6324 2002-01-24  Hrvoje Niksic  <hniksic@arsdigita.com>
6325
6326         * connect.c (resolve_bind_address): New function.
6327         (connect_to_one): Use it.
6328         (bindport): Ditto.
6329
6330         * init.c: Don't resolve bind-address here.
6331
6332         * host.c (wget_sockaddr_set_address): Would bug out with ADDR == NULL.
6333
6334 2002-01-24  Hrvoje Niksic  <hniksic@arsdigita.com>
6335
6336         * host.c (lookup_host): Use sizeof(ip4_address) to calculate the
6337         offset.
6338         (address_list_new): Use map_ipv4_to_ip.
6339         (wget_sockaddr_set_address): Convert ADDR to IPv4 before using it
6340         in IPv4 context.
6341
6342 2002-01-24  Hrvoje Niksic  <hniksic@arsdigita.com>
6343
6344         * source: Integrated IPv6 support.
6345         Written by Thomas Lussnig <thomas.lussnig@bewegungsmelder.de>.
6346
6347 2002-01-15  Ian Abbott  <abbotti@mev.co.uk>
6348
6349         * init.c (cmd_file): Change `\' to `/' for Windows (yes, really!)
6350         (cmd_directory): New function. Like cmd_file(), but strips
6351         trailing directory separators.
6352         (commands): Change action for "dirprefix" from `cmd_file' to
6353         `cmd_directory'.
6354
6355         * utils.c (make_directory): Allow intermediate `mkdir' calls to
6356         fail, as not all path components that do not exist should be
6357         directory components, especially under Windows.
6358
6359 2002-01-17  Hrvoje Niksic  <hniksic@arsdigita.com>
6360
6361         * netrc.c (parse_netrc): Skip leading whitespace before testing
6362         whether the line is empty.  Empty lines still contain the line
6363         terminator.
6364
6365 2002-01-15  Hrvoje Niksic  <hniksic@arsdigita.com>
6366
6367         * gen_sslfunc.c (ssl_iread): Call select on the file descriptor
6368         only if no data is pending in SSL buffers.
6369         From tony@bluetail.com.
6370
6371 2002-01-14  Hrvoje Niksic  <hniksic@arsdigita.com>
6372
6373         * headers.c (header_get): Strip trailing whitespace from the
6374         header.
6375
6376 2002-01-14  Hrvoje Niksic  <hniksic@arsdigita.com>
6377
6378         * url.c (parse_uname): URL-decode *USER and *PASSWD.
6379
6380 2002-01-07  Ian Abbott <abbotti@mev.co.uk>
6381
6382         * url.c (uri_merge_1): Deal with "net path" relative URL (one that
6383         starts with "//").
6384
6385 2002-01-14  Hrvoje Niksic  <hniksic@arsdigita.com>
6386
6387         * http.c (gethttp): Invalidate SOCK if get_contents encountered an
6388         error.
6389
6390 2001-12-24  Hrvoje Niksic  <hniksic@arsdigita.com>
6391
6392         * version.c: Wget 1.8.1 is released.
6393
6394 2001-12-19  Hrvoje Niksic  <hniksic@arsdigita.com>
6395
6396         * version.c: Wget 1.8.1-pre3 is released.
6397
6398 2001-12-19  Hrvoje Niksic  <hniksic@arsdigita.com>
6399
6400         * recur.c (retrieve_tree): Enqueue the canonical representation of
6401         start_url, so that the test against dl_url_file_map works.
6402
6403 2001-12-19  Hrvoje Niksic  <hniksic@arsdigita.com>
6404
6405         * log.c (logputs): Check for requested verbosity before printing
6406         anything.
6407
6408 2001-12-19  Hrvoje Niksic  <hniksic@arsdigita.com>
6409
6410         * html-url.c (tag_handle_link): Treat the "shortcut icon" link as
6411         inline.
6412
6413 2001-12-18  Hrvoje Niksic  <hniksic@arsdigita.com>
6414
6415         * recur.c (retrieve_tree): Make a copy of file obtained from
6416         dl_url_file_map because the code calls xfree(file) later.
6417
6418 2001-12-18  Hrvoje Niksic  <hniksic@arsdigita.com>
6419
6420         * recur.c (register_html): Maintain a hash table of HTML files
6421         along with the list.  Disallow duplicates.
6422         (retrieve_tree): Use downloaded_html_set to check whether the file
6423         found in dl_url_file_map is an HTML file, and descend into it if
6424         so.
6425         (convert_all_links): Don't guard against duplicates in
6426         downloaded_html_list, since they are no longer possible.
6427
6428 2001-12-18  Ian Abbott  <abbotti@mev.co.uk>
6429
6430         * recur.c (retrieve_tree): Pass on referring URL when retrieving
6431         recursed URL.
6432
6433 2001-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
6434
6435         * version.c: Wget 1.8.1-pre2 is released.
6436
6437 2001-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
6438
6439         * retr.c (sleep_between_retrievals): Simplify indentation.
6440
6441 2001-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
6442
6443         * gen_sslfunc.c (ssl_init_prng): Use random_number to get a byte
6444         of "randomness" at a time.
6445         (ssl_init_prng): Don't seed the PRNG; random_number will do that.
6446
6447         * retr.c (sleep_between_retrievals): Use it.  Make sure that the
6448         random amount averages in opt.wait.
6449         (sleep_between_retrievals): Don't seed the PRNG; random_number
6450         will do that.
6451
6452         * utils.c (random_number): New function.
6453
6454 2001-12-14  Hrvoje Niksic  <hniksic@arsdigita.com>
6455
6456         * url.c (path_simplify): Move here from utils.c, and make static.
6457
6458 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
6459
6460         * init.c (wgetrc_file_name): Print correct message when loading
6461         getenv("WGETRC") fails.
6462
6463 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
6464
6465         * recur.c (register_download): Don't abort when one URL references
6466         two different files.
6467
6468 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
6469
6470         * http.c (gethttp): Check for conn->scheme, not u->scheme, before
6471         calling ssl_iwrite.
6472
6473 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
6474
6475         * version.c: Wget 1.8.1-pre1 is released.
6476
6477 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
6478
6479         * res.c (matches): Fix broken URL in the docstring.
6480
6481 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
6482
6483         * html-url.c (tag_url_attributes): Mark <embed href=...> as
6484         external.
6485
6486 2001-12-12  Hrvoje Niksic  <hniksic@arsdigita.com>
6487
6488         * url.c (get_urls_file): Cosmetic changes.
6489
6490 2001-12-12  Hrvoje Niksic  <hniksic@arsdigita.com>
6491
6492         * html-url.c (append_one_url): Resurrect warning when unable to
6493         resolve a relative link.
6494
6495 2001-12-12  Hrvoje Niksic  <hniksic@arsdigita.com>
6496
6497         * html-url.c (collect_tags_mapper): Break into several functions.
6498         (tag_url_attributes): Collect <embed href=...>.
6499
6500 2001-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
6501
6502         * host.c: New type ipv4_address.  Use it consistently instead of
6503         `unsigned char[4]' and `unsigned char *'.
6504         (pretty_print_address): Accept a `const void *', to require even
6505         less casting.
6506
6507 2001-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
6508
6509         * ftp-ls.c (ftp_parse_vms_ls): Fix obvious memory leaks.
6510
6511 2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
6512
6513         * main.c (main): Initialize progress after fork_to_background, so
6514         that it knows when to use dots.
6515
6516         * mswindows.c (ws_hangup): Call log_request_redirect_output.
6517
6518         * utils.c (fork_to_background): Print the PID of the child
6519         process.
6520
6521         * log.c (log_request_redirect_output): Set a flag that output
6522         redirection has been requested.  Doing anything else in a signal
6523         handler is unsafe.
6524         (check_redirect_output): New function: check whether redirection
6525         has been requested and, if so, call redirect_output().
6526         (logputs): Call check_redirect_output.
6527         (logprintf): Ditto.
6528         (debug_logprintf): Ditto.
6529         (redirect_output): Print clearer messages.
6530
6531         * main.c (redirect_output_signal): Don't call
6532         redirect_output_signal directly.  Instead, call
6533         log_request_redirect_output.
6534
6535         * utils.c (memfatal): Ditto.
6536
6537         * progress.c (display_image): Use it.
6538
6539         * log.c (log_set_save_context): New function: allow the caller to
6540         turn off saving log context lines.
6541
6542 2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
6543
6544         * host.c (address_list_set_faulty): Uncomment a sanity check.
6545
6546 2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
6547
6548         * utils.c (long_to_string): Return a pointer after where the
6549         number ends.
6550         (long_to_string): Rename to number_to_string.
6551
6552 2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
6553
6554         * utils.c (path_simplify): Correctly handle the unlikely case that
6555         b starts out as path + 1.
6556
6557 2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
6558
6559         * utils.c (path_simplify): Rewrite, with better comments, and
6560         without the use of strcpy to move overlapping blocks.
6561
6562 2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
6563
6564         * init.c (cmd_spec_progress): Resurrect.  Check whether VAL is a
6565         valid progress type before setting it.
6566
6567 2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
6568
6569         * main.c (main): Remove stray debugging message.
6570
6571 2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
6572
6573         * progress.c (create_image): Fix ETA padding when hours are prined.
6574
6575 2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
6576
6577         * version.c: Wget 1.8 is released.
6578
6579 2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
6580
6581         * url.c (reencode_string): Declare static.
6582
6583         * res.c (registered_specs): Declare static.
6584
6585         * progress.c (current_impl_locked): Declare static.
6586
6587         * log.c (flush_log_p): Declare static.
6588         (needs_flushing): Ditto.
6589
6590         * http.c (digest_authentication_encode): Declare static.
6591
6592         * html-url.c (init_interesting): Declare static.
6593
6594         * host.c (host_name_addresses_map): Declare static.
6595
6596         * cookies.c (find_matching_chains): Declare static.
6597
6598         * ftp-ls.c (ftp_parse_vms_ls): Warn about the memory leak
6599         indicated by lint.
6600
6601         * utils.c (path_simplify): Remove unused variable STUB_CHAR.
6602
6603         * host.c (address_list_set_faulty): Document that INDEX is
6604         currently unused.
6605
6606         * url.c (rewrite_shorthand_url): Remove unused variable PATH.
6607
6608 2001-12-08  Hrvoje Niksic  <hniksic@arsdigita.com>
6609
6610         * version.c: Wget 1.8-pre2 is released.
6611
6612 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
6613
6614         * progress.c (progress_handle_sigwinch): Set up the signal again.
6615
6616         * utils.c: Include <sys/termios.h>, where Solaris defines
6617         TIOCGWINSZ.
6618
6619         * progress.c (bar_create): Don't use the last column on the screen.
6620         (create_image): Pad ETA to constant size.  Pad SIZE to nine digits
6621         only until it exceeded them.
6622
6623 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
6624
6625         * version.c: Wget 1.8-pre1 is released.
6626
6627 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
6628
6629         * progress.c (progress_create): Make sure that, when the output is
6630         redirected, the progress implementation gets changed to the
6631         fallback one.
6632         (bar_set_params): Set current_impl_locked to 1 when "force" is
6633         specified.
6634         (progress_create): Don't change the progress implementation if
6635         current_impl_locked is non-zero.
6636
6637         * main.c (redirect_output_signal): Call
6638         progress_schedule_redirect.
6639
6640         * progress.c (progress_schedule_redirect): New function.
6641
6642 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
6643
6644         * log.c (logvprintf): Restructure to allow being called multiple
6645         times.
6646         (logprintf): Call logvprintf in a loop.
6647         (debug_logprintf): Ditto.
6648
6649 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
6650
6651         * gen_sslfunc.c (ssl_init_prng): Allow the user to disable EGD by
6652         setting egd_file it to empty string.
6653
6654         * main.c (main): Change the option name from --sslegdsock to
6655         --egd-file.
6656
6657 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
6658
6659         * gen_sslfunc.c (ssl_init_prng): Make the printed message
6660         translatable.
6661
6662 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
6663
6664         * url.c (scheme_disable): New function.
6665
6666         * main.c (main): Call ssl_init_prng from here rather than from
6667         init_ssl, so that it has a chance to disable support for https
6668         before a URL has been resolved.
6669
6670         * gen_sslfunc.c (ssl_init_prng): Seed with rand() if all else
6671         failed.
6672         (ssl_init_prng): Disable support for https if seeding the PRNG
6673         fails.
6674
6675 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
6676
6677         * utils.c (read_whole_line): Handle lines beginning with \0.
6678
6679 2001-12-05  Hrvoje Niksic  <hniksic@arsdigita.com>
6680
6681         * recur.c (convert_all_links): Guard against duplicates in
6682         downloaded_html_files.
6683         (register_download): Don't invalidate similar-looking URLs.
6684         (match_except_index): New function.
6685
6686 2001-12-05  Hrvoje Niksic  <hniksic@arsdigita.com>
6687
6688         * utils.c (path_simplify): Document with test cases.
6689
6690 2001-12-04  Hrvoje Niksic  <hniksic@arsdigita.com>
6691
6692         * gen_sslfunc.c: Ditto.
6693
6694         * rbuf.c: Include <string.h>.
6695
6696 2001-12-04  Hrvoje Niksic  <hniksic@arsdigita.com>
6697
6698         * recur.c (retrieve_tree): Check whether the URL was already
6699         downloaded before downloading it again.
6700         (descend_child_p): Renamed to download_child_p.
6701         (register_download): When one URL is downloaded to a file already
6702         "owned" by another URL, delete all references that map any URL to
6703         that file.
6704         (register_delete_file): New function.
6705         (retrieve_tree): Use it after deleting a file.
6706
6707         * url.c (url_parse): Re-canonicalize the URL also if the path is
6708         empty, so that e.g. "http://www.server.com" ->
6709         "http://www.server.com/".
6710         (lowercase_str): Use ISUPPER instead of !ISLOWER.
6711
6712         * retr.c (retrieve_url): Use the canonical URL form when calling
6713         register_download().
6714
6715 2001-12-04  Ian Abbott <abbotti@mev.co.uk>
6716
6717         * snprintf.c (dopr): Use `unsigned int' as the second argument to
6718         va_arg when casting to `unsigned short' is intended.
6719
6720 2001-12-04  Herold Heiko  <Heiko.Herold@previnet.it>
6721
6722         * gen_sslfunc.c: on windows provide ssl crypto random
6723           initialization through RAND_screen(); could possibly
6724           be not enough for strong ssl communication (see the
6725           relevant manual page from the openssl package).
6726
6727 2001-12-04  Hrvoje Niksic  <hniksic@arsdigita.com>
6728
6729         * url.c (local_quote_string): Reenable quoting of question marks,
6730         but only when `--html-extension' is used.
6731
6732 2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
6733
6734         * version.c: Wget 1.8-beta3 is released.
6735
6736 2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
6737
6738         * snprintf.c (dopr): Cast the result of va_arg to short int and
6739         short unsigned int where these types are expected to be used.
6740
6741 2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
6742
6743         * snprintf.c (dopr): Replace `short int' and `unsigned short int'
6744         with `int' when using it as the second argument to `va_arg'.
6745
6746 2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
6747
6748         * host.c (address_list_new_one): New function.
6749         (lookup_host): Use it.
6750
6751 2001-12-03  Andre Majorel  <amajorel@teaser.fr>
6752
6753         * host.c (lookup_host): Don't initialize TMPSTORE directly because
6754         it's not legal C.
6755
6756 2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
6757
6758         * ftp-basic.c (ftp_port): Don't return HOSTERR if we fail getting
6759         the socket data.
6760
6761         * ftp.c: Ditto.
6762
6763         * http.c: No need to declare h_errno.
6764
6765         * host.c: Declare h_errno.
6766
6767 2001-12-02  Hrvoje Niksic  <hniksic@arsdigita.com>
6768
6769         * utils.c (file_merge): If BASE doesn't contain a slash, just
6770         return a copy of FILE.
6771
6772 2001-12-02  Hrvoje Niksic  <hniksic@arsdigita.com>
6773
6774         * version.c: Wget 1.8-beta2 is released.
6775
6776 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
6777
6778         * ftp.c (getftp): When PWD fails, assume "/".
6779
6780         * ftp-basic.c (ftp_syst): Fix indentation.
6781
6782 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
6783
6784         * url.c (get_urls_file): If opt.base_href is specified, merge each
6785         URL with the base.
6786
6787 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
6788
6789         * main.c (print_help): Don't document the removed `-nh'.
6790
6791 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
6792
6793         * url.c (url_full_path): Document better.
6794
6795         * http.c (gethttp): Use the full path when creating digest
6796         authorization.
6797
6798 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
6799
6800         * cookies.c (path_matches): Return 0 if PREFIX doesn't begin with
6801         '/'.
6802
6803 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
6804
6805         * cookies.c (path_matches): FULL_PATH doesn't begin with '/', but
6806         PREFIX does.
6807
6808 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
6809
6810         * cookies.c (check_domain_match): Reimplement to match Netscape's
6811         "preliminary specification" for cookies.
6812
6813 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
6814
6815         * url.c (replace_attr_refresh_hack): New function.
6816         (convert_links): Call replace_attr_refresh_hack for Refresh
6817         links.  It will add the "TMOUT; URL=" junk before the link.
6818
6819         * html-url.c (collect_tags_mapper): Set ID to the ID of the
6820         "content" attribute, not "http-equiv".
6821         (collect_tags_mapper): Don't use OFFSET to hack the raw_* values;
6822         instead, store the information that this entry belongs to a
6823         "refresh" link.
6824
6825 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
6826
6827         * version.c: Wget 1.8-beta1 is released.
6828
6829 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
6830
6831         * recur.c (retrieve_tree): Allow -p retrievals to exceed maximum
6832         depth by more than one.
6833
6834 2001-11-30  Hrvoje Niksic  <hniksic@arsdigita.com>
6835
6836         * retr.c (retrieve_url): Don't allow more than 20 redirections.
6837
6838 2001-11-30  Hrvoje Niksic  <hniksic@arsdigita.com>
6839
6840         * recur.c (retrieve_tree): Skip the non-inline entries when
6841         enqueuing the children of a leaf HTML node in -p mode.
6842         (descend_url_p): Ignore opt.no_parent when in -p mode and UPOS is
6843         "inline".
6844
6845         * html-url.c (get_urls_html): Don't accept dash_p_leaf_HTML.
6846         (collect_tags_mapper): When an entry is "inline", mark it as such.
6847
6848         * recur.c (descend_url_p): Fix test when checking for
6849         acceptance/rejection rules.
6850
6851 2001-10-31 Daniel BODEA <dali@dali-designs.com>
6852
6853         * netrc.c (search_netrc): When slack_default is 0, still look for
6854         an account with matching password, just not the "default account".
6855         HTTP Authorization using .netrc should now work as expected.
6856
6857 2001-11-30  T. Bharath  <TBharath@responsenetworks.com>
6858
6859         * http.c (persistent_available_p): Call SHUTDOWN_SSL if
6860         test_socket_open fails.
6861
6862 2001-11-30  Hrvoje Niksic  <hniksic@arsdigita.com>
6863
6864         * progress.c (display_image): Just print one CR to reset the
6865         cursor position.
6866
6867 2001-11-30  Christian Fraenkel  <c.fraenkel@gmx.net>
6868
6869         * init.c: New command `ssl_egd_sock'.
6870
6871         * main.c (main): New option `--sslegdsock'.
6872
6873         * gen_sslfunc.c (ssl_init_prng): Seed the RNG using EGD.
6874
6875 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
6876
6877         * cmpt.c (memmove): Include a simple memmove implementation.
6878
6879 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
6880
6881         * headers: Guard against header files being included twice.
6882
6883 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
6884
6885         * gen-md5.c: Use unsigned char * as the buffer argument to
6886         gen_md5_update.
6887
6888 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
6889
6890         * connect.h: Declare select_fd.
6891
6892 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
6893
6894         * recur.c (descend_url_p): When resolving no_parent, compare with
6895         start_url, not parent url.  Otherwise link from /a/b/ to /a/c/
6896         wouldn't be followed, although the download started from /a/.
6897
6898 2001-01-23  Herold Heiko  <Heiko.Herold@previnet.it>
6899
6900         * config.h.ms, mswindows.h: defined HAVE_ISATTY, use _isatty for
6901         MS VC; somebody with Borland compiler please check and provide
6902         patch if possible;
6903
6904         * cmpt.c: provided a usleep emulation.
6905
6906 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
6907
6908         * host.c (address_list_new): Initialize al->faulty.
6909
6910 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
6911
6912         * http.c (http_process_range): Accept the broken output of
6913         "JavaWebServer/1.1.1".
6914
6915 2001-11-28  Hrvoje Niksic  <hniksic@arsdigita.com>
6916
6917         * progress.c (dot_set_params): If PARAMS is unspecified, use
6918         dot_style, if available.
6919
6920         * init.c: Ditto.
6921
6922         * main.c (main): Resurect --dot-style.
6923
6924         * progress.c (dot_finish): Print the quantity if we're left at the
6925         beginning of a row.
6926
6927 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
6928
6929         * cmpt.c (random): Removed.
6930
6931         * retr.c (sleep_between_retrievals): Use the more portable rand()
6932         instead of random().
6933
6934 2001-11-27  Ian Abbott <abbotti@mev.co.uk>
6935
6936         * retr.c (retrieve_from_file): Initialize `new_file' to NULL to
6937         prevent seg fault.
6938
6939 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
6940
6941         * connect.c (connect_to_many): Use address_list_set_faulty to
6942         prevent the faulty address from being reused.
6943
6944         * host.c (address_list_set_faulty): New function.
6945         (address_list_get_bounds): New function, instead of
6946         address_list_count.
6947
6948 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
6949
6950         * url.c (convert_links): Don't translate %d-%d.
6951
6952         * main.c (print_help): Remove stray HAVE_RANDOM code.
6953
6954 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
6955
6956         * ftp.c (getftp): Improve output after sending PASV.  Don't
6957         attempt to "look up" the IP address we already know; call
6958         connect_to_one directly.
6959
6960 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
6961
6962         * progress.c: Change the default progress implementation to "bar".
6963
6964 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
6965
6966         * progress.c (bar_create): Print two newlines.
6967
6968 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
6969
6970         * cmpt.c (random): New function, a simple-minded replacement for
6971         random() on systems that don't have it.
6972
6973 2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
6974
6975         * config.h.in: Put a HAVE_USLEEP stub.
6976
6977         * cmpt.c (usleep): Replacement implementation of usleep using
6978         select.
6979
6980         * init.c: New option init_rate.
6981
6982         * main.c (main): New option --limit-rate.
6983
6984         * retr.c (limit_bandwidth): New function.
6985         (get_contents): Call it to limit the bandwidth used when
6986         downloading.
6987
6988         * progress.c (dot_update): Would print the wrong download speed on
6989         rows other than the first one when the download was continued.
6990         (dot_finish): Ditto.
6991
6992 2001-11-26  Ian Abbott <abbotti@mev.co.uk>
6993
6994         * http.c (gethttp): fix undeclared variable 'err' when compiled
6995         with HAVE_SSL.
6996
6997 2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
6998
6999         * progress.c: Don't allocate new timers; use the timing data
7000         propagated from the caller.
7001
7002         * retr.c (get_contents): Allocate and use a timer.
7003
7004 2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
7005
7006         * http.c (last_host_ip): Made into an address_list.
7007         (invalidate_persistent): Release pc_last_host_ip.
7008         (register_persistent): Use lookup_host.
7009         (persistent_available_p): Check for equality of hosts using
7010         address_list_match_all.  Call address_list_release.
7011         (http_cleanup): New function.
7012
7013         * ftp.c (getftp): Use lookup_host and connect_to_many.
7014
7015         * http.c (gethttp): Use lookup_host and connect_to_many.
7016
7017         * connect.c (make_connection): Removed.
7018         (connect_to_one): New function.
7019         (connect_to_many): Ditto.
7020         (set_connection_host_name): Ditto.
7021
7022         * host.c (lookup_host): New function; new return type.
7023         (address_list_new): New function.
7024         (address_list_count): Ditto.
7025         (address_list_copy_one): Ditto.
7026         (address_list_delete): Ditto.
7027         (address_list_release): Ditto.
7028         (pretty_print_address): Ditto.
7029
7030 2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
7031
7032         * recur.c (retrieve_tree): In case of followed redirection,
7033         blacklist the pre-redirection URL.
7034
7035 2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
7036
7037         * recur.c (descend_redirect_p): New function.
7038         (retrieve_tree): Make sure redirections are not blindly followed.
7039
7040 2001-11-04  Alan Eldridge  <alane@geeksrus.net>
7041
7042         * config.h.in: added HAVE_RANDOM.
7043
7044         * options.h: added random_wait to struct options.
7045
7046         * main.c (print_help [HAVE_RANDOM], main): added arg parsing, help
7047         for --random-wait.
7048
7049         * retr.c (sleep_between_retrievals) [HAVE_RANDOM]: added
7050         implementation of random wait times.
7051
7052         * init.c (commands): added "randomwait" keyword.
7053
7054 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
7055
7056         * recur.c (descend_url_p): Be more conservative with blacklisting
7057         URLs.
7058         (convert_all_links): Print how many files have been converted, and
7059         how long it took.
7060
7061         * progress.c (create_image): Place the number of downloaded bytes
7062         right after the progress bar.
7063
7064         * utils.c (suffix): Return a pointer into the string.
7065
7066 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
7067
7068         * url.c (convert_links): Handle CO_NULLIFY_BASE.
7069
7070         * recur.c (retrieve_tree): Ignore download-ignorable children.
7071         (convert_all_links): Specify CO_NULLIFY_BASE when link_base_p.
7072
7073         * html-url.c (handle_link): Return the newly created urlpos.
7074         (collect_tags_mapper): When dealing with BASE, store the base
7075         reference and mark it as download-ignorable.
7076
7077 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
7078
7079         * url.c (convert_links): Attempt to quote '?' as "%3F" when
7080         linking to local files.  Given up on the attempt, as it breaks
7081         local browsing.
7082
7083 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
7084
7085         * main.c (private_initialize): Removed.
7086         (main): Don't call private_initialize.
7087
7088         * http.c: Call lookup_host.
7089
7090         * host.c (host_init): Removed.
7091         (add_host_to_cache): Initialize host_name_address_map here, on
7092         demand.
7093         (ngethostbyname): Commented out.
7094
7095         * connect.c (make_connection): Remove dead code; use lookup_host.
7096
7097         * host.c (store_hostaddress): Renamed to lookup_host and reversed
7098         the args.
7099         Removed host_address_name_map and host_slave_master_map.
7100
7101 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
7102
7103         * progress.c (dot_create): Align the "[ skipping ... ]" string
7104         with the dots.
7105
7106         * retr.c (rate): Split into two functions: calc_rate and
7107         retr_rate.
7108
7109         * progress.c (create_image): Draw a dummy progress bar even when
7110         total size is unknown.
7111         (display_image): Place the text cursor at the end of the "image".
7112
7113 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
7114
7115         * url.c (reencode_string): Use unsigned char, not char --
7116         otherwise the hex digits come out wrong for 8-bit chars such as
7117         nbsp.
7118         (lowercase_str): New function.
7119         (url_parse): Canonicalize u->url if needed.
7120         (get_urls_file): Parse each URL, and return only the valid ones.
7121         (free_urlpos): Call url_free.
7122         (mkstruct): Add :port if the port is non-standard.
7123         (mkstruct): Append the query string to the file name, if any.
7124         (urlpath_length): Use strpbrk_or_eos.
7125         (uri_merge_1): Handle the cases where LINK is an empty string,
7126         where LINK consists only of query, and where LINK consists only of
7127         fragment.
7128         (convert_links): Count and report both kinds of conversion.
7129         (downloaded_file): Use a hash table, not a list.
7130         (downloaded_files_free): Free the hash table.
7131
7132         * retr.c (retrieve_from_file): Ditto.
7133
7134         * main.c (main): Call either retrieve_url or retrieve_tree
7135         for each URL, not both.
7136
7137         * retr.c (register_all_redirections): New function.
7138         (register_redirections_mapper): Ditto.
7139         (retrieve_url): Register the redirections.
7140         (retrieve_url): Make the string "Error parsing proxy ..."
7141         translatable.
7142
7143         * res.c (add_path): Strip leading slash from robots.txt paths so
7144         that the path representations are "compatible".
7145         (free_specs): Free each individual path, too.
7146         (res_cleanup): New function.
7147         (cleanup_hash_table_mapper): Ditto.
7148
7149         * recur.c (url_queue_new): New function.
7150         (url_queue_delete): Ditto.
7151         (url_enqueue): Ditto.
7152         (url_dequeue): Ditto.
7153         (retrieve_tree): New function, replacement for recursive_retrieve.
7154         (descend_url_p): New function.
7155         (register_redirection): New function.
7156
7157         * progress.c (create_image): Cosmetic changes.
7158
7159         * init.c (cleanup): Do all those complex cleanups only if
7160         DEBUG_MALLOC is defined.
7161
7162         * main.c: Removed --simple-check and the corresponding
7163         simple_host_check in init.c.
7164
7165         * html-url.c (handle_link): Parse the URL here, and propagate the
7166         parsed URL to the caller, who would otherwise have to parse it
7167         again.
7168
7169         * host.c (xstrdup_lower): Moved to utils.c.
7170         (realhost): Removed.
7171         (same_host): Ditto.
7172
7173 2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
7174
7175         * utils.c (path_simplify): Preserver the (non-)existence of
7176         leading slash.  Return non-zero if changes were made.
7177
7178 2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
7179
7180         * progress.c (bar_update): Don't modify bp->total_length if it is
7181         zero.
7182
7183 2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
7184
7185         * retr.c (retrieve_url): When the redirection URL doesn't parse,
7186         print the correct error message rather than "UNKNOWN".
7187
7188 2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
7189
7190         * progress.c (bar_finish): If the timer didn't record any time
7191         since the download beginning, fake 1ms.
7192
7193 2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
7194
7195         * recur.c (recursive_retrieve): Fix typo.
7196
7197 2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
7198
7199         * progress.c (create_image): Don't translate "%ld ".
7200
7201 2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
7202
7203         * progress.c (bar_set_params): Allow the user to force the use of
7204         the bar.
7205
7206 2001-11-23  Lemble Gregory  <gregory.lemble@st.com>
7207
7208         * gen_sslfunc.c (ssl_init_prng): New function; seed the SSL RNG.
7209
7210 2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
7211
7212         * progress.c: Renamed dp_* functions to dot_* for greater clarity
7213         and consistency with bar_*.
7214         (print_download_speed): Get rid of the unneeded '@' character.
7215         (create_image): Fix download rate geometry.
7216
7217         * progress.c (print_elapsed): Remove spurious space.
7218         (print_elapsed): Renamed to print_download_speed, since that's
7219         what it does.
7220
7221 2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
7222
7223         * progress.c (bar_update): If the downloaded amount becomes larger
7224         than the expected amount, adjust the expected amount accordingly.
7225
7226 2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
7227
7228         * utils.c (determine_screen_width): New function.
7229
7230         * main.c (main): New option `--progress=TYPE'.
7231         (main): Implement compatibility with the old option `--dot-style'.
7232
7233         * init.c: Removed cmd_spec_dotstyle -- that logic is now in
7234         dp_set_params.
7235         (cmd_spec_progress): New function.
7236
7237         * retr.c (get_contents): Use the progress_* functions instead of
7238         the old show_progress().
7239         (show_progress): Removed.
7240         (rate): Print "xxxx.xx K/s" instead of "KB/s".  Ditto for MB/s,
7241         etc.
7242
7243         * progress.c (set_progress_implementation): New function.
7244         (valid_progress_implementation_p): Ditto.
7245         (progress_create): Ditto.
7246         (progress_update): Ditto.
7247         (progress_finish): Ditto.
7248         (dp_create): Ditto.
7249         (dp_update): Ditto.
7250         (dp_finish): Ditto.
7251         (dp_set_params): Ditto.
7252         (print_elapsed): Ditto.
7253
7254 2001-11-22  Hrvoje Niksic  <hniksic@arsdigita.com>
7255
7256         * retr.c (show_progress): Use it.
7257
7258         * log.c (log_set_flush): New function.
7259
7260 2001-11-22  Hrvoje Niksic  <hniksic@arsdigita.com>
7261
7262         * utils.c (path_simplify): Don't remove trailing slashes.
7263
7264         * ftp.c (ftp_get_listing): Use it.
7265
7266         * utils.c (file_merge): New function.
7267
7268         * url.c (opt_url): Removed.
7269
7270         * recur.c (recursive_retrieve): Inline "opt_url" logic.
7271
7272         * main.c (main): Use xfree(), not free().
7273
7274         * url.c (rewrite_url_maybe): Renamed to rewrite_shorthand_url.
7275
7276         * ftp.c (ccon): Move `ccon' typedef here, since it's only used
7277         internally.
7278
7279         * config.h.in: Include a stub for HAVE_STRPBRK.
7280
7281         * cmpt.c (strpbrk): Include a replacement for systems without
7282         strpbrk().
7283
7284         * ftp.c: Use url_set_dir and url_set_file when modifying the URL.
7285
7286         * url.c (url_set_dir): New function.
7287         (url_set_file): Ditto.
7288
7289         * ftp-basic.c (ftp_process_type): Process FTP type here; the URL
7290         parser makes the URL "params" available, so we can do that in this
7291         function.
7292
7293         * retr.c: Ditto.
7294
7295         * ftp.c: Ditto; pass the local file information in `ccon'.
7296
7297         * http.c: Get rid of the ugly kludge that had URL being replaced
7298         with the proxy URL when proxy retrieval was requested.  Use a
7299         separate parameter to http_loop and gethttp for the proxy URL.
7300
7301         * http.c: Changed to reflect the fact that local file, proxy, and
7302         referer information are no longer stored in struct url.  The local
7303         file information is passed in `struct hstat' now.
7304
7305         * url.c: Reworked URL parsing to be more regular.  Reencode the
7306         URL using reencode_string.
7307         Removed non-URL-related information from struct url.  This
7308         includes fields `proxy', `local', and `referer'.
7309
7310 2001-11-22  Jochen Hein  <jochen@jochen.org>
7311
7312         * main.c (main): Split the copyright notice for easier
7313         translation.
7314
7315 2001-08-21  Dave Turner <dct25@hermes.cam.ac.uk>
7316
7317         * ftp-basic.c (ftp_size): New function to send non-standard SIZE
7318           command to server to request file size.
7319         * ftp.h (ftp_size): Export it.
7320         * ftp.c (getftp): Use new ftp_size function if restoring
7321           transfer of a file with unknown size.
7322
7323 2001-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
7324
7325         * url.c (parseurl): Don't depend on the now-obsolete TYPE.
7326
7327 2001-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
7328
7329         * url.c (getproxy): Handle URL shorthands.
7330
7331 2001-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
7332
7333         * main.c: Remove --wait / --waitretry backwards compatibility
7334         code.
7335
7336 2001-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
7337
7338         * main.c (main): Use it.
7339
7340         * url.c (rewrite_url_maybe): New function.
7341
7342 2001-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
7343
7344         * url.c: Clean up handling of URL schemes.
7345
7346 2001-05-13  Hrvoje Niksic  <hniksic@arsdigita.com>
7347
7348         * url.c: Get rid of `protostrings'.
7349         (skip_proto): Don't use protostrings.
7350         (has_proto): Ditto.
7351
7352 2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
7353
7354         * Makefile.in: Conditionally compile getopt.o.
7355
7356 2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
7357
7358         * md5.h: Renamed to gnu-md5.h.
7359
7360         * md5.c: Renamed to gnu-md5.c.
7361
7362         * http.c: Ditto.
7363
7364         * ftp-opie.c: Use the new macros.
7365
7366         * sysdep.h: Define md5-related macros.
7367
7368         * config.h.in: Define HAVE_SOLARIS_MD5 or HAVE_BUILTIN_MD5
7369         depending on which md5 implementation is used.
7370
7371 2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
7372
7373         * res.c (res_register_specs): Initialize OLD and HP_OLD to appease
7374         the compiler.
7375
7376 2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
7377
7378         * http.c (gethttp): Print the whole response line when printing
7379         headers is requested.
7380
7381 2001-05-12  Hrvoje Niksic  <hniksic@arsdigita.com>
7382
7383         * res.c: New file.  Implement all RES-related code here.
7384
7385 2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
7386
7387         * version.c: Wget 1.7.1 is released.
7388
7389 2001-11-16  Hrvoje Niksic  <hniksic@arsdigita.com>
7390
7391         * headers.c (header_extract_number): Ignore trailing whitespace.
7392
7393 2001-08-24  Ian Abbott  <abbotti@mev.co.uk>
7394
7395         * html-url.c (collect_tags_mapper): Fix bug converting links
7396         with -k option for tags with multiple link attributes by
7397         handling links in the order they appear.
7398
7399 2001-08-15  Ian Abbott  <abbotti@mev.co.uk>
7400
7401         * ftp.c (ftp_loop_internal): Avoid a potential buffer overflow in
7402           the call to the 'rate' function by moving it past the error
7403           checking for the 'getftp' function return value.
7404
7405 2001-11-16  Hrvoje Niksic  <hniksic@arsdigita.com>
7406
7407         * html-parse.c (advance_declaration): Use 0x22 instead of '"' or
7408         '\"'.  Different compilers' assert macros are broken in different
7409         ways.
7410
7411 2001-09-29  Christian Fraenkel  <c.fraenkel@gmx.net>
7412
7413         * http.c (gethttp): print debug output for errors occuring during
7414         the ssl handshake.
7415
7416 2001-11-16  Chris Seawood  <cls@seawood.org>
7417
7418         * init.c: Ditto.
7419
7420         * host.c: Ditto.
7421
7422         * connect.c: Ditto.
7423
7424         * sysdep.h: Support compilation under BEOS.
7425
7426 2001-06-08  Edward J. Sabol  <sabol@alderaan.gsfc.nasa.gov>
7427
7428         * url.c (url_equal): Fix a memory leak when parseurl returns an
7429         error on the second URL. Also, since url_equal is not used at the
7430         moment, do not compile it.
7431
7432         * url.h: Ditto for the prototype of url_equal.
7433
7434 2001-11-16  Hrvoje Niksic  <hniksic@arsdigita.com>
7435
7436         * html-parse.c (map_html_tags): Support XML-style empty tags.
7437
7438 2001-06-26  Hrvoje Niksic  <hniksic@arsdigita.com>
7439
7440         * wget.h (DO_REALLOC_FROM_ALLOCA): Check for do_realloc_newsize in
7441         loop condition because we're no longer setting SIZEVAR here.
7442
7443 2001-06-26  Hrvoje Niksic  <hniksic@arsdigita.com>
7444
7445         * wget.h (DO_REALLOC_FROM_ALLOCA): Set SIZEVAR after the memcpy()
7446         call because it needs the old value.
7447
7448 2001-06-18  Hrvoje Niksic  <hniksic@arsdigita.com>
7449
7450         * cookies.c (ATTR_NAME_CHAR): Allow almost any character to be in
7451         an attribute name.
7452
7453 2001-06-18  Hrvoje Niksic  <hniksic@arsdigita.com>
7454
7455         * url.c (url_filename): Make sure that slashes that sneak in to
7456         u->file via query string get protected.
7457         (file_name_protect_query_string): New function.
7458
7459 2001-06-14  Hrvoje Niksic  <hniksic@arsdigita.com>
7460
7461         * recur.c (recursive_retrieve): Also check undesirable_urls with
7462         canonicalized URL.
7463
7464 2001-06-14  Hrvoje Niksic  <hniksic@arsdigita.com>
7465
7466         * http.c (gethttp): Search `.netrc' with real host, not the proxy
7467         one.
7468
7469 2001-06-14  Hrvoje Niksic  <hniksic@arsdigita.com>
7470
7471         * sysdep.h (MAP_FAILED): Provide MAP_FAILED for systems that don't
7472         define it.
7473
7474 2001-06-09  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
7475
7476         * ftp.h: Provide correct prototype for ftp_parse_ls().
7477
7478 2001-06-04  Hrvoje Niksic  <hniksic@arsdigita.com>
7479
7480         * version.c: Wget 1.7 is released.
7481
7482 2001-06-03  Karl Eichwalder  <ke@suse.de>
7483
7484         * ftp-ls.c (ftp_parse_ls): Fix typo.
7485
7486 2001-05-27  Hrvoje Niksic  <hniksic@arsdigita.com>
7487
7488         * all: Update copyright information.
7489
7490 2001-05-26  Hrvoje Niksic  <hniksic@arsdigita.com>
7491
7492         * http.c (gethttp): Indicate that the continued download failed
7493         for *this* file.
7494
7495 2001-05-26  Hrvoje Niksic  <hniksic@arsdigita.com>
7496
7497         * version.c: Wget 1.7-pre1 is released.
7498
7499 2001-05-26  Hrvoje Niksic  <hniksic@arsdigita.com>
7500
7501         * version.c: Updated version to 1.7-pre1.
7502
7503 2001-05-14  Hrvoje Niksic  <hniksic@arsdigita.com>
7504
7505         * gen_sslfunc.c: Don't include <sys/time.h> directly.
7506
7507 2001-05-14  Hrvoje Niksic  <hniksic@arsdigita.com>
7508
7509         * http.c (gethttp): Use real URL data for cookies, not the proxy
7510         stuff.
7511
7512 2001-05-12  Hrvoje Niksic  <hniksic@arsdigita.com>
7513
7514         * main.c (print_help): Document `--no-http-keep-alive'.
7515
7516         * utils.c (numdigit): Handle negative numbers *correctly*.
7517
7518         * hash.c (make_nocase_string_hash_table): Use term "nocase" rather
7519         than the confusing "unsigned".
7520
7521         * utils.c (string_set_contains): Renamed from string_set_exists.
7522
7523         * hash.c (hash_table_contains): Renamed from hash_table_exists.
7524
7525         * cookies.c: Move case-insensitive hash tables to hash.c.
7526
7527 2001-05-09  Hrvoje Niksic  <hniksic@arsdigita.com>
7528
7529         * http.c (gethttp): Before concluding that the file is already
7530         fully retrieved, make sure that the file existed and `Range' was
7531         actually requested.
7532
7533 2001-05-09  Hrvoje Niksic  <hniksic@arsdigita.com>
7534
7535         * cookies.c (eliminate_dups): New function.
7536         (build_cookies_request): Use it.
7537         (build_cookies_request): Set chain_store_size after reallocating
7538         all_chains.
7539         (check_domain_match): Annotated for easier future debugging.
7540         (store_cookie): In the debug message, print whether the cookie is
7541         permanent.
7542
7543 2001-05-08  Hrvoje Niksic  <hniksic@arsdigita.com>
7544
7545         * http.c (http_loop): Reset no_truncate before deciding whether to
7546         set it.
7547         (gethttp): Further clarify "-c conflicts with existing file" error
7548         message, based on input from Herold Heiko.
7549
7550 2001-05-07  Hrvoje Niksic  <hniksic@arsdigita.com>
7551
7552         * http.c (http_loop): If restval is set, set no_truncate to 1
7553         unconditionally.
7554
7555 2001-05-02  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
7556
7557         * ftp-ls.c (ftp_parse_winnt_ls): Assure months are being correctly
7558         converted. Pointed out by <Stefan.Weil@de.heidelberg.com>.
7559         (ftp_parse_vms_ls): Ditto.
7560
7561 2001-04-30  Hrvoje Niksic  <hniksic@arsdigita.com>
7562
7563         * init.c (cmd_address): Zero SIN before using it; apparently
7564         needed on *BSD.
7565
7566 2001-04-29  Hrvoje Niksic  <hniksic@arsdigita.com>
7567
7568         * ftp.c (ftp_loop_internal): Don't set NO_TRUNCATE if the file is
7569         empty.
7570
7571 2001-04-29  Hrvoje Niksic  <hniksic@arsdigita.com>
7572
7573         * main.c (main): Make `--cookies' respect its argument.
7574
7575 2001-04-28  Hrvoje Niksic  <hniksic@arsdigita.com>
7576
7577         * main.c (main): Removed undocumented option `--email-address'.
7578
7579         * netrc.c: Use the latest read_whole_line.
7580
7581         * init.c (defaults): Set opt.ftp_pass to "-wget@".
7582
7583         * mswindows.c (pwd_cuserid): Ditto.
7584
7585         * utils.c (pwd_cuserid): Removed.
7586
7587         * host.c (ftp_getaddress): Removed.
7588
7589 2001-04-28  Hrvoje Niksic  <hniksic@arsdigita.com>
7590
7591         (http_loop): Allocate space for filename_plus_orig_suffix with
7592         alloca; this is more efficient and removes the need to free it
7593         before each and every return.
7594
7595 2001-04-28  Hrvoje Niksic  <hniksic@arsdigita.com>
7596
7597         * http.c (gethttp): Return RETRUNNEEDED when the retrieval is
7598         unneeded because the file is already there and fully downloaded,
7599         and -c is specified.
7600         (http_loop): Handle RETRUNNEEDED.
7601
7602         * wget.h (uerr_t): New value RETRUNNEEDED.
7603
7604         * http.c (http_loop): Set no_truncate for files that both exist
7605         and are non-empty.
7606         (gethttp): Consider the download finished when restval >= contlen,
7607         not only when restval==contlen.
7608         (gethttp): Handle redirection before giving up due to -c.
7609         (gethttp): Clarify error message which explains that -c will not
7610         truncate the file.
7611         (gethttp): When returning CONTNOTSUPPORTED, don't forget to free
7612         the stuff that needs freeing and release the socket.
7613
7614 2001-04-27  Hrvoje Niksic  <hniksic@arsdigita.com>
7615
7616         * main.c (print_help): Wget booleans accept "off", not "no".
7617
7618 2001-04-27  Hrvoje Niksic  <hniksic@arsdigita.com>
7619
7620         * http.c (http_loop): If allow_cache is zero, always disable
7621         caching, not only when retrieving through proxy.
7622
7623         * init.c: Ditto.
7624
7625         * options.h (struct options): Rename proxy_cache to allow_cache.
7626
7627 2001-04-27  Hrvoje Niksic  <hniksic@arsdigita.com>
7628
7629         * http.c (mktime_from_utc): Improve documentation.
7630         (http_atotm): Put format strings into a separate array.
7631
7632 2001-04-27  Hrvoje Niksic  <hniksic@arsdigita.com>
7633
7634         * safe-ctype.h: Instead of throwing #error when isalpha is
7635         defined, redefine it to something that will throw a compile-time
7636         error if actually *used*.  Do the same for the rest of the
7637         standard C macros.
7638
7639 2001-04-26  Hrvoje Niksic  <hniksic@arsdigita.com>
7640
7641         * url.c (getproxy): Ignore empty proxy vars.
7642
7643 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
7644
7645         * http.c (http_loop): Would load cookies every time.
7646
7647         * cookies.c (load_cookies): Handle cookies whose values contain
7648         embedded spaces.
7649
7650 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
7651
7652         * utils.c: Define each DIGITS_* in one line.
7653
7654 2001-04-25  Roger L. Beeman  <beeman@cisco.com>
7655
7656         * http.c (http_atotm): Initialize t.tm_isdst to 0.
7657         (mktime_from_utc): Prevent mktime() from having discontinuities at
7658         DST transition points.
7659
7660 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
7661
7662         * html-url.c (get_urls_html): Fix documentation.
7663
7664 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
7665
7666         * url.c (UNSAFE_CHAR): Reimplement using a static table.
7667         (url_init): Removed.
7668         (init_unsafe_char_table): Removed.
7669
7670 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
7671
7672         * snprintf.c (dopr): Replace ISDIGIT with '0' <= ch && ch <= '9'.
7673
7674 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
7675
7676         * utils.c: Document timer functions.
7677
7678         * retr.c (rate): Use it.
7679         (rate): Print in GB/s if transfer rate exceeds 1 GB/s.
7680
7681         * utils.c (wtimer_granularity): New function.
7682
7683 2001-04-24  Hrvoje Niksic  <hniksic@arsdigita.com>
7684
7685         * retr.c (show_progress): Ditto.
7686
7687         * ftp.c (getftp): Ditto.
7688
7689         * http.c (gethttp): Use new timer functions.
7690
7691         * utils.c (wtimer_allocate): New function.
7692         (wtimer_new): Ditto.
7693         (wtimer_delete): Ditto.
7694         (wtimer_reset): Ditto.
7695         (wtimer_elapsed): Ditto.
7696
7697 2001-04-24  Hrvoje Niksic  <hniksic@arsdigita.com>
7698
7699         * utils.c (long_to_string): New, faster version.  Favors smaller
7700         numbers; much of the calculation is now done at compile-time.
7701
7702 2001-04-24  Hrvoje Niksic  <hniksic@arsdigita.com>
7703
7704         * utils.c (numdigit): Handle negative numbers.
7705
7706 2001-04-23  Hrvoje Niksic  <hniksic@arsdigita.com>
7707
7708         * retr.c (show_progress): Print the download rate even when the
7709         percentages are not available.
7710
7711 2001-04-21  Hrvoje Niksic  <hniksic@arsdigita.com>
7712
7713         * ftp.c (getftp): Adjust expected_bytes if the length is
7714         authoritative.
7715
7716 2001-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
7717
7718         * url.c: Don't declare `construct'.
7719
7720         * hash.c (grow_hash_table): Speed up rehashing; inline storing of
7721         mappings to new locations.
7722         (hash_table_new): Make resize_threshold a field in the hash table,
7723         so we don't have to recalculate it in each hash_table_put.
7724         (grow_hash_table): Update resize_threshold.
7725         (MAX): Remove unused macro.
7726         (prime_size): Made static.
7727
7728 2001-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
7729
7730         * retr.c (retrieve_url): Call uri_merge, not url_concat.
7731
7732         * html-url.c (collect_tags_mapper): Call uri_merge, not
7733         url_concat.
7734
7735         * url.c (mkstruct): Use encode_string instead of xstrdup followed
7736         by URL_CLEANSE.
7737         (path_simplify_with_kludge): Deleted.
7738         (contains_unsafe): Deleted.
7739         (construct): Renamed to uri_merge_1.
7740         (url_concat): Renamed to uri_merge.
7741
7742 2001-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
7743
7744         * url.c (str_url): Use encode_string instead of the unnecessary
7745         CLEANDUP.
7746         (encode_string_maybe): New function, returns input string if no
7747         encoding is needed.
7748         (encode_string): Call encode_string_maybe to do the dirty work,
7749         xstrdup if no work needed.
7750
7751 2001-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
7752
7753         * wget.h (XDIGIT_TO_xchar): Define here.
7754
7755         * url.c (decode_string): Use new name.
7756         (encode_string): Ditto.
7757
7758         * http.c (XDIGIT_TO_xchar): Rename HEXD2asc to XDIGIT_TO_xchar.
7759         (dump_hash): Use new name.
7760
7761         * wget.h: Rename ASC2HEXD and HEXD2ASC to XCHAR_TO_XDIGIT and
7762         XDIGIT_TO_XCHAR respectively.
7763
7764 2001-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
7765
7766         * init.c: Include cookies.h.
7767
7768         * cookies.h: Declare cookies_cleanup.
7769
7770         * cookies.c (check_domain_match): Remove unused variable.
7771         (save_cookies): Remove extraneous argument from debug statement.
7772
7773         * host.c (same_host): Don't call skip_url.
7774
7775         * url.c (skip_url): Removed.  Removed its calls from various
7776         functions in url.c.
7777
7778 2001-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
7779
7780         * cookies.c (unsigned_string_hash): Use the new code in
7781         string_hash as reference.
7782
7783         * hash.c (hash_table_map): Allow deletion and change of the
7784         element processed by MAPFUN.
7785         (string_hash): Use the function from glib.
7786
7787 2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
7788
7789         * config.h.in: Include #undef stub.
7790
7791         * hash.c (hash_table_remove): Rewrite to actually clear deleted
7792         entries instead of just marking them as deleted.
7793
7794 2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
7795
7796         * hash.h: Declare hash_table_get_pair and hash_table_count.
7797
7798 2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
7799
7800         * cookies.c: Declare http_atotm.
7801
7802 2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
7803
7804         * ftp-ls.c (ftp_parse_unix_ls): Use octal constants for
7805         permissions.  A compiler that doesn't accept octal constants is
7806         seriously broken and shouldn't be used -- octal constants were
7807         present in K&R C!
7808
7809 2001-01-20  Karl Eichwalder  <ke@suse.de>
7810
7811         * Makefile.in: Provide and use DESTDIR according to the Coding
7812         Standards.
7813
7814 2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
7815
7816         * ftp-ls.c (ftp_parse_vms_ls): Make seconds optional in time
7817         specification.
7818
7819 2001-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
7820
7821         * url.c (parseurl): Don't strip trailing slash when u->dir is "/"
7822         because that strips the *leading* slash, thus forcing relative
7823         FTP retrieval.
7824
7825 2001-04-10  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
7826
7827         * ftp.c (getftp): Convert initial FTP directory from VMS to UNIX
7828         notation for VMS servers.
7829         (ftp_retrieve_dirs): Do not prepend '/' to f->name when
7830         odir is an empty string.
7831
7832 2001-04-10  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
7833
7834         * ftp-ls.c (ftp_parse_winnt_ls): Made the fix for AM/PM more
7835         effective. Suggested by Edward J. Sabol.
7836
7837 2001-04-10  Hrvoje Niksic  <hniksic@arsdigita.com>
7838
7839         * cookies.c (build_cookies_request): Use and sort cookies from all
7840         matching domains.
7841         (build_cookies_request): Check for duplicates before generating
7842         the `Cookies' header.
7843
7844         * main.c (main): Don't load cookies here.
7845         (main): Make loadcookies and savecookies call the correct command.
7846
7847         * http.c (http_loop): Load cookies on-demand.
7848
7849 2001-04-09  Hrvoje Niksic  <hniksic@arsdigita.com>
7850
7851         * http.c (gethttp): Fix indentation of SSL ifdef.
7852
7853 2001-04-09  Hrvoje Niksic  <hniksic@arsdigita.com>
7854
7855         * ftp.c (ftp_retrieve_dirs): Don't forcibly prepend "/" to u->dir;
7856         that hack is no longer necessary.
7857         (getftp): Prepend initial directory to *non*-absolute u->dir's.
7858
7859 2001-04-09  Hrvoje Niksic  <hniksic@arsdigita.com>
7860
7861         * init.c (cmd_file): New function.
7862         (enable_tilde_expansion): New variable.
7863         (run_wgetrc): Use it.
7864         (cmd_file): Use it.
7865
7866 2001-04-08  Hrvoje Niksic  <hniksic@arsdigita.com>
7867
7868         * init.c: Include cookie-related options.
7869
7870         * main.c (main): Include cookie-specific options.
7871         (main): Load cookies before download is finished.
7872         (main): Save cookies when done.
7873
7874         * http.c (gethttp): Process the `Set-Cookie' header.
7875         (gethttp): Include cookies in the response.
7876
7877         * cookies.c: New file.
7878
7879 2001-04-08  Hrvoje Niksic  <hniksic@arsdigita.com>
7880
7881         * utils.c (datetime_str): New function.
7882
7883 2001-04-08  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
7884
7885         * ftp-ls.c (ftp_parse_winnt_ls): The AM/PM change did assume
7886         12:01PM == 00:01, which was obviously wrong. Taken care of this
7887         anomaly.
7888
7889         * ChangeLog: Removed an excess conflict marker. Reformatted the
7890         entry by Philipp Thomas from 2001-03-09.
7891
7892         * ftp-ls.c (ftp_parse_winnt_ls): Ensure that adjusted PM hours lay
7893         between 0 and 23. Elminate unused variable `sec'.
7894
7895 2001-04-08  Hrvoje Niksic  <hniksic@arsdigita.com>
7896
7897         * hash.c (hash_table_count): New function.
7898
7899 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
7900
7901         * utils.c (read_file): Cast MAP_FAILED to char *.  Enforced by
7902         Digital Unix cc.
7903
7904 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
7905
7906         * config.h.in: Oops, do the namespace tweaks only on systems we
7907         know about.
7908
7909 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
7910
7911         * hash.c: Include <string.h>.
7912
7913 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
7914
7915         * config.h.in: Define "compilation environment" options that work
7916         under Linux and Solaris.  To be reviewed on other OS'es.
7917
7918 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
7919
7920         * http.c (gethttp): Prepend literal newline with `\n\'.
7921
7922 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
7923
7924         * sysdep.h: Don't define VERY_LONG_FORMAT.
7925
7926         * utils.c (very_long_to_string): New function.
7927         (legible_very_long): Use it; don't use VERY_LONG_FORMAT.
7928
7929 2001-04-04  Christian Fraenkel  <christian.fraenkel@gmx.net>
7930
7931         * url.c (parse_uname): Would run past the end of the string if the
7932         username was present, but the URL did not contain a slash, e.g.
7933         http://foo:bar@myhost.
7934
7935 2001-04-03  KOJIMA Hajime  <kjm@rins.ryukoku.ac.jp>
7936
7937         * http.c (http_atotm): Use %A instead of %a to match full
7938         weekday.  (On most systems there is no difference.)
7939
7940 2001-04-03  Paul Bludov  <paul@ozero.net>
7941
7942         * mswindows.c (sleep): Use SleepEx() instead of Sleep().
7943         (ws_changetitle): Use alloca() instead of malloc() to avoid memory
7944         leak.
7945         (ws_mypath): Use GetModuleFileName instead of argv[0].
7946         (ws_startup): Use data.wVersion for comparison.
7947
7948 2001-04-02  Hrvoje Niksic  <hniksic@arsdigita.com>
7949
7950         * http.c (http_loop): Ditto.
7951
7952         * ftp.c (ftp_loop_internal): Made the check whether to continue
7953         retrieval `-O'-friendly.
7954
7955 2001-04-02  Hrvoje Niksic  <hniksic@arsdigita.com>
7956
7957         * netrc.c (parse_netrc): Don't trim the line endings explicitly;
7958         they will be handled as whitespace.
7959         (parse_netrc): Correctly handle lines that end with whitespace.
7960
7961 2001-04-02  Hrvoje Niksic  <hniksic@arsdigita.com>
7962
7963         * retr.c (retrieve_url): New variable global_download_count used
7964         to identify first retrieval.
7965
7966         * ftp.c (getftp): Ditto.
7967
7968         * http.c (gethttp): Rewind opt.dfp only on first retrieval.
7969
7970 2001-04-02  Hrvoje Niksic  <hniksic@arsdigita.com>
7971
7972         * init.c (cmd_address): Heap-allocate the address that gets stored
7973         to CLOSURE.  Old code would simply assign an address on the stack.
7974
7975 2001-04-01  Nicolas Lichtmaier <nick@debian.org>
7976
7977         * ftp.c (ftp_get_listing): Propagate error status.
7978         (ftp_retrieve_glob): Use it.
7979         (ftp_loop): Ditto.
7980
7981 2001-04-01  Nicolas Lichtmaier <nick@debian.org>
7982
7983         * main.c (main): Add -C to the string that is the third arg to
7984         getopt_long().
7985
7986 2001-04-01  Hrvoje Niksic  <hniksic@arsdigita.com>
7987
7988         * ftp.c (getftp): Don't start the download from scratch if `-c'
7989         was specified, but the file is already fully downloaded.
7990
7991         * http.c (gethttp): Don't truncate a pre-existing file if `-c' was
7992         specified and the server doesn't support continued download.
7993         (gethttp): Don't start the download from scratch if `-c' was
7994         specified, but the file is already fully downloaded.
7995
7996 2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
7997
7998         (recursive_retrieve): Don't clear the hash tables at this point at
7999         all; it interferes with the normal operation of register_download.
8000
8001 2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
8002
8003         * recur.c (recursive_retrieve): Clear the hash tables only when
8004         they are defined.
8005
8006 2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
8007
8008         * http.c (gethttp): Make sure the socket is closed with
8009         CLOSE_INVALIDATE before we have drained the body.
8010
8011 2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
8012
8013         * retr.c (retrieve_url): Call register_download() for downloaded
8014         files and register_html() for downloaded HTML files.
8015
8016         * recur.c (register_download): New function; register here that a
8017         file has been downloaded, rather than in recursive_retrieve().
8018         (register_html): New function; enqueue the location of HTML files
8019         here rather than in recursive_retrieve().
8020
8021 2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
8022
8023         * main.c (print_help): Use multiple fputs instead of a single ugly
8024         printf().
8025         (main): Consistently assign numbers >128 to options without a
8026         corresponding character.
8027
8028 2001-03-09  Philipp Thomas  <pthomas@suse.de>
8029
8030         * safe-ctype.h: New file. Locale independent ctype.h replacement
8031         taken from libiberty.
8032
8033         * safe-ctype.c: New file. Tables for above.
8034
8035         * Makefile.in: Add safe-ctype$o to OBJS.  Add dependencies for
8036         safe-ctype$o.
8037
8038         * cmpt.c: Remove include of ctype.h. Use ISSPACE instead of
8039         isspace.
8040
8041         * ftp-basic.c: Don't include ctype.h.
8042
8043         * ftp-ls.c: Likewise.
8044
8045         * ftp.c: Likewise.
8046
8047         * headers.c: Likewise.
8048
8049         * host.c: Likewise.
8050
8051         * html-parse.c: Likewise.
8052
8053         * html-url.c: Likewise.
8054
8055         * http.c: Likewise.
8056
8057         * init.c: Likewise.
8058
8059         * main.c: Likewise. Set LC_CTYPE along with LC_MESSAGES.
8060
8061         * netrc.c: Likewise.
8062
8063         * recur.c: Likewise.
8064
8065         * retr.c: Likewise.
8066
8067         * snprintf.c: Replace ctype.h with safe-ctype.h. Use ISDIGIT
8068         instead of isdigit.
8069
8070         * sysdep.h: Remove defines of ctype macros as they aren't needed
8071         for safe-ctype-h.
8072
8073         * url.c: Don't include ctype.h.
8074
8075         * utils.c: Likewise.
8076
8077         * wget.h: Include safe-ctype.h.
8078
8079 2001-03-27  Dan Harkless  <wget@harkless.org>
8080
8081         * Makefile.in: Moved top_builddir out of "User configuration
8082         section" of top Makefile and analogous spot in this one.
8083
8084 2001-03-17  Dan Harkless  <wget@harkless.org>
8085
8086         * Makefile.in: Include @SSL_INCLUDES@ substition in INCLUDES.
8087         Define top_builddir.  Link wget with libtool so the user doesn't
8088         have to supply a bunch of custom environment variables to
8089         correctly link with the OpenSSL shared libraries.
8090
8091 2001-03-06  Hack Kampbjorn  <hack@hackdata.com>
8092
8093         * http.c (gethttp): skip :port in host header if it is the
8094         DEFAULT_HTTPS_PORT when using SSL.
8095
8096         * url.c: move the #define of DEFAULT_HTTP_PORT, DEFAULT_FTP_PORT
8097         and DEFAULT_HTTPS_PORT to the header file so it can be use in the
8098         rest of the code.
8099         * url.h: Ditto
8100
8101 2001-03-01  Jonas Jensen  <bones@huleboer.dk>
8102
8103         * retr.c (show_progress): Correctly calculate the number of bytes
8104         in the first line of the download that have been actually
8105         downloaded in this run.
8106
8107 2001-02-23  Dan Harkless  <wget@harkless.org>
8108
8109         * main.c (print_help): --help documentation for -N said it would
8110         re-download files if they had the _same_ timestamp on server.
8111         (print_help): -nr belongs in "FTP options" section of --help
8112         output, not "Recursive retrieval" section.  Alphabetized FTP
8113         options by long option name.
8114
8115 2001-02-16  Dan Harkless  <wget@harkless.org>
8116
8117         * init.c (commands): Hack Kampbjørn <hack@hackdata.com> discovered
8118         that "httpsproxy" had been inserted into commands[] out of
8119         alphabetical order, causing "BUG: unknown command `httpuser'".
8120
8121 2001-02-13  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
8122
8123         * ftp-ls.c (ftp_parse_ls): Added support of ST_MACOS (Unix-like
8124         listing without correct permissons).
8125
8126         * ftp.h (stype): Added ST_MACOS to identify the NetPresenz MacOS
8127         FTP server.
8128
8129         * ftp.c (ftp_retrieve_list): New mirroring logic: A remote file
8130         shall be donwloaded only when it's newer than the local copy or
8131         when it has the same timeestamp but its size is different. ST_VMS
8132         and ST_MACOS as special cases that lie about file size.
8133
8134         * ftp-ls.c (ftp_parse_ls): Support for ST_MACOS.
8135
8136         * Makefile.in: Removed dependency on ftpparse library due to unclear
8137         copyright issues and absence of any feedback to our queries.
8138
8139         * ftp-ls.c: Removed dependency on ftpparse library due to unclear
8140         copyright issues and absence of any feedback to our queries.
8141         (ftp_parse_ls): Added a warning message when remote server system
8142         does not seem to be suported by wget.
8143         (ftp_parse_vms_ls): New function for parsing VMS ftp
8144         server listing output.
8145         (clean_line): New function responsible for removing
8146         end-of-line characters from FTP listing texts.
8147
8148         * ftp.c (getftp): Global variables pwd and host_type are now
8149         member of the ccon structure under names ccon.id and ccon.rs.
8150
8151         * ftp.h (struct ccon): Added formed global variables from ftp.c,
8152         enum stype rs (remote system identification) and char *id (initial
8153         working directory), as suggested by Hrvoje.
8154
8155         * url.c (parse_uname): Added support for passwords containing '@'
8156         characters.
8157         (skip_uname): Ditto.
8158
8159 2001-02-11  Hrvoje Niksic  <hniksic@arsdigita.com>
8160
8161         * ftp.c (ftp_loop): Reset con.
8162
8163 2001-01-06  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
8164
8165         * url.c (parse_uname): Added support for passwords containing '@'
8166         characters.
8167         (skip_uname): Ditto.
8168
8169 2001-02-11  Hack Kampbjørn  <hack@hackdata.com>
8170
8171         * url.c (parseurl): Debug-print u->ftp_type.
8172
8173 2001-02-11  Hrvoje Niksic  <hniksic@arsdigita.com>
8174
8175         * ftp.c (ftp_loop_internal): Disable padding.
8176         (getftp): Ditto.
8177
8178         * http.c (http_loop): Disable padding.
8179
8180         * retr.c (show_progress): Use it to enable padding.
8181
8182         * retr.c (rate): Optional parameter PAD for padding the rate.
8183
8184 2001-02-10  Hrvoje Niksic  <hniksic@arsdigita.com>
8185
8186         * retr.c (show_progress): Make sure that the last output line
8187         includes progress.
8188
8189 2001-02-10  Jonas Jensen  <bones@huleboer.dk>
8190
8191         * retr.c (show_progress): Print the download rate along with the
8192         percentages.
8193         Along with Anders Thorsby <anders@thorsby.dk>.
8194
8195 2001-02-10  Tim Mooney  <mooney@dogbert.cc.ndsu.NoDak.edu>
8196
8197         * ftp.h: Rename enums `command' to `wget_ftp_command' and
8198         `fstatus' to `wget_ftp_status' because old names clash with Tru64
8199         net/if.h.
8200
8201 2001-02-08  Christian Fraenkel <christian.fraenkel@gmx.net>
8202
8203         * gen_sslfunc.c: verify_callback is now static
8204
8205         * gen_sslfunc.c (init_ssl): load certificate if specified
8206
8207         * gen_sslfunc.c (ssl_printerr): new function
8208
8209         * init.c: added new --sslcertfile and --sslcertkey switches
8210
8211         * main.c: ditto
8212
8213         * options.h: ditto
8214
8215         * http.c (gethttp): abort when init_ssl fails
8216
8217 2001-01-23  Herold Heiko  <Heiko.Herold@previnet.it>
8218
8219         * mswindows.h: Include <malloc.h>; it's needed for alloca().
8220
8221 2001-01-10  Dan Harkless  <wget@harkless.org>
8222
8223         * url.c (str_url): Clarified this function's comment header after
8224         Hrvoje answered my question on the list as to when hide != 1.
8225         Also Hrvoje pointed out I need to use xstrdup() on the string literal.
8226
8227 2001-01-06  Hrvoje Niksic  <hniksic@arsdigita.com>
8228
8229         * connect.c (bindport): Declare addrlen as int.  Diagnosed by
8230         Drazen Kacar <dave@arsdigita.com>.
8231         (conaddr): Ditto.
8232
8233 2001-01-09  Dan Harkless  <wget@harkless.org>
8234
8235         * html-url.c: A bunch of fixup of `--page-requisites'-related
8236         comments to reflect Hrvoje's changes to my code when transplanting
8237         it into this new file, to fix spelling mistakes, to clarify, etc.
8238
8239         * url.c (write_backup_file): Clarified a comment.
8240         (str_url): Henrik van Ginhoven pointed out on the list that we
8241         shouldn't give away the number of characters in the password by
8242         replacing each character with a 'x'.  Use "<password>" instead.
8243
8244         * ftp.c (ftp_retrieve_dirs): The bug where recursion into FTP
8245         directories didn't work if logging in put you in a directory other
8246         than "/" is fixed now.  Removed the comment here warning of the bug.
8247
8248         * main.c (print_help): --continue's description was misleading.
8249         We don't "restart", we "resume".  Also, better to say
8250         "partially-downloaded file" rather than just "existing file".
8251
8252 2001-01-06  Dan Harkless  <wget@harkless.org>
8253
8254         * ChangeLog: The '[Not in 1.6 branch.]'s were decided not to be
8255         the best way to go about my aim.  Removed them in favor of:
8256
8257         * ChangeLog-branches/1.6_branch.ChangeLog: New file.
8258
8259 2001-01-04  Hrvoje Niksic  <hniksic@arsdigita.com>
8260
8261         * url.c (replace_attr): New function, to be used by both
8262         TO_COMPLETE and TO_RELATIVE case in convert_links.
8263         (find_fragment): New function for finding URL fragments.
8264         (replace_attr): Better handle the case where the original string
8265         is not quoted.  Use find_fragment.
8266         (convert_links): Use replace_attr().
8267
8268 2000-12-31  Dan Harkless  <wget@harkless.org>
8269
8270         * ChangeLog: Since this flat file doesn't have multiple branches,
8271         looking at the dates would make you think that things went into
8272         1.6 that actually just went into the 1.7-dev branch.  Added "[Not
8273         in 1.6 branch.]" where appropriate to clarify.
8274
8275 2000-12-30  Dan Harkless  <wget@harkless.org>
8276
8277         * ftp.c, http.c:  Applied Hack Kampbjørn <hack@hackdata.com>'s
8278         patch to deal with h_errno not being defined in netdb.h under Cygwin.
8279
8280 2000-12-18  Csaba Raduly  <csaba.raduly@sophos.com>
8281
8282         * sysdep.h: Include <malloc.h> and <io.h> under Watcom.
8283
8284 2000-12-17  Igor Khristophorov  <igor@atdot.org>
8285
8286         * http.c (check_end): Fix test for '+' or '-'.
8287
8288 2000-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
8289
8290         * url.c (parseurl): Rename inner loop var from i to ind to avoid
8291         clash with the function top-level-declared variable i.
8292         (str_url): Likewise, rename inner-loop i to j.
8293
8294         * recur.c (parse_robots): Don't declare LEN at top of function.
8295         (robots_match): Renamed parameter FORBIDDEN to avoid hiding of
8296         global variable.
8297
8298         * main.c (main): Change erroneous use of bitwise and to logical.
8299
8300         * init.c (cmd_address): Don't heap-allocate `sin'; it can be on
8301         the stack because it will be copied to closure.
8302
8303         Thanks to Csaba Raduly's run of PC-LINT over the sources.
8304
8305 2000-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
8306
8307         * http.c (basic_authentication_encode): Use xmalloc(), not
8308         malloc().  Thanks to Csaba Raduly's run of PC-LINT over the
8309         sources.
8310
8311 2000-12-17  Csaba Raduly  <csaba.raduly@sophos.com>
8312
8313         * sysdep.h: Test for __EMX__ rather than for EMXOS2 for OS/2
8314         compilation.
8315
8316 2000-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
8317
8318         * mswindows.c: Include <errno.h>.
8319
8320         * gen_sslfunc.c: Include <errno.h>.
8321
8322         * ftp-basic.c: Don't attempt to declare errno or h_errno because
8323         they're not used.
8324
8325         * main.c: Include <errno.h> because errno is used.
8326
8327         * ftp.c: Ditto.
8328
8329         * http.c: Include <netdb.h> for h_errno.
8330
8331 2000-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
8332
8333         * html-parse.c (advance_declaration): MSVC assert() chokes on
8334         '\"'.  Use '"' instead.
8335
8336 2000-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
8337
8338         * utils.c (xfree_real): Removed.
8339         (xfree_debug): Just call free().
8340
8341         * wget.h (xfree): Make it an alias for free.
8342
8343 2000-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
8344
8345         * http.c (http_loop): Furthermore, touch output_document only if
8346         it is known to be an existing regular file.
8347
8348 2000-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
8349
8350         * ftp.c (ftp_retrieve_list): Ditto.
8351
8352         * http.c (http_loop): Touch output_document if that is used for
8353         output.
8354
8355 2000-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
8356
8357         * http.c: Include gen_sslfunc.h after including Wget's headers.
8358         (persistent_available_p): Needed coma before `int ssl'.
8359
8360 2000-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
8361
8362         * ftp.c (ftp_loop_internal): Ditto.
8363
8364         * http.c (http_loop): Use it.
8365
8366         * retr.c (sleep_between_retrievals): New function that handles the
8367         logic of opt.wait and opt.waitretry.
8368
8369 2000-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
8370
8371         * rbuf.h: Implement only a single version of RBUF_READCHAR, using
8372         rbuf_read_bufferful when the buffer is depleted.
8373
8374         * rbuf.c (rbuf_read_bufferful): New function.
8375
8376 2000-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
8377
8378         * gen_sslfunc.h: Use ansi2knr style function declarations.
8379
8380         * gen_sslfunc.c: Reformat according to the GNU coding standards.
8381         More should be done.
8382
8383         * http.c (persistent_available_p): Place the cheap SSL test nearer
8384         the top of the function.
8385         (CLOSE_FINISH, CLOSE_INVALIDATE): Define only one version of each.
8386
8387 2000-12-05  Hrvoje Niksic  <hniksic@arsdigita.com>
8388
8389         * url.c (init_unsafe_char_table): Reinstate space as an unsafe
8390         char.
8391
8392 2000-12-03  Christian Fraenkel <christian.fraenkel@gmx.net>
8393
8394         * Makefile.in: added gen_sslfunc object
8395         * config.h.in: added HAVE_SSL define
8396         * connect.c: changed select_fd from static int to int
8397         * connect.h: ditto
8398         * gen_sslfunc.h: New file
8399         * gen_sslfunc.c: ditto
8400         * http.c: added HTTPS fuctionality
8401         * retrc.c: ditto
8402         * url.c: ditto
8403         * init.c: added opt.httpsproxy
8404         * options.h: ditto
8405         * rbuf.h: added alternate rbuf struct
8406         * wget.h: added CONSSLERR
8407         * rbuf.c: ditto
8408
8409         * http.c: Added HTTPS fuctionality.
8410
8411         * retrc.c: Ditto.
8412
8413         * url.c: Ditto.
8414
8415         * init.c: Added opt.httpsproxy.
8416
8417         * options.h: Ditto.
8418
8419         * rbuf.h: Added alternate rbuf struct.
8420
8421         * wget.h: Added CONSSLERR.
8422
8423         * rbuf.c: Ditto.
8424
8425 2000-11-30  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
8426
8427         * ftp-ls.c (ftp_parse_unix_ls): Added second parameter
8428         "ignore_perms" to ignore file and directory permissions for
8429         Windows NT FTP server listings.
8430         (ftp_parse_winnt_ls): New function.
8431         (ftp_parse_ls): Parses UNIX and Windows NT listings
8432         separately. Simple heuristics for distinguishing between UNIX and
8433         MS-DOS-like FTP listing provided by Windows NT FTP service.
8434
8435 2000-11-18  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
8436
8437         * ftpparse.c, ftpparse.h: New files.
8438
8439         * ftp-ls.c (ftp_parse_ls): Use ftp_parse_unix_ls for UNIX servers
8440         only. Use ftp_parse_nonunix_ls otherwise.
8441         (ftp_parse_nonunix_ls): Stub to the ftpparse library handling all
8442         exotic FTP servers.
8443
8444         * ftp.h (stype): New enum, distinguishes UNIX, VMS, and "other"
8445         FTP servers.
8446
8447         * ftp.c: New static wariables host_type, pwd, and pwd_len.
8448         (getftp): Support for VMS. Support for FTP servers that do not
8449         place you in the root directory after login.
8450         (ftp_retrieve_list): VMS is silent about the real file size, issue
8451         a more appropriate message.
8452         (ftp_get_listing): Pass host_type to ftp_parse_ls.
8453
8454         * ftp-basic.c (ftp_pwd, ftp_syst): New functions.
8455
8456 2000-11-30  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
8457
8458         * ftp-ls.c (ftp_parse_unix_ls): Added second parameter
8459         "ignore_perms" to ignore file and directory permissions for
8460         Windows NT FTP server listings.
8461         (ftp_parse_winnt_ls): New function.
8462         (ftp_parse_ls): Parses UNIX and Windows NT listings
8463         separately. Simple heuristics for distinguishing between UNIX
8464         and MS-DOS-like FTP listing provided by Windows NT FTP service.
8465
8466 2000-11-29  John Summerfield  <summer@OS2.ami.com.au>
8467
8468         * netrc.c (parse_netrc): Get rid of line ending.
8469
8470 2000-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
8471
8472         * ftp.c (ftp_retrieve_list): Undo typo "fix" until resolution by
8473         Dan.
8474
8475 2000-11-24  Karl Eichwalder  <ke@suse.de>
8476
8477         * main.c (print_help): Untabify.
8478
8479 2000-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
8480
8481         * utils.c (xrealloc_debug): Do the unregister/register thing only
8482         if the pointer has actually changed.
8483         (xmalloc_real): Declare `static' in DEBUG_MALLOC builds.
8484         (xfree_real): Ditto.
8485         (xrealloc_real): Ditto.
8486         (xstrdup_real): Ditto.
8487
8488 2000-11-22  Hrvoje Niksic  <hniksic@arsdigita.com>
8489
8490         * ftp.c (getftp): ftp_getaddress() returns a malloc'ed copy of the
8491         string; no need to strdup() it.
8492         (getftp): Make pwd_len a local variable.
8493         (ftp_loop): Free PWD before returning.
8494
8495         * init.c (cleanup): Free opt.ftp_pass only if it's non-NULL.
8496
8497 2000-11-22  Hrvoje Niksic  <hniksic@arsdigita.com>
8498
8499         * all: Use xfree() instead of free.
8500
8501         * utils.c (xfree): New function.
8502
8503 2000-11-21  Hrvoje Niksic  <hniksic@arsdigita.com>
8504
8505         * url.c (convert_links): HTML-quote the converted string.
8506
8507         * utils.c (html_quote_string): Move here from ftp-ls.c
8508         (html_quote_string): Make non-static; declare in utils.h.
8509         (html_quote_string): Convert SP to &#32;.
8510
8511 2000-11-21  Hrvoje Niksic  <hniksic@arsdigita.com>
8512
8513         * ftp.c (getftp): Reformat Jan's code according to GNU coding
8514         standards; remove (debugging?) printf's; use '\0' for the ASCII
8515         zero character.  Use alloca() instead of malloc() for
8516         inter-function temporary allocations.
8517
8518 2000-11-18  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
8519
8520         * ftpparse.c, ftpparse.h: New files.
8521
8522         * ftp-ls.c (ftp_parse_ls): Use ftp_parse_unix_ls for UNIX servers
8523         only. Use ftp_parse_nonunix_ls otherwise.
8524         (ftp_parse_nonunix_ls): Stub to the ftpparse library handling all
8525         exotic FTP servers.
8526
8527         * ftp.h (stype): New enum, distinguishes UNIX, VMS, and "other"
8528         FTP servers.
8529
8530         * ftp.c: New static wariables host_type, pwd, and pwd_len.
8531         (getftp): Support for VMS. Support for FTP servers that do not
8532         place you in the root directory after login.
8533         (ftp_retrieve_list): VMS is silent about the real file size, issue
8534         a more appropriate message.
8535         (ftp_get_listing): Pass host_type to ftp_parse_ls.
8536
8537         * ftp-basic.c (ftp_pwd, ftp_syst): New functions.
8538
8539 2000-11-21  Hrvoje Niksic  <hniksic@arsdigita.com>
8540
8541         * hash.c (hash_table_put): Don't overwrite deleted mappings.
8542
8543 2000-11-21  Hrvoje Niksic  <hniksic@arsdigita.com>
8544
8545         * hash.c (find_mapping): New function.
8546         (hash_table_get): Use it.
8547         (hash_table_get_pair): Ditto.
8548         (hash_table_exists): Ditto.
8549         (hash_table_remove): Ditto.
8550         (hash_table_remove): Really delete the entry if the mapping
8551         following LOCATION is empty.
8552
8553         * utils.c (string_set_add): Check whether the element has existed
8554         before.
8555
8556         * hash.c (hash_table_get_pair): New function.
8557
8558 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
8559
8560         * http.c (http_process_type): Ignore trailing whitespace; use
8561         strdupdelim().
8562
8563         * recur.c (recursive_retrieve): Use the new `convert' field.
8564         (convert_all_links): Ditto.
8565         (convert_all_links): Don't respect meta_disallow_follow.
8566
8567         * html-url.c (handle_link): Fill out link_relative_p and
8568         link_complete_p.
8569
8570         * url.h (struct _urlpos): Make elements more readable.
8571
8572         * recur.c (recursive_retrieve): Call slist_prepend instead of
8573         slist_append.
8574         (convert_all_links): Call slist_nreverse before iterating through
8575         urls_html.
8576
8577         * utils.c (slist_prepend): New function.
8578         (slist_nreverse): Ditto.
8579
8580 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
8581
8582         * http.c (check_end): Constify.
8583
8584 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
8585
8586         * http.c (http_loop): If username and password are known, try the
8587         `Basic' authentication scheme by default.
8588
8589         * connect.h: Declare test_socket_open.
8590
8591 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
8592
8593         * version.c: Bump version from 1.5.3+dev to 1.7-dev.
8594
8595 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
8596
8597         * http.c (gethttp): Don't use the return value of sprintf().
8598         (gethttp): Inhibit keep-alive if opt.http_keep_alive is 0.
8599
8600 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
8601
8602         * recur.c (recursive_retrieve): Print the "so we don't load"
8603         debugging message only if we really don't load.
8604
8605         * http.c (gethttp): Inhibit keep-alive if proxy is being used.
8606         (gethttp): Don't request keep-alive if keep-alive is inhibited.
8607
8608 2000-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
8609
8610         * http.c (gethttp): Make the HTTP persistent connections more
8611         robust.
8612
8613 2000-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
8614
8615         * retr.c (get_contents): If use_expected, make sure that the
8616         appropriate amount of data is being read.
8617
8618         * http.c (gethttp): Check for both `Keep-Alive: ...' and
8619         `Connection: Keep-Alive'.
8620
8621         * wget.h (DEBUGP): Call debug_logprintf only if opt.debug is
8622         turned on.
8623
8624 2000-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
8625
8626         * http.c (connection_available_p): Use it.
8627
8628         * connect.c (test_socket_open): New function.
8629
8630         * http.c (gethttp): Support persistent connections.  Based on the
8631         ideas, and partly on code, by Sam Horrocks <sam@daemoninc.com>.
8632         (register_persistent): New function.
8633         (connection_available_p): Ditto.
8634         (invalidate_connection): Ditto.
8635
8636 2000-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
8637
8638         * url.c (convert_links): Handle UREL2ABS case.
8639
8640         * recur.c (recursive_retrieve): Instead of the list
8641         urls_downloaded, use hash tables dl_file_url_map and
8642         dl_url_file_map.
8643         (convert_all_links): Use them to retrieve data.
8644
8645         * host.c (clean_hosts): Free the hash tables.
8646
8647         * main.c (private_initialize): Call host_init().
8648
8649         * host.c (store_hostaddress): Use a saner, hash table-based data
8650         model.
8651         (realhost): Ditto.
8652         (host_init): Initialize the hash tables.
8653
8654 2000-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
8655
8656         * utils.c (slist_append): Eviscerate NOSORT.  Hash tables are now
8657         used for what the sorted slists used to be used for.
8658         (slist_contains): Don't rely on the list being sorted.
8659         (slist_append): Simplify the code.
8660
8661         * recur.c (recursive_cleanup): Use free_string_set.
8662
8663         * utils.c (string_set_add, string_set_exists, string_set_free):
8664         New functions for easier freeing of hash tables whose keys are
8665         strdup'ed strings.
8666
8667         * recur.c (recursive_retrieve): Use the hash table functions for
8668         storing undesirable URLs.
8669
8670         * hash.c: New file.
8671
8672 2000-11-17  Hrvoje Niksic  <hniksic@arsdigita.com>
8673
8674         * main.c (private_initialize): Call url_init.
8675         (main): Call private_initialize.
8676
8677         * url.c (unsafe_char_table): New table.
8678         (UNSAFE_CHAR): Use it.
8679         (init_unsafe_char_table): New function.
8680         (url_init): New function; call init_unsafe_char_table.
8681
8682 2000-11-16  Hrvoje Niksic  <hniksic@arsdigita.com>
8683
8684         * mswindows.h: Define snprintf and vsnprintf to _snprintf and
8685         _vsnprintf respectively.
8686
8687 2000-11-15  Hrvoje Niksic  <hniksic@arsdigita.com>
8688
8689         * config.h.in: Do the _XOPEN_SOURCE and _SVID_SOURCE things only
8690         on Linux.
8691
8692 2000-11-15  Hrvoje Niksic  <hniksic@arsdigita.com>
8693
8694         * html-url.c (handle_link): Handle HTML fragment identifiers.
8695
8696         * recur.c (recursive_retrieve): If norobot info is respected and
8697         the file is specified not to be followed by robots, respect that.
8698
8699         * html-url.c (collect_tags_mapper): Handle <meta name=robots
8700         content=X>.  For us the important cases are where X is NONE or
8701         where X contains NOFOLLOW.
8702         (get_urls_html): Propagate that information to the caller.
8703
8704 2000-11-13  Hrvoje Niksic  <hniksic@arsdigita.com>
8705
8706         * url.c (convert_links): Unlink the file we might be reading from
8707         before writing to it.
8708         (convert_links): Use alloca instead of malloc for
8709         filename_plus_orig_suffix.
8710
8711 2000-11-12  Hrvoje Niksic  <hniksic@arsdigita.com>
8712
8713         * host.c (realhost): Add HOST to the list with quality==0 only if
8714         it wasn't already there.
8715         Based on analysis by Lu Guohan <feng@public.bjnet.edu.cn>.
8716
8717 2000-11-10  Hrvoje Niksic  <hniksic@arsdigita.com>
8718
8719         * url.c (get_urls_file): Ditto.
8720         (convert_links): Ditto.
8721
8722         * html-url.c (get_urls_html): Use read_file() instead of
8723         load_file().
8724
8725         * utils.c (read_file): New function, instead of the old
8726         load_file().
8727         (read_file_free): Ditto.
8728
8729         * url.c (findurl): Search only for the supported protocols.
8730         (convert_links): Use fwrite() when writing out a region of
8731         characters.
8732
8733 2000-11-10  Hrvoje Niksic  <hniksic@arsdigita.com>
8734
8735         * ftp-ls.c: Move html_quote_string and ftp_index here.
8736
8737         * url.c: Remove get_urls_html, since that's now in html-url.c.
8738
8739         * html-url.c: New file.
8740
8741         * html-parse.c: New file.
8742
8743 2000-11-10  Hrvoje Niksic  <hniksic@arsdigita.com>
8744
8745         * init.c (run_wgetrc): Don't bother killing off '\r' since
8746         pars_line() skips whitespace at end of line anyway.
8747         (parse_line): Oops, it didn't.  Now it does.
8748
8749         * recur.c (parse_robots): Ditto here.
8750
8751         * ftp-ls.c (ftp_parse_unix_ls): Kill off the newline character
8752         manually because read_whole_line no longer does.
8753
8754         * utils.c (read_whole_line): Rewrite to: a) use less memory
8755         (reallocates to needed size after work), b) work faster -->
8756         fgets() instead of getc, c) be more correct --> doesn't kill the
8757         newline character at the end of line.
8758
8759 2000-11-10  Hrvoje Niksic  <hniksic@arsdigita.com>
8760
8761         * init.c (comind): Initialize MAX to array size - 1.
8762
8763 2000-11-08  Hrvoje Niksic  <hniksic@arsdigita.com>
8764
8765         * url.c (construct): Changed last_slash[-1] to *(last_slash - 1).
8766         Suggested by Edward J. Sabol.
8767
8768 2000-11-08  Hrvoje Niksic  <hniksic@arsdigita.com>
8769
8770         * url.c (construct): Handle the case where host name is not
8771         followed by a slash.
8772
8773 2000-11-06  Hrvoje Niksic  <hniksic@arsdigita.com>
8774
8775         * init.c: commands[] need to be sorted!  ("base" wasn't.)
8776
8777 2000-11-05  Hrvoje Niksic  <hniksic@arsdigita.com>
8778
8779         * wget.h (DO_REALLOC_FROM_ALLOCA): Use braces to disambiguate
8780         `if'.
8781
8782 2000-11-05  Hrvoje Niksic  <hniksic@arsdigita.com>
8783
8784         * url.c (construct): Insert unneeded initialization for the
8785         compiler to shut up.
8786
8787         * config.h.in: Define _XOPEN_SOURCE to 500 to get the prototype
8788         for strptime() (*duh*).  Define _SVID_SOURCE to get S_IFLNK which
8789         otherwise gets lost when you define _XOPEN_SOURCE.
8790
8791         * utils.c (touch): Include the file name in the error message.
8792         From Debian.
8793
8794 2000-11-05  Hrvoje Niksic  <hniksic@arsdigita.com>
8795
8796         * log.c (logvprintf): Use vsnprintf() in all cases.  If necessary,
8797         resize the buffer to fit the formated message.  That way, messages
8798         of arbitrary size may be printed.
8799         (logvprintf): Use saved_append() to optionally log the last
8800         several lines of output.
8801         (logputs): Ditto.
8802         (log_close): Adapt to new data structures.
8803         (log_dump): Ditto.
8804         (redirect_output): Print messages to stderr, not to stdout.
8805
8806         * log.c (saved_append_1): New function.  Replaces the old logging
8807         system ("log all output until 10M characters") with a new, much
8808         more reasonable one ("log last screenful of text").
8809         (saved_append): New function; call saved_append_1.
8810         (free_log_line): New function.
8811
8812 2000-11-05  Hrvoje Niksic  <hniksic@arsdigita.com>
8813
8814         * url.c (construct): Fix comment.
8815         (find_last_char): Document.
8816
8817 2000-11-04  Hrvoje Niksic  <hniksic@arsdigita.com>
8818
8819         * snprintf.c: New file.
8820
8821 2000-11-03  Hrvoje Niksic  <hniksic@arsdigita.com>
8822
8823         * wget.h: If HAVE_STDARG_H is not defined, don't declare argument
8824         types to logprintf() and debug_logprintf().
8825
8826 2000-11-02  Hrvoje Niksic  <hniksic@arsdigita.com>
8827
8828         * ftp.c (ftp_loop_internal): Hide the password from the URL when
8829         printing non-verbose.  Problem spotted by Dariusz Mlynarczyk
8830         <darekm@bydg.lomac.com.pl>.
8831
8832 2000-11-02  Junio Hamano  <junio@twinsun.com>
8833
8834         * ftp-basic.c (ftp_login): Make comparison case-insensitive.
8835
8836 2000-11-02  Tyler Riddle  <triddle@liquidmarket.com>
8837
8838         * http.c (known_authentication_scheme_p): Recognize NTML
8839         authentication.
8840         (create_authorization_line): Treat NTML the same as `Basic'.
8841
8842 2000-11-02  Hrvoje Niksic  <hniksic@arsdigita.com>
8843
8844         * retr.c (retrieve_url): Free url before returning.
8845         (retrieve_url): Free mynewloc before returning.
8846         Spotted by Mark A. Mankins <Mankins_Mark@prc.com>.
8847
8848 2000-11-02  Hrvoje Niksic  <hniksic@arsdigita.com>
8849
8850         * url.c (parseurl): Remove possible reading past the end of
8851         sup_protos[].  Spotted by Mark A. Mankins <Mankins_Mark@prc.com>.
8852
8853 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
8854
8855         * main.c (main): In case of opt.downloaded overflowing, print
8856         <overflow> instead of a totally bogus random value.
8857
8858         * retr.c (retrieve_from_file): Ditto.
8859
8860         * recur.c (recursive_retrieve): Ditto.
8861
8862         * main.c (main): Ditto.
8863
8864         * http.c (http_loop): Ditto.
8865
8866         * ftp.c (ftp_loop_internal): Use downloaded_increase() instead of
8867         `+=', and downloaded_exceeds_quota() instead of the simple-minded
8868         check.
8869         (ftp_retrieve_list): Ditto.
8870         (ftp_retrieve_dirs): Ditto.
8871         (ftp_retrieve_glob): Ditto.
8872
8873         * retr.c (downloaded_increase): New function.  Notice overflows of
8874         opt.downloaded.
8875         (downloaded_exceeds_quota): Make sure that opt.downloaded is not
8876         used if it overflowed.
8877
8878         * options.h (struct options): New member downloaded_overflow.
8879
8880 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
8881
8882         * wget.h (enum): Remove extra space after last enumeration.
8883
8884 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
8885
8886         * main.c (main): Use legible_very_long() for printing
8887         opt.downloaded.
8888
8889         * utils.c (legible_1): New function that operates on strings and
8890         does the brunt of legible()'s work.
8891         (legible): Use legible_1().
8892         (legible_very_long): New function; dump the argument with
8893         sprintf(), and call legible_1().
8894
8895         * options.h (struct options): Use VERY_LONG_TYPE for
8896         opt.downloaded.
8897
8898         * sysdep.h (VERY_LONG_TYPE): Define it to have a 64-bit or greater
8899         type.
8900
8901         * config.h.in: Make sure that SIZEOF_LONG and SIZEOF_LONG_LONG get
8902         defined.  Define HAVE_LONG_LONG if long long is available.
8903
8904 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
8905
8906         * utils.c (long_to_string): Update with a later, better version.
8907
8908 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
8909
8910         * url.c (path_simplify_with_kludge): New function.
8911         (path_simplify_with_kludge): Disable it.  Instead...
8912         (parse_dir): ...make sure that at this point the right thing is
8913         done, i.e. that "query" part of the URL (?...) is always assigned
8914         to the file, never to the directory portion of the path.
8915
8916 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
8917
8918         * retr.c (retrieve_url): Detect redirection cycles.
8919
8920 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
8921
8922         * url.c (get_urls_html): Decode HTML entities using
8923         html_decode_entities.
8924
8925         * html.c (htmlfindurl): Don't count the `#' in numeric entities
8926         (&#NNN;) as an HTML fragemnt.
8927         (html_decode_entities): New function.
8928
8929 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
8930
8931         * html.c (htmlfindurl): Fix recognition of # HTML fragments.
8932
8933 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
8934
8935         * url.c (construct): Rewritten for clarity.  Avoids the
8936         unnecessary copying and stack-allocation the old version
8937         performed.
8938
8939 2000-10-31  Hrvoje Niksic  <hniksic@arsdigita.com>
8940
8941         * ftp.c (getftp): Ditto.
8942
8943         * http.c (gethttp): Rewind the stream when retrying from scratch.
8944
8945 2000-10-31  Hrvoje Niksic  <hniksic@arsdigita.com>
8946
8947         * retr.c (retrieve_url): Use url_concat() to handle relative
8948         redirections instead of /ad hoc/ code.
8949
8950         * url.c (url_concat): New function encapsulating weird
8951         construct().
8952         (urllen_http_hack): New function.
8953         (construct): When constructing new URLs, recognize that `?' does
8954         not form part of the file name in HTTP.
8955
8956 2000-10-13  Adrian Aichner  <adrian@xemacs.org>
8957
8958         * retr.c: Add msec timing support for WINDOWS.
8959         * retr.c (reset_timer): GetSystemTime() on WINDOWS.
8960         * retr.c (elapsed_time): Calculate delta time to msec on WINDOWS.
8961
8962 2000-10-27  Dan Harkless  <wget@harkless.org>
8963
8964         * retr.c (retrieve_url): Manually applied T. Bharath
8965         <TBharath@responsenetworks.com>'s patch to get wget to grok
8966         illegal relative URL redirects.  Reformatted and re-commented it.
8967
8968 2000-10-23  Dan Harkless  <wget@harkless.org>
8969
8970         * connect.c (make_connection and bindport): Manually applied Rob
8971         Mayoff <mayoff@dqd.com>'s 1.5.3 patch to add --bind-address,
8972         changing coding style to GNU's.
8973
8974         * ftp.c (ftp_loop_internal): --delete-after wasn't implemented for
8975         files downloaded via FTP.  Per a comment, .listing files were not
8976         counted towards number of bytes and files downloaded because they're
8977         deleted anyway.  Well, they aren't under -nr, so count them then.
8978
8979         * init.c: Manually applied Rob Mayoff's 1.5.3 patch to add
8980         --bind-address, alphabetizing, changing coding style to GNU's,
8981         commenting, and renaming cmd_ip_address() to cmd_address() to
8982         imply hostnames also okay.
8983
8984         * main.c (main): --delete-after didn't delete the root of the
8985         tree.  Ignore --convert-links if --delete-after was specified.
8986         Manually applied Rob Mayoff's 1.5.3 patch to add --bind-address,
8987         fixing duplicate use of added-since-1.5.3 case value.
8988         (print_help): Clarified that --delete-after deletes local files.
8989         Rob forgot to add a line for his new --bind-address option.
8990
8991         * options.h (struct options): Manually applied Rob Mayoff's patch
8992         to add --bind-address (bind_address structure member).
8993
8994         * recur.c (recursive_retrieve): Improved comment; added DEBUGP().
8995         Ignore --convert-links if --delete-after was specified.
8996
8997         * retr.c (retrieve_from_file): Just added a DEBUGP().
8998
8999 2000-10-19  Dan Harkless  <wget@harkless.org>
9000
9001         * ftp.c (ftp_loop_internal): downloaded_file() enumerators changed.
9002         (getftp): Applied Piotr Sulecki <Piotr.Sulecki@ios.krakow.pl>'s
9003         patch to work around FTP servers that incorrectly respond to the
9004         "REST" command with the remaining size rather than the total file size.
9005
9006         * http.c (gethttp): Improved a comment and added code to tack on
9007         ".html" to text/html files without that extension when -E specified.
9008         (http_loop): Use new downloaded_file() enumerators and deal with
9009         the case of gethttp() called xrealloc() on u->local.
9010
9011         * init.c (commands): Added new "htmlextension" command.
9012         Also renamed John Daily's cmd_quad() to the more descriptive
9013         cmd_lockable_boolean(), alpha-sorted the CMD_DECLARE()s and
9014         removed duplicate cmd_boolean() declaration.
9015
9016         * main.c (print_help): Added my new -E / --html-extension option.
9017         (main): Undocumented --email-address option previously used -E synonym.
9018         Stole it away for the much more deserving --html-extension's use.
9019
9020         * options.h (struct options): Added html_extension field.
9021
9022         * url.c (convert_links): URL X that we saved as X.html locally due
9023         to -E needs to be backed up as X.orig, not X.html.orig.  Added comments.
9024         (downloaded_file): Now remembers if we added .html extension to a file.
9025
9026         * url.h (downloaded_file_t): Added extra enumerators to support above.
9027         (downloaded_file): Now takes and returns a downloaded_file_t.
9028
9029         * wget.h (unnamed "dt" enum): Added ADDED_HTML_EXTENSION enumerator.
9030
9031 2000-10-09  Dan Harkless  <wget@harkless.org>
9032
9033         * html.c (htmlfindurl): Added unneeded initialization to quiet warning.
9034
9035         * main.c (print_help): Clarified what --retr-symlinks does.
9036
9037 2000-09-15  John Daily  <jdaily@cyberdude.com>
9038
9039         * init.c: Add support for "always" and "never" values to allow
9040         .wgetrc to override commandline (useful e.g. with .pm files
9041         calling `wget --passive-ftp' when your firewall doesn't allow that).
9042
9043         * ftp.c (getftp): passive_ftp is first option to support always/never.
9044
9045 2000-08-30  Dan Harkless  <wget@harkless.org>
9046
9047         * ftp.c (ftp_retrieve_list): Use new INFINITE_RECURSION #define.
9048
9049         * html.c: htmlfindurl() now takes final `dash_p_leaf_HTML' parameter.
9050         Wrapped some > 80-column lines.  When -p is specified and we're at a
9051         leaf node, do not traverse <A>, <AREA>, or <LINK> tags other than
9052         <LINK REL="stylesheet">.
9053
9054         * html.h (htmlfindurl): Now takes final `dash_p_leaf_HTML' parameter.
9055
9056         * init.c: Added new -p / --page-requisites / page_requisites option.
9057
9058         * main.c (print_help): Clarified that -l inf and -l 0 both allow
9059         infinite recursion.  Changed the unhelpful --mirrior description
9060         to simply give the options it's equivalent to.  Added new -p option.
9061         (main): Added some comments; handle new -p / --page-requisites.
9062
9063         * options.h (struct options): Added new page_requisites field.
9064
9065         * recur.c: Changed "URL-s" to "URLs" and "HTML-s" to "HTMLs".
9066         Calculate and pass down new `dash_p_leaf_HTML' parameter to
9067         get_urls_html().  Use new INFINITE_RECURSION #define.
9068
9069         * retr.c: Changed "URL-s" to "URLs".  get_urls_html() now takes
9070         final `dash_p_leaf_HTML' parameter.
9071
9072         * url.c: get_urls_html() and htmlfindurl() now take final
9073         `dash_p_leaf_HTML' parameter.
9074
9075         * url.h (get_urls_html): Now takes final `dash_p_leaf_HTML' parameter.
9076
9077         * wget.h: Added some comments and new INFINITE_RECURSION #define.
9078
9079 2000-08-23  Dan Harkless  <wget@harkless.org>
9080
9081         * main.c (print_help): -B / --base was not mentioned.
9082
9083 2000-08-22  Dan Harkless  <wget@harkless.org>
9084
9085         * main.c (print_help): Modified -nc description to mention that it
9086         also prevents the creation of multiple versions of the same file
9087         with ".<number>" suffixes.
9088
9089 2000-07-14  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
9090
9091         * retr.c (retrieve_url): Consistently strdup opt.referer when
9092         setting u->referer.
9093
9094 2000-06-09  Dan Harkless  <wget@harkless.org>
9095
9096         * main.c (print_help): --help output for --waitretry was over 80 cols.
9097
9098 2000-06-09  Hrvoje Niksic  <hniksic@iskon.hr>
9099
9100         * url.c (encode_string): Fix comment.
9101         Suggested by Herold Heiko <Heiko.Herold@previnet.it>.
9102
9103 2000-06-01  Const Kaplinsky  <const@ce.cctpu.edu.ru>
9104
9105         * ftp.c (ftp_retrieve_list): Change permissions only on plain
9106         files.
9107
9108 2000-06-01  Hrvoje Niksic  <hniksic@iskon.hr>
9109
9110         * url.c (str_url): Print the port number only if it's different
9111         from the default port number for that protocol.
9112
9113 2000-05-22  Dan Harkless  <wget@harkless.org>
9114
9115         * main.c (print_help): Added --help line for Damir Dzeko
9116         <ddzeko@zesoi.fer.hr>'s until-now-undocumented --referer option.
9117         Removed comments that --referer and --waitretry were undocumented.
9118         Changed "`.wgetrc' command" to "`.wgetrc'-style command" on --help
9119         line for --execute.
9120
9121 2000-05-18  Hrvoje Niksic  <hniksic@iskon.hr>
9122
9123         * ftp.c (getftp): Ditto.
9124
9125         * http.c (gethttp): Check for return value of fclose/fflush.
9126
9127 2000-04-12  Hrvoje Niksic  <hniksic@iskon.hr>
9128
9129         * host.c (store_hostaddress): Instead of shifting ADDR, start
9130         copying from the correct address.
9131
9132 2000-04-12  Hrvoje Niksic  <hniksic@iskon.hr>
9133
9134         * http.c (gethttp): Don't free REQUEST -- it was allocated with
9135         alloca().
9136         Pointed out by Gisle Vanem <gvanem@eunet.no>.
9137
9138 2000-04-04  Dan Harkless  <wget@harkless.org>
9139
9140         * host.c (store_hostaddress): R. K. Owen's patch introduces a
9141         "left shift count >= width of type" warning on 32-bit
9142         architectures.  Got rid of it by tricking the compiler w/ a variable.
9143
9144         * url.c (UNSAFE_CHAR): The macro didn't include all the illegal
9145         characters per RFC1738, namely everything above '~'.  It also
9146         generated a warning on OSes where char =~ unsigned char.  Fixed.
9147
9148 1998-10-17  Hrvoje Niksic  <hniksic@srce.hr>
9149
9150         * http.c (http_process_type): Removed needless strdup(), a memory
9151         leak.
9152
9153 1998-09-25  Hrvoje Niksic  <hniksic@srce.hr>
9154
9155         * html.c (htmlfindurl): Set PH to the first occurrence of `#'.
9156
9157 1998-09-25  Simon Munton  <simonm@m4data.co.uk>
9158
9159         * init.c (wgetrc_file_name): Don't free HOME under Windows.
9160
9161 1998-12-01  "R. K. Owen"  <rkowen@Nersc.GOV>
9162
9163         * host.c (store_hostaddress): Fix for big endian 64-bit machines.
9164
9165 1998-12-01  Hrvoje Niksic  <hniksic@srce.hr>
9166
9167         * url.c (UNSAFE_CHAR): New macro.
9168         (contains_unsafe): Use it.
9169         (encode_string): Ditto.
9170
9171 1998-12-01  Hrvoje Niksic  <hniksic@srce.hr>
9172
9173         * main.c (i18n_initialize): Use LC_MESSAGES only if available.
9174
9175 2000-03-31  Hrvoje Niksic  <hniksic@srce.hr>
9176
9177         * Use TOUPPER/TOLOWER.
9178
9179 1998-12-22  Alexander V. Lukyanov  <lav@yars.free.net>
9180
9181         * ftp-opie.c (btoe): Zero-terminate OSTORE.
9182
9183 2000-03-21  Hrvoje Niksic  <hniksic@iskon.hr>
9184
9185         * wget.h (DO_REALLOC_FROM_ALLOCA): Ditto.
9186
9187         * sysdep.h (ISALNUM): New macro.
9188         (TOLOWER): Ditto.
9189         (TOUPPER): Ditto.
9190
9191 2000-03-10  Dan Harkless  <wget@harkless.org>
9192
9193         * html.c (idmatch): Implemented checking of my new --follow-tags
9194         and --ignore-tags options.
9195
9196         * init.c (commands): Added comment reminding people adding new
9197         entries doing allocation to add corresponding freeing in cleanup().
9198         (commands): Added new followtags and ignoretags commands.
9199         (cleanup): Free storage for new followtags and ignoretags.
9200
9201         * main.c: Use of "comma-separated list" was random -- normalized
9202         it.  Did some alphabetization.  Added comments pointing out
9203         "Options without arguments" and "Options accepting an argument"
9204         sections of long_options[].  Added new options --follow-tags and
9205         -G / --ignore-tags.  Added comment that Damir's --referer is
9206         currently undocumented.  Added comment that Heiko's --waitretry is
9207         partially undocumented (mentioned in --help but not in
9208         wget.texi).  Moved improperly sorted 24, 129, and 'G' cases.
9209
9210         * options.h (struct options): Added new fields follow_tags and
9211         ignore_tags.
9212
9213         * wget.h: Added "#define EQ 0" so we can say "strcmp(a, b) == EQ".
9214
9215 2000-03-02  Dan Harkless  <wget@harkless.org>
9216
9217         * ftp.c (ftp_loop_internal): Heiko introduced "suggest explicit
9218         braces to avoid ambiguous `else'" warnings.  Eliminated them.
9219
9220         * http.c (gethttp): Dan Berger's query string patch is totally
9221         bogus.  If you have two different URLs, gen_page.cgi?page1 and
9222         get_page.cgi?page2, they'll both be saved as get_page.cgi and the
9223         second will overwrite the first.  Also, parameters to implicit
9224         CGIs, like "http://www.host.com/db/?2000-03-02" cause the URLs to
9225         be printed with trailing garbage characters, and could seg fault.
9226         Backing out the patch, which Dan B. informed me by email was just
9227         a kludge to download StarOffice from Sun made necessary due to
9228         wget's unconditional escaping of certain characters (room for an
9229         option there?).
9230         (http_loop): Heiko introduced "suggest explicit braces to avoid
9231         ambiguous `else'" warnings.  Eliminated them.
9232
9233         * main.c: Heiko's --wait / --waitretry backwards compatibility
9234         code looks to have been totally untested -- automatic variable
9235         'wr' was used without being initialized, and a long int was passed
9236         into setval()'s char* val parameter.
9237
9238         * recur.c (parse_robots): Applied Edward J. Sabol
9239         <sabol@alderaan.gsfc.nasa.gov>'s patch for Guan Yang's reported
9240         problem with "User-agent:<space>*<space>" lines in robots.txt.
9241
9242         * url.c (parseurl, str_url): Removing Dan Berger's code (see
9243         http.c above for explanation).
9244
9245 1999-08-25  Heiko Herold  <Heiko.Herold@previnet.it>
9246
9247         * ftp.c: Respect new option waitretry.
9248
9249 2000-01-30  Damir Dzeko  <ddzeko@zesoi.fer.hr>
9250
9251         * http.c (gethttp): Send custom Referer, if required.
9252
9253 1999-09-24  Charles G Waldman  <cgw@fnal.gov>
9254
9255         * netrc.c (parse_netrc): Allow passwords to contain spaces.
9256
9257         * netrc.c (parse_netrc): New function.
9258
9259 1999-09-17  Dan Berger  <dberger@ix.netcom.com>
9260
9261         * http.c (gethttp): Send it.
9262
9263         * url.c (parseurl): Detect query string in HTTP URL-s.
9264         (str_url): Print it.
9265
9266 2000-03-02  HIROSE Masaaki  <hirose31@t3.rim.or.jp>
9267
9268         * html.c (html_allow): Add <link href=...> and <script src=...>.
9269
9270 1999-05-02  andrew deryabin  <djsf@softhome.net>
9271
9272         * http.c (gethttp): Specify port in `Host' header only if it's
9273         different from 80.
9274
9275 1998-11-03  Edward J. Sabol  <sabol@alderaan.gsfc.nasa.gov>
9276
9277         * recur.c (recursive_retrieve): If a finite maximum depth is
9278         specified, and we're are already at that depth, don't download the
9279         HTML file for parsing.
9280
9281 2000-03-01  Dan Harkless  <wget@harkless.org>
9282
9283         * ftp.c (ftp_loop_internal): Call new downloaded_file() function,
9284         even though we don't do conversion on HTML files retrieved via
9285         FTP, so _current_ usage of downloaded_file() makes this call unneeded.
9286         (ftp_retrieve_list): Added a comment saying where we need to
9287         stat() a .orig file if FTP'd HTML file conversion is ever implemented.
9288         (ftp_retrieve_list): "Local file '%s' is more recent," is sometimes
9289         a lie -- reworded as "Server file no newer than local file '%s' --".
9290
9291         * http.c (http_loop): Fixed a typo and clarified a comment.
9292         (http_loop): When -K and -N are specified together, compare size
9293         and timestamp of server file X against local file X.orig (if
9294         extant) rather than converted local file X.
9295         (http_loop): "Local file '%s' is more recent," is sometimes a lie
9296         -- reworded as "Server file no newer than local file '%s' --".
9297         (http_loop): Call new downloaded_file() function to prevent
9298         wrongful overwriting of .orig file when -N is specified.
9299
9300         * url.c (convert_links): When -K specified, only rename X to
9301         X.orig if downloaded_file() returns TRUE.  Otherwise when we skip
9302         file X due to -N, we clobber an X.orig from a previous invocation.
9303         (convert_links): Call the failsafe xstrdup(), not the real strdup().
9304         (convert_links): Added a note asking anyone who understands how
9305         multiple URLs can correspond to a single file to comment it.
9306         (downloaded_file): Added this new function.
9307
9308         * url.h (downloaded_file): Added prototype for this new function
9309         as well as its downloaded_file_t enum type.
9310
9311         * wget.h (boolean): Added this new typedef and TRUE and FALSE #defines.
9312
9313 2000-02-29  Dan Harkless  <wget@harkless.org>
9314
9315         * version.c: Upped version to developer-only "1.5.3+dev".
9316
9317 2000-02-18  Dan Harkless  <wget@harkless.org>
9318
9319         * init.c (backup_converted): Added this new option.
9320
9321         * main.c (-K / --backup-converted): Added this new option.
9322
9323         * options.h (backup_converted): Added this new option.
9324
9325         * url.c (convert_links): When backup_converted is specified, save
9326         file X as X.orig before converting.
9327
9328         * url.h (urlpos): Fixed typo -- said "Rekative" instead of "Relative".
9329
9330 1998-09-21  Hrvoje Niksic  <hniksic@srce.hr>
9331
9332         * version.c: Wget 1.5.3 is released.
9333
9334 1998-09-21  Hrvoje Niksic  <hniksic@srce.hr>
9335
9336         * host.c (ftp_getaddress): Don't warn when reverse-lookup of local
9337         address doesn't yield FQDN.
9338
9339 1998-09-21  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
9340
9341         * cmpt.c (strerror): Fix declaration of sys_errlist.
9342
9343 1998-09-11  Hrvoje Niksic  <hniksic@srce.hr>
9344
9345         * main.c (main): Don't use an array subscript as the first
9346         argument to STRDUP_ALLOCA.
9347         From Kaveh R. Ghazi.
9348
9349 1998-09-11  Szakacsits Szabolcs  <szaka@sienet.hu>
9350
9351         * html.c (htmlfindurl): Download table background.
9352
9353 1998-09-11  Hans Grobler  <grobh@conde.ee.sun.ac.za>
9354
9355         * init.c (parse_line): Would free *com before allocating it.
9356         (parse_line): Would free com instead of *com.
9357
9358 1998-09-10  Howard Gayle  <howard@fjst.com>
9359
9360         * url.c (get_urls_html): Would drop the last character of the
9361         link.
9362
9363 1998-09-10  Hrvoje Niksic  <hniksic@srce.hr>
9364
9365         * http.c (http_loop): Don't print status code if quiet.
9366
9367 1998-09-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9368
9369         * log.c: Use <stdarg.h> only when __STDC__.
9370
9371 1998-09-10  Adam D. Moss  <adam@foxbox.org>
9372
9373         * html.c (htmlfindurl): Download <layer src=...>.
9374
9375 1998-09-10  Howard Gayle  <howard@fjst.com>
9376
9377         * ftp.c (ftp_retrieve_list): Don't update the time stamp of a file
9378         not retrieved.
9379
9380 1998-06-27  Hrvoje Niksic  <hniksic@srce.hr>
9381
9382         * utils.c: Include <libc.h> on NeXT.
9383
9384 1998-06-26  Heinz Salzmann  <heinz.salzmann@intermetall.de>
9385
9386         * url.c (get_urls_html): Fix calculation of URL position.
9387
9388 1998-06-23  Hrvoje Niksic  <hniksic@srce.hr>
9389
9390         * version.c: Wget 1.5.2 is released.
9391
9392 1998-06-23  Dave Love  <d.love@dl.ac.uk>
9393
9394         * ftp.c, init.c, netrc.c: Include errno.h.
9395
9396         * http.c: Include errno.h and time header.
9397
9398         * Makefile.in (exext): Define.
9399         (install.bin, uninstall.bin): Use it.
9400
9401 1998-06-21  Hrvoje Niksic  <hniksic@srce.hr>
9402
9403         * http.c (http_loop): Don't attempt to compare local and remote
9404         sizes if the remote size is unknown.
9405
9406 1998-06-16  Hrvoje Niksic  <hniksic@srce.hr>
9407
9408         * url.c (get_urls_html): Use malloc() instead of alloca in the
9409         loop.
9410
9411 1998-06-13  Hrvoje Niksic  <hniksic@srce.hr>
9412
9413         * version.c: Wget 1.5.2-b4 is released.
9414
9415 1998-06-13  Hrvoje Niksic  <hniksic@srce.hr>
9416
9417         * url.c (get_urls_html): Ignore spaces before and after the URI.
9418
9419 1998-06-08  Wanderlei Antonio Cavassin  <cavassin@conectiva.com.br>
9420
9421         * ftp.c (getftp): Translate `done'.
9422
9423 1998-06-06  Hrvoje Niksic  <hniksic@srce.hr>
9424
9425         * version.c: Wget 1.5.2-b3 is released.
9426
9427 1998-06-06  Alexander Kourakos  <awk@bnt.com>
9428
9429         * init.c (cleanup): Close dfp, don't free it.
9430
9431 1998-06-06  Hrvoje Niksic  <hniksic@srce.hr>
9432
9433         * utils.c (make_directory): Twiddle.
9434
9435         * config.h.in: Added template for access().
9436
9437 1998-06-05  Mathieu Guillaume  <mat@cythere.com>
9438
9439         * html.c (htmlfindurl): Download <input src=...>
9440
9441 1998-06-03  Hrvoje Niksic  <hniksic@srce.hr>
9442
9443         * utils.c (file_exists_p): Use access() with two arguments.
9444
9445 1998-05-27  Martin Kraemer  <Martin.Kraemer@mch.sni.de>
9446
9447         * netrc.c (parse_netrc): Correct logic.
9448
9449 1998-05-27  Hrvoje Niksic  <hniksic@srce.hr>
9450
9451         * ftp.c (getftp): Added `break'; suggested by Lin Zhe Min
9452         <ljm@ljm.wownet.net>.
9453
9454 1998-05-24  Hrvoje Niksic  <hniksic@srce.hr>
9455
9456         * version.c: Wget 1.5.2-b2 is released.
9457
9458 1998-05-18  Juan Jose Rodriguez  <jcnsoft@jal1.telmex.net.mx>
9459
9460         * mswindows.h: Don't translate mkdir to _mkdir under Borland.
9461
9462 1998-05-17  Hrvoje Niksic  <hniksic@srce.hr>
9463
9464         * retr.c (elapsed_time): Return correct value when
9465         HAVE_GETTIMEOFDAY is undefined.
9466
9467 1998-05-13  Hrvoje Niksic  <hniksic@srce.hr>
9468
9469         * version.c: Wget 1.5.2-b1 is released.
9470
9471 1998-05-08  Hrvoje Niksic  <hniksic@srce.hr>
9472
9473         * getopt.c (_getopt_internal): Use exec_name instead of argv[0].
9474         (_getopt_internal): Don't translate `#if 0'-ed strings.
9475
9476 1998-05-06  Douglas E. Wegscheid  <wegscd@whirlpool.com>
9477
9478         * mswindows.c (ws_handler): Use fork_to_background().
9479
9480 1998-05-05  Hrvoje Niksic  <hniksic@srce.hr>
9481
9482         * version.c: Wget 1.5.1 is released.
9483
9484 1998-05-05  Hrvoje Niksic  <hniksic@srce.hr>
9485
9486         * http.c (parse_http_status_line): Avoid `minor' and `major'
9487         names.
9488
9489 1998-05-02  Hrvoje Niksic  <hniksic@srce.hr>
9490
9491         * utils.c (mkdirhier): Renamed to make_directory.
9492
9493 1998-05-01  Hrvoje Niksic  <hniksic@srce.hr>
9494
9495         * mswindows.c (fork_to_background): Define under Windows.
9496
9497         * utils.c (fork_to_background): New function.
9498
9499         * html.c (htmlfindurl): Removed rerdundant casts.
9500
9501 1998-05-01  Douglas E. Wegscheid  <wegscd@whirlpool.com>
9502
9503         * mswindows.c (ws_mypath): Cache the path.
9504
9505 1998-04-30  Douglas E. Wegscheid  <wegscd@whirlpool.com>
9506
9507         * ftp.h: Prefix enum ftype members with FT_.
9508
9509         * ftp-ls.c, ftp.c, html.h: Adjust accordingly.
9510
9511         * mswindows.h: Use stat under Borland, _stat under MSVC.
9512
9513 1998-04-28  Hrvoje Niksic  <hniksic@srce.hr>
9514
9515         * http.c (known_authentication_scheme_p): New function.
9516         (gethttp): Handle authorization more correctly.
9517
9518         * ftp-basic.h: Removed.
9519
9520         * cmpt.h: Removed.
9521
9522         * utils.c: Include <unistd.h> before <pwd.h>; needed under SunOS
9523         with gcc 2.8.
9524         (numdigit): Use `while' loop.
9525
9526         * http.c (create_authorization_line): Detect authentication
9527         schemes case-insensitively.
9528
9529         * http.c (extract_header_attr): Use strdupdelim().
9530         (digest_authentication_encode): Move declaration of local
9531         variables to smaller scope.
9532         (digest_authentication_encode): Reset REALM, OPAQUE and NONCE.
9533         (create_authorization_line): Detect authentication schemes
9534         case-insensitively.
9535
9536         * utils.c (touch): Constify.
9537
9538         * http.c (gethttp): Report a nicer error when no data is received.
9539
9540         * rbuf.h (RBUF_READCHAR): Ditto.
9541
9542         * ftp-basic.c (ftp_response): Use sizeof.
9543
9544 1998-04-27  Hrvoje Niksic  <hniksic@srce.hr>
9545
9546         * retr.c (print_percentage): EXPECTED is long, not int.
9547         (print_percentage): Use floating-point arithmetic to avoid
9548         overflow with large files' sizes multiplied with 100.
9549
9550 1998-04-27  Gregor Hoffleit  <flight@mathi.uni-heidelberg.de>
9551
9552         * config.h.in: Added pid_t stub.
9553
9554         * sysdep.h (S_ISREG): Moved here from mswindows.h (NeXT doesn't
9555         define it).
9556
9557 1998-04-20  Hrvoje Niksic  <hniksic@srce.hr>
9558
9559         * version.c: Wget 1.5.0 is released.
9560
9561 1998-04-18  Hrvoje Niksic  <hniksic@srce.hr>
9562
9563         * url.c (str_url): Ditto.
9564
9565         * ftp-basic.c (ftp_rest): Use new name.
9566
9567         * utils.c (long_to_string): Renamed from prnum().
9568
9569 1998-04-16  Hrvoje Niksic  <hniksic@srce.hr>
9570
9571         * version.c: Wget 1.5-b17 is released.
9572
9573 1998-04-08  Hrvoje Niksic  <hniksic@srce.hr>
9574
9575         * headers.c (header_get): New argument FLAGS.
9576
9577         * http.c (gethttp): If request is malformed, bail out of the
9578         header loop.
9579         (gethttp): Check for empty header *after* the status line checks.
9580         (gethttp): Disallow continuations for status line.
9581
9582 1998-04-08  Hrvoje Niksic  <hniksic@srce.hr>
9583
9584         * version.c: Wget 1.5-b16 is released.
9585
9586 1998-04-08  Hrvoje Niksic  <hniksic@srce.hr>
9587
9588         * init.c (commands): Renamed `always_rest' to `continue'.
9589
9590 1998-04-05  Hrvoje Niksic  <hniksic@srce.hr>
9591
9592         * all: Use it.
9593
9594         * log.c (logputs): New argument.
9595         (logvprintf): Ditto.
9596         (logprintf): Ditto.
9597
9598 1998-04-04  Hrvoje Niksic  <hniksic@srce.hr>
9599
9600         * http.c (http_atotm): Update comment.
9601
9602         * main.c (i18n_initialize): Set LC_MESSAGES, not LC_ALL.
9603
9604         * wget.h: Renamed ENABLED_NLS to HAVE_NLS.
9605
9606         * main.c (i18n_initialize): New function.
9607         (main): Use it.
9608
9609         * log.c: Include <unistd.h>.
9610
9611         * retr.c (show_progress): Cast alloca to char *.
9612
9613 1998-04-04  Hrvoje Niksic  <hniksic@srce.hr>
9614
9615         * version.c: Wget 1.5-b15 is released.
9616
9617 1998-04-04  Hrvoje Niksic  <hniksic@srce.hr>
9618
9619         * utils.h: Declare file_non_directory_p().
9620
9621 1998-04-03  Hrvoje Niksic  <hniksic@srce.hr>
9622
9623         * main.c (main): It's `tries', not `numtries' now.
9624
9625 1998-04-01  Hrvoje Niksic  <hniksic@srce.hr>
9626
9627         * init.c (getperms): Removed.
9628
9629 1998-04-01  Tim Charron  <tcharron@interlog.com>
9630
9631         * log.c (logvprintf): Don't use ARGS twice.
9632
9633 1998-04-01  John  <john@futuresguide.com>
9634
9635         * mswindows.c: Cleaned up.
9636
9637 1998-04-01  Hrvoje Niksic  <hniksic@srce.hr>
9638
9639         * version.c: Wget 1.5-b14 is released.
9640
9641 1998-04-01  Hrvoje Niksic  <hniksic@srce.hr>
9642
9643         * ftp-opie.c (STRLEN4): New macro.
9644         (btoe): Use it.
9645
9646 1998-04-01  Junio Hamano  <junio@twinsun.com>
9647
9648         * http.c: Document all the Digest functions.
9649
9650 1998-04-01  Hrvoje Niksic  <hniksic@srce.hr>
9651
9652         * utils.c (file_non_directory_p): Renamed from isfile().
9653
9654         * mswindows.h (S_ISREG): New macro, suggested by Tim Adam.
9655
9656 1998-03-31  Hrvoje Niksic  <hniksic@srce.hr>
9657
9658         * utils.c (mkdirhier): Use 0777 instead of opt.dirmode.
9659
9660         * init.c (cmd_spec_dotstyle): Use 48 dots per line for binary
9661         style.
9662         (cmd_permissions): Removed.
9663
9664         * config.h.in: Add template for WORDS_BIGENDIAN.
9665
9666 1998-03-31  Junio Hamano  <junio@twinsun.com>
9667
9668         * http.c (HEXD2asc): New macro.
9669         (dump_hash): Use it.
9670
9671 1998-03-31  Hrvoje Niksic  <hniksic@srce.hr>
9672
9673         * version.c: Wget 1.5-b13 is released.
9674
9675 1998-03-31  Hrvoje Niksic  <hniksic@srce.hr>
9676
9677         * main.c (main): Don't try to use `com'.
9678
9679 1998-03-30  Hrvoje Niksic  <hniksic@srce.hr>
9680
9681         * init.c (cmd_permissions): New function.
9682
9683 1998-03-30  Hrvoje Niksic  <hniksic@srce.hr>
9684
9685         * version.c: Wget 1.5-b12 is released.
9686
9687 1998-03-30  Hrvoje Niksic  <hniksic@srce.hr>
9688
9689         * init.c (commands): Renamed `numtries' to `tries'.
9690         (cmd_spec_debug): Removed.
9691         (home_dir): Under Windows, return `C:\' if HOME is undefined.
9692
9693 1998-03-29  Hrvoje Niksic  <hniksic@srce.hr>
9694
9695         * config.h.in: Define _XOPEN_SOURCE.
9696
9697         * init.c (check_user_specified_header): New function.
9698         (cmd_spec_header): Use it.
9699         (cmd_spec_useragent): New function.
9700
9701 1998-03-29  Hrvoje Niksic  <hniksic@srce.hr>
9702
9703         * version.c: Wget 1.5-b11 is released.
9704
9705 1998-03-28  Hrvoje Niksic  <hniksic@srce.hr>
9706
9707         * wget.h: Include <libintl.h> only if NLS is enabled.
9708
9709 1998-03-26  Hrvoje Niksic  <hniksic@srce.hr>
9710
9711         * options.h (struct options): Made `wait' a long.
9712         (struct options): Ditto for `timeout'.
9713
9714 1998-03-19  Hrvoje Niksic  <hniksic@srce.hr>
9715
9716         * utils.c (exists): Renamed to file_exists_p.
9717         (file_exists_p): Use access() if available.
9718
9719 1998-03-17  Hrvoje Niksic  <hniksic@srce.hr>
9720
9721         * utils.c (memfatal): Set save_log_p to 0 to avoid potential
9722         infloop.
9723
9724         * log.c: do_logging -> save_log_p.
9725
9726         * config.h.in: Added template for HAVE_VSNPRINTF.
9727
9728 1998-03-16  Hrvoje Niksic  <hniksic@srce.hr>
9729
9730         * init.c: Ditto.
9731
9732         * http.c: Protect declaration against non-ANSI compiler.
9733
9734         * log.c (logvprintf): Use vsnprintf() if available.
9735
9736         * getopt.c (main): Don't translate test stuff.
9737
9738 1998-03-16  Hrvoje Niksic  <hniksic@srce.hr>
9739
9740         * version.c: Wget 1.5-b10 is released.
9741
9742 1998-03-11  Hrvoje Niksic  <hniksic@srce.hr>
9743
9744         * ftp.c (getftp): Don't translate "CWD %s".
9745
9746         * wget.h (GCC_FORMAT_ATTR): Renamed from FORMAT_ATTR.
9747
9748 1998-03-07  Hrvoje Niksic  <hniksic@srce.hr>
9749
9750         * ftp-opie.c (btoe): Use memcpy() instead of strncat().
9751
9752         * log.c (logputs): New function.
9753         (logvprintf): Renamed from vlogmsg; use logputs().
9754
9755         * retr.c (show_progress): Print `[100%]' when the retrieval is
9756         finished.
9757
9758         * init.c (run_wgetrc): Use FILE, not PATH.
9759         (wgetrc_file_name): Ditto.
9760
9761 1998-03-07  Tim Adam  <tma@osa.com.au>
9762
9763         * recur.c (parse_robots): Correctly reset `entries' on empty
9764         disallow.
9765
9766 1998-03-07  Hrvoje Niksic  <hniksic@srce.hr>
9767
9768         * init.c (cmd_spec_debug): Use cmd_boolean().
9769
9770 1998-02-23  Hrvoje Niksic  <hniksic@srce.hr>
9771
9772         * http.c (gethttp): Create proxy-authorization correctly.
9773
9774 1998-02-22  Hrvoje Niksic  <hniksic@srce.hr>
9775
9776         * md5.c: Ditto.
9777
9778         * getopt.c: Use ANSI function definitions.
9779
9780         * ftp-opie.c: New file.
9781
9782         * options.h: Don't redefine EXTERN.
9783
9784         * init.c: Sort it correctly.
9785
9786 1998-02-22  Hrvoje Niksic  <hniksic@srce.hr>
9787
9788         * version.c: Wget 1.5-b9 is released.
9789
9790 1998-02-22  Hrvoje Niksic  <hniksic@srce.hr>
9791
9792         * recur.c (recursive_retrieve): Reset `first_time'.
9793
9794         * ftp.c (getftp): Added `default' clause to switches of uerr_t.
9795
9796         * rbuf.c (rbuf_peek): Simplified.
9797         (rbuf_flush): Use MINVAL.
9798
9799         * wget.h (MINVAL): Moved from url.h.
9800
9801         * rbuf.h (RBUF_FD): New macro.
9802
9803         * url.c (add_url): Add to the head of the list.
9804
9805         * ftp.c (ftp_retrieve_list): Set the permissions to downloaded
9806         file.
9807         (getftp): Set the default permissions to 0600.
9808
9809 1998-02-21  Hrvoje Niksic  <hniksic@srce.hr>
9810
9811         * url.c (get_urls_html): Ditto.
9812         (convert_links): Ditto.
9813
9814         * recur.c (parse_robots): Ditto.
9815
9816         * html.c (ftp_index): Ditto.
9817
9818         * ftp-ls.c (ftp_parse_unix_ls): Open file as binary.
9819
9820         * init.c (defaults): Initialize `opt' to zero via memset.
9821
9822         * http.c (digest_authentication_encode): goto considered harmful.
9823
9824 1998-02-19  Hrvoje Niksic  <hniksic@srce.hr>
9825
9826         * ftp.c (delelement): Simplify and fix leak.
9827
9828 1998-02-18  Hrvoje Niksic  <hniksic@srce.hr>
9829
9830         * http.c (dump_hash): Use HEXD2ASC instead of home-grown stuff.
9831
9832         * url.h (HEXD2ASC): Removed warning.
9833
9834         * init.c (comind): Use binary search.
9835         (commands): Reorganized.
9836         (setval): Ditto.
9837         (cmd_boolean): New function.
9838         (cmd_number): Ditto.
9839         (cmd_number_inf): Ditto.
9840         (cmd_string): Ditto.
9841         (cmd_vector): Ditto.
9842         (cmd_directory_vector): Ditto.
9843         (cmd_bytes): Ditto.
9844         (cmd_time): Ditto.
9845         (cmd_spec_debug): Ditto.
9846         (cmd_spec_dirmode): Ditto.
9847         (cmd_spec_dirstruct): Ditto.
9848         (cmd_spec_dotstyle): Ditto.
9849         (cmd_spec_header): Ditto.
9850         (cmd_spec_htmlify): Ditto.
9851         (cmd_spec_mirror): Ditto.
9852         (cmd_spec_outputdocument): Ditto.
9853         (cmd_spec_recursive): Ditto.
9854         (settime): Merged with cmd_time().
9855         (setbytes): Merged with cmd_bytes().
9856         (setonoff): Merged with cmd_boolean().
9857         (onoff): Ditto.
9858
9859 1998-02-17  Hrvoje Niksic  <hniksic@srce.hr>
9860
9861         * Makefile.in (distclean): Remove `config.h'.
9862
9863 1998-02-17  Hrvoje Niksic  <hniksic@srce.hr>
9864
9865         * version.c: Wget 1.5-b8 is released.
9866
9867 1998-02-17  Hrvoje Niksic  <hniksic@srce.hr>
9868
9869         * http.c (digest_authentication_encode): New function.
9870         (create_authorization_line): Use it.
9871         (dump_hash): New function.
9872         (digest_authentication_encode): Use it.
9873
9874         * fnmatch.c: Renamed from `mtch.c'.
9875
9876 1998-02-15  Karl Eichwalder  <ke@suse.de>
9877
9878         * main.c (main): Tag "Written by..." string as translatable.
9879
9880 1998-02-15  Hrvoje Niksic  <hniksic@srce.hr>
9881
9882         * wget.h (FREE_MAYBE): New macro.
9883
9884         * http.c (create_authorization_line): Don't use ANSI C string
9885         concatenation feature.
9886         (basic_authentication_encode): Use alloca() for temporary
9887         variables.
9888
9889         * recur.h: Ditto.
9890
9891         * http.c: Ditto.
9892
9893         * headers.h: Ditto.
9894
9895         * ftp-basic.c: Protect declaration against non-ANSI compiler.
9896
9897         * http.c (create_authorization_line): Cast `unsigned char *' to
9898         `char *' for sprintf, to shut up the noisy Digital Unix cc.
9899
9900 1998-02-15  Hrvoje Niksic  <hniksic@srce.hr>
9901
9902         * version.c: Wget 1.5-b7 is released.
9903
9904 1998-02-15  Hrvoje Niksic  <hniksic@srce.hr>
9905
9906         * cmpt.c (strstr): Synched with glibc-2.0.6.
9907
9908         * ftp-basic.c (calculate_skey_response): Ditto.
9909         (calculate_skey_response): Use alloca().
9910
9911         * http.c (create_authorization_line): Work with FSF's version of
9912         md5.c.
9913
9914         * md5.c: New file, from GNU libc.
9915
9916 1998-02-14  Hrvoje Niksic  <hniksic@srce.hr>
9917
9918         * url.h (URL_CLEANSE): Name the temporary variable more carefully.
9919
9920 1998-02-13  Hrvoje Niksic  <hniksic@srce.hr>
9921
9922         * http.c (basic_authentication_encode): New function, instead of
9923         the macro.
9924
9925 1998-02-13  Junio Hamano  <junio@twinsun.com>
9926
9927         * http.c: Add HTTP-DA support.
9928         * ftp-basic.c: Add Opie/S-key support.
9929         * config.h.in, Makefile.in: Add HTTP-DA and Opie/S-key support.
9930         * md5.c, md5.h: New files.
9931
9932 1998-02-13  Hrvoje Niksic  <hniksic@srce.hr>
9933
9934         * http.c (http_process_range): Renamed from hprocrange().
9935         (http_process_range): Parse the whole header.
9936
9937         * headers.c: New file.
9938         (header_process): New function.
9939         (header_get): Renamed from fetch_next_header.
9940
9941         * all: Include utils.h only where necessary.
9942
9943         * wget.h: Declare xmalloc(), xrealloc() and xstrdup() here.
9944
9945         * wget.h: Add provisions for dmalloc.
9946
9947 1998-02-12  Hrvoje Niksic  <hniksic@srce.hr>
9948
9949         * version.c: Wget 1.5-b6 is released.
9950
9951 1998-02-12  Hrvoje Niksic  <hniksic@srce.hr>
9952
9953         * ftp.c (ftp_loop): Determine `filename' more precisely.
9954
9955         * init.c (setval): Don't set `opt.quiet' if output-document is
9956         `-'.
9957
9958         * log.c (log_init): Print to STDERR instead of STDOUT.
9959         (vlogmsg): Use STDERR by default.
9960         (logflush): Ditto.
9961
9962 1998-02-11  Simon Josefsson  <jas@pdc.kth.se>
9963
9964         * host.c: Use addr_in again.
9965
9966 1998-02-08  Karl Eichwalder  <karl@suse.de>
9967
9968         * http.c (gethttp): Fixed typo.
9969
9970 1998-02-08  Hrvoje Niksic  <hniksic@srce.hr>
9971
9972         * version.c: Wget 1.5-b5 is released.
9973
9974 1998-02-08  Hrvoje Niksic  <hniksic@srce.hr>
9975
9976         * retr.c (show_progress): Use it.
9977
9978         * log.c (logflush): New function.
9979
9980         * wget.h: Utilize __attribute__ if on gcc.
9981
9982 1998-02-07  Hrvoje Niksic  <hniksic@srce.hr>
9983
9984         * http.c (base64_encode_line): New argument LENGTH.
9985         (BASIC_AUTHENTICATION_ENCODE): Use it.
9986         (BASIC_AUTHENTICATION_ENCODE): Take length of HEADER into account.
9987
9988         * main.c (main): Fixed fprintf() format mismatch.
9989
9990 1998-02-06  Hrvoje Niksic  <hniksic@srce.hr>
9991
9992         * version.c: Wget 1.5-b4 is released.
9993
9994 1998-02-03  Simon Josefsson  <jas@pdc.kth.se>
9995
9996         * host.c: use sockaddr_in instead of addr_in.
9997
9998 1998-02-04  Hrvoje Niksic  <hniksic@srce.hr>
9999
10000         * init.c (cleanup): Use it.
10001
10002         * recur.c (recursive_cleanup): New function.
10003
10004         * retr.c (retrieve_from_file): Ditto.
10005
10006         * main.c (main): Use it.
10007
10008         * recur.c (recursive_reset): New function.
10009
10010         * retr.c (retrieve_from_file): Ditto.
10011
10012         * main.c (main): Simplify call to recursive_retrieve().
10013
10014         * recur.c (recursive_retrieve): Removed FLAGS argument.
10015
10016         * http.c (gethttp): Changed call to iwrite().
10017
10018 1998-02-03  Hrvoje Niksic  <hniksic@srce.hr>
10019
10020         * url.c (get_urls_html): Ditto.
10021         (free_urlpos): Ditto.
10022         (mkstruct): Ditto.
10023         (construct): Ditto.
10024
10025         * retr.c (retrieve_url): Move declaration of local variables to
10026         smaller scope.
10027
10028         * url.c (urlproto): Use it.
10029         (parseurl): Ditto.
10030         (str_url): Ditto.
10031         (get_urls_html): Ditto.
10032
10033         * utils.h (ARRAY_SIZE): New macro.
10034
10035         * url.c (proto): Moved from url.h.
10036
10037         * url.h (URL_CLEANSE): Reformatted.
10038         (USE_PROXY_P): Renamed from USE_PROXY.
10039
10040         * ftp-basic.c: Adjust to the new interface of iwrite().
10041
10042         * ftp-basic.c (ftp_port): Use alloca().
10043
10044 1998-02-03  Hrvoje Niksic  <hniksic@srce.hr>
10045
10046         * version.c: Wget 1.5-b3 is released.
10047
10048         * host.c (ftp_getaddress): Don't print to stderr directly.
10049
10050         * init.c (setbytes): Support `g' for gigabytes.
10051         (cmdtype): New specification CTIME.
10052         (setval): Use it with settime().
10053         (commands): Use it for WAIT and TIMEOUT.
10054
10055 1998-02-02  Hrvoje Niksic  <hniksic@srce.hr>
10056
10057         * http.c (BASIC_AUTHENTICATION_ENCODE): New macro.
10058         (gethttp): Use it.
10059
10060         * utils.c (unique_name_1): Moved from url.c.
10061         (unique_name): Ditto.
10062
10063         * url.c (url_filename): Ditto.
10064
10065         * log.c (redirect_output): Changed call to unique_name().
10066
10067         * url.c (unique_name_1): Renamed from unique_name().
10068         (unique_name): Changed interface.
10069
10070         * init.c (enum cmdid): Moved from init.h.
10071         (cmdtype): Ditto.
10072         (struct cmd): Ditto.
10073
10074         * main.c (main): Use it.
10075         (main): Moved `--backups' to not have a short option.
10076
10077         * options.h (struct options): New member BACKGROUND.
10078
10079         * main.c (print_help): Rearranged.
10080         (main): New long options for -n* short options: --no-directories,
10081         --no-host-directories, --non-verbose, --no-host-lookup and
10082         --dont-remove-listing.
10083
10084 1998-02-01  Hrvoje Niksic  <hniksic@srce.hr>
10085
10086         * main.c (main): Use log_close().
10087
10088         * log.c: New variable LOGFP.
10089         (vlogmsg): Use it.
10090         (redirect_output): Don't open /dev/null; set LOGFP to stdin
10091         instead.
10092         (log_close): New function.
10093
10094         * options.h (struct options): Removed LFILE.
10095
10096         * log.c (log_enable): Removed.
10097
10098         * main.c (main): Use it.
10099
10100         * log.c (log_init): New function.
10101
10102         * url.c (get_urls_html): Removed needless assignment to BASE.
10103
10104         * host.c (add_hlist): Don't set CMP needlessly.
10105
10106         * utils.c (match_backwards): Ditto.
10107         (in_acclist): Ditto.
10108
10109         * url.c (findurl): Ditto.
10110
10111         * netrc.c (parse_netrc): Ditto.
10112
10113         * log.c (log_dump): Ditto.
10114
10115         * html.c (html_quote_string): Ditto.
10116
10117         * ftp-basic.c (ftp_request): Made static.
10118
10119         * connect.c: Made global variables static.
10120
10121         * url.c (construct): Ditto.
10122
10123         * init.c (init_path): Avoid assignment inside `if'-condition.
10124
10125         * ftp.c: Don't include in.h or winsock.h.
10126
10127         * ftp.c (ftp_loop): Use SZ.
10128
10129         * connect.c (bindport): Cast &addrlen to int *.
10130         (conaddr): Ditto.
10131
10132         * init.c (initialize): Don't use SYSTEM_WGETRC unconditionally.
10133
10134 1998-01-31  Hrvoje Niksic  <hniksic@srce.hr>
10135
10136         * ftp.c (getftp): Initialize opt.ftp_pass here.
10137         (ftp_retrieve_dirs): Use alloca().
10138
10139         * init.c (defaults): Don't initialize opt.ftp_pass.
10140
10141         * sysdep.h (S_ISLNK): Declare for OS/2; ditto for lstat.
10142         From Ivan F. Martinez <ivanfm@ecodigit.com.br>.
10143
10144 1998-01-31  Hrvoje Niksic  <hniksic@srce.hr>
10145
10146         * recur.c (parse_robots): Check for comments more correctly.
10147
10148         * host.c (ftp_getaddress): Use STRDUP_ALLOCA.
10149         (ftp_getaddress): Add diagnostics when reverse-lookup yields only
10150         hostname.
10151
10152 1998-01-31  Hrvoje Niksic  <hniksic@srce.hr>
10153
10154         * version.c: Wget 1.5-b2 is released.
10155
10156         * netrc.c (NETRC_FILE_NAME): Moved from netrc.h.
10157
10158         * utils.c (proclist): Pass FNM_PATHNAME to fnmatch().
10159
10160         * ftp-basic.c (ftp_pasv): Avoid unnecessary casting to unsigned
10161         char.
10162
10163         * log.c: Don't attempt to hide arguments from ansi2knr.
10164
10165         * cmpt.c: Synched strptime() and mktime() with glibc-2.0.6.
10166
10167         * ansi2knr.c: Use a later version, from fileutils-3.16l alpha.
10168
10169         * ftp.c (getftp): Ditto.
10170
10171         * http.c (gethttp): Use it.
10172
10173         * retr.c (get_contents): New argument EXPECTED; pass it to
10174         show_progress().
10175         (show_progress): New argument EXPECTED; use it to display
10176         percentages.
10177
10178         * init.c (setval): Ditto.
10179
10180         * http.c (gethttp): Ditto.
10181         (http_loop): Ditto.
10182
10183         * ftp.c (getftp): Ditto.
10184         (ftp_loop_internal): Ditto.
10185
10186         * ftp-ls.c (ftp_parse_unix_ls): Use abort() instead of assert(0).
10187
10188         * sysdep.h (CLOSE): Simplify; use DEBUGP.
10189
10190         * netrc.c (search_netrc): Use alloca().
10191
10192         * init.c (defaults): Initialize no_flush.
10193
10194         * log.c (vlogmsg): Don't flush if no_flush.
10195
10196         * options.h (struct options): New variable no_flush.
10197
10198         * main.c (main): Don't play games with buffering.
10199
10200         * log.c (vlogmsg): Flush the output after every message.
10201
10202 1998-01-31  Hrvoje Niksic  <hniksic@srce.hr>
10203
10204         * init.c (parse_line): Ditto.
10205
10206         * url.c (get_urls_html): Ditto.
10207
10208         * main.c (main): Don't cast to unsigned char.
10209
10210         * init.c (run_wgetrc): Don't cast to unsigned char.
10211         (parse_line): Accept char instead of unsigned char.
10212
10213         * html.c (htmlfindurl): Use char instead of unsigned char.
10214
10215         * all: Use them.
10216
10217         * sysdep.h: Add wrappers to ctype macros to make them
10218         eight-bit-clean:
10219
10220 1998-01-30  Hrvoje Niksic  <hniksic@srce.hr>
10221
10222         * html.c (htmlfindurl): Download <img lowsrc=...>
10223
10224         * main.c (main): Ignore SIGPIPE.
10225
10226         * connect.c (select_fd): New argument WRITEP.
10227         (iwrite): Call select_fd().
10228
10229 1997-02-27  Fila Kolodny <fila@ibi.com>
10230
10231         * ftp.c (ftp_retrieve_list): If retrieving symlink and the proper
10232         one already exists, just skip it.
10233
10234 1998-01-30  Hrvoje Niksic  <hniksic@srce.hr>
10235
10236         * http.c (gethttp): Cosmetic changes.
10237
10238         * http.c (check_end): Allow `+D...' instead of `GMT'.
10239         From Fabrizio Pollastri <pollastri@cstv.to.cnr.it>.
10240
10241         * url.c (process_ftp_type): New function.
10242         (parseurl): Use it.
10243
10244         * connect.c (iwrite): Allow writing in a few chunks.
10245         (bindport): Made SRV static, so addr can point to it.
10246         (select_fd): Removed HPUX kludge.
10247
10248         * host.c (free_hlist): Incorporated into clean_hosts().
10249
10250 1998-01-29  Hrvoje Niksic  <hniksic@srce.hr>
10251
10252         * host.c (hlist): Made static.
10253         (search_address): Cosmetic change.
10254
10255 1998-01-29  Hrvoje Niksic  <hniksic@srce.hr>
10256
10257         * version.c: Wget v1.5-b1 is released.
10258
10259         * http.c (hgetlen): Use sizeof() to get the header length.
10260         (hgetrange): Ditto.
10261         (hgettype): Ditto.
10262         (hgetlocation): Ditto.
10263         (hgetmodified): Ditto.
10264         (haccepts_none): Ditto.
10265
10266         * main.c (main): Updated `--version' and `--help' output, as per
10267         Francois Pinard's suggestions.
10268
10269         * main.c: Include locale.h; call setlocale(), bindtextdomain() and
10270         textdomain().
10271
10272         * config.h.in: Define stubs for I18N3.
10273
10274         * wget.h: Include libintl.h.
10275
10276 1998-01-28  Hrvoje Niksic  <hniksic@srce.hr>
10277
10278         * url.c (mkstruct): Check for opt.cut_dirs.
10279         (mkstruct): alloca()-te more, xmalloc() less.
10280
10281         * utils.c (load_file): Check for ferror().
10282
10283         * url.c (get_urls_file): Close only the files we opened.
10284         (get_urls_html): Ditto.
10285         (count_slashes): New function.
10286
10287         * http.h: Removed.
10288
10289         * http.c (gethttp): Respect username and password provided by
10290         proxy URL.
10291         (base64_encode_line): Write into an existing buffer instead of
10292         malloc-ing a new one.
10293         (struct http_stat): Moved from http.h
10294
10295         * retr.c (retrieve_url): Free SUF.
10296
10297         * all: Removed lots of unnecessary .h dependencies.
10298
10299         * html.c (global_state): Made static.
10300
10301         * utils.h (ALLOCA_ARRAY): New macro.
10302
10303         * main.c (main): New option `--cut-dirs'.
10304
10305         * url.c (construct): Use alloca() for T.
10306
10307         * utils.c (mkdirhier): Use STRDUP_ALLOCA.
10308
10309         * host.c (_host_t): Moved from host.h.
10310         (struct host): Renamed from _host_t.
10311         (store_hostaddress): Use STRDUP_ALLOCA for INET_S.
10312         (realhost): Ditto.
10313
10314         * host.h: Don't include url.h.
10315
10316         * ftp.c (LIST_FILENAME): Moved from ftp.h.
10317
10318         * init.c (DEFAULT_FTP_ACCT): Moved from ftp.h.
10319
10320         * main.c (main): Enable log if the output goes to a TTY.
10321
10322         * connect.h: Removed unused constant `BACKLOG'.
10323
10324         * config.h.in: Check for isatty().
10325
10326         * Makefile.in (LINK): Use CFLAGS when linking.
10327
10328 1998-01-27  Hrvoje Niksic  <hniksic@srce.hr>
10329
10330         * mswindows.c (ws_hangup): Use redirect_output().
10331
10332         * main.c (redirect_output_signal): New function; use
10333         redirect_output().
10334
10335         * log.c (redirect_output): New function, based on hangup(), which
10336         is deleted.
10337
10338         * log.c (vlogmsg): New function.
10339
10340         * wget.h (DEBUGP): Use debug_logmsg().
10341
10342         * main.c (hangup): Use it.
10343
10344         * log.c (log_dump): New function.
10345
10346         * utils.h (DO_REALLOC): Use `long' for various sizes.
10347
10348         * http.c (hskip_lws): Use `while', for clarity.
10349         (HTTP_DYNAMIC_LINE_BUFFER): New constant.
10350         (fetch_next_header): Use it instead of DYNAMIC_LINE_BUFFER.
10351
10352         * ftp-basic.c (FTP_DYNAMIC_LINE_BUFFER): New constant.
10353         (ftp_response): Use it instead of DYNAMIC_LINE_BUFFER.
10354
10355         * utils.c (DYNAMIC_LINE_BUFFER): Moved from utils.c.
10356         (LEGIBLE_SEPARATOR): Ditto.
10357         (FILE_BUFFER_SIZE): Ditto.
10358
10359         * retr.c (BUFFER_SIZE): Moved from retr.h.
10360
10361         * log.c: New file.
10362         (logmsg): Moved from utils.c.
10363         (debug_logmsg): New function.
10364
10365         * mswindows.h: Include it here.
10366
10367         * init.c: Ditto.
10368
10369         * utils.c: Don't include <windows.h>.
10370
10371 1998-01-25  Hrvoje Niksic  <hniksic@srce.hr>
10372
10373         * host.c (ftp_getaddress): Ditto.
10374
10375         * main.c (main): Use it.
10376
10377         * utils.h (STRDUP_ALLOCA): New macro.
10378
10379         * init.c: Prepend `wget: ' to error messages printed on stderr.
10380
10381         * utils.c (mkdirhier): Renamed from mymkdir.
10382         (touch): Renamed from my_touch.
10383         (pwd_cuserid): Renamed from my_cuserid().
10384
10385 1998-01-24  Andy Eskilsson  <andy.eskilsson@telelogic.se>
10386
10387         * utils.c (accdir): Process wildcards.
10388         (proclist): New function.
10389         (accdir): Use it to avoid code repetition.
10390
10391 1998-01-24  Hrvoje Niksic  <hniksic@srce.hr>
10392
10393         * recur.c (parse_robots): Respect opt.useragent; use alloca().
10394
10395         * http.c (gethttp): Construct useragent accordingly.
10396
10397         * version.c: Changed version string to numbers-only.
10398
10399         * main.c (print_help): List all the options.
10400
10401         * mswindows.c (windows_main_junk): Initialize argv0 here.
10402
10403 1998-01-24  Karl Heuer  <kwzh@gnu.org>
10404
10405         * netrc.c (search_netrc): Initialize `l' only after processing
10406         netrc.
10407
10408         * main.c (main): Don't trap SIGHUP if it's being ignored.
10409
10410 1998-01-24  Hrvoje Niksic  <hniksic@srce.hr>
10411
10412         * all: Use logmsg().
10413
10414         * utils.c (time_str): Moved from retr.c.
10415         (logmsg): New function.
10416         (logmsg_noflush): Ditto.
10417
10418         * rbuf.c: New file, moved buf_* functions here.
10419
10420         * ftp.c (ftp_expected_bytes): Moved from ftp-basic.c.
10421
10422         * ftp-basic.c (ftp_rest): Use prnum().
10423
10424         * ftp-basic.c: Ditto.
10425
10426         * ftp.c: Use the new reading functions and macros.
10427
10428         * retr.c (buf_initialize): New function.
10429         (buf_initialized_p): Ditto.
10430         (buf_uninitialize): Ditto.
10431         (buf_fd): Ditto.
10432
10433         * http.c (fetch_next_header): Use the BUF_READCHAR macro for
10434         efficiency.
10435         (gethttp): Use alloca() where appropriate.
10436
10437         * retr.c (buf_readchar): Use it.
10438         (buf_peek): Use rstreams.
10439
10440         * retr.h (BUF_READCHAR): New macro.
10441
10442         * init.c (home_dir): Rewritten for clarity.
10443         (init_path): Ditto.
10444
10445         * mswindows.c (ws_backgnd): Made static.
10446         (read_registry): Ditto.
10447         (ws_cleanup): Ditto.
10448         (ws_handler): Ditto.
10449
10450 1998-01-23  Hrvoje Niksic  <hniksic@srce.hr>
10451
10452         * alloca.c: New file.
10453
10454         * Makefile.in (ALLOCA): Define.
10455
10456         * mswindows.c (ws_help): Constify.
10457         (ws_help): Use alloca.
10458
10459         * mswindows.c: Reformat.
10460
10461         * all: Added _(...) annotations for I18N snarfing and translation.
10462
10463         * host.c (ftp_getaddress): Nuke SYSINFO.
10464         (ftp_getaddress): Don't use getdomainname().
10465         (ftp_getaddress): Use uname(), where available.
10466
10467         * http.c (gethttp): Protect a stray fprintf().
10468
10469         * init.c (settime): New function.
10470         (setval): Treat WAIT specially, allowing suffixes like `m' for
10471         minutes, etc.
10472
10473 1998-01-21  Hrvoje Niksic  <hniksic@srce.hr>
10474
10475         * url.c (get_urls_html): Use alloca() for TEMP.
10476
10477 1998-01-21  Jordan Mendelson  <jordy@wserv.com>
10478
10479         * url.c (rotate_backups): New function.
10480
10481         * http.c (gethttp): Ditto.
10482
10483         * ftp.c (getftp): Rotate backups.
10484
10485 1997-12-18  Hrvoje Niksic  <hniksic@srce.hr>
10486
10487         * all: Renamed nmalloc(), nrealloc() and nstrdup() to xmalloc(),
10488         xrealloc() and xstrdup().  Use the new functions.
10489
10490         * url.c (decode_string): Made static.
10491         (has_proto): Ditto.
10492         (parse_dir): Ditto.
10493         (parse_uname): Ditto.
10494         (mkstruct): Ditto.
10495         (construct): Ditto.
10496         (construct_relative): Ditto.
10497
10498         * retr.c (show_progress): Made static.
10499
10500         * recur.c (robots_url): Made static.
10501         (retrieve_robots): Ditto.
10502         (parse_robots): Ditto.
10503         (robots_match): Ditto.
10504
10505         * main.h: Removed.
10506
10507         * main.c (printhelp): Made static.
10508         (hangup): Ditto.
10509
10510         * init.c (comind): Made static.
10511         (defaults): Ditto.
10512         (init_path): Ditto.
10513         (run_wgetrc): Ditto.
10514         (onoff): Ditto.
10515         (setonoff): Ditto.
10516         (setnum): Ditto.
10517         (myatoi): Ditto.
10518         (getperms): Ditto.
10519         (setbytes): Ditto.
10520
10521         * http.c (fetch_next_header): Made static.
10522         (hparsestatline): Ditto.
10523         (hskip_lws): Ditto.
10524         (hgetlen): Ditto.
10525         (hgetrange): Ditto.
10526         (hgettype): Ditto.
10527         (hgetlocation): Ditto.
10528         (hgetmodified): Ditto.
10529         (haccepts_none): Ditto.
10530         (gethttp): Ditto.
10531         (base64_encode_line): Ditto.
10532         (mktime_from_utc): Ditto.
10533         (http_atotm): Ditto.
10534
10535         * html.c (idmatch): Made static.
10536
10537         * host.c (search_host): Made static.
10538         (search_address): Ditto.
10539         (free_hlist): Ditto.
10540
10541         * ftp.c (getftp): Made static.
10542         (ftp_loop_internal): Ditto.
10543         (ftp_get_listing): Ditto.
10544         (ftp_retrieve_list): Ditto.
10545         (ftp_retrieve_dirs): Ditto.
10546         (ftp_retrieve_glob): Ditto.
10547         (freefileinfo): Ditto.
10548         (delelement): Ditto.
10549
10550         * ftp-ls.c (symperms): Made static.
10551         (ftp_parse_unix_ls): Ditto.
10552
10553         * connect.c (select_fd): Made static.
10554
10555         * utils.c (xmalloc): Renamed from nmalloc.
10556         (xrealloc): Renamed from nrealloc.
10557         (xstrdup): Renamed from nstrdup.
10558
10559         * getopt.c (exchange): Use alloca.
10560
10561         * mswindows.c (mycuserid): Use strncpy.
10562
10563         * New files mswindows.c, mswindows.h, sysdep.h.  winjunk.c,
10564         systhings.h, windecl.h and winjunk.h removed.
10565
10566         * mswindows.c (sleep): New function.
10567
10568         * utils.c: Include <windows.h> under Windows.
10569
10570 1997-06-12  Darko Budor  <dbudor@zesoi.fer.hr>
10571
10572         * url.h (URL_UNSAFE): Change default under Windows.
10573
10574         * retr.c (retrieve_from_file): Respect opt.delete_after.
10575
10576         * main.c (main): Call ws_help on Windows.
10577
10578         * winjunk.c (windows_main_junk): New function.
10579
10580         * main.c (main): Junk-process argv[0].
10581
10582         * http.c (mktime_from_utc): Return -1 if mktime failed.
10583
10584         * http.c (http_loop): Ditto.
10585
10586         * ftp.c (ftp_loop_internal): Change title on Windows when using a
10587         new URL.
10588
10589         * winjunk.c (getdomainname): Lots of functions.
10590
10591 1997-06-12  Hrvoje Niksic  <hniksic@srce.hr>
10592
10593         * cmpt.c (strptime_internal): Handle years more correctly for
10594         `%y'.
10595
10596 1997-06-09  Mike Thomas <mthomas@reality.ctron.com>
10597
10598         * http.c (gethttp): Allocate enough space for
10599         `Proxy-Authorization' header.
10600
10601 1997-05-10  Hrvoje Niksic  <hniksic@srce.hr>
10602
10603         * version.c: Wget/1.4.5 is released.
10604
10605 1997-05-10  Hrvoje Niksic  <hniksic@srce.hr>
10606
10607         * retr.c (get_contents): Check return value of fwrite more
10608         carefully.
10609
10610 1997-03-30  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
10611
10612         * cmpt.c (strptime_internal) [case 'Y']: Always subtract 1900 from
10613         year, regardless of century.
10614
10615 1997-03-30  Hrvoje Niksic  <hniksic@srce.hr>
10616
10617         * utils.c (isfile): Use `lstat' instead of `stat'.
10618
10619 1997-03-29  Hrvoje Niksic  <hniksic@srce.hr>
10620
10621         * utils.c (numdigit): Use explicit test.
10622
10623 1997-03-21  Hrvoje Niksic  <hniksic@srce.hr>
10624
10625         * http.c (http_loop): Always use `url_filename' to get u->local.
10626
10627 1997-03-20  Hrvoje Niksic  <hniksic@srce.hr>
10628
10629         * url.c: Recognize https.
10630
10631 1997-03-13  Hrvoje Niksic  <hniksic@srce.hr>
10632
10633         * recur.c (recursive_retrieve): Lowercase just the host name.
10634
10635 1997-03-09  Hrvoje Niksic  <hniksic@srce.hr>
10636
10637         * url.c (get_urls_file): Use the correct test.
10638         (get_urls_html): Ditto.
10639
10640 1997-03-07  Hrvoje Niksic  <hniksic@srce.hr>
10641
10642         * connect.c: Reverted addrlen to int.
10643
10644         * init.c (parse_line): Check for -1 instead of NONE.
10645
10646         * version.c: Changed version to 1.4.5.
10647
10648 1997-02-17  Hrvoje Niksic  <hniksic@srce.hr>
10649
10650         * init.c: New option netrc.
10651         (initialize): Don't parse .netrc.
10652
10653         * cmpt.c (recursive): Return rp.
10654         (strptime_internal): Match the long strings first, the abbreviated
10655         second.
10656
10657 1997-02-16  Hrvoje Niksic  <hniksic@srce.hr>
10658
10659         * http.c (check_end): New function.
10660         (http_atotm): Use it.
10661
10662 1997-02-13  gilles Cedoc  <gilles@cedocar.fr>
10663
10664         * http.c (gethttp): Use them.
10665
10666         * init.c: New options proxy_user and proxy_passwd.
10667
10668 1997-02-14  Hrvoje Niksic  <hniksic@srce.hr>
10669
10670         * ftp.c (ftp_retrieve_list): Create links even if not relative.
10671
10672 1997-02-10  Hrvoje Niksic  <hniksic@srce.hr>
10673
10674         * recur.c (recursive_retrieve): Lowercase the host name, if the
10675         URL is not "optimized".
10676
10677         * host.c (realhost): Return l->hostname, even if it matches with
10678         host.
10679
10680 1997-02-10  Marin Purgar  <pmc@asgard.hr>
10681
10682         * connect.c: Make addrlen size_t instead of int.
10683         (conaddr): Ditto.
10684
10685 1997-02-09  Gregor Hoffleit  <flight@mathi.uni-heidelberg.DE>
10686
10687         * systhings.h: Define S_ISLNK on NeXT too.
10688
10689 1997-02-09  Hrvoje Niksic  <hniksic@srce.hr>
10690
10691         * version.c: Released 1.4.3.
10692
10693         * url.c: Futher update to list of protostrings.
10694         (skip_proto): Skip `//' correctly for FTP and HTTP.
10695
10696         * url.c (get_urls_html): Handle bogus `http:' things a little
10697         different.
10698
10699         * main.c (main): Removed `follow-ftp' from `f'.
10700         (main): Dumped the `prefix-files' and `file-prefix' options and
10701         features; old and bogus.
10702         (main): Exit on failed setval() in `-e'.
10703
10704         * http.c (fetch_next_header): Use it to detect header continuation
10705         correctly.
10706
10707         * retr.c (buf_peek): New function.
10708
10709 1997-02-08  Hrvoje Niksic  <hniksic@srce.hr>
10710
10711         * wget.h: Include time.h and stuff.
10712
10713 1997-02-08  Roger Beeman  <beeman@cisco.com>
10714
10715         * ftp.c: Include <time.h>
10716
10717 1997-02-07  Hrvoje Niksic  <hniksic@srce.hr>
10718
10719         * url.c (findurl): Would read over buffer limits.
10720
10721 1997-02-06  Hrvoje Niksic  <hniksic@srce.hr>
10722
10723         * ftp-ls.c (ftp_parse_unix_ls): Allow spaces in file names.
10724
10725 1997-02-05  Hrvoje Niksic  <hniksic@srce.hr>
10726
10727         * http.c (http_atotm): Initialize tm.is_dst.
10728
10729 1997-02-02  Hrvoje Niksic  <hniksic@srce.hr>
10730
10731         * http.c (gethttp): Don't print the number of retrieved headers.
10732
10733         * main.c (main): New option `--no-clobber', alias for `-nc'.
10734
10735         * url.c: Recognize `https://'.
10736
10737 1997-02-01  Hrvoje Niksic  <hniksic@srce.hr>
10738
10739         * host.c (herrmsg): Don't use h_errno.
10740
10741 1997-01-30  Hrvoje Niksic  <hniksic@srce.hr>
10742
10743         * host.c (accept_domain): Use it.
10744
10745         * main.c (main): New option `--exclude-domains'.
10746
10747         * retr.c (retrieve_url): Use it.
10748         (retrieve_url): Bail out when an URL is redirecting to itself.
10749
10750         * url.c (url_equal): New function.
10751
10752 1997-01-29  Hrvoje Niksic  <hniksic@srce.hr>
10753
10754         * connect.c: Include arpa/inet.h instead of arpa/nameser.h.
10755
10756         * http.c (mk_utc_time): New function.
10757         (http_atotm): Use it; handle time zones correctly.
10758
10759 1997-01-28  Hrvoje Niksic  <hniksic@srce.hr>
10760
10761         * http.c: Ditto.
10762
10763         * ftp-basic.c: Use it instead of WRITE.
10764
10765         * connect.c (iwrite): New function.
10766
10767 1997-01-27  Hrvoje Niksic  <hniksic@srce.hr>
10768
10769         * cmpt.c (mktime): New function.
10770
10771         * netrc.c: Include <sys/types.h>.
10772
10773         * main.c (main): Wouldn't recognize --spider.
10774
10775         * retr.c (rate): Use `B', `KB' and `MB'.
10776         (reset_timer,elapsed_time): Moved from utils.c.
10777
10778         * ftp.c (ftp_retrieve_list): Ditto.
10779
10780         * http.c (http_loop): Don't touch the file if opt.dfp.
10781
10782 1997-01-24  Hrvoje Niksic  <hniksic@srce.hr>
10783
10784         * cmpt.c: New file.
10785
10786         * ftp.c (ftp_retrieve_glob): New argument semantics.
10787         (ftp_retrieve_dirs): Use it.
10788         (ftp_loop): Ditto.
10789
10790         * html.c (htmlfindurl): Recognize `'' as the quote char.
10791
10792 1997-01-23  Hrvoje Niksic  <hniksic@srce.hr>
10793
10794         * ftp.c (ftp_loop_internal): Use it.
10795
10796         * utils.c (remove_link): New function.
10797
10798 1997-01-22  Hrvoje Niksic  <hniksic@srce.hr>
10799
10800         * retr.c (retrieve_url): Require STRICT redirection URL.
10801
10802         * url.c (parseurl): New argument STRICT.
10803
10804         * http.c (hparsestatline): Be a little-bit less strict about
10805         status line format.
10806
10807 1997-01-21  Hrvoje Niksic  <hniksic@srce.hr>
10808
10809         * http.c (gethttp): Use it.
10810
10811         * main.c (main): Don't use '<digit>' as options.
10812
10813         * init.c: New option ignore_length.
10814
10815         * http.c (gethttp): Ditto.
10816         (http_loop): Check for redirection without Location:.
10817         (gethttp): Don't print Length unless RETROKF.
10818
10819         * ftp.c (getftp): Use it.
10820
10821         * url.c (mkalldirs): New function.
10822
10823         * utils.c (mymkdir): Don't check for existing non-directory.
10824
10825         * url.c (mkstruct): Don't create the directory.
10826
10827 1997-01-20  Hrvoje Niksic  <hniksic@srce.hr>
10828
10829         * init.c (setval): Removed NO_RECURSION checks.
10830
10831 1997-01-19  Hrvoje Niksic  <hniksic@srce.hr>
10832
10833         * version.c: "Released" 1.4.3-pre2.
10834
10835         * recur.c (recursive_retrieve): Bypass host checking only if URL
10836         is ftp AND parent URL is not ftp.
10837
10838         * ftp-basic.c (ftp_request): Print out Turtle Power.
10839
10840         * ftp.c (ftp_loop): Call ftp_retrieve_glob with 0 if there's no
10841         wildcard.
10842         (ftp_retrieve_glob): Call ftp_loop_internal even on empty list, if
10843         not glob.
10844
10845         * http.c (gethttp): Be a little bit smarter about status codes.
10846
10847         * recur.c (recursive_retrieve): Always reset opt.recursive when
10848         dealing with FTP.
10849
10850 1997-01-18  Hrvoje Niksic  <hniksic@srce.hr>
10851
10852         * retr.c (retrieve_url): New variable location_changed; use it for
10853         tests instead of mynewloc.
10854         (retrieve_url): Allow heuristic adding of html.
10855
10856         * url.c (url_filename): Don't use the `%' in Windows file names.
10857
10858         * http.c (http_loop): Always time-stamp the local file.
10859
10860         * http.c (http_loop): Ditto.
10861
10862         * ftp.c (ftp_retrieve_list): Use it.
10863
10864         * utils.c (my_touch): New function.
10865
10866         * ftp.c (ftp_retrieve_list): Use #ifdef HAVE_STRUCT_UTIMBUF
10867         instead of #ifndef NeXT.
10868
10869         * utils.c (strptime): New version, by Ulrich Drepper.
10870
10871 1997-01-17  Hrvoje Niksic  <hniksic@srce.hr>
10872
10873         * http.c (haccepts_none): Renamed from `haccepts_bytes'.
10874         (gethttp): If haccepts_none(), disable ACCEPTRANGES.
10875         (http_loop): Would remove ACCEPTRANGES.
10876
10877         * ftp.c (getftp): Call ftp_list with NULL.
10878
10879 1997-01-15  Hrvoje Niksic  <hniksic@srce.hr>
10880
10881         * html.c (ftp_index): Don't print minutes and seconds if we don't
10882         know them; beautify the output.
10883
10884         * ftp.c (getftp): Don't close the socket on FTPNSFOD.
10885
10886 1997-01-14  Hrvoje Niksic  <hniksic@srce.hr>
10887
10888         * utils.c (strptime): New function.
10889         (strptime): Don't use get_alt_number.
10890         (strptime): Don't use locale.
10891         (match_string): Made it a function.
10892
10893 1997-01-12  Hrvoje Niksic  <hniksic@srce.hr>
10894
10895         * http.c (http_atotm): New function.
10896         (http_loop): Use it.
10897
10898         * atotm.c: Removed from the distribution.
10899
10900         * http.c (base64_encode_line): Rewrite.
10901
10902 1997-01-09  Hrvoje Niksic  <hniksic@srce.hr>
10903
10904         * ftp.c (getftp): Use ftp_expected_bytes; print size.
10905
10906         * ftp-basic.c (ftp_response): Use ftp_last_respline.
10907         (ftp_expected_bytes): New function.
10908
10909         * ftp.c (getftp): Print the unauthoritative file length.
10910
10911         * ftp-ls.c: Renamed from ftp-unix.c.
10912         (ftp_parse_ls): Moved from ftp.c.
10913         (ftp_parse_unix_ls): Recognize seconds in time spec.
10914         (ftp_parse_unix_ls): Recognize year-less dates of the previous
10915         year.
10916
10917 1997-01-08  Hrvoje Niksic  <hniksic@srce.hr>
10918
10919         * ftp-basic.c: Don't declare errno if #defined.
10920
10921         * host.c (ftp_getaddress): Check for sysinfo legally.
10922
10923 1997-01-08  Darko Budor  <dbudor@diana.zems.fer.hr>
10924
10925         * connect.c (iread): Use READ.
10926
10927 1996-12-23  Hrvoje Niksic  <hniksic@srce.hr>
10928
10929         * url.c: Recognize finger, rlogin, tn3270, mid and cid as valid
10930         schemes.
10931
10932 1996-12-22  Hrvoje Niksic  <hniksic@srce.hr>
10933
10934         * host.c (ftp_getaddress): Allow `.' in hostname.
10935
10936 1996-12-26  Darko Budor <dbudor@zems.fer.hr>
10937
10938         * wget.h: READ and WRITE macros for use instead of read and write
10939         on sockets, grep READ *.c, grep WRITE *.c
10940
10941         * wsstartup.c: new file - startup for winsock
10942
10943         * wsstartup.h: new file
10944
10945         * win32decl.h: new file - fixup for <errno.h> and winsock trouble
10946
10947         * configure.bat: Configure utility for MSVC
10948
10949         * src/Makefile.ms,config.h.ms: new files for use with MSVC 4.x
10950
10951 1996-12-22  Hrvoje Niksic  <hniksic@srce.hr>
10952
10953         * version.c: Released 1.4.3-pre.
10954
10955         * utils.c (prnum): Accept long.
10956         (legible): Use prnum().
10957
10958         * connect.c (make_connection): Accept port as short.
10959         (bindport): Ditto.
10960
10961         * http.c (gethttp): Use search_netrc.
10962
10963 1996-12-21  Hrvoje Niksic  <hniksic@srce.hr>
10964
10965         * ftp.c (getftp): Use search_netrc.
10966
10967         * netrc.c (free_netrc): New function.
10968
10969         * init.c (home_dir): New function.
10970
10971         * url.c (convert_links): Allow REL2ABS changes.
10972
10973 1996-12-21  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>
10974
10975         * netrc.c: New file.
10976         (parse_netrc, maybe_add_to_list): New functions.
10977
10978 1996-12-17  Hrvoje Niksic  <hniksic@srce.hr>
10979
10980         * retr.c (retrieve_url): Reset opt.recursion before calling
10981         ftp_loop if it is reached through newloc.
10982
10983         * init.c (run_wgetrc): Print the wgetrc path too, when reporting
10984         error; don't use "Syntax error", since we don't know if it is
10985         really a syntax error.
10986
10987 1996-12-16  Hrvoje Niksic  <hniksic@srce.hr>
10988
10989         * utils.c (acceptable): Extract the filename part of the path.
10990
10991         * recur.c (recursive_retrieve): Call acceptable() with the right
10992         argument; would bug out on wildcards.
10993
10994         * init.c (parse_line): Likewise.
10995
10996         * html.c (htmlfindurl): Cast to char * when calling stuff.
10997
10998 1996-12-15  Hrvoje Niksic  <hniksic@srce.hr>
10999
11000         * ftp.c (getftp): Use ftp_pasv.
11001
11002         * ftp-basic.c (ftp_request): Accept NULL value.
11003         (ftp_pasv): New function.
11004
11005         * options.h (struct options): Add passive FTP option.
11006
11007 1996-12-15  Hrvoje Niksic  <hniksic@srce.hr>
11008
11009         * url.c (parseurl): Debug output.
11010
11011         * utils.c (path_simplify): New one, adapted from bash's
11012         canonicalize_pathname().
11013
11014 1996-12-14  Hrvoje Niksic  <hniksic@srce.hr>
11015
11016         * ftp.c (getftp): Don't discard the buffer.
11017
11018         * retr.c (get_contents): New parameter nobuf.
11019
11020 1996-12-13  Shawn McHorse  <riffraff@txdirect.net>
11021
11022         * html.c (htmlfindurl): Recognize <meta contents="d; URL=...".
11023
11024         * init.c (setval): Strip the trailing slashes on CVECDIR.
11025
11026 1996-12-13  Hrvoje Niksic  <hniksic@srce.hr>
11027
11028         * init.c: Make excludes and includes under CVECDIR instead of
11029         CVEC.
11030
11031 1996-12-13  Shawn McHorse  <riffraff@txdirect.net>
11032
11033         * url.c (get_urls_html): Skip "http:".
11034
11035 1996-12-13  Hrvoje Niksic  <hniksic@srce.hr>
11036
11037         * utils.c (strcasecmp): From glibc.
11038         (strncasecmp): Also.
11039         (strstr): Also.
11040
11041         * url.c: Added javascript: to the list of URLs prefixes.
11042
11043 1996-12-12  Shawn McHorse  <riffraff@txdirect.net>
11044
11045         * recur.c (retrieve_robots): Print the warning message only if
11046         verbose.
11047
11048 1996-12-12  Gregor Hoffleit  <flight@mathi.uni-heidelberg.DE>
11049
11050         * ftp.c (ftp_retrieve_list): Use NeXT old utime interface.
11051
11052 1996-12-12  Hrvoje Niksic  <hniksic@srce.hr>
11053
11054         * systhings.h: New file.
11055
11056         * ../configure.in: Check for utime.h
11057
11058         * ftp.c: Check whether we have unistd.h.
11059
11060 1996-11-27  Hrvoje Niksic  <hniksic@srce.hr>
11061
11062         * recur.c (recursive_retrieve): Send the canonical URL as referer.
11063         (recursive_retrieve): Call get_urls_html with the canonical URL.
11064
11065 1996-12-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11066
11067         * (configure.in, config.h.in, src/Makefile.in, src/*.[ch]): Add
11068         ansi2knr support for compilers which don't support ANSI style
11069         function prototypes and signatures.
11070
11071         * (aclocal.m4, src/ansi2knr.c, src/ansi2knr.1): New files.
11072
11073 1996-11-26  Hrvoje Niksic  <hniksic@srce.hr>
11074
11075         * url.c: Use it; Recognize paths ending with "." and ".." as
11076         directories.
11077         (url_filename): Append .n whenever file exists and could be a
11078         directory.
11079
11080         * url.h (ISDDOT): New macro.
11081
11082         * init.c (parse_line): Use unsigned char.
11083
11084         * url.c (get_urls_html): Cast to unsigned char * when calling
11085         htmlfindurl.
11086
11087         * html.c (htmlfindurl): Use unsigned char.
11088
11089         * version.c: Changed version to 1.4.3.
11090
11091 1996-11-25  Hrvoje Niksic  <hniksic@srce.hr>
11092
11093         * version.c: Released 1.4.2.
11094
11095         * ftp.c (getftp): Simplified assertion.
11096         (ftp_loop_internal): Remove symlink before downloading.
11097         (ftp_retrieve_list): Unlink the symlink name before attempting to
11098         create a symlink!
11099
11100         * options.h (struct options): Renamed print_server_response to
11101         server_response.
11102
11103         * ftp.c (rel_constr): Removed.
11104         (ftp_retrieve_list): Don't use it.
11105         (ftp_retrieve_list): Use opt.retr_symlinks.
11106
11107 1996-11-24  Hrvoje Niksic  <hniksic@srce.hr>
11108
11109         * main.c (main): New option retr_symlinks.
11110
11111         * url.c (convert_links): Print verbose message.
11112
11113 1996-11-24  Hrvoje Niksic  <hniksic@srce.hr>
11114
11115         * http.c (http_loop): Reset newloc in the beginning of function;
11116         would cause FMR in retrieve_url.
11117
11118 1996-11-23  Hrvoje Niksic  <hniksic@srce.hr>
11119
11120         * recur.c (convert_all_links): Find the URL of each HTML document,
11121         and feed it to get_urls_html; would bug out.
11122         (convert_all_links): Check for l2 instead of dl; removed dl.
11123
11124         * url.c (convert_links): Don't refer to freed newname.
11125
11126         * recur.c (recursive_retrieve): Add this_url to urls_downloaded.
11127
11128         * main.c (main): Print the OS_TYPE in the debug output, too.
11129
11130         * recur.c (recursive_retrieve): Check for opt.delete_after.
11131
11132         * main.c (main): New option delete-after.
11133
11134         * init.c (setval): Cleaned up.
11135
11136 1996-11-21  Hrvoje Niksic  <hniksic@srce.hr>
11137
11138         * Makefile.in (wget): Make `wget' the default target.
11139
11140         * ftp.c (ftp_loop_internal): Move noclobber checking out of the
11141         loop.
11142         (ftp_retrieve_list): Warn about non-matching sizes.
11143
11144         * http.c (http_loop): Made -nc non-dependent on opt.recursive.
11145
11146         * init.c (setnum): Renamed from setnuminf; New argument flags.
11147         (setval): Use it.
11148
11149         * main.c (main): Sorted the options.
11150         (main): New option --wait.
11151
11152 1996-11-21  Shawn McHorse  <riffraff@txdirect.net>
11153
11154         * html.c (htmlfindurl): Reset s->in_quote after getting out of
11155         quotes.
11156
11157 1996-11-20  Hrvoje Niksic  <hniksic@srce.hr>
11158
11159         * version.c: Changed version to 1.4.2.
11160
11161 1996-11-20  Hrvoje Niksic  <hniksic@srce.hr>
11162
11163         * version.c: Released 1.4.1.
11164
11165         * html.c (html_quote_string): New function.
11166         (ftp_index): Use it.
11167         (htmlfindurl): A more gentle ending debug message.
11168
11169         * ftp.c (ftp_loop): Check for opt.htmlify.
11170
11171         * init.c: New command htmlify.
11172
11173         * ftp.c (getftp): Nicer error messages, with `'-encapsulated
11174         strings.
11175         (ftp_loop): Print size of index.html.
11176
11177         * init.c (setval): Implement "styles".
11178
11179         * main.c (main): New option dotstyle.
11180
11181 1996-11-19  Hrvoje Niksic  <hniksic@srce.hr>
11182
11183         * ftp.c (getftp): Close the master socket in case of errors, after
11184         bindport().
11185
11186         * connect.c (bindport): Initialize msock to -1.
11187
11188         * ftp.c (getftp): Initialize dtsock to -1.
11189
11190         * connect.c (closeport): Don't close sock if sock == -1.
11191
11192 1996-11-18  Hrvoje Niksic  <hniksic@srce.hr>
11193
11194         * init.c (setnuminf): Nuked default value -- just leave unchanged.
11195         (setval): Don't send default values.
11196         (defaults): Use DEFAULT_TIMEOUT -- aaargh.
11197
11198         * options.h (struct options): Use long for dot_bytes.
11199
11200         * init.c (setquota): Renamed to setbytes.
11201         (setval): Use setbytes on DOTBYTES.
11202
11203 1996-11-17  Hrvoje Niksic  <hniksic@srce.hr>
11204
11205         * ftp.c (getftp): Initialize con->dltime.
11206
11207         * recur.c (recursive_retrieve): Use same_host instead of
11208         try_robots; simply load robots_txt whenever the host is changed.
11209         (recursive_retrieve): Free forbidden before calling parse_robots.
11210
11211 1996-11-16  Hrvoje Niksic  <hniksic@srce.hr>
11212
11213         * retr.c (show_progress): Use them.
11214
11215         * options.h (struct options): New options dot_bytes, dots_on_line
11216         and dot_spacing.
11217
11218 1996-11-16  Mark Boyns  <boyns@sdsu.edu>
11219
11220         * recur.c (recursive_retrieve): Retrieve directories regardless of
11221         acc/rej rules; check for empty u->file.
11222
11223 1996-11-14  Hrvoje Niksic  <hniksic@srce.hr>
11224
11225         * init.c (setval): Use it.
11226
11227         * utils.c (merge_vecs): New function.
11228
11229         * init.c (setval): Reset the list-type functions when encountering
11230         "".
11231
11232 1996-11-14  Shawn McHorse  <riffraff@txdirect.net>
11233
11234         * recur.c (recursive_retrieve): Use base_url instead of this_url
11235         for no_parent.
11236
11237 1996-11-14  Shawn McHorse  <riffraff@txdirect.net>
11238
11239         * html.c (htmlfindurl): Reset s->in_quote after exiting the quote.
11240
11241 1996-11-13  Hrvoje Niksic  <hniksic@srce.hr>
11242
11243         * utils.c (sepstring): Rewrote; don't use strtok.
11244
11245         * recur.c (recursive_retrieve): Enter assorted this_url to slist
11246         when running the first time.
11247         (retrieve_robots): Warn to ignore errors when robots are loaded.
11248
11249         * utils.c (load_file): Moved from url.c.
11250
11251         * http.c: Made static variables const too in h* functions.
11252
11253         * main.c (main): Renamed --continue-ftp to --continue.
11254
11255         * recur.c (recursive_retrieve): Use it.
11256
11257         * utils.c (frontcmp): New function.
11258
11259         * url.c (accdir): New function.
11260
11261         * html.c (htmlfindurl): Recognize <area href=...>.
11262
11263         * ftp.c (ftp_retrieve_dirs): Implemented opt.includes.
11264
11265         * init.c (setval): Free the existing opt.excludes and
11266         opt.includes, if available.
11267
11268         * main.c (main): New option -I.
11269
11270 1996-11-12  Hrvoje Niksic  <hniksic@srce.hr>
11271
11272         * ftp.c (ftp_retrieve_glob): Do not weed out directories.
11273
11274         * version.c: Changed version to 1.4.1.
11275
11276 1996-11-11  Hrvoje Niksic  <hniksic@srce.hr>
11277
11278         * version.c: Released 1.4.0.
11279
11280 1996-11-10  Hrvoje Niksic  <hniksic@srce.hr>
11281
11282         * main.c (main): Free com and val after parse_line.
11283         (printhelp): Reorder the listing.
11284
11285         * http.c: More robust header parsing.
11286
11287         * http.c: Allow any number of spaces, or no spaces, precede ':'.
11288         (hskip_lws): New function.
11289         (haccepts_bytes): New function.
11290         (gethttp): Use it.
11291
11292         * init.c (setval): Check header sanity.
11293         (setval): Allow resetting of headers.
11294
11295 1996-11-10  Hrvoje Niksic  <hniksic@srce.hr>
11296
11297         * http.c (http_loop): Don't use has_wildcards.
11298
11299         * http.c (gethttp): Free all_headers -- would leak.
11300
11301         * recur.c (recursive_retrieve): Initialize depth to 1 instead of
11302         0 -- this fixes a long-standing bug in -rl.
11303
11304 1996-11-09  Hrvoje Niksic  <hniksic@srce.hr>
11305
11306         * ftp.c: Use -1 as "impossible" value for con->fd.
11307
11308         * url.h (URL_SEPARATOR): Don't treat `*' and `+' as separators.
11309
11310         * init.c (parse_line): Use isalpha.
11311
11312         * ftp-unix.c: Use HAVE_UNISTD_H.
11313
11314         * mtch.c (has_wildcards): Don't match \.
11315
11316         * http.c (http_loop): Warn on HTTP wildcard usage.
11317
11318 1996-11-08  Hrvoje Niksic  <hniksic@srce.hr>
11319
11320         * url.c (url_filename): Do not create numbered suffixes if
11321         opt.noclobber -- would bug out on -nc.
11322
11323 1996-11-07  Hrvoje Niksic  <hniksic@srce.hr>
11324
11325         * recur.c (parse_robots): Don't chuck out the commands without
11326         arguments (`Disallow:<empty>' didn't work).
11327         (parse_robots): Compare versions lowercase.
11328         (parse_robots): Match on base_version, not version_string!
11329         (parse_robots): Handle comments properly.
11330         (parse_robots): Match versions in a sane way.
11331
11332         * init.c: Print nicer error messages.
11333
11334         * version.c: Changed version to 1.4.0.
11335
11336 1996-11-06  Hrvoje Niksic  <hniksic@srce.hr>
11337
11338         * version.c: Released 1.4.0-test2.
11339
11340         * init.c (run_wgetrc): Close fp.
11341
11342         * ftp.c (ftp_retrieve_dirs): Allocate the correct length for
11343         u->dir.
11344
11345 1996-11-06  Hrvoje Niksic  <hniksic@srce.hr>
11346
11347         * init.c (setquota): Allow inf as quota specification.
11348
11349 1996-11-05  Hrvoje Niksic  <hniksic@srce.hr>
11350
11351         * ftp.c (ftp_retrieve_dirs): Return QUOTEXC if quota exceeded.
11352         (ftp_retrieve_glob): Return QUOTEXC on quota exceeded.
11353
11354         * main.c (main): Check for quota by comparison with downloaded
11355         stuff, not from status.
11356
11357         * connect.c (select_fd): Should compile on HPUX without warnings now.
11358
11359         * ftp.c (ftp_get_listing): Check whether ftp_loop_internal
11360         returned RETROK.
11361
11362 1996-11-04  Hrvoje Niksic  <hniksic@srce.hr>
11363
11364         * ftp.c (ftp_retrieve_glob): Print the pattern nicely.
11365         (getftp): Return FTPRETRINT on control connection error.
11366
11367         * html.c (htmlfindurl): Recognize <embed src=...> and
11368         <bgsound src=...>.
11369         (ftp_index): Handle username and password correctly.
11370
11371         * main.c (main): Made `-np' a synonim for --no-parent.
11372
11373 1996-11-02  Hrvoje Niksic  <hniksic@srce.hr>
11374
11375         * ftp.c (ftp_loop): Check for opt.ftp_glob too before calling
11376         ftp_retrieve_glob.
11377
11378         * version.c: Changed version to 1.4.0-test2.
11379
11380 1996-11-02  Hrvoje Niksic  <hniksic@srce.hr>
11381
11382         * version.c: Released 1.4.0-test1.
11383
11384         * url.c (str_url): Don't use sprintf when creating %2F-prefixed
11385         directory.
11386         (convert_links): Removed definition of make_backup.
11387
11388         * http.h: Removed definition of MAX_ERROR_LENGTH.
11389
11390         * host.c (ftp_getaddress): Check for "(none)" domains.
11391
11392         * ftp.c (ftp_retrieve_dirs): Docfix.
11393
11394         * http.c (gethttp): Use ou->referer instead of u->referer.
11395
11396         * retr.c (retrieve_url): Reset u to avoid freeing pointers twice;
11397         this was known to cause coredumps on Linux.
11398
11399         * html.c (ftp_index): Cast the argument to local_time to time_t *.
11400
11401 1996-11-01  Hrvoje Niksic  <hniksic@srce.hr>
11402
11403         * connect.c (select_fd): Use exceptfds -- once and for all.
11404
11405         * retr.c (retrieve_from_file): Free filename after
11406         recursive_retrieve.
11407         (retrieve_from_file): Send RFIRST_TIME to recursive_retrieve on
11408         first-time retrieval.
11409         (retrieve_from_file): Return uerr_t; new argument, count.
11410         (retrieve_from_file): Break on QUOTEXC.
11411
11412         * init.c (setquota): Fixed a bug that caused rejection of
11413         non-postfixed values..
11414
11415 1996-10-30  Hrvoje Niksic  <hniksic@srce.hr>
11416
11417         * version.c: Changed name to wget.
11418
11419         * connect.c (iread): Smarter use of select.
11420         (select_fd): Set errno on timeout.  If not timeout, return 1
11421         instead of 0.
11422
11423 1996-10-29  Hrvoje Niksic  <hniksic@srce.hr>
11424
11425         * ftp.c (ftp_loop_internal): Don't use con->cmd before
11426         establishing it.
11427
11428 1996-10-26  Hrvoje Niksic  <hniksic@srce.hr>
11429
11430         * http.c (gethttp): Send correct referer when using proxy.
11431         (gethttp): Use struct urlinfo ou to access the relevant data; send
11432         correct authorization in all cases.
11433
11434         * host.c (same_host): Use skip_uname to skip username and
11435         password.
11436
11437         * url.c (skip_uname): New function.
11438         (parseurl): Use it.
11439
11440         * host.c (same_host): Do not assume HTTP -- same_host should now
11441         be totally foolproof.
11442
11443         * url.c (skip_proto): New function.
11444         (parse_uname): Use it.
11445
11446         * http.c (gethttp): Create local user and passwd from what is
11447         given.
11448
11449         * url.c (parseurl): Check for HTTP username and password too.
11450
11451 1996-10-25  Hrvoje Niksic  <hniksic@srce.hr>
11452
11453         * config.h.in: Removed #define gethostbyname R...
11454
11455 1996-10-22  Hrvoje Niksic  <hniksic@srce.hr>
11456
11457         * version.c: Changed version to 1.4.0-test1.
11458
11459 1996-10-21  Hrvoje Niksic  <hniksic@srce.hr>
11460
11461         * version.c: "Released" 1.4b29.
11462
11463         * recur.c (recursive_retrieve): Check for no_parent.
11464
11465         * init.c (setval): Option update.
11466
11467         * main.c (main): New option no-parent.
11468
11469         * options.h (struct options): New variable no_parent.
11470
11471         * recur.c (recursive_retrieve): Only files are checked for
11472         opt.accepts and opt.rejects.
11473         (recursive_retrieve): Check directories for opt.excludes.
11474         (recursive_retrieve): Make the dir absolute when checking
11475         opt.excludes.
11476
11477         * html.c (htmlfindurl): Recognize <applet code=...> and <script
11478         src=...>
11479
11480 1996-10-18  Hrvoje Niksic  <hniksic@srce.hr>
11481
11482         * ftp.c (getftp): Do not line-break assert entries at all.
11483         (ftp_retrieve_dirs): docfix.
11484
11485         * connect.c (select_fd): Use fd + 1 as nfds.
11486
11487         * version.c: Changed version to 1.4b29.
11488
11489 1996-10-18  Hrvoje Niksic  <hniksic@srce.hr>
11490
11491         * version.c: "Released" 1.4b28.
11492
11493         * ftp.c (ftp_loop_internal): Check whether f->size == len and
11494         don't continue the loop if it is.
11495         (ftp_get_listing): Remove list_filename on unsuccesful loop.
11496
11497 1996-10-17  Hrvoje Niksic  <hniksic@srce.hr>
11498
11499         * ftp.c (ftp_loop_internal): Use strcpy to initialize tmp.
11500         (getftp): Do not use multiline assert.
11501
11502         * http.c (hparsestatline): Use mjr and mnr instead of major and
11503         minor, which don't compile on Ultrix.
11504         (http_loop): Use strcpy() to initialize tmp.
11505
11506         * all: Geturl -> Fetch
11507
11508 1996-10-17  Hrvoje Niksic  <hniksic@srce.hr>
11509
11510         * recur.c (parse_robots): Fixed an off-by-one bug when looking for
11511         ':'.
11512
11513         * html.c (htmlfindurl): Fixed several possible off-by-one bugs by
11514         moving `bufsize &&' to the beginning of each check in for-loops.
11515
11516         * recur.c (parse_robots): Close fp on exit.
11517
11518         * url.c (mymkdir): Check for each directory before creating.
11519
11520 1996-10-16  Hrvoje Niksic  <hniksic@srce.hr>
11521
11522         * version.c: Changed version to 1.4b28.
11523
11524 1996-10-16  Hrvoje Niksic  <hniksic@srce.hr>
11525
11526         * version.c: "Released" 1.4b27.
11527
11528         * init.c (parse_line): Use isspace.
11529         (parse_line): Free *com on all errors.
11530
11531         * ftp.c (ftp_loop): Change FTPOK to RETROK before exiting.
11532         (delelement): Use next instead of f->next and prev instead of
11533         f->prev.
11534         (delelement): Free the members of the deleted element.
11535
11536         * http.c (http_loop): Do not return RETROK on code != 20x.
11537
11538         * init.c (cleanup): Free opt.user_header.
11539         (cleanup): Free opt.domains.
11540
11541         * url.c (freelists): Moved to cleanup().
11542
11543         * http.c (hparsestatline): Docfix.
11544
11545         * main.c (main): Return with error status on unsuccesful
11546         retrieval.
11547
11548         * init.c (setval): Do not remove listing when mirroring.
11549
11550         * url.c (url_filename): Use opt.fileprefix.
11551
11552         * ftp.c (ftp_get_listing): Use url_filename to get filename for
11553         .listing.
11554
11555         * main.c (main): New option: -rn.
11556
11557 1996-10-15  Hrvoje Niksic  <hniksic@srce.hr>
11558
11559         * Makefile.in (RM): Added RM = rm -f.
11560
11561         * host.c (clean_hosts): New function.
11562         (free_hlist): Just free the list, no reset.
11563
11564         * version.c: Changed version to 1.4b27.
11565
11566 1996-10-13  Hrvoje Niksic  <hniksic@srce.hr>
11567
11568         * version.c: "Released" 1.4b26.
11569
11570         * retr.c (retrieve_from_file): If call get_urls_html with
11571         opt.spider to make it silent in spider mode.
11572
11573         * url.c (str_url): Use CLEANDUP instead of URL_CLEANSE.
11574
11575         * url.h (CLEANDUP): New macro.
11576
11577         * http.c (gethttp): Fixed a bug that freed location only when it
11578         was NULL.
11579
11580         * retr.c (retrieve_url): Free url if it will not be stored,
11581         i.e. newloc is NULL.
11582
11583         * html.c (htmlfindurl): Handle exiting from quotes correctly; the
11584         old version would bug out on <a href="x#a"href="y">.
11585
11586         * html.h (state_t): New member in_quote.
11587
11588         * html.c (htmlfindurl): Free s->attr at the beginning of
11589         attr-loop.
11590
11591         * recur.c (recursive_retrieve): Recognize RCLEANUP.
11592         (tried_robots): Make hosts a global variable.
11593         (recursive_retrieve): Free constr after URL host optimization.
11594         (tried_robots): Free urlinfo before exiting.
11595
11596         * utils.c (free_slist): New function.
11597
11598         * recur.c (recursive_retrieve): Use flags to add cleanup
11599         possibility.
11600
11601         * main.c (main): Free filename after recursive_retrieve.
11602
11603         * http.c (gethttp): Store successful responses too.
11604
11605 1996-10-12  Hrvoje Niksic  <hniksic@srce.hr>
11606
11607         * all: Constified the whole source.  This required some minor
11608         changes in many functions in url.c, possibly introducing bugs -- I
11609         hope not.
11610
11611         * ftp-basic.c: Removed last_respline.
11612
11613         * http.c (gethttp): Free type.
11614
11615         * host.c (same_host): Free real1 and real2.
11616
11617         * main.c (main): New option --spider.
11618
11619         * retr.c (get_contents): Don't reset errno.
11620
11621         * main.c (main): Sorted the options.
11622
11623         * connect.c (iread): Set errno to ETIMEDOUT only if it was left
11624         uninitialized by select().
11625
11626         * http.c (http_loop): Print the time when the connection is
11627         closed.
11628         (gethttp): Debug-print the HTTP request.
11629
11630 1996-10-11  Hrvoje Niksic  <hniksic@srce.hr>
11631
11632         * connect.c (iread): Do not try reading after timeout.
11633
11634         * main.c (main): Would bug out on -T.
11635
11636         * connect.c (select_fd): Do not use exceptfds.
11637         (iread): Set ETIMEDOUT on select_fd <= 0.
11638
11639         * version.c: Changed version to 1.4b26.
11640
11641 1996-10-10  Hrvoje Niksic  <hniksic@srce.hr>
11642
11643         * version.c: "Released" 1.4b25.
11644
11645         * ftp-unix.c (ftp_parse_unix_ls): Ignore lines without file name
11646         or link name.
11647
11648         * http.c (gethttp): Add errcode to struct hstat.
11649         (http_loop): Use it.
11650
11651         * url.c (no_proxy_match): Simplify using char** for no_proxy.
11652
11653         * options.h (struct options): Make opt.no_proxy a vector.
11654
11655         * utils.c (sepstring): Use !*s instead of !strlen(s).
11656
11657         * init.c (setval): Set opt.maxreclevel to 0 on --mirror.
11658         (getperms): Use ISODIGIT instead of isdigit.
11659
11660         * ftp.c (getftp): Print time.
11661
11662         * main.c (main): Use legible output of downloaded quantity.
11663
11664         * ftp.c (getftp): Use elapsed_time().
11665         (ftp_loop_internal): Use rate().
11666
11667         * http.c (http_loop): Add download ratio output; Use rate().
11668
11669         * utils.c (rate): New function.
11670
11671 1996-10-09  Hrvoje Niksic  <hniksic@srce.hr>
11672
11673         * http.c (http_loop): Use timer.
11674
11675         * ftp.c: Split to ftp-basic.c and ftp.c
11676
11677         * utils.c (reset_timer): New function.
11678         (elapsed_time): New function.
11679
11680         * retr.c (show_progress): Make bytes_in_line and offs long; should
11681         work on 16-bit machines.
11682
11683 1996-10-08  Hrvoje Niksic  <hniksic@srce.hr>
11684
11685         * url.c (in_acclist): New argument backward.
11686
11687         * ftp.c (ftp_retrieve_glob): Use acceptable() to determine whether
11688         a file should be retrieved according to suffix.
11689         (ftp_get_listing): Check the return value of unlink; Do not call
11690         ftp_retrieve_dirs if depth reached maxreclevel.
11691         (ftp_retrieve_dirs): Check whether the directory is in
11692         exclude-list.
11693
11694         * main.c (main): Print the version number at the beginning of
11695         DEBUG output.
11696         (main): Use strrchr when creating exec_name.
11697
11698         * ftp.c (ftp_retrieve_glob): Do not close control connection.
11699
11700         * version.c: Changed version to 1.4b25.
11701
11702 1996-10-07  Hrvoje Niksic  <hniksic@srce.hr>
11703
11704         * version.c: "Released" 1.4b24.
11705
11706         * Makefile.in: Rewrite.
11707
11708         * ftp.c (ftp_loop_internal): Likewise.
11709
11710         * retr.c (time_str): Check for failed time().
11711
11712         * html.c (htmlfindurl): Recognize <fig src> and <overlay src> from
11713         HTML3.0.
11714
11715         * retr.c (time_str): Return time_t *.
11716
11717         * connect.c (bindport): Close msock on unsuccesful bind.
11718         (bindport): The same for getsockname and listen.
11719
11720         * retr.c (retrieve_url): Allow any number of retries on
11721         proxy.
11722
11723         * http.c (gethttp): Do not treat errno == 0 as timeout.
11724         (http_loop): Likewise.
11725         (http_loop): Cosmetic changes.
11726
11727         * connect.c (iread): Set errno to ETIMEDOUT in case of timeout.
11728
11729         * retr.c (get_contents): Reset errno.
11730
11731         * ftp.c (getftp): Minor fixes.
11732
11733 1996-10-06  Hrvoje Niksic  <hniksic@srce.hr>
11734
11735         * http.c: Do not use backups.
11736
11737         * geturl.1 (WARNING): Warn that man-page could be obsolete.
11738
11739         * getopt.c (getopt_long): Moved to getopt.c
11740
11741         * geturl.texi: Enhanced.
11742
11743         * main.c (main): Use it.
11744
11745         * recur.c (convert_all_links): New function.
11746
11747         * utils.c (add_slist): New argument flags.
11748
11749         * recur.c (recursive_retrieve): Update a list of downloaded URLs.
11750         (parse_robots): Do not chuck out empty value fields.
11751         (parse_robots): Make yourself welcome on empty Disallow.
11752
11753         * version.c: Changed version to 1.4b24.
11754
11755 1996-10-06  Hrvoje Niksic  <hniksic@srce.hr>
11756
11757         * version.c: "Released" 1.4b23.
11758
11759         * ftp.c (ftp_loop_internal): Get the time after getftp.
11760
11761         * Makefile.in (install.info): New target.
11762         (install): Use it.
11763
11764         * http.c (http_loop): Fix output when doing -O.
11765
11766 1996-10-05  Hrvoje Niksic  <hniksic@srce.hr>
11767
11768         * geturl.texi: New file.
11769
11770         * main.c (main): Do not print the warnings and download summary if
11771         opt.quiet is set.
11772
11773         * version.c: Changed version to 1.4b23.
11774
11775 1996-10-05  Hrvoje Niksic  <hniksic@srce.hr>
11776
11777         * "Released" 1.4b22.
11778
11779         * atotm.c (atotm): Use True and False instead of TRUE and FALSE,
11780         to avoid redefinition warnings.
11781
11782         * host.c (store_hostaddress): Use memcpy() to copy the address
11783         returned by inet_addr.
11784
11785         * version.c: Changed version to 1.4b22.
11786
11787 1996-10-04  Hrvoje Niksic  <hniksic@srce.hr>
11788
11789         * version.c: "Released" 1.4b21.
11790
11791         * ftp-unix.c (ftp_parse_ls): Renamed to ftp_parse_unix_ls.
11792
11793         * ftp.c (ftp_port): Use conaddr.
11794         (getftp): Print the file length.
11795         (ftp_retrieve_list): Check the stamps of plain files only.
11796
11797         * connect.c (closeport): Do not call shutdown().
11798         (conaddr): New function.
11799
11800         * html.c (ftp_index): Made it dfp-aware.
11801
11802         * init.c (cleanup): New name of freemem. Close opt.dfp.
11803
11804         * ftp.c (getftp): Use opt.dfp if it is set.
11805
11806         * ftp-unix.c (ftp_parse_ls): Recognize time in h:mm format.
11807
11808         * ftp.c (ftp_retrieve_dirs): Fixed a bug that caused incorrect
11809         CWDs to be sent with recursive FTP retrievals.
11810
11811 1996-10-03  Hrvoje Niksic  <hniksic@srce.hr>
11812
11813         * recur.c (parse_robots): Made it more compliant with "official"
11814         specifications.
11815
11816         * http.c: New function.
11817
11818         * ftp-unix.c (ftp_parse_ls): Added better debug output.
11819
11820         * ftp.c (getftp): Print out the LIST in case of
11821         opt.print_server_response.
11822
11823         * version.c: Changed version to 1.4b21.
11824
11825 1996-10-01  Hrvoje Niksic  <hniksic@srce.hr>
11826
11827         * version.c: "Released" 1.4b20.
11828
11829         * README: Update.
11830
11831         * http.c (gethttp): Preset lengths of various headers instead of
11832         calculating them dynamically.
11833         (gethttp): Check for 206 partial contents.
11834
11835 1996-09-30  Hrvoje Niksic  <hniksic@srce.hr>
11836
11837         * configure.in: Set SYSTEM_GETURLRC to $libdir/geturlrc
11838
11839         * http.c (gethttp): Send the port number in the Host: header.
11840
11841 1996-09-29  Hrvoje Niksic  <hniksic@srce.hr>
11842
11843         * http.c (gethttp): Send host: header.
11844         (gethttp): Add the possibility of user-defined headers.
11845         (gethttp): Move decision about pragma: no-cache to http_loop,
11846         where it belongs.
11847         (gethttp): Pass a struct instead of enormous argument list.
11848         (http_loop): Use a new, fancier display format.
11849         (ftp_loop): Likewise.
11850
11851         * main.c: (hangup): Turn off buffering of the new log file.
11852
11853         * install-sh: Likewise.
11854
11855         * config.sub: Replace with the one in autoconf-2.10
11856
11857         * geturl.1: Update.
11858
11859         * init.c: New options httpuser and httppasswd.
11860
11861         * http.c: (base64_encode_line): New function.
11862         (gethttp): Send authentication.
11863
11864         * connect.c (make_connection): Use store_hostaddress.
11865
11866 1996-09-28  Hrvoje Niksic  <hniksic@srce.hr>
11867
11868         * host.c (store_hostaddress): New function.
11869
11870         * NEWS: Update.
11871
11872         * http.c (hgetrange): New function.
11873         (gethttp): Use ranges.
11874
11875         * utils.c (numdigit): Accept long instead of int.
11876
11877         * http.c (http_loop): Add restart capabilities.
11878
11879         * ftp.c (ftp_retrieve_glob): Fixed a bug that could cause matchres
11880         being used uninitialized.
11881         (ftp_retrieve_list): Similar fix.
11882
11883         * host.c (add_hlist): Fixed a bug that could cause cmp being used
11884         uninitialized.
11885
11886         * url.c (construct_relative): New function.
11887
11888         * recur.c (recursive_retrieve): Use it.
11889
11890         * retr.c (convert_links): New function.
11891
11892 1996-09-27  Hrvoje Niksic  <hniksic@srce.hr>
11893
11894         * url.c (free_urlpos): New function.
11895
11896         * recur.c (recursive_retrieve): Adapt.
11897
11898         * url.c (get_urls_html): Return a linked list instead of a vector.
11899
11900         * url.c (get_urls_file): Return a linked list instead of a vector.
11901
11902         * geturl.1: Update.
11903
11904         * http.c (gethttp): Implement it.
11905
11906         * init.c (setval): New option: SAVEHEADERS
11907
11908         * ftp.c (ftp_loop_internal): Do not set restval if listing is to
11909         be retrieved. Lack of this test caused bugs when the connection
11910         was lost during listing.
11911
11912         * retr.c (retrieve_url): Fixed a bug that caused
11913         coredumps. *newloc is now reset by default.
11914         (retrieve_url): Lift the twenty-tries limit on proxies.
11915
11916         * version.c: Changed version to 1.4b20.
11917
11918 1996-09-20  Hrvoje Niksic  <hniksic@srce.hr>
11919
11920         * version.c: "Released" 1.4b19.
11921
11922 1996-09-19  Hrvoje Niksic  <hniksic@srce.hr>
11923
11924         * ftp.c (ftp_loop_internal): Renamed from ftp_1fl_loop.
11925         (getftp): Changed prototype to accept ccon *.
11926
11927 1996-09-17  Hrvoje Niksic  <hniksic@srce.hr>
11928
11929         * ftp.c (ftp_retrieve_list): Fixed a bug that caused setting
11930         incorrect values to files pointed to by symbolic links.
11931         (ftp_1fl_loop): Do not count listings among the downloaded URL-s.
11932
11933 1996-09-16  Hrvoje Niksic  <hniksic@srce.hr>
11934
11935         * url.c (mkstruct): Do not prepend "./" in front of a pathname.
11936
11937         * main.c (main): New option: --user-agent.
11938
11939         * geturl.1: Ditto.
11940
11941         * init.h: Ditto.
11942
11943         * init.c (setval): Ditto.
11944
11945         * main.c (main): Rename "server-headers" to "server-response".
11946
11947         * ftp-unix.c (ftp_parse_ls): Check for asterisks at the end of
11948         executables in 'ls -F' listings.
11949
11950 1996-09-15  Hrvoje Niksic  <hniksic@srce.hr>
11951
11952         * url.c (parseurl): Remove realloc() and sprintf().
11953         (str_url): Get rid of sprintf().
11954
11955         * recur.c (recursive_retrieve): Enable FTP recursion through proxy
11956         servers.
11957
11958         * url.h (URL_CLEANSE): Made it else-resistant.
11959         (USE_PROXY): New macro.
11960
11961 1996-09-14  Hrvoje Niksic  <hniksic@srce.hr>
11962
11963         * NEWS: Update.
11964
11965         * version.c: Changed version to 1.4b19.
11966
11967 1996-09-14  Hrvoje Niksic  <hniksic@srce.hr>
11968
11969         * version.c: "Released" 1.4b18.
11970
11971         * url.c: Made it reallocate space exponentially.
11972
11973 1996-09-14  Drazen Kacar  <dave@fly.cc.fer.hr>
11974
11975         * html.c (htmlfindurl): Added <frame src> and <iframe src> among
11976         the list of stuff to fetch.
11977
11978 1996-09-13  Hrvoje Niksic  <hniksic@srce.hr>
11979
11980         * url.c (get_urls_html): Fixed a bug that caused SIGSEGV's with
11981         -Fi.
11982
11983         * html.c (htmlfindurl): Rewrite.
11984
11985         * http.c (gethttp): Use opt.proxy_cache.
11986
11987         * main.c (main): Added --cache option.
11988
11989         * ftp.c (ftp_response): Print server response if opt.print_server
11990         response is set.
11991         (getftp): Print newlines after each request if the server response
11992         is to be printed.
11993         (ftp_response): Copy the last response line to last_respline.
11994
11995         * http.c (gethttp): Add Pragma: nocache for retried
11996         proxy-retrievals.
11997
11998         * ftp.c (getftp): Use it.
11999
12000         * retr.c (buf_discard): New function.
12001
12002         * ftp.c (ftp_response): Use buf_readchar().
12003         (getftp): Flush the control connection buffer before calling
12004         get_contents().
12005
12006         * retr.c (buf_readchar): New function.
12007         (buf_flush): New function.
12008         (get_contents): Use buf_readchar() instead of read(x, x, 1).
12009         (get_contents): Use buf_flush.
12010
12011 1996-09-12  Hrvoje Niksic  <hniksic@srce.hr>
12012
12013         * ftp.c: Incorporate changes to ftp_response.
12014
12015         * ftp.c (ftp_response): Allocate the server response dynamically,
12016         as in read_whole_line and fetch_next_header.
12017
12018         * utils.c (read_whole_line): Fixed a bug that prevented reading
12019         the last line if it is not \n-terminated. Also fixed a possible
12020         memory overflow.
12021
12022         * http.c (fetch_next_header): Return malloc-ed string as large as
12023         needed.
12024         (gethttp): Use new fetch_next_header.
12025
12026 1996-09-12  Hrvoje Niksic  <hniksic@srce.hr>
12027
12028         * http.c (hgetlen): Compute the header length the first time only.
12029         (hgettype): Ditto.
12030         (hgetlocation): Ditto.
12031         (hgetmodified): Ditto.
12032
12033 1996-09-11  Hrvoje Niksic  <hniksic@srce.hr>
12034
12035         * sample.geturlrc: Update.
12036
12037 1996-09-10  Hrvoje Niksic  <hniksic@srce.hr>
12038
12039         * http.c (http_loop): Ditto.
12040
12041         * ftp.c (getftp): Open the output file as binary.
12042
12043         * version.c: Changed version to 1.4b18.
12044
12045 1996-09-10  Hrvoje Niksic  <hniksic@srce.hr>
12046
12047         * version.c: "Released" 1.4b17.
12048
12049         * ftp-unix.c (ftp_parse_ls): If unable to open file, return NULL
12050         instead of failed assertion.
12051
12052 1996-09-09  Hrvoje Niksic  <hniksic@srce.hr>
12053
12054         * ftp.c (ftp_get_listing): Add a numbered suffix to LIST_FILENAME
12055         if a file of that name already exists.
12056
12057 1996-09-05  Hrvoje Niksic  <hniksic@srce.hr>
12058
12059         * ftp.c (ftp_1fl_loop): Handler FTPPORTERR and FOPENERR correctly.
12060
12061         * config.h.in: Define gethostbyname as Rgethostbyname when using
12062         Socks.
12063
12064         * configure.in: Check for -lresolv if using Socks.
12065
12066         * version.c: Changed version to 1.4b17.
12067
12068 1996-07-15  Hrvoje Niksic  <hniksic@srce.hr>
12069
12070         * version.c: "Released" 1.4b16.
12071
12072         * http.c (gethttp): More intelligent check for first line of HTTP
12073         response.
12074         (gethttp): Would bug out on time-stamping.
12075
12076         * version.c: Changed version to 1.4b16.
12077
12078 1996-07-11  Hrvoje Niksic  <hniksic@srce.hr>
12079
12080         * version.c: Released 1.4b15.
12081
12082         * http.c (http_loop): Print \n after the loop entry, not before.
12083
12084         * url.c (url_filename): Use ISDOT.
12085
12086         * url.h (ISDOT): New macro.
12087
12088         * recur.c (recursive_retrieve): Change only opt.recursive for
12089         following FTP.
12090
12091 1996-07-11  Antonio Rosella <antonio.rosella@agip.it>
12092
12093         * socks/geturl.cgi: Fixed version No.
12094
12095         * socks/download-netscape.html: Ditto.
12096
12097         * socks/download.html: Changed socks.html to download.html.
12098
12099 1996-07-11  Hrvoje Niksic  <hniksic@srce.hr>
12100
12101         * url.c (url_filename): Check for opt.dirstruct instead for
12102         opt.recursive && opt.dirstruct.
12103
12104         * init.c (defaults): Ditto.
12105         (defaults): Reset dirstruct by default.
12106         (setval): Set opt.dirstruct whenever setting recursive.
12107
12108         * init.h: Removed FORCEDIRHIER.
12109
12110         * INSTALL: Added -L to socks-description.
12111
12112         * version.c: Changed version to 1.4b15.
12113
12114 1996-07-10  Hrvoje Niksic  <hniksic@srce.hr>
12115
12116         * version.c: "Released" 1.4b14.
12117
12118         * geturl.1: Update AUTHOR to include Rosella as contributor.
12119
12120         * NEWS: Update.
12121
12122         * socks/geturl.cgi: Simplified command creation, nuked <blink>.
12123
12124         * socks/geturl.cgi: Wrap nutscape extensions within if $netscape.
12125         (cal_time): Fix == to eq.
12126
12127         * socks/geturl.cgi: GPL-ized with permission of A. Rosella.
12128
12129         * geturl.1 (hostname): Moved URL CONVENTIONS to the beginning.
12130
12131         * Makefile.in: Use @VERSION@.
12132
12133         * configure.in: Check version from version.c.
12134
12135         * socks/geturl.cgi: Changed /pub/bin/perl to /usr/bin/perl.
12136
12137         * socks/download.html: Created from download-netscape.html, made
12138         HTML-2.0 compliant.
12139
12140         * recur.c (recursive_retrieve): Set opt.force_dir_hier when
12141         following FTP links from recursions.
12142
12143 1996-07-09  Hrvoje Niksic  <hniksic@srce.hr>
12144
12145         * url.c (mymkdir): Fixed a bug that prevented mymkdir() to create
12146         absolute directories correctly.
12147
12148         * version.c: Changed version to 1.4b14.
12149
12150 1996-07-09  Hrvoje Niksic  <hniksic@srce.hr>
12151
12152         * version.c: "Released" 1.4b13.
12153
12154         * url.c (make_backup): New function.
12155
12156         * http.c (http_loop): Make a backup copy of the local file (using
12157         rename(2)) before opening it.
12158
12159         * main.c (main): Added --backups.
12160
12161         * host.c (ftp_getaddress): Bail out on failed mycuserid().
12162         (ftp_getaddress): Check for leading dot on MY_DOMAIN.
12163         (ftp_getaddress): Check for empty, null or (null) domain.
12164
12165         * url.c (get_urls_html): If this_url is NULL, the base must have a
12166         protocol.
12167         (parseurl): Use has_proto.
12168
12169         * retr.c (retrieve_url): Warn when proxy is used with more than 20
12170         retries.
12171
12172         * url.c (mkstruct): Create the directory (calling mymkdir()) only
12173         if it is not already there.
12174         (has_proto): New function.
12175         (get_urls_html): Eliminate the remaining call to findurl -- use
12176         has_proto.
12177
12178         * geturl.1: Ditto.
12179
12180         * main.c: Change -X to -x.
12181
12182         * url.c (url_filename): Simplify creation of filename if
12183         prefix_files is set.
12184         (url_filename): Simplify everything. And I do mean *everything*.
12185         (mkstruct): Add dir_prefix before hostname.
12186         (path_simplify): Fixed a bug that caused writing outside the path
12187         string in case of "." and ".." path strings.
12188
12189 1996-07-06  Hrvoje Niksic  <hniksic@srce.hr>
12190
12191         * init.c: Added --mirror.
12192
12193         * main.c (main): Added -X to force saving of directory hierarchy.
12194
12195         * ftp.c (ftp_retrieve_list): Added recursion depth counter.
12196         (ftp_retrieve_list): Check whether quota is exceeded.
12197
12198         * url.c (get_urls_html): Skip leading blanks for absolute URIs.
12199
12200         * http.c (gethttp): Use referer if present.
12201
12202         * recur.c (recursive_retrieve): Set u->referer before calling
12203         retrieve_url.
12204
12205         * url.c (newurl): Use memset to nullify the struct members.
12206         (freeurl): Free the referer field too.
12207
12208         * url.h: Added referer to urlinfo.
12209
12210         * geturl.1: Updated the manual to document some of the new features.
12211
12212         * utils.c (numdigit): Moved from url.c.
12213
12214         * README: Rewritten.
12215
12216         * config.h.in: Add the support for socks.
12217
12218         * configure.in: Add the support for socks.
12219
12220         * url.c (url_filename): If the dir_prefix is ".", work with just
12221         the file name.
12222         (url_filename): Do not look for .n extensions if timestamping if
12223         turned on.
12224
12225         * retr.c (show_progress): Skip the over-abundant restval data, and
12226         print the rest of it with ',' instead of '.'.
12227
12228 1996-07-05  Hrvoje Niksic  <hniksic@srce.hr>
12229
12230         * retr.c (show_progress): Changed second arg. to long (as it
12231         should be).
12232         (show_progress): Moved to retr.c.
12233         (get_contents): Moved to retr.c.
12234
12235         * version.c: Change version to 1.4b13.
12236
12237 1996-07-05  Hrvoje Lacko <hlacko@fly.cc.fer.hr>
12238
12239         * url.c (in_acclist): Would return after the first suffix.
12240
12241 1996-07-04  Hrvoje Niksic  <hniksic@srce.hr>
12242
12243         * version.c: "Released" 1.4b12.
12244
12245         * url.c (path_simplify): More kludgifications.
12246         (get_urls_html): Use new parameters for htmlfindurl.
12247
12248         * html.c: Removed memorizing "parser states", since the new
12249         organization does not require them.
12250
12251         * init.c (run_geturlrc): Use read_whole_line.
12252
12253         * ftp-unix.c (ftp_parse_ls): Use read_whole_line.
12254
12255         * recur.c (parse_robots): Use read_whole_line.
12256
12257         * utils.c (read_whole_line): New function.
12258
12259         * recur.c (tried_robots): Use add_slist/in_slist, *much* cleaner.
12260
12261         * host.c (ngethostbyname): Call inet_addr just once. Yet to be
12262         tested on OSF and Ultrix.
12263         (add_hlist): New function.
12264         (free_hlist): New function.
12265         (search_host): New function.
12266         (search_address): New function.
12267         (realhost): Use search_host, search_address and add_hlist.
12268         (same_host): Replaced realloc() with strdupdelim(), made
12269         case-insensitive, fixed a memory leak.
12270
12271         * html.c (ftp_index): Fixed tm_min and tm_sec to be tm_hour and
12272         tm_min, like intended.
12273
12274         * version.c: Change user agent information to
12275         Geturl/version.
12276
12277 1996-07-03  Hrvoje Niksic  <hniksic@srce.hr>
12278
12279         * utils.c: Renamed nmalloc.c to utils.c, .h likewise.
12280
12281         * url.c (acceptable): Always accept directories.
12282
12283         * ftp-unix.c (ftp_parse_ls): Support brain-damaged "ls -F"-loving
12284         servers by stripping trailing @ from symlinks and trailing / from
12285         directories.
12286
12287         * ftp.c (ftp_loop): Debugged the "enhanced" heuristics. :-)
12288
12289         * url.c (skip_url): Use toupper instead of UCASE.
12290
12291         * host.c (sufmatch): Made it case-insensitive.
12292
12293         * url.c (match_backwards_or_pattern): Fixed i == -1 to j == -1.
12294         (match_backwards): New function, instead of
12295         match_backwards_or_pattern.
12296
12297         * recur.c (recursive_retrieve): Increased performance by
12298         introducing inl, which reduces number of calls to in_slist to only
12299         one.
12300
12301         * ftp.c (ftp_loop): Enhanced the heuristics that decides which
12302         routine to use.
12303
12304         * main.c (printhelp): Removed the warranty stuff.
12305
12306 1996-07-02  Hrvoje Niksic  <hniksic@srce.hr>
12307
12308         * url.c (add_slist): Simplify.
12309         (match_backwards_or_pattern): New function.
12310         (in_acclist): Use match_backwards_or_pattern.
12311         (matches): Remove.
12312
12313 1996-06-30  Hrvoje Niksic  <hniksic@srce.hr>
12314
12315         * ftp.c (ftp_loop): Call ftp_index on empty file names, if not
12316         recursive.
12317
12318         * html.c (ftp_index): Fixed to work. Beautified the output.
12319
12320         * ftp.c (ftp_retrieve_glob): Another argument to control whether
12321         globbing is to be used.
12322         (ftp_retrieve_list): Compare the time-stamps of local and remote
12323         files to determine whether to download.
12324
12325 1996-06-29  Hrvoje Niksic  <hniksic@srce.hr>
12326
12327         * ftp.c (rel_constr): New function.
12328
12329         * retr.c (retrieve_from_file): Check for text/html before
12330         retrieving recursively.
12331
12332         * main.c (main): Check whether the file is HTML before going into
12333         recursive HTML retrieving.
12334
12335         * ftp.c (ftp_retrieve_list): Manage directories.
12336         (ftp_retrieve_glob): Pass all the file-types to ftp_retrieve_list.
12337         (ftp_1fl_loop): Fixed a bug that caused con->com to be incorrectly
12338         initialized, causing bugchecks in getftp to fail.
12339
12340         * configure.in: Check for symlink.
12341
12342         * ftp.c (ftp_retrieve_list): Added support for symlinks.
12343
12344         * version.c: "Released" 1.4b10.
12345
12346         * atotm.c (atotm): Redeclared as time_t.
12347
12348         * init.c: New variable "timestamping".
12349
12350         * main.c (main): New option 'N'.
12351
12352         * http.c (hgetlocation): Case-insensitive match.
12353         (hgetmodified): New function.
12354         (http_loop): Implement time-stamping.
12355
12356 1996-06-28  Hrvoje Niksic  <hniksic@srce.hr>
12357
12358         * version.c: Changed version to 1.4b10
12359
12360         * atotm.c: New file, from phttpd.
12361
12362         * options.h (struct options): New parameter timestamping.
12363
12364         * version.c: 1.4b9 "released".
12365
12366         * recur.c (recursive_retrieve): Used linked list (ulist) for
12367         faster storing of URLs.
12368
12369         * url.c (get_urls_html): Removed the old kludge with comparing the
12370         outputs of htmlfindurl and findurl.
12371         (get_urls_html): Added better protocol support here.
12372         (create_hash): Removed, as well as add_hash and in_hash.
12373         (addslist): New function.
12374         (in_slist): ditto
12375
12376         * version.c: Released 1.4b8, changed version to b9.
12377
12378 1996-06-27  Hrvoje Niksic  <hniksic@srce.hr>
12379
12380         * ftp.c (freefileinfo): New function.
12381         (delelement): New function.
12382
12383         * everywhere: GPL!
12384
12385         * ftp.c (ftp_loop): Use ccon.
12386         (ftp_retrieve_glob): Likewise.
12387
12388         * ftp.h: Define ccon, to define status of control connection.
12389
12390         * ftp.c (ftp_get_listing): New function.
12391         (ftp_retrieve_more): New function.
12392         (ftp_retrieve_glob): New function.
12393
12394 1996-06-25  Hrvoje Niksic  <hniksic@srce.hr>
12395
12396         * configure.in: Removed the search for cuserid().
12397
12398         * init.c (getmode): Renamed to getperms.
12399
12400 1996-06-24  Hrvoje Niksic  <hniksic@srce.hr>
12401
12402         * version.c: New version.
12403
12404         * main.c (hangup): New function, that handles hangup. Hangup
12405         signal now causes geturl to stop writing on stdout, and to write
12406         to a log file.
12407
12408         * ftp.c (getftp): "Released" 1.4b7.
12409
12410         * html.c (htmlfindurl): Ignore everything inside <head>...</head>.
12411         (ftp_index): Use fileinfo/urlinfo.
12412
12413         * ftp-unix.c (ftp_parse_ls): New function.
12414         (symperms): New function.
12415
12416         * ftp.c (ftp_1fl_loop): New function, to handle 1-file loops.
12417
12418         * retr.c (retrieve_url): Added FTP support.
12419
12420 1996-06-23  Hrvoje Niksic  <hniksic@srce.hr>
12421
12422         * geturl.h: Removed NOTFTP2HTML enum.
12423         Added DO_LOGIN, DO_CWD and DO_LIST. LIST_ONLY is obsolete.
12424
12425         * ftp.c (getftp): Resynched with urlinfo.
12426         (getftp): Removed HMTL-ization of index.html from getftp.
12427
12428         * version.c: 1.4b6 "released".
12429
12430         * options.h (options): New struct, to keep options in.
12431
12432         * http.c (http_loop,gethttp): Synched with proxy.
12433
12434         * retr.c (retrieve_url): Implemented proxy retrieval.
12435
12436         * main.c (main): Use retrieve_from_file.
12437
12438 1996-06-22  Hrvoje Niksic  <hniksic@srce.hr>
12439
12440         * retr.c (retrieve_from_file): New function.
12441
12442         * url.c (parseurl): Modified to return URLOK if all OK. Protocol
12443         can be found in u->proto.
12444
12445         * ftp.c (ftp_response): Fixed to accept multi-line responses as
12446         per RFC 959.
12447
12448         * recr.c (recursive_retrieve): Take newloc from retrieve_url.
12449
12450         * url.c (mymkdir): Removed the file of the same name, if one
12451         exists.
12452         (isfile): New function.
12453         (mkstruct): Fixed the '/' glitches.
12454         (path_simplify): Hacked to treat something/.. correctly.
12455
12456 1996-06-21  Hrvoje Niksic  <hniksic@srce.hr>
12457
12458         * http.c (gethttp): Close the socket after error in headers.
12459         (http_loop): HEOF no longer a fatal header.
12460
12461         * loop.c (retrieve_url): When dt is NULL, do not modify it. This
12462         simplifies the syntax of calling retrieve_url.
12463
12464         * recr.c (recursive_retrieve): Modified to use get_urls_html.
12465
12466         * url.c (get_urls_file): New function.
12467         (get_urls_html): New function.
12468
12469         * recr.c (recursive_retrieve): Patched up to conform to the
12470         standards.
12471
12472         * http.c (gethttp): Synched with the rest...
12473         (gethttp): Treat only CONREFUSED specially, with connection
12474         errors.
12475
12476         * init.c,geturl.1,http.c (http_loop): Removed kill_error.
12477
12478 1996-06-20  Hrvoje Niksic  <hniksic@srce.hr>
12479
12480         * http.c (http_loop): New function.
12481
12482         * loop.c: Removed *lots* of stuff from retrieve_url.
12483
12484         * url.c (parseurl): Changed to work with urlinfo. Integrated
12485         username finding and path parsing.
12486         (newurl): New function.
12487         (freeurl): New function.
12488         (mkstruct): Removed the old bogosities, made it urlinfo-compliant.
12489         (url_filename): Likewise.
12490         (path_simplify): Accept relative paths too.
12491         (opt_url): Made urlinfo-compliant, removed bogosities.
12492         (path_simplify): Expanded to accept relative paths.
12493         (str_url): A replacement for hide_url
12494         (decode_string): Fixed a bug that caused malfunctioning when
12495         encountering an illegal %.. combination.
12496         (opt_url): Removed the argument. Dot-optimizations are now default.
12497
12498         * nmalloc.c (strdupdelim): New function.
12499
12500         * url.h: Added the urlinfo structure
12501
12502 1996-06-19  Hrvoje Niksic  <hniksic@srce.hr>
12503
12504         * url.c (hide_url): Thrown out the protocol assertion. Do not
12505         change the URL if the protocol if not recognized.
12506         (findurl): Put continue instead of break.
12507
12508 1996-06-18  Hrvoje Niksic  <hniksic@srce.hr>
12509
12510         * sample.geturlrc: Changed the defaults to be commented out and
12511         harmless (previous defaults caused pains if copied to
12512         ~/.geturlrc).
12513
12514         * http.c (gethttp): Print the HTTP request in debug mode.
12515
12516         * connect.c (iread): Added EINTR check loop to select-ing
12517         too. EINTR is now correctly handled with select().
12518
12519         * TODO: new file
12520
12521 1996-05-07  Hrvoje Niksic  <hniksic@srce.hr>
12522
12523         * host.c (same_host): Made the function a little bit more
12524         intelligent regarding diversified URL syntaxes.
12525
12526         * url.c (skip_url): Spaces are now skipped after URL:
12527
12528         * Released 1.3.1 with the patch to prevent crashing when sending
12529         NULL to robot* functions and the patch to compile "out of the box"
12530         on AIX.
12531
12532         * recr.c (recursive_retrieve): Added checking whether this_url is
12533         NULL when calling the robot functions.
12534
12535         * ChangeLog: New file.