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