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