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