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