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