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