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