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