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