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