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