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