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