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