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