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