]> sjero.net Git - wget/blob - src/ChangeLog
c0fd1664ef2c03d247c2ad4f3d2b50ae34a36cb3
[wget] / src / ChangeLog
1 2002-05-16  Hrvoje Niksic  <hniksic@arsdigita.com>
2
3         * hash.c (prime_size): Store the offset of the prime number in the
4         prime table.  When searching, start with the given offset.
5         (hash_table_new): Pass the pointer to ht->prime_offset to
6         prime_size.
7         (grow_hash_table): Ditto.
8         (prime_size): Make 13 the first prime to make empty hash tables
9         slightly smaller.
10
11 2002-05-16  Ian Abbott  <abbotti@mev.co.uk>
12
13         * recur.c (download_child_p): Minor optimization to avoid an
14         unnecessary additional call to schemes_are_similar_p function.
15
16 2002-05-16  Ian Abbott  <abbotti@mev.co.uk>
17
18         * url.c (schemes_are_similar_p): New function to test enumerated
19         scheme codes for similarity.
20
21         * url.h: Declare it.
22
23         * recur.c (download_child_p): Use it to compare schemes.  This
24         also fixes a bug that allows hosts to be spanned (without the
25         -H option) when the parent scheme is https and the child's is
26         http or vice versa.
27
28 2002-05-14  Bill Richardson  <bill@riverstonenet.com>
29
30         * ftp.c (getftp): Don't ftruncate stdout.
31
32         * http.c (gethttp): Don't ftruncate stdout.
33
34 2002-05-09  Ian Abbott  <abbotti@mev.co.uk>
35
36         * cmpt.c (strptime_internal): Synched with glibc-2.1.3.
37         (get_number): Ditto.
38         (get_alt_number): Ditto.
39         (__isleap): New function-like macro used by strptime.
40         (day_of_the_week): New function used by strptime.
41         (day_of_the_year): Ditto.
42         (__mon_yday): Now shared by mktime and strptime implementations.
43
44 2002-05-08  Hrvoje Niksic  <hniksic@arsdigita.com>
45
46         * cookies.c (check_domain_match): Use match_tail in case
47         insensitive mode.
48
49         * utils.c (match_tail): Allow the caller to specify case
50         insensitive mode.
51
52         * cookies.c (store_cookie): When expiry_time is 0, print it as
53         undefined, not indefinite.
54
55 2002-05-07  Ian Abbott  <abbotti@mev.co.uk>
56
57         * cookies.c (cookie_jar_process_set_cookie): Do not store
58         discarded cookie.
59
60 2002-04-21  Hrvoje Niksic  <hniksic@arsdigita.com>
61
62         * cookies.c (check_domain_match): Allow cookies to be set for
63         subdomains of unknown top-level domains under some circumstances.
64
65 2002-04-21  Thomas Lussnig  <thomas.lussnig@bewegungsmelder.de>
66
67         * gen_ssl.c:
68         - allow checking of server cert
69         - allow defining client cert type
70         - allow limit of ssl protocol
71         - check more return values
72         - added debug message on break
73
74 2002-04-21  Hrvoje Niksic  <hniksic@arsdigita.com>
75
76         * recur.c (download_child_p): Revert order of items in check
77         number 6 for clarity.
78
79 2002-04-20  Hrvoje Niksic  <hniksic@arsdigita.com>
80
81         * init.c: Ditto.
82
83         * main.c: Ditto.
84
85         * http.c: Use the new interface.
86
87         * cookies.c: Provide an OO-style "cookie jar" interface to enable
88         separate cookie jars.
89
90         * http.c (http_atotm): Declare argument as const.
91
92 2002-04-20  Hrvoje Niksic  <hniksic@arsdigita.com>
93
94         * cookies.c (cookie_new): Default to PORT_ANY.
95         (find_cookie_chain_exact): Only search by DOMAIN.
96         (find_matching_cookie): Also check that PORT matches.
97         (store_cookie): Only match the domain.
98         (set_cookie_header_cb): When a cookie "fakes" a domain, assume it
99         is valid for that host rather than discarding it completely.
100         (find_matching_chains): Don't search by PORT.
101         (matching_cookie): Also match PORT.
102         (load_cookies): Set the port if specified, otherwise leave it as
103         ANY.
104         (save_cookies_mapper): Save the port if specified, otherwise leave
105         it empty.
106
107 2002-04-19  Thomas Lussnig  <thomas.lussnig@bewegungsmelder.de>
108
109         * init.c: The option `egdfile' was not in sort order.
110
111 2002-04-16  Hrvoje Niksic  <hniksic@arsdigita.com>
112
113         * ftp.c (getftp): Treat directories that begin with <letter>: as
114         absolute.
115         (getftp): Strip trailing slashes from con->id before merging it
116         with TARGET.
117
118 2002-04-16  Hrvoje Niksic  <hniksic@arsdigita.com>
119
120         * http.c (gethttp): If Content-Type is not given, assume
121         text/html.
122
123 2002-04-15  Hrvoje Niksic  <hniksic@arsdigita.com>
124
125         * recur.c (download_child_p): Don't ignore rejection of HTML
126         documents that are themselves leaves of recursion.
127
128 2002-04-15  Ian Abbott  <abbotti@mev.co.uk>
129
130         Makefile.in: Updated several dependencies for object files to take
131         account of nested include files.
132
133 2002-04-15  Ian Abbott  <abbotti@mev.co.uk>
134
135         Makefile.in: The target `connect$o' (connect.o) now depends on
136         `utils.h'
137
138 2002-04-15  Ian Abbott  <abbotti@mev.co.uk>
139
140         * host.c (SET_H_ERRNO): New function-like macro to set `h_errno'.
141         (gethostbyname_with_timeout): Use it.
142
143         * utils.c: Don't define `SETJMP()', `run_with_timeout_env' or
144         `abort_run_with_timeout()' when `USE_SIGNAL_TIMEOUT' is undefined.
145
146 2002-04-15  Hrvoje Niksic  <hniksic@arsdigita.com>
147
148         * host.c (getaddrinfo_with_timeout): New function.
149         (gethostbyname_with_timeout): Ditto.
150         (lookup_host): Use them.
151
152 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
153
154         * utils.c (number_to_string): Handle the case when n < -INT_MAX.
155
156 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
157
158         * init.c (comind): Use a marginally faster implementation of
159         binary search.  To quote Martin Buchholz, "a nanosecond saved is a
160         nanosecond earned."
161
162 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
163
164         * main.c (print_help): Document `--post-data' and `--post-file'.
165
166 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
167
168         * http.c (gethttp): Ditto.
169
170         * retr.c (retrieve_url): Initialize variables to appease the
171         compiler.
172
173         * gen_sslfunc.c (ssl_iread): Don't handle EINTR when calling
174         select_fd.
175         (ssl_iwrite): Ditto.
176
177         * connect.c (select_fd): Rewrite to handle EINTR.  Set errno to
178         ETIMEDOUT in case of timeout.
179         (iread): No need to handle EINTR when calling select_fd.
180         (iwrite): Ditto.
181
182 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
183
184         * retr.c (retrieve_url): Make sure that POST is not honored for
185         redirections.
186
187         * http.c (gethttp): Send the POST data when requested.
188         (post_file): New function.
189         (gethttp): Use it.
190
191         * main.c (main): Ditto.
192
193         * init.c: Add new options.
194
195         * options.h (struct options): New options post_data and
196         post_file_name.
197
198 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
199
200         * connect.c (connect_with_timeout): Firing SIGALRM can result in
201         connect() exiting with EINTR.  Treat EINTR the same as ETIMEDOUT.
202
203 2002-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
204
205         * connect.c (connect_with_timeout): Use it.
206
207         * utils.c (run_with_timeout): New function.
208
209 2002-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
210
211         * url.c (getproxy): Accept a struct url argument.  This obviates
212         the need for USE_PROXY_P.
213
214         * retr.c (retrieve_url): Allow proxy to be a non-FTP URL.
215
216         * ftp.c (getftp): Recognize FWTK-style proxy.
217
218 2002-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
219
220         * config.h.in: Only define _VA_LIST when compiled with gcc.
221
222 2002-04012  Ian Abbott  <abbotti@mev.co.uk>
223
224         * http.c (http_loop): Compensate for MS Windows two-second
225         granularity of file modification time when comparing timestamps.
226
227         * ftp.c (ftp_retrieve_list): Ditto.
228
229 2002-04-12  Ian Abbott  <abbotti@mev.co.uk>
230
231         * utils.c (has_html_suffix_p): New function to test filename for
232         common html extensions.
233
234         * utils.h: Declare it.
235
236         * http.c (http_loop): Use it instead of previous test.
237
238         * retr.c (retrieve_url): Ditto.
239
240         * recur.c (download_child_p): Ditto.
241
242 2002-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
243
244         * config.h.in: Define _VA_LIST on Solaris to prevent stdio.h from
245         declaring va_list.
246         From Kevin Rodgers <kevinr@ihs.com>.
247
248 2002-04-12  Ian Abbott  <abbotti@mev.co.uk>
249
250         * Makefile.in: Specify libtool mode explicitly when linking.
251
252 2002-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
253
254         * connect.c (connect_with_timeout): New function.
255         (connect_to_one): Use it.
256
257         * config.h.in: Add stubs for HAVE_SIGSETJMP, HAVE_SIGBLOCK, and
258         HAVE_SETJMP_H.
259
260 2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
261
262         * log.c: Set WGET_USE_STDARG if __STDC__ is defined and stdarg.h
263         is present.
264
265 2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
266
267         * progress.c (bar_create): If INITIAL is larger than TOTAL, fix
268         TOTAL.
269         (bar_finish): Likewise.
270
271 2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
272
273         * html-url.c (tag_handle_form): New function.  Pick up form
274         actions and mark them for conversion only.
275
276 2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
277
278         * progress.c (struct progress_implementation): Use PARAMS when
279         declaring the parameters of *create, *update, *finish, and
280         *set_params.
281
282         * netrc.c: Ditto.
283
284         * http.c: Reformat some function definitions so that ansi2knr can
285         read them.
286
287         * hash.c (struct hash_table): Use the PARAMS macro around
288         parameters in the declaration of hash_function and test_function.
289         (prime_size): Spell 2580823717UL and 3355070839UL as (unsigned
290         long)0x99d43ea5 and (unsigned long)0xc7fa5177 respectively, so
291         that pre-ANSI compilers can read them.
292         (find_mapping): Use PARAMS when declaring EQUALS.
293         (hash_table_put): Ditto.
294
295         * ftp.h: Wrap the parameters of ftp_index declaration in PARAMS.
296
297         * cookies.c (cookie_new): Use (unsigned long)0 instead of 0UL,
298         which was unsupported by pre-ANSI compilers.
299
300         From Nelson H. F. Beebe <beebe@math.utah.edu>, for the most part.
301
302 2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
303
304         * url.c (url_filename): Use compose_file_name regardless of
305         whether opt.dirstruct is set.
306         (mkstruct): Don't handle the query and the reencoding of DIR; that
307         is done in compose_file_name.
308
309 2002-04-10  Hrvoje Niksic  <hniksic@arsdigita.com>
310
311         * wget.h: Ditto for extern char *exec_name.
312
313         * options.h: Don't guard against OPTIONS_DEFINED_HERE -- it is
314         perfectly legal to follow an `extern' with a non-`extern' ones,
315         provided the types match.
316
317         * main.c: Don't define OPTIONS_DEFINED_HERE.
318
319 2002-04-10  Hrvoje Niksic  <hniksic@arsdigita.com>
320
321         * progress.c (create_image): Revert to calculating ETA based on
322         average download speed.
323         (create_image): Don't print ETA until the download has been active
324         for at least 3 seconds.
325         (create_image): When ETA is not available, don't print anything.
326         The previous version would print --:--.
327
328 2002-04-10  Hrvoje Niksic  <hniksic@arsdigita.com>
329
330         * progress.c (bar_update): Keep updating a subinterval until it
331         reaches or exceeds a watermark.  That way the measurement will be
332         guaranteed to span a configurable minimum of time.  The current
333         default is 3s in 30 100ms intervals.
334
335 2002-04-09  Hrvoje Niksic  <hniksic@arsdigita.com>
336
337         * progress.c (bar_update): Maintain an array of the time it took
338         to perform previous 30 network reads.
339         (create_image): Calculate the download speed and ETA based on the
340         last 30 reads, not the entire download.
341         (create_image): Make sure that the ETA is not changed more than
342         once per second.
343
344 2002-04-09  Ian Abbott  <abbotti@mev.co.uk>
345
346         * mswindows.c (borland_utime): New function conditionally defined
347         when `HACK_BCC_UTIME_BUG' is defined.  A reimplementation of
348         `utime()' as Borland's `utime()' function is broken on Windows 9x
349         systems.  (Original patch by Chin-yuan Kuo <sr1111111@yahoo.com.tw>.)
350
351 2002-04-08  Hrvoje Niksic  <hniksic@arsdigita.com>
352
353         * ftp.c (ftp_loop): Propagate the result of ftp_retrieve_glob.
354
355 2002-03-26  Ian Abbott  <abbotti@mev.co.uk>
356
357         * Makefile.in: Updated several dependencies for object files.
358
359 2002-03-20  Ian Abbott  <abbotti@mev.co.uk>
360
361         * mswindows.c: Include "utils.h".
362
363 2002-03-18  Ian Abbott  <abbotti@mev.co.uk>
364
365         * host.h: Don't include netdb.h on windows.
366
367 2002-02-19  Hrvoje Niksic  <hniksic@arsdigita.com>
368
369         * recur.c (retrieve_tree): Handle the case when start_url doesn't
370         parse.
371
372 2002-02-19  Andreas Damm  <andreas-sourceforge@radab.org>
373
374         * wget.h (DO_REALLOC_FROM_ALLOCA): Multiply with sizeof(type) when
375         calling xmalloc and memcpy.
376
377 2002-02-19  Hrvoje Niksic  <hniksic@arsdigita.com>
378
379         * host.h: Include Unix-specific includes #ifndef WINDOWS.
380         Patch originally provided by Christian Lackas.
381
382 2002-02-11  Christian Lackas  <delta@lackas.net>
383
384         * recur.c: recurive downloading for https fixed.
385
386 2002-02-19  Alan Eldridge  <alane@geeksrus.net>
387
388         * host.h: Also include <netinet/in.h> and <sys/socket.h>.
389
390         * ftp-basic.c: Also include <netinet/in.h>.
391
392 2002-02-05  Ian Abbott  <abbotti@mev.co.uk>
393
394         * http.c (gethttp): when -c used, mark already fully retrieved
395         file as successfully retrieved.
396
397 2002-02-19  Hrvoje Niksic  <hniksic@arsdigita.com>
398
399         * url.c (url_parse): Don't treat '?' as query string separator
400         when parsing FTP URLs.
401
402 2002-02-01  Hrvoje Niksic  <hniksic@arsdigita.com>
403
404         * html-url.c (tag_handle_meta): Don't crash on <meta
405         http-equiv=refresh> where content is missing.
406
407 2002-01-31  Herold Heiko  <Heiko.Herold@previnet.it>
408
409         * ftp-basic.c, host.c: don't include sys/socket.h, arpa/inet.h,
410         netdb.h on windows.
411
412 2002-01-30  Hrvoje Niksic  <hniksic@arsdigita.com>
413
414         * retr.c (retrieve_url): Remove redirection cycle detection.  This
415         is because some sites legitimately redirect the user back to the
416         same location, e.g. after an authorization check performed by
417         another page.  MAX_REDIRECTIONS is still used to prevent infinite
418         redirection loops.
419
420 2002-01-26  Hrvoje Niksic  <hniksic@arsdigita.com>
421
422         * http.c (gethttp): Wrap host name in square brackets if it
423         contains a colon.
424
425 2002-01-26  Hrvoje Niksic  <hniksic@arsdigita.com>
426
427         * url.c (url_parse): Allow all hex digits, not only decimal ones,
428         to form an IP address.
429
430 2002-01-26  Hrvoje Niksic  <hniksic@arsdigita.com>
431
432         * url.c (urlchr_table): Make square braces reserved, so we can
433         parse http://[::1]/.
434         (url_parse): Handle host in braces.
435         (url_string): If url->host contains colons, wrap it in braces.
436
437 2002-01-24  Hrvoje Niksic  <hniksic@arsdigita.com>
438
439         * connect.c (resolve_bind_address): New function.
440         (connect_to_one): Use it.
441         (bindport): Ditto.
442
443         * init.c: Don't resolve bind-address here.
444
445         * host.c (wget_sockaddr_set_address): Would bug out with ADDR == NULL.
446
447 2002-01-24  Hrvoje Niksic  <hniksic@arsdigita.com>
448
449         * host.c (lookup_host): Use sizeof(ip4_address) to calculate the
450         offset.
451         (address_list_new): Use map_ipv4_to_ip.
452         (wget_sockaddr_set_address): Convert ADDR to IPv4 before using it
453         in IPv4 context.
454
455 2002-01-24  Hrvoje Niksic  <hniksic@arsdigita.com>
456
457         * source: Integrated IPv6 support.
458         Written by Thomas Lussnig <thomas.lussnig@bewegungsmelder.de>.
459
460 2002-01-15  Ian Abbott  <abbotti@mev.co.uk>
461
462         * init.c (cmd_file): Change `\' to `/' for Windows (yes, really!)
463         (cmd_directory): New function. Like cmd_file(), but strips
464         trailing directory separators.
465         (commands): Change action for "dirprefix" from `cmd_file' to
466         `cmd_directory'.
467
468         * utils.c (make_directory): Allow intermediate `mkdir' calls to
469         fail, as not all path components that do not exist should be
470         directory components, especially under Windows.
471
472 2002-01-17  Hrvoje Niksic  <hniksic@arsdigita.com>
473
474         * netrc.c (parse_netrc): Skip leading whitespace before testing
475         whether the line is empty.  Empty lines still contain the line
476         terminator.
477
478 2002-01-15  Hrvoje Niksic  <hniksic@arsdigita.com>
479
480         * gen_sslfunc.c (ssl_iread): Call select on the file descriptor
481         only if no data is pending in SSL buffers.
482         From tony@bluetail.com.
483
484 2002-01-14  Hrvoje Niksic  <hniksic@arsdigita.com>
485
486         * headers.c (header_get): Strip trailing whitespace from the
487         header.
488
489 2002-01-14  Hrvoje Niksic  <hniksic@arsdigita.com>
490
491         * url.c (parse_uname): URL-decode *USER and *PASSWD.
492
493 2002-01-07  Ian Abbott <abbotti@mev.co.uk>
494
495         * url.c (uri_merge_1): Deal with "net path" relative URL (one that
496         starts with "//").
497
498 2002-01-14  Hrvoje Niksic  <hniksic@arsdigita.com>
499
500         * http.c (gethttp): Invalidate SOCK if get_contents encountered an
501         error.
502
503 2001-12-24  Hrvoje Niksic  <hniksic@arsdigita.com>
504
505         * version.c: Wget 1.8.1 is released.
506
507 2001-12-19  Hrvoje Niksic  <hniksic@arsdigita.com>
508
509         * version.c: Wget 1.8.1-pre3 is released.
510
511 2001-12-19  Hrvoje Niksic  <hniksic@arsdigita.com>
512
513         * recur.c (retrieve_tree): Enqueue the canonical representation of
514         start_url, so that the test against dl_url_file_map works.
515
516 2001-12-19  Hrvoje Niksic  <hniksic@arsdigita.com>
517
518         * log.c (logputs): Check for requested verbosity before printing
519         anything.
520
521 2001-12-19  Hrvoje Niksic  <hniksic@arsdigita.com>
522
523         * html-url.c (tag_handle_link): Treat the "shortcut icon" link as
524         inline.
525
526 2001-12-18  Hrvoje Niksic  <hniksic@arsdigita.com>
527
528         * recur.c (retrieve_tree): Make a copy of file obtained from
529         dl_url_file_map because the code calls xfree(file) later.
530
531 2001-12-18  Hrvoje Niksic  <hniksic@arsdigita.com>
532
533         * recur.c (register_html): Maintain a hash table of HTML files
534         along with the list.  Disallow duplicates.
535         (retrieve_tree): Use downloaded_html_set to check whether the file
536         found in dl_url_file_map is an HTML file, and descend into it if
537         so.
538         (convert_all_links): Don't guard against duplicates in
539         downloaded_html_list, since they are no longer possible.
540
541 2001-12-18  Ian Abbott  <abbotti@mev.co.uk>
542
543         * recur.c (retrieve_tree): Pass on referring URL when retrieving
544         recursed URL.
545
546 2001-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
547
548         * version.c: Wget 1.8.1-pre2 is released.
549
550 2001-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
551
552         * retr.c (sleep_between_retrievals): Simplify indentation.
553
554 2001-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
555
556         * gen_sslfunc.c (ssl_init_prng): Use random_number to get a byte
557         of "randomness" at a time.
558         (ssl_init_prng): Don't seed the PRNG; random_number will do that.
559
560         * retr.c (sleep_between_retrievals): Use it.  Make sure that the
561         random amount averages in opt.wait.
562         (sleep_between_retrievals): Don't seed the PRNG; random_number
563         will do that.
564
565         * utils.c (random_number): New function.
566
567 2001-12-14  Hrvoje Niksic  <hniksic@arsdigita.com>
568
569         * url.c (path_simplify): Move here from utils.c, and make static.
570
571 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
572
573         * init.c (wgetrc_file_name): Print correct message when loading
574         getenv("WGETRC") fails.
575
576 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
577
578         * recur.c (register_download): Don't abort when one URL references
579         two different files.
580
581 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
582
583         * http.c (gethttp): Check for conn->scheme, not u->scheme, before
584         calling ssl_iwrite.
585
586 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
587
588         * version.c: Wget 1.8.1-pre1 is released.
589
590 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
591
592         * res.c (matches): Fix broken URL in the docstring.
593
594 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
595
596         * html-url.c (tag_url_attributes): Mark <embed href=...> as
597         external.
598
599 2001-12-12  Hrvoje Niksic  <hniksic@arsdigita.com>
600
601         * url.c (get_urls_file): Cosmetic changes.
602
603 2001-12-12  Hrvoje Niksic  <hniksic@arsdigita.com>
604
605         * html-url.c (append_one_url): Resurrect warning when unable to
606         resolve a relative link.
607
608 2001-12-12  Hrvoje Niksic  <hniksic@arsdigita.com>
609
610         * html-url.c (collect_tags_mapper): Break into several functions.
611         (tag_url_attributes): Collect <embed href=...>.
612
613 2001-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
614
615         * host.c: New type ipv4_address.  Use it consistently instead of
616         `unsigned char[4]' and `unsigned char *'.
617         (pretty_print_address): Accept a `const void *', to require even
618         less casting.
619
620 2001-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
621
622         * ftp-ls.c (ftp_parse_vms_ls): Fix obvious memory leaks.
623
624 2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
625
626         * main.c (main): Initialize progress after fork_to_background, so
627         that it knows when to use dots.
628
629         * mswindows.c (ws_hangup): Call log_request_redirect_output.
630
631         * utils.c (fork_to_background): Print the PID of the child
632         process.
633
634         * log.c (log_request_redirect_output): Set a flag that output
635         redirection has been requested.  Doing anything else in a signal
636         handler is unsafe.
637         (check_redirect_output): New function: check whether redirection
638         has been requested and, if so, call redirect_output().
639         (logputs): Call check_redirect_output.
640         (logprintf): Ditto.
641         (debug_logprintf): Ditto.
642         (redirect_output): Print clearer messages.
643
644         * main.c (redirect_output_signal): Don't call
645         redirect_output_signal directly.  Instead, call
646         log_request_redirect_output.
647
648         * utils.c (memfatal): Ditto.
649
650         * progress.c (display_image): Use it.
651
652         * log.c (log_set_save_context): New function: allow the caller to
653         turn off saving log context lines.
654
655 2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
656
657         * host.c (address_list_set_faulty): Uncomment a sanity check.
658
659 2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
660
661         * utils.c (long_to_string): Return a pointer after where the
662         number ends.
663         (long_to_string): Rename to number_to_string.
664
665 2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
666
667         * utils.c (path_simplify): Correctly handle the unlikely case that
668         b starts out as path + 1.
669
670 2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
671
672         * utils.c (path_simplify): Rewrite, with better comments, and
673         without the use of strcpy to move overlapping blocks.
674
675 2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
676
677         * init.c (cmd_spec_progress): Resurrect.  Check whether VAL is a
678         valid progress type before setting it.
679
680 2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
681
682         * main.c (main): Remove stray debugging message.
683
684 2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
685
686         * progress.c (create_image): Fix ETA padding when hours are prined.
687
688 2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
689
690         * version.c: Wget 1.8 is released.
691
692 2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
693
694         * url.c (reencode_string): Declare static.
695
696         * res.c (registered_specs): Declare static.
697
698         * progress.c (current_impl_locked): Declare static.
699
700         * log.c (flush_log_p): Declare static.
701         (needs_flushing): Ditto.
702
703         * http.c (digest_authentication_encode): Declare static.
704
705         * html-url.c (init_interesting): Declare static.
706
707         * host.c (host_name_addresses_map): Declare static.
708
709         * cookies.c (find_matching_chains): Declare static.
710
711         * ftp-ls.c (ftp_parse_vms_ls): Warn about the memory leak
712         indicated by lint.
713
714         * utils.c (path_simplify): Remove unused variable STUB_CHAR.
715
716         * host.c (address_list_set_faulty): Document that INDEX is
717         currently unused.
718
719         * url.c (rewrite_shorthand_url): Remove unused variable PATH.
720
721 2001-12-08  Hrvoje Niksic  <hniksic@arsdigita.com>
722
723         * version.c: Wget 1.8-pre2 is released.
724
725 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
726
727         * progress.c (progress_handle_sigwinch): Set up the signal again.
728
729         * utils.c: Include <sys/termios.h>, where Solaris defines
730         TIOCGWINSZ.
731
732         * progress.c (bar_create): Don't use the last column on the screen.
733         (create_image): Pad ETA to constant size.  Pad SIZE to nine digits
734         only until it exceeded them.
735
736 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
737
738         * version.c: Wget 1.8-pre1 is released.
739
740 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
741
742         * progress.c (progress_create): Make sure that, when the output is
743         redirected, the progress implementation gets changed to the
744         fallback one.
745         (bar_set_params): Set current_impl_locked to 1 when "force" is
746         specified.
747         (progress_create): Don't change the progress implementation if
748         current_impl_locked is non-zero.
749
750         * main.c (redirect_output_signal): Call
751         progress_schedule_redirect.
752
753         * progress.c (progress_schedule_redirect): New function.
754
755 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
756
757         * log.c (logvprintf): Restructure to allow being called multiple
758         times.
759         (logprintf): Call logvprintf in a loop.
760         (debug_logprintf): Ditto.
761
762 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
763
764         * gen_sslfunc.c (ssl_init_prng): Allow the user to disable EGD by
765         setting egd_file it to empty string.
766
767         * main.c (main): Change the option name from --sslegdsock to
768         --egd-file.
769
770 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
771
772         * gen_sslfunc.c (ssl_init_prng): Make the printed message
773         translatable.
774
775 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
776
777         * url.c (scheme_disable): New function.
778
779         * main.c (main): Call ssl_init_prng from here rather than from
780         init_ssl, so that it has a chance to disable support for https
781         before a URL has been resolved.
782
783         * gen_sslfunc.c (ssl_init_prng): Seed with rand() if all else
784         failed.
785         (ssl_init_prng): Disable support for https if seeding the PRNG
786         fails.
787
788 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
789
790         * utils.c (read_whole_line): Handle lines beginning with \0.
791
792 2001-12-05  Hrvoje Niksic  <hniksic@arsdigita.com>
793
794         * recur.c (convert_all_links): Guard against duplicates in
795         downloaded_html_files.
796         (register_download): Don't invalidate similar-looking URLs.
797         (match_except_index): New function.
798
799 2001-12-05  Hrvoje Niksic  <hniksic@arsdigita.com>
800
801         * utils.c (path_simplify): Document with test cases.
802
803 2001-12-04  Hrvoje Niksic  <hniksic@arsdigita.com>
804
805         * gen_sslfunc.c: Ditto.
806
807         * rbuf.c: Include <string.h>.
808
809 2001-12-04  Hrvoje Niksic  <hniksic@arsdigita.com>
810
811         * recur.c (retrieve_tree): Check whether the URL was already
812         downloaded before downloading it again.
813         (descend_child_p): Renamed to download_child_p.
814         (register_download): When one URL is downloaded to a file already
815         "owned" by another URL, delete all references that map any URL to
816         that file.
817         (register_delete_file): New function.
818         (retrieve_tree): Use it after deleting a file.
819
820         * url.c (url_parse): Re-canonicalize the URL also if the path is
821         empty, so that e.g. "http://www.server.com" ->
822         "http://www.server.com/".
823         (lowercase_str): Use ISUPPER instead of !ISLOWER.
824
825         * retr.c (retrieve_url): Use the canonical URL form when calling
826         register_download().
827
828 2001-12-04  Ian Abbott <abbotti@mev.co.uk>
829
830         * snprintf.c (dopr): Use `unsigned int' as the second argument to
831         va_arg when casting to `unsigned short' is intended.
832
833 2001-12-04  Herold Heiko  <Heiko.Herold@previnet.it>
834
835         * gen_sslfunc.c: on windows provide ssl crypto random 
836           initialization through RAND_screen(); could possibly
837           be not enough for strong ssl communication (see the 
838           relevant manual page from the openssl package).
839
840 2001-12-04  Hrvoje Niksic  <hniksic@arsdigita.com>
841
842         * url.c (local_quote_string): Reenable quoting of question marks,
843         but only when `--html-extension' is used.
844
845 2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
846
847         * version.c: Wget 1.8-beta3 is released.
848
849 2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
850
851         * snprintf.c (dopr): Cast the result of va_arg to short int and
852         short unsigned int where these types are expected to be used.
853
854 2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
855
856         * snprintf.c (dopr): Replace `short int' and `unsigned short int'
857         with `int' when using it as the second argument to `va_arg'.
858
859 2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
860
861         * host.c (address_list_new_one): New function.
862         (lookup_host): Use it.
863
864 2001-12-03  Andre Majorel  <amajorel@teaser.fr>
865
866         * host.c (lookup_host): Don't initialize TMPSTORE directly because
867         it's not legal C.
868
869 2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
870
871         * ftp-basic.c (ftp_port): Don't return HOSTERR if we fail getting
872         the socket data.
873
874         * ftp.c: Ditto.
875
876         * http.c: No need to declare h_errno.
877
878         * host.c: Declare h_errno.
879
880 2001-12-02  Hrvoje Niksic  <hniksic@arsdigita.com>
881
882         * utils.c (file_merge): If BASE doesn't contain a slash, just
883         return a copy of FILE.
884
885 2001-12-02  Hrvoje Niksic  <hniksic@arsdigita.com>
886
887         * version.c: Wget 1.8-beta2 is released.
888
889 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
890
891         * ftp.c (getftp): When PWD fails, assume "/".
892
893         * ftp-basic.c (ftp_syst): Fix indentation.
894
895 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
896
897         * url.c (get_urls_file): If opt.base_href is specified, merge each
898         URL with the base.
899
900 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
901
902         * main.c (print_help): Don't document the removed `-nh'.
903
904 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
905
906         * url.c (url_full_path): Document better.
907
908         * http.c (gethttp): Use the full path when creating digest
909         authorization.
910
911 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
912
913         * cookies.c (path_matches): Return 0 if PREFIX doesn't begin with
914         '/'.
915
916 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
917
918         * cookies.c (path_matches): FULL_PATH doesn't begin with '/', but
919         PREFIX does.
920
921 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
922
923         * cookies.c (check_domain_match): Reimplement to match Netscape's
924         "preliminary specification" for cookies.
925
926 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
927
928         * url.c (replace_attr_refresh_hack): New function.
929         (convert_links): Call replace_attr_refresh_hack for Refresh
930         links.  It will add the "TMOUT; URL=" junk before the link.
931
932         * html-url.c (collect_tags_mapper): Set ID to the ID of the
933         "content" attribute, not "http-equiv".
934         (collect_tags_mapper): Don't use OFFSET to hack the raw_* values;
935         instead, store the information that this entry belongs to a
936         "refresh" link.
937
938 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
939
940         * version.c: Wget 1.8-beta1 is released.
941
942 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
943
944         * recur.c (retrieve_tree): Allow -p retrievals to exceed maximum
945         depth by more than one.
946
947 2001-11-30  Hrvoje Niksic  <hniksic@arsdigita.com>
948
949         * retr.c (retrieve_url): Don't allow more than 20 redirections.
950
951 2001-11-30  Hrvoje Niksic  <hniksic@arsdigita.com>
952
953         * recur.c (retrieve_tree): Skip the non-inline entries when
954         enqueuing the children of a leaf HTML node in -p mode.
955         (descend_url_p): Ignore opt.no_parent when in -p mode and UPOS is
956         "inline".
957
958         * html-url.c (get_urls_html): Don't accept dash_p_leaf_HTML.
959         (collect_tags_mapper): When an entry is "inline", mark it as such.
960
961         * recur.c (descend_url_p): Fix test when checking for
962         acceptance/rejection rules.
963
964 2001-10-31 Daniel BODEA <dali@dali-designs.com>
965
966         * netrc.c (search_netrc): When slack_default is 0, still look for
967         an account with matching password, just not the "default account".
968         HTTP Authorization using .netrc should now work as expected.
969
970 2001-11-30  T. Bharath  <TBharath@responsenetworks.com>
971
972         * http.c (persistent_available_p): Call SHUTDOWN_SSL if
973         test_socket_open fails.
974
975 2001-11-30  Hrvoje Niksic  <hniksic@arsdigita.com>
976
977         * progress.c (display_image): Just print one CR to reset the
978         cursor position.
979
980 2001-11-30  Christian Fraenkel  <c.fraenkel@gmx.net>
981
982         * init.c: New command `ssl_egd_sock'.
983
984         * main.c (main): New option `--sslegdsock'.
985
986         * gen_sslfunc.c (ssl_init_prng): Seed the RNG using EGD.
987
988 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
989
990         * cmpt.c (memmove): Include a simple memmove implementation.
991
992 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
993
994         * headers: Guard against header files being included twice.
995
996 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
997
998         * gen-md5.c: Use unsigned char * as the buffer argument to
999         gen_md5_update.
1000
1001 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
1002
1003         * connect.h: Declare select_fd.
1004
1005 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
1006
1007         * recur.c (descend_url_p): When resolving no_parent, compare with
1008         start_url, not parent url.  Otherwise link from /a/b/ to /a/c/
1009         wouldn't be followed, although the download started from /a/.
1010
1011 2001-01-23  Herold Heiko  <Heiko.Herold@previnet.it>
1012
1013         * config.h.ms, mswindows.h: defined HAVE_ISATTY, use _isatty for
1014         MS VC; somebody with Borland compiler please check and provide
1015         patch if possible;
1016
1017         * cmpt.c: provided a usleep emulation.
1018
1019 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
1020
1021         * host.c (address_list_new): Initialize al->faulty.
1022
1023 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
1024
1025         * http.c (http_process_range): Accept the broken output of
1026         "JavaWebServer/1.1.1".
1027
1028 2001-11-28  Hrvoje Niksic  <hniksic@arsdigita.com>
1029
1030         * progress.c (dot_set_params): If PARAMS is unspecified, use
1031         dot_style, if available.
1032
1033         * init.c: Ditto.
1034
1035         * main.c (main): Resurect --dot-style.
1036
1037         * progress.c (dot_finish): Print the quantity if we're left at the
1038         beginning of a row.
1039
1040 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
1041
1042         * cmpt.c (random): Removed.
1043
1044         * retr.c (sleep_between_retrievals): Use the more portable rand()
1045         instead of random().
1046
1047 2001-11-27  Ian Abbott <abbotti@mev.co.uk>
1048
1049         * retr.c (retrieve_from_file): Initialize `new_file' to NULL to
1050         prevent seg fault.
1051
1052 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
1053
1054         * connect.c (connect_to_many): Use address_list_set_faulty to
1055         prevent the faulty address from being reused.
1056
1057         * host.c (address_list_set_faulty): New function.
1058         (address_list_get_bounds): New function, instead of
1059         address_list_count.
1060
1061 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
1062
1063         * url.c (convert_links): Don't translate %d-%d.
1064
1065         * main.c (print_help): Remove stray HAVE_RANDOM code.
1066
1067 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
1068
1069         * ftp.c (getftp): Improve output after sending PASV.  Don't
1070         attempt to "look up" the IP address we already know; call
1071         connect_to_one directly.
1072
1073 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
1074
1075         * progress.c: Change the default progress implementation to "bar".
1076
1077 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
1078
1079         * progress.c (bar_create): Print two newlines.
1080
1081 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
1082
1083         * cmpt.c (random): New function, a simple-minded replacement for
1084         random() on systems that don't have it.
1085
1086 2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
1087
1088         * config.h.in: Put a HAVE_USLEEP stub.
1089
1090         * cmpt.c (usleep): Replacement implementation of usleep using
1091         select.
1092
1093         * init.c: New option init_rate.
1094
1095         * main.c (main): New option --limit-rate.
1096
1097         * retr.c (limit_bandwidth): New function.
1098         (get_contents): Call it to limit the bandwidth used when
1099         downloading.
1100
1101         * progress.c (dot_update): Would print the wrong download speed on
1102         rows other than the first one when the download was continued.
1103         (dot_finish): Ditto.
1104
1105 2001-11-26  Ian Abbott <abbotti@mev.co.uk>
1106
1107         * http.c (gethttp): fix undeclared variable 'err' when compiled
1108         with HAVE_SSL.
1109
1110 2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
1111
1112         * progress.c: Don't allocate new timers; use the timing data
1113         propagated from the caller.
1114
1115         * retr.c (get_contents): Allocate and use a timer.
1116
1117 2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
1118
1119         * http.c (last_host_ip): Made into an address_list.
1120         (invalidate_persistent): Release pc_last_host_ip.
1121         (register_persistent): Use lookup_host.
1122         (persistent_available_p): Check for equality of hosts using
1123         address_list_match_all.  Call address_list_release.
1124         (http_cleanup): New function.
1125
1126         * ftp.c (getftp): Use lookup_host and connect_to_many.
1127
1128         * http.c (gethttp): Use lookup_host and connect_to_many.
1129
1130         * connect.c (make_connection): Removed.
1131         (connect_to_one): New function.
1132         (connect_to_many): Ditto.
1133         (set_connection_host_name): Ditto.
1134
1135         * host.c (lookup_host): New function; new return type.
1136         (address_list_new): New function.
1137         (address_list_count): Ditto.
1138         (address_list_copy_one): Ditto.
1139         (address_list_delete): Ditto.
1140         (address_list_release): Ditto.
1141         (pretty_print_address): Ditto.
1142
1143 2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
1144
1145         * recur.c (retrieve_tree): In case of followed redirection,
1146         blacklist the pre-redirection URL.
1147
1148 2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
1149
1150         * recur.c (descend_redirect_p): New function.
1151         (retrieve_tree): Make sure redirections are not blindly followed.
1152
1153 2001-11-04  Alan Eldridge  <alane@geeksrus.net>
1154
1155         * config.h.in: added HAVE_RANDOM.
1156
1157         * options.h: added random_wait to struct options.
1158
1159         * main.c (print_help [HAVE_RANDOM], main): added arg parsing, help
1160         for --random-wait.
1161
1162         * retr.c (sleep_between_retrievals) [HAVE_RANDOM]: added
1163         implementation of random wait times.
1164
1165         * init.c (commands): added "randomwait" keyword.
1166
1167 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
1168
1169         * recur.c (descend_url_p): Be more conservative with blacklisting
1170         URLs.
1171         (convert_all_links): Print how many files have been converted, and
1172         how long it took.
1173
1174         * progress.c (create_image): Place the number of downloaded bytes
1175         right after the progress bar.
1176
1177         * utils.c (suffix): Return a pointer into the string.
1178
1179 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
1180
1181         * url.c (convert_links): Handle CO_NULLIFY_BASE.
1182
1183         * recur.c (retrieve_tree): Ignore download-ignorable children.
1184         (convert_all_links): Specify CO_NULLIFY_BASE when link_base_p.
1185
1186         * html-url.c (handle_link): Return the newly created urlpos.
1187         (collect_tags_mapper): When dealing with BASE, store the base
1188         reference and mark it as download-ignorable.
1189
1190 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
1191
1192         * url.c (convert_links): Attempt to quote '?' as "%3F" when
1193         linking to local files.  Given up on the attempt, as it breaks
1194         local browsing.
1195
1196 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
1197
1198         * main.c (private_initialize): Removed.
1199         (main): Don't call private_initialize.
1200
1201         * http.c: Call lookup_host.
1202
1203         * host.c (host_init): Removed.
1204         (add_host_to_cache): Initialize host_name_address_map here, on
1205         demand.
1206         (ngethostbyname): Commented out.
1207
1208         * connect.c (make_connection): Remove dead code; use lookup_host.
1209
1210         * host.c (store_hostaddress): Renamed to lookup_host and reversed
1211         the args.
1212         Removed host_address_name_map and host_slave_master_map.
1213
1214 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
1215
1216         * progress.c (dot_create): Align the "[ skipping ... ]" string
1217         with the dots.
1218
1219         * retr.c (rate): Split into two functions: calc_rate and
1220         retr_rate.
1221
1222         * progress.c (create_image): Draw a dummy progress bar even when
1223         total size is unknown.
1224         (display_image): Place the text cursor at the end of the "image".
1225
1226 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
1227
1228         * url.c (reencode_string): Use unsigned char, not char --
1229         otherwise the hex digits come out wrong for 8-bit chars such as
1230         nbsp.
1231         (lowercase_str): New function.
1232         (url_parse): Canonicalize u->url if needed.
1233         (get_urls_file): Parse each URL, and return only the valid ones.
1234         (free_urlpos): Call url_free.
1235         (mkstruct): Add :port if the port is non-standard.
1236         (mkstruct): Append the query string to the file name, if any.
1237         (urlpath_length): Use strpbrk_or_eos.
1238         (uri_merge_1): Handle the cases where LINK is an empty string,
1239         where LINK consists only of query, and where LINK consists only of
1240         fragment.
1241         (convert_links): Count and report both kinds of conversion.
1242         (downloaded_file): Use a hash table, not a list.
1243         (downloaded_files_free): Free the hash table.
1244
1245         * retr.c (retrieve_from_file): Ditto.
1246
1247         * main.c (main): Call either retrieve_url or retrieve_tree
1248         for each URL, not both.
1249
1250         * retr.c (register_all_redirections): New function.
1251         (register_redirections_mapper): Ditto.
1252         (retrieve_url): Register the redirections.
1253         (retrieve_url): Make the string "Error parsing proxy ..." 
1254         translatable.
1255
1256         * res.c (add_path): Strip leading slash from robots.txt paths so
1257         that the path representations are "compatible".
1258         (free_specs): Free each individual path, too.
1259         (res_cleanup): New function.
1260         (cleanup_hash_table_mapper): Ditto.
1261
1262         * recur.c (url_queue_new): New function.
1263         (url_queue_delete): Ditto.
1264         (url_enqueue): Ditto.
1265         (url_dequeue): Ditto.
1266         (retrieve_tree): New function, replacement for recursive_retrieve.
1267         (descend_url_p): New function.
1268         (register_redirection): New function.
1269
1270         * progress.c (create_image): Cosmetic changes.
1271
1272         * init.c (cleanup): Do all those complex cleanups only if
1273         DEBUG_MALLOC is defined.
1274
1275         * main.c: Removed --simple-check and the corresponding
1276         simple_host_check in init.c.
1277
1278         * html-url.c (handle_link): Parse the URL here, and propagate the
1279         parsed URL to the caller, who would otherwise have to parse it
1280         again.
1281
1282         * host.c (xstrdup_lower): Moved to utils.c.
1283         (realhost): Removed.
1284         (same_host): Ditto.
1285
1286 2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
1287
1288         * utils.c (path_simplify): Preserver the (non-)existence of
1289         leading slash.  Return non-zero if changes were made.
1290
1291 2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
1292
1293         * progress.c (bar_update): Don't modify bp->total_length if it is
1294         zero.
1295
1296 2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
1297
1298         * retr.c (retrieve_url): When the redirection URL doesn't parse,
1299         print the correct error message rather than "UNKNOWN".
1300
1301 2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
1302
1303         * progress.c (bar_finish): If the timer didn't record any time
1304         since the download beginning, fake 1ms.
1305
1306 2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
1307
1308         * recur.c (recursive_retrieve): Fix typo.
1309
1310 2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
1311
1312         * progress.c (create_image): Don't translate "%ld ".
1313
1314 2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
1315
1316         * progress.c (bar_set_params): Allow the user to force the use of
1317         the bar.
1318
1319 2001-11-23  Lemble Gregory  <gregory.lemble@st.com>
1320
1321         * gen_sslfunc.c (ssl_init_prng): New function; seed the SSL RNG.
1322
1323 2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
1324
1325         * progress.c: Renamed dp_* functions to dot_* for greater clarity
1326         and consistency with bar_*.
1327         (print_download_speed): Get rid of the unneeded '@' character.
1328         (create_image): Fix download rate geometry.
1329
1330         * progress.c (print_elapsed): Remove spurious space.
1331         (print_elapsed): Renamed to print_download_speed, since that's
1332         what it does.
1333
1334 2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
1335
1336         * progress.c (bar_update): If the downloaded amount becomes larger
1337         than the expected amount, adjust the expected amount accordingly.
1338
1339 2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
1340
1341         * utils.c (determine_screen_width): New function.
1342
1343         * main.c (main): New option `--progress=TYPE'.
1344         (main): Implement compatibility with the old option `--dot-style'.
1345
1346         * init.c: Removed cmd_spec_dotstyle -- that logic is now in
1347         dp_set_params.
1348         (cmd_spec_progress): New function.
1349
1350         * retr.c (get_contents): Use the progress_* functions instead of
1351         the old show_progress().
1352         (show_progress): Removed.
1353         (rate): Print "xxxx.xx K/s" instead of "KB/s".  Ditto for MB/s,
1354         etc.
1355
1356         * progress.c (set_progress_implementation): New function.
1357         (valid_progress_implementation_p): Ditto.
1358         (progress_create): Ditto.
1359         (progress_update): Ditto.
1360         (progress_finish): Ditto.
1361         (dp_create): Ditto.
1362         (dp_update): Ditto.
1363         (dp_finish): Ditto.
1364         (dp_set_params): Ditto.
1365         (print_elapsed): Ditto.
1366
1367 2001-11-22  Hrvoje Niksic  <hniksic@arsdigita.com>
1368
1369         * retr.c (show_progress): Use it.
1370
1371         * log.c (log_set_flush): New function.
1372
1373 2001-11-22  Hrvoje Niksic  <hniksic@arsdigita.com>
1374
1375         * utils.c (path_simplify): Don't remove trailing slashes.
1376
1377         * ftp.c (ftp_get_listing): Use it.
1378
1379         * utils.c (file_merge): New function.
1380
1381         * url.c (opt_url): Removed.
1382
1383         * recur.c (recursive_retrieve): Inline "opt_url" logic.
1384
1385         * main.c (main): Use xfree(), not free().
1386
1387         * url.c (rewrite_url_maybe): Renamed to rewrite_shorthand_url.
1388
1389         * ftp.c (ccon): Move `ccon' typedef here, since it's only used
1390         internally.
1391
1392         * config.h.in: Include a stub for HAVE_STRPBRK.
1393
1394         * cmpt.c (strpbrk): Include a replacement for systems without
1395         strpbrk().
1396
1397         * ftp.c: Use url_set_dir and url_set_file when modifying the URL.
1398
1399         * url.c (url_set_dir): New function.
1400         (url_set_file): Ditto.
1401
1402         * ftp-basic.c (ftp_process_type): Process FTP type here; the URL
1403         parser makes the URL "params" available, so we can do that in this
1404         function.
1405
1406         * retr.c: Ditto.
1407
1408         * ftp.c: Ditto; pass the local file information in `ccon'.
1409
1410         * http.c: Get rid of the ugly kludge that had URL being replaced
1411         with the proxy URL when proxy retrieval was requested.  Use a
1412         separate parameter to http_loop and gethttp for the proxy URL.
1413
1414         * http.c: Changed to reflect the fact that local file, proxy, and
1415         referer information are no longer stored in struct url.  The local
1416         file information is passed in `struct hstat' now.
1417
1418         * url.c: Reworked URL parsing to be more regular.  Reencode the
1419         URL using reencode_string.
1420         Removed non-URL-related information from struct url.  This
1421         includes fields `proxy', `local', and `referer'.
1422
1423 2001-11-22  Jochen Hein  <jochen@jochen.org>
1424
1425         * main.c (main): Split the copyright notice for easier
1426         translation.
1427
1428 2001-08-21  Dave Turner <dct25@hermes.cam.ac.uk>
1429
1430         * ftp-basic.c (ftp_size): New function to send non-standard SIZE
1431           command to server to request file size.
1432         * ftp.h (ftp_size): Export it.
1433         * ftp.c (getftp): Use new ftp_size function if restoring
1434           transfer of a file with unknown size.
1435
1436 2001-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
1437
1438         * url.c (parseurl): Don't depend on the now-obsolete TYPE.
1439
1440 2001-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
1441
1442         * url.c (getproxy): Handle URL shorthands.
1443
1444 2001-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
1445
1446         * main.c: Remove --wait / --waitretry backwards compatibility
1447         code.
1448         
1449 2001-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
1450
1451         * main.c (main): Use it.
1452
1453         * url.c (rewrite_url_maybe): New function.
1454
1455 2001-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
1456
1457         * url.c: Clean up handling of URL schemes.
1458
1459 2001-05-13  Hrvoje Niksic  <hniksic@arsdigita.com>
1460
1461         * url.c: Get rid of `protostrings'.
1462         (skip_proto): Don't use protostrings.
1463         (has_proto): Ditto.
1464
1465 2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
1466
1467         * Makefile.in: Conditionally compile getopt.o.
1468
1469 2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
1470
1471         * md5.h: Renamed to gnu-md5.h.
1472
1473         * md5.c: Renamed to gnu-md5.c.
1474
1475         * http.c: Ditto.
1476
1477         * ftp-opie.c: Use the new macros.
1478
1479         * sysdep.h: Define md5-related macros.
1480
1481         * config.h.in: Define HAVE_SOLARIS_MD5 or HAVE_BUILTIN_MD5
1482         depending on which md5 implementation is used.
1483
1484 2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
1485
1486         * res.c (res_register_specs): Initialize OLD and HP_OLD to appease
1487         the compiler.
1488
1489 2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
1490
1491         * http.c (gethttp): Print the whole response line when printing
1492         headers is requested.
1493
1494 2001-05-12  Hrvoje Niksic  <hniksic@arsdigita.com>
1495
1496         * res.c: New file.  Implement all RES-related code here.
1497
1498 2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
1499
1500         * version.c: Wget 1.7.1 is released.
1501
1502 2001-11-16  Hrvoje Niksic  <hniksic@arsdigita.com>
1503
1504         * headers.c (header_extract_number): Ignore trailing whitespace.
1505
1506 2001-08-24  Ian Abbott  <abbotti@mev.co.uk>
1507
1508         * html-url.c (collect_tags_mapper): Fix bug converting links
1509         with -k option for tags with multiple link attributes by
1510         handling links in the order they appear.
1511
1512 2001-08-15  Ian Abbott  <abbotti@mev.co.uk>
1513
1514         * ftp.c (ftp_loop_internal): Avoid a potential buffer overflow in
1515           the call to the 'rate' function by moving it past the error
1516           checking for the 'getftp' function return value.
1517
1518 2001-11-16  Hrvoje Niksic  <hniksic@arsdigita.com>
1519
1520         * html-parse.c (advance_declaration): Use 0x22 instead of '"' or
1521         '\"'.  Different compilers' assert macros are broken in different
1522         ways.
1523
1524 2001-09-29  Christian Fraenkel  <c.fraenkel@gmx.net>
1525
1526         * http.c (gethttp): print debug output for errors occuring during
1527         the ssl handshake.
1528
1529 2001-11-16  Chris Seawood  <cls@seawood.org>
1530
1531         * init.c: Ditto.
1532
1533         * host.c: Ditto.
1534
1535         * connect.c: Ditto.
1536
1537         * sysdep.h: Support compilation under BEOS.
1538
1539 2001-06-08  Edward J. Sabol  <sabol@alderaan.gsfc.nasa.gov>
1540
1541         * url.c (url_equal): Fix a memory leak when parseurl returns an
1542         error on the second URL. Also, since url_equal is not used at the
1543         moment, do not compile it.
1544
1545         * url.h: Ditto for the prototype of url_equal.
1546
1547 2001-11-16  Hrvoje Niksic  <hniksic@arsdigita.com>
1548
1549         * html-parse.c (map_html_tags): Support XML-style empty tags.
1550
1551 2001-06-26  Hrvoje Niksic  <hniksic@arsdigita.com>
1552
1553         * wget.h (DO_REALLOC_FROM_ALLOCA): Check for do_realloc_newsize in
1554         loop condition because we're no longer setting SIZEVAR here.
1555
1556 2001-06-26  Hrvoje Niksic  <hniksic@arsdigita.com>
1557
1558         * wget.h (DO_REALLOC_FROM_ALLOCA): Set SIZEVAR after the memcpy()
1559         call because it needs the old value.
1560
1561 2001-06-18  Hrvoje Niksic  <hniksic@arsdigita.com>
1562
1563         * cookies.c (ATTR_NAME_CHAR): Allow almost any character to be in
1564         an attribute name.
1565
1566 2001-06-18  Hrvoje Niksic  <hniksic@arsdigita.com>
1567
1568         * url.c (url_filename): Make sure that slashes that sneak in to
1569         u->file via query string get protected.
1570         (file_name_protect_query_string): New function.
1571
1572 2001-06-14  Hrvoje Niksic  <hniksic@arsdigita.com>
1573
1574         * recur.c (recursive_retrieve): Also check undesirable_urls with
1575         canonicalized URL.
1576
1577 2001-06-14  Hrvoje Niksic  <hniksic@arsdigita.com>
1578
1579         * http.c (gethttp): Search `.netrc' with real host, not the proxy
1580         one.
1581
1582 2001-06-14  Hrvoje Niksic  <hniksic@arsdigita.com>
1583
1584         * sysdep.h (MAP_FAILED): Provide MAP_FAILED for systems that don't
1585         define it.
1586
1587 2001-06-09  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
1588
1589         * ftp.h: Provide correct prototype for ftp_parse_ls().
1590
1591 2001-06-04  Hrvoje Niksic  <hniksic@arsdigita.com>
1592
1593         * version.c: Wget 1.7 is released.
1594
1595 2001-06-03  Karl Eichwalder  <ke@suse.de>
1596
1597         * ftp-ls.c (ftp_parse_ls): Fix typo.
1598
1599 2001-05-27  Hrvoje Niksic  <hniksic@arsdigita.com>
1600
1601         * all: Update copyright information.
1602
1603 2001-05-26  Hrvoje Niksic  <hniksic@arsdigita.com>
1604
1605         * http.c (gethttp): Indicate that the continued download failed
1606         for *this* file.
1607
1608 2001-05-26  Hrvoje Niksic  <hniksic@arsdigita.com>
1609
1610         * version.c: Wget 1.7-pre1 is released.
1611
1612 2001-05-26  Hrvoje Niksic  <hniksic@arsdigita.com>
1613
1614         * version.c: Updated version to 1.7-pre1.
1615
1616 2001-05-14  Hrvoje Niksic  <hniksic@arsdigita.com>
1617
1618         * gen_sslfunc.c: Don't include <sys/time.h> directly.
1619
1620 2001-05-14  Hrvoje Niksic  <hniksic@arsdigita.com>
1621
1622         * http.c (gethttp): Use real URL data for cookies, not the proxy
1623         stuff.
1624
1625 2001-05-12  Hrvoje Niksic  <hniksic@arsdigita.com>
1626
1627         * main.c (print_help): Document `--no-http-keep-alive'.
1628
1629         * utils.c (numdigit): Handle negative numbers *correctly*.
1630
1631         * hash.c (make_nocase_string_hash_table): Use term "nocase" rather
1632         than the confusing "unsigned".
1633
1634         * utils.c (string_set_contains): Renamed from string_set_exists.
1635
1636         * hash.c (hash_table_contains): Renamed from hash_table_exists.
1637
1638         * cookies.c: Move case-insensitive hash tables to hash.c.
1639
1640 2001-05-09  Hrvoje Niksic  <hniksic@arsdigita.com>
1641
1642         * http.c (gethttp): Before concluding that the file is already
1643         fully retrieved, make sure that the file existed and `Range' was
1644         actually requested.
1645
1646 2001-05-09  Hrvoje Niksic  <hniksic@arsdigita.com>
1647
1648         * cookies.c (eliminate_dups): New function.
1649         (build_cookies_request): Use it.
1650         (build_cookies_request): Set chain_store_size after reallocating
1651         all_chains.
1652         (check_domain_match): Annotated for easier future debugging.
1653         (store_cookie): In the debug message, print whether the cookie is
1654         permanent.
1655
1656 2001-05-08  Hrvoje Niksic  <hniksic@arsdigita.com>
1657
1658         * http.c (http_loop): Reset no_truncate before deciding whether to
1659         set it.
1660         (gethttp): Further clarify "-c conflicts with existing file" error
1661         message, based on input from Herold Heiko.
1662
1663 2001-05-07  Hrvoje Niksic  <hniksic@arsdigita.com>
1664
1665         * http.c (http_loop): If restval is set, set no_truncate to 1
1666         unconditionally.
1667
1668 2001-05-02  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
1669
1670         * ftp-ls.c (ftp_parse_winnt_ls): Assure months are being correctly
1671         converted. Pointed out by <Stefan.Weil@de.heidelberg.com>.
1672         (ftp_parse_vms_ls): Ditto.
1673
1674 2001-04-30  Hrvoje Niksic  <hniksic@arsdigita.com>
1675
1676         * init.c (cmd_address): Zero SIN before using it; apparently
1677         needed on *BSD.
1678
1679 2001-04-29  Hrvoje Niksic  <hniksic@arsdigita.com>
1680
1681         * ftp.c (ftp_loop_internal): Don't set NO_TRUNCATE if the file is
1682         empty.
1683
1684 2001-04-29  Hrvoje Niksic  <hniksic@arsdigita.com>
1685
1686         * main.c (main): Make `--cookies' respect its argument.
1687
1688 2001-04-28  Hrvoje Niksic  <hniksic@arsdigita.com>
1689
1690         * main.c (main): Removed undocumented option `--email-address'.
1691
1692         * netrc.c: Use the latest read_whole_line.
1693
1694         * init.c (defaults): Set opt.ftp_pass to "-wget@".
1695
1696         * mswindows.c (pwd_cuserid): Ditto.
1697
1698         * utils.c (pwd_cuserid): Removed.
1699
1700         * host.c (ftp_getaddress): Removed.
1701
1702 2001-04-28  Hrvoje Niksic  <hniksic@arsdigita.com>
1703
1704         (http_loop): Allocate space for filename_plus_orig_suffix with
1705         alloca; this is more efficient and removes the need to free it
1706         before each and every return.
1707
1708 2001-04-28  Hrvoje Niksic  <hniksic@arsdigita.com>
1709
1710         * http.c (gethttp): Return RETRUNNEEDED when the retrieval is
1711         unneeded because the file is already there and fully downloaded,
1712         and -c is specified.
1713         (http_loop): Handle RETRUNNEEDED.
1714
1715         * wget.h (uerr_t): New value RETRUNNEEDED.
1716
1717         * http.c (http_loop): Set no_truncate for files that both exist
1718         and are non-empty.
1719         (gethttp): Consider the download finished when restval >= contlen,
1720         not only when restval==contlen.
1721         (gethttp): Handle redirection before giving up due to -c.
1722         (gethttp): Clarify error message which explains that -c will not
1723         truncate the file.
1724         (gethttp): When returning CONTNOTSUPPORTED, don't forget to free
1725         the stuff that needs freeing and release the socket.
1726
1727 2001-04-27  Hrvoje Niksic  <hniksic@arsdigita.com>
1728
1729         * main.c (print_help): Wget booleans accept "off", not "no".
1730
1731 2001-04-27  Hrvoje Niksic  <hniksic@arsdigita.com>
1732
1733         * http.c (http_loop): If allow_cache is zero, always disable
1734         caching, not only when retrieving through proxy.
1735
1736         * init.c: Ditto.
1737
1738         * options.h (struct options): Rename proxy_cache to allow_cache.
1739
1740 2001-04-27  Hrvoje Niksic  <hniksic@arsdigita.com>
1741
1742         * http.c (mktime_from_utc): Improve documentation.
1743         (http_atotm): Put format strings into a separate array.
1744
1745 2001-04-27  Hrvoje Niksic  <hniksic@arsdigita.com>
1746
1747         * safe-ctype.h: Instead of throwing #error when isalpha is
1748         defined, redefine it to something that will throw a compile-time
1749         error if actually *used*.  Do the same for the rest of the
1750         standard C macros.
1751
1752 2001-04-26  Hrvoje Niksic  <hniksic@arsdigita.com>
1753
1754         * url.c (getproxy): Ignore empty proxy vars.
1755
1756 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
1757
1758         * http.c (http_loop): Would load cookies every time.
1759
1760         * cookies.c (load_cookies): Handle cookies whose values contain
1761         embedded spaces.
1762
1763 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
1764
1765         * utils.c: Define each DIGITS_* in one line.
1766
1767 2001-04-25  Roger L. Beeman  <beeman@cisco.com>
1768
1769         * http.c (http_atotm): Initialize t.tm_isdst to 0.
1770         (mktime_from_utc): Prevent mktime() from having discontinuities at
1771         DST transition points.
1772
1773 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
1774
1775         * html-url.c (get_urls_html): Fix documentation.
1776
1777 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
1778
1779         * url.c (UNSAFE_CHAR): Reimplement using a static table.
1780         (url_init): Removed.
1781         (init_unsafe_char_table): Removed.
1782
1783 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
1784
1785         * snprintf.c (dopr): Replace ISDIGIT with '0' <= ch && ch <= '9'.
1786
1787 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
1788
1789         * utils.c: Document timer functions.
1790
1791         * retr.c (rate): Use it.
1792         (rate): Print in GB/s if transfer rate exceeds 1 GB/s.
1793
1794         * utils.c (wtimer_granularity): New function.
1795
1796 2001-04-24  Hrvoje Niksic  <hniksic@arsdigita.com>
1797
1798         * retr.c (show_progress): Ditto.
1799
1800         * ftp.c (getftp): Ditto.
1801
1802         * http.c (gethttp): Use new timer functions.
1803
1804         * utils.c (wtimer_allocate): New function.
1805         (wtimer_new): Ditto.
1806         (wtimer_delete): Ditto.
1807         (wtimer_reset): Ditto.
1808         (wtimer_elapsed): Ditto.
1809
1810 2001-04-24  Hrvoje Niksic  <hniksic@arsdigita.com>
1811
1812         * utils.c (long_to_string): New, faster version.  Favors smaller
1813         numbers; much of the calculation is now done at compile-time.
1814
1815 2001-04-24  Hrvoje Niksic  <hniksic@arsdigita.com>
1816
1817         * utils.c (numdigit): Handle negative numbers.
1818
1819 2001-04-23  Hrvoje Niksic  <hniksic@arsdigita.com>
1820
1821         * retr.c (show_progress): Print the download rate even when the
1822         percentages are not available.
1823
1824 2001-04-21  Hrvoje Niksic  <hniksic@arsdigita.com>
1825
1826         * ftp.c (getftp): Adjust expected_bytes if the length is
1827         authoritative.
1828
1829 2001-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
1830
1831         * url.c: Don't declare `construct'.
1832
1833         * hash.c (grow_hash_table): Speed up rehashing; inline storing of
1834         mappings to new locations.
1835         (hash_table_new): Make resize_threshold a field in the hash table,
1836         so we don't have to recalculate it in each hash_table_put.
1837         (grow_hash_table): Update resize_threshold.
1838         (MAX): Remove unused macro.
1839         (prime_size): Made static.
1840
1841 2001-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
1842
1843         * retr.c (retrieve_url): Call uri_merge, not url_concat.
1844
1845         * html-url.c (collect_tags_mapper): Call uri_merge, not
1846         url_concat.
1847
1848         * url.c (mkstruct): Use encode_string instead of xstrdup followed
1849         by URL_CLEANSE.
1850         (path_simplify_with_kludge): Deleted.
1851         (contains_unsafe): Deleted.
1852         (construct): Renamed to uri_merge_1.
1853         (url_concat): Renamed to uri_merge.
1854
1855 2001-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
1856
1857         * url.c (str_url): Use encode_string instead of the unnecessary
1858         CLEANDUP.
1859         (encode_string_maybe): New function, returns input string if no
1860         encoding is needed.
1861         (encode_string): Call encode_string_maybe to do the dirty work,
1862         xstrdup if no work needed.
1863
1864 2001-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
1865
1866         * wget.h (XDIGIT_TO_xchar): Define here.
1867
1868         * url.c (decode_string): Use new name.
1869         (encode_string): Ditto.
1870
1871         * http.c (XDIGIT_TO_xchar): Rename HEXD2asc to XDIGIT_TO_xchar.
1872         (dump_hash): Use new name.
1873
1874         * wget.h: Rename ASC2HEXD and HEXD2ASC to XCHAR_TO_XDIGIT and
1875         XDIGIT_TO_XCHAR respectively.
1876
1877 2001-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
1878
1879         * init.c: Include cookies.h.
1880
1881         * cookies.h: Declare cookies_cleanup.
1882
1883         * cookies.c (check_domain_match): Remove unused variable.
1884         (save_cookies): Remove extraneous argument from debug statement.
1885
1886         * host.c (same_host): Don't call skip_url.
1887
1888         * url.c (skip_url): Removed.  Removed its calls from various
1889         functions in url.c.
1890
1891 2001-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
1892
1893         * cookies.c (unsigned_string_hash): Use the new code in
1894         string_hash as reference.
1895
1896         * hash.c (hash_table_map): Allow deletion and change of the
1897         element processed by MAPFUN.
1898         (string_hash): Use the function from glib.
1899
1900 2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
1901
1902         * config.h.in: Include #undef stub.
1903
1904         * hash.c (hash_table_remove): Rewrite to actually clear deleted
1905         entries instead of just marking them as deleted.
1906
1907 2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
1908
1909         * hash.h: Declare hash_table_get_pair and hash_table_count.
1910
1911 2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
1912
1913         * cookies.c: Declare http_atotm.
1914
1915 2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
1916
1917         * ftp-ls.c (ftp_parse_unix_ls): Use octal constants for
1918         permissions.  A compiler that doesn't accept octal constants is
1919         seriously broken and shouldn't be used -- octal constants were
1920         present in K&R C!
1921
1922 2001-01-20  Karl Eichwalder  <ke@suse.de>
1923
1924         * Makefile.in: Provide and use DESTDIR according to the Coding
1925         Standards.
1926
1927 2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
1928
1929         * ftp-ls.c (ftp_parse_vms_ls): Make seconds optional in time
1930         specification.
1931
1932 2001-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
1933
1934         * url.c (parseurl): Don't strip trailing slash when u->dir is "/"
1935         because that strips the *leading* slash, thus forcing relative
1936         FTP retrieval.
1937
1938 2001-04-10  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
1939
1940         * ftp.c (getftp): Convert initial FTP directory from VMS to UNIX
1941         notation for VMS servers. 
1942         (ftp_retrieve_dirs): Do not prepend '/' to f->name when
1943         odir is an empty string.
1944
1945 2001-04-10  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
1946
1947         * ftp-ls.c (ftp_parse_winnt_ls): Made the fix for AM/PM more
1948         effective. Suggested by Edward J. Sabol.
1949
1950 2001-04-10  Hrvoje Niksic  <hniksic@arsdigita.com>
1951
1952         * cookies.c (build_cookies_request): Use and sort cookies from all
1953         matching domains.
1954         (build_cookies_request): Check for duplicates before generating
1955         the `Cookies' header.
1956
1957         * main.c (main): Don't load cookies here.
1958         (main): Make loadcookies and savecookies call the correct command.
1959
1960         * http.c (http_loop): Load cookies on-demand.
1961
1962 2001-04-09  Hrvoje Niksic  <hniksic@arsdigita.com>
1963
1964         * http.c (gethttp): Fix indentation of SSL ifdef.
1965
1966 2001-04-09  Hrvoje Niksic  <hniksic@arsdigita.com>
1967
1968         * ftp.c (ftp_retrieve_dirs): Don't forcibly prepend "/" to u->dir;
1969         that hack is no longer necessary.
1970         (getftp): Prepend initial directory to *non*-absolute u->dir's.
1971
1972 2001-04-09  Hrvoje Niksic  <hniksic@arsdigita.com>
1973
1974         * init.c (cmd_file): New function.
1975         (enable_tilde_expansion): New variable.
1976         (run_wgetrc): Use it.
1977         (cmd_file): Use it.
1978
1979 2001-04-08  Hrvoje Niksic  <hniksic@arsdigita.com>
1980
1981         * init.c: Include cookie-related options.
1982
1983         * main.c (main): Include cookie-specific options.
1984         (main): Load cookies before download is finished.
1985         (main): Save cookies when done.
1986
1987         * http.c (gethttp): Process the `Set-Cookie' header.
1988         (gethttp): Include cookies in the response.
1989
1990         * cookies.c: New file.
1991
1992 2001-04-08  Hrvoje Niksic  <hniksic@arsdigita.com>
1993
1994         * utils.c (datetime_str): New function.
1995
1996 2001-04-08  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
1997
1998         * ftp-ls.c (ftp_parse_winnt_ls): The AM/PM change did assume
1999         12:01PM == 00:01, which was obviously wrong. Taken care of this
2000         anomaly.
2001
2002         * ChangeLog: Removed an excess conflict marker. Reformatted the
2003         entry by Philipp Thomas from 2001-03-09.
2004
2005         * ftp-ls.c (ftp_parse_winnt_ls): Ensure that adjusted PM hours lay
2006         between 0 and 23. Elminate unused variable `sec'.
2007
2008 2001-04-08  Hrvoje Niksic  <hniksic@arsdigita.com>
2009
2010         * hash.c (hash_table_count): New function.
2011
2012 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
2013
2014         * utils.c (read_file): Cast MAP_FAILED to char *.  Enforced by
2015         Digital Unix cc.
2016
2017 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
2018
2019         * config.h.in: Oops, do the namespace tweaks only on systems we
2020         know about.
2021
2022 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
2023
2024         * hash.c: Include <string.h>.
2025
2026 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
2027
2028         * config.h.in: Define "compilation environment" options that work
2029         under Linux and Solaris.  To be reviewed on other OS'es.
2030
2031 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
2032
2033         * http.c (gethttp): Prepend literal newline with `\n\'.
2034
2035 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
2036
2037         * sysdep.h: Don't define VERY_LONG_FORMAT.
2038
2039         * utils.c (very_long_to_string): New function.
2040         (legible_very_long): Use it; don't use VERY_LONG_FORMAT.
2041
2042 2001-04-04  Christian Fraenkel  <christian.fraenkel@gmx.net>
2043
2044         * url.c (parse_uname): Would run past the end of the string if the
2045         username was present, but the URL did not contain a slash, e.g.
2046         http://foo:bar@myhost.
2047
2048 2001-04-03  KOJIMA Hajime  <kjm@rins.ryukoku.ac.jp>
2049
2050         * http.c (http_atotm): Use %A instead of %a to match full
2051         weekday.  (On most systems there is no difference.)
2052
2053 2001-04-03  Paul Bludov  <paul@ozero.net>
2054
2055         * mswindows.c (sleep): Use SleepEx() instead of Sleep().
2056         (ws_changetitle): Use alloca() instead of malloc() to avoid memory
2057         leak.
2058         (ws_mypath): Use GetModuleFileName instead of argv[0].
2059         (ws_startup): Use data.wVersion for comparison.
2060
2061 2001-04-02  Hrvoje Niksic  <hniksic@arsdigita.com>
2062
2063         * http.c (http_loop): Ditto.
2064
2065         * ftp.c (ftp_loop_internal): Made the check whether to continue
2066         retrieval `-O'-friendly.
2067
2068 2001-04-02  Hrvoje Niksic  <hniksic@arsdigita.com>
2069
2070         * netrc.c (parse_netrc): Don't trim the line endings explicitly;
2071         they will be handled as whitespace.
2072         (parse_netrc): Correctly handle lines that end with whitespace.
2073
2074 2001-04-02  Hrvoje Niksic  <hniksic@arsdigita.com>
2075
2076         * retr.c (retrieve_url): New variable global_download_count used
2077         to identify first retrieval.
2078
2079         * ftp.c (getftp): Ditto.
2080
2081         * http.c (gethttp): Rewind opt.dfp only on first retrieval.
2082
2083 2001-04-02  Hrvoje Niksic  <hniksic@arsdigita.com>
2084
2085         * init.c (cmd_address): Heap-allocate the address that gets stored
2086         to CLOSURE.  Old code would simply assign an address on the stack.
2087
2088 2001-04-01  Nicolas Lichtmaier <nick@debian.org>
2089
2090         * ftp.c (ftp_get_listing): Propagate error status.
2091         (ftp_retrieve_glob): Use it.
2092         (ftp_loop): Ditto.
2093
2094 2001-04-01  Nicolas Lichtmaier <nick@debian.org>
2095
2096         * main.c (main): Add -C to the string that is the third arg to
2097         getopt_long().
2098
2099 2001-04-01  Hrvoje Niksic  <hniksic@arsdigita.com>
2100
2101         * ftp.c (getftp): Don't start the download from scratch if `-c'
2102         was specified, but the file is already fully downloaded.
2103
2104         * http.c (gethttp): Don't truncate a pre-existing file if `-c' was
2105         specified and the server doesn't support continued download.
2106         (gethttp): Don't start the download from scratch if `-c' was
2107         specified, but the file is already fully downloaded.
2108
2109 2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
2110
2111         (recursive_retrieve): Don't clear the hash tables at this point at
2112         all; it interferes with the normal operation of register_download.
2113
2114 2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
2115
2116         * recur.c (recursive_retrieve): Clear the hash tables only when
2117         they are defined.
2118
2119 2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
2120
2121         * http.c (gethttp): Make sure the socket is closed with
2122         CLOSE_INVALIDATE before we have drained the body.
2123
2124 2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
2125
2126         * retr.c (retrieve_url): Call register_download() for downloaded
2127         files and register_html() for downloaded HTML files.
2128
2129         * recur.c (register_download): New function; register here that a
2130         file has been downloaded, rather than in recursive_retrieve().
2131         (register_html): New function; enqueue the location of HTML files
2132         here rather than in recursive_retrieve().
2133
2134 2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
2135
2136         * main.c (print_help): Use multiple fputs instead of a single ugly
2137         printf().
2138         (main): Consistently assign numbers >128 to options without a
2139         corresponding character.
2140
2141 2001-03-09  Philipp Thomas  <pthomas@suse.de>
2142
2143         * safe-ctype.h: New file. Locale independent ctype.h replacement
2144         taken from libiberty.
2145
2146         * safe-ctype.c: New file. Tables for above.
2147
2148         * Makefile.in: Add safe-ctype$o to OBJS.  Add dependencies for
2149         safe-ctype$o.
2150
2151         * cmpt.c: Remove include of ctype.h. Use ISSPACE instead of
2152         isspace.
2153
2154         * ftp-basic.c: Don't include ctype.h.
2155
2156         * ftp-ls.c: Likewise.
2157
2158         * ftp.c: Likewise.
2159
2160         * headers.c: Likewise.
2161
2162         * host.c: Likewise.
2163
2164         * html-parse.c: Likewise.
2165
2166         * html-url.c: Likewise.
2167
2168         * http.c: Likewise.
2169
2170         * init.c: Likewise.
2171
2172         * main.c: Likewise. Set LC_CTYPE along with LC_MESSAGES.
2173
2174         * netrc.c: Likewise.
2175
2176         * recur.c: Likewise.
2177
2178         * retr.c: Likewise.
2179
2180         * snprintf.c: Replace ctype.h with safe-ctype.h. Use ISDIGIT
2181         instead of isdigit.
2182
2183         * sysdep.h: Remove defines of ctype macros as they aren't needed
2184         for safe-ctype-h.
2185
2186         * url.c: Don't include ctype.h.
2187
2188         * utils.c: Likewise.
2189
2190         * wget.h: Include safe-ctype.h.
2191
2192 2001-03-27  Dan Harkless  <wget@harkless.org>
2193
2194         * Makefile.in: Moved top_builddir out of "User configuration
2195         section" of top Makefile and analogous spot in this one.
2196
2197 2001-03-17  Dan Harkless  <wget@harkless.org>
2198
2199         * Makefile.in: Include @SSL_INCLUDES@ substition in INCLUDES.
2200         Define top_builddir.  Link wget with libtool so the user doesn't
2201         have to supply a bunch of custom environment variables to 
2202         correctly link with the OpenSSL shared libraries.
2203
2204 2001-03-06  Hack Kampbjorn  <hack@hackdata.com>
2205
2206         * http.c (gethttp): skip :port in host header if it is the
2207         DEFAULT_HTTPS_PORT when using SSL.
2208
2209         * url.c: move the #define of DEFAULT_HTTP_PORT, DEFAULT_FTP_PORT
2210         and DEFAULT_HTTPS_PORT to the header file so it can be use in the
2211         rest of the code. 
2212         * url.h: Ditto
2213
2214 2001-03-01  Jonas Jensen  <bones@huleboer.dk>
2215
2216         * retr.c (show_progress): Correctly calculate the number of bytes
2217         in the first line of the download that have been actually
2218         downloaded in this run.
2219
2220 2001-02-23  Dan Harkless  <wget@harkless.org>
2221
2222         * main.c (print_help): --help documentation for -N said it would
2223         re-download files if they had the _same_ timestamp on server.
2224         (print_help): -nr belongs in "FTP options" section of --help
2225         output, not "Recursive retrieval" section.  Alphabetized FTP
2226         options by long option name.
2227
2228 2001-02-16  Dan Harkless  <wget@harkless.org>
2229
2230         * init.c (commands): Hack Kampbjørn <hack@hackdata.com> discovered
2231         that "httpsproxy" had been inserted into commands[] out of
2232         alphabetical order, causing "BUG: unknown command `httpuser'".
2233
2234 2001-02-13  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
2235
2236         * ftp-ls.c (ftp_parse_ls): Added support of ST_MACOS (Unix-like
2237         listing without correct permissons).
2238
2239         * ftp.h (stype): Added ST_MACOS to identify the NetPresenz MacOS
2240         FTP server. 
2241
2242         * ftp.c (ftp_retrieve_list): New mirroring logic: A remote file
2243         shall be donwloaded only when it's newer than the local copy or
2244         when it has the same timeestamp but its size is different. ST_VMS
2245         and ST_MACOS as special cases that lie about file size. 
2246
2247         * ftp-ls.c (ftp_parse_ls): Support for ST_MACOS.
2248
2249         * Makefile.in: Removed dependency on ftpparse library due to unclear
2250         copyright issues and absence of any feedback to our queries. 
2251
2252         * ftp-ls.c: Removed dependency on ftpparse library due to unclear
2253         copyright issues and absence of any feedback to our queries.   
2254         (ftp_parse_ls): Added a warning message when remote server system
2255         does not seem to be suported by wget. 
2256         (ftp_parse_vms_ls): New function for parsing VMS ftp
2257         server listing output.
2258         (clean_line): New function responsible for removing
2259         end-of-line characters from FTP listing texts.
2260
2261         * ftp.c (getftp): Global variables pwd and host_type are now
2262         member of the ccon structure under names ccon.id and ccon.rs. 
2263
2264         * ftp.h (struct ccon): Added formed global variables from ftp.c,
2265         enum stype rs (remote system identification) and char *id (initial
2266         working directory), as suggested by Hrvoje.
2267
2268         * url.c (parse_uname): Added support for passwords containing '@'
2269         characters.
2270         (skip_uname): Ditto.
2271
2272 2001-02-11  Hrvoje Niksic  <hniksic@arsdigita.com>
2273
2274         * ftp.c (ftp_loop): Reset con.
2275
2276 2001-01-06  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
2277
2278         * url.c (parse_uname): Added support for passwords containing '@'
2279         characters.
2280         (skip_uname): Ditto.
2281
2282 2001-02-11  Hack Kampbjørn  <hack@hackdata.com>
2283
2284         * url.c (parseurl): Debug-print u->ftp_type.
2285
2286 2001-02-11  Hrvoje Niksic  <hniksic@arsdigita.com>
2287
2288         * ftp.c (ftp_loop_internal): Disable padding.
2289         (getftp): Ditto.
2290
2291         * http.c (http_loop): Disable padding.
2292
2293         * retr.c (show_progress): Use it to enable padding.
2294
2295         * retr.c (rate): Optional parameter PAD for padding the rate.
2296
2297 2001-02-10  Hrvoje Niksic  <hniksic@arsdigita.com>
2298
2299         * retr.c (show_progress): Make sure that the last output line
2300         includes progress.
2301
2302 2001-02-10  Jonas Jensen  <bones@huleboer.dk>
2303
2304         * retr.c (show_progress): Print the download rate along with the
2305         percentages.
2306         Along with Anders Thorsby <anders@thorsby.dk>.
2307
2308 2001-02-10  Tim Mooney  <mooney@dogbert.cc.ndsu.NoDak.edu>
2309
2310         * ftp.h: Rename enums `command' to `wget_ftp_command' and
2311         `fstatus' to `wget_ftp_status' because old names clash with Tru64
2312         net/if.h.
2313
2314 2001-02-08  Christian Fraenkel <christian.fraenkel@gmx.net>
2315
2316         * gen_sslfunc.c: verify_callback is now static
2317
2318         * gen_sslfunc.c (init_ssl): load certificate if specified
2319
2320         * gen_sslfunc.c (ssl_printerr): new function
2321
2322         * init.c: added new --sslcertfile and --sslcertkey switches
2323
2324         * main.c: ditto
2325
2326         * options.h: ditto
2327
2328         * http.c (gethttp): abort when init_ssl fails
2329
2330 2001-01-23  Herold Heiko  <Heiko.Herold@previnet.it>
2331
2332         * mswindows.h: Include <malloc.h>; it's needed for alloca().
2333
2334 2001-01-10  Dan Harkless  <wget@harkless.org>
2335
2336         * url.c (str_url): Clarified this function's comment header after
2337         Hrvoje answered my question on the list as to when hide != 1.
2338         Also Hrvoje pointed out I need to use xstrdup() on the string literal.
2339
2340 2001-01-06  Hrvoje Niksic  <hniksic@arsdigita.com>
2341
2342         * connect.c (bindport): Declare addrlen as int.  Diagnosed by
2343         Drazen Kacar <dave@arsdigita.com>.
2344         (conaddr): Ditto.
2345
2346 2001-01-09  Dan Harkless  <wget@harkless.org>
2347
2348         * html-url.c: A bunch of fixup of `--page-requisites'-related
2349         comments to reflect Hrvoje's changes to my code when transplanting
2350         it into this new file, to fix spelling mistakes, to clarify, etc.
2351
2352         * url.c (write_backup_file): Clarified a comment.
2353         (str_url): Henrik van Ginhoven pointed out on the list that we
2354         shouldn't give away the number of characters in the password by
2355         replacing each character with a 'x'.  Use "<password>" instead.
2356
2357         * ftp.c (ftp_retrieve_dirs): The bug where recursion into FTP
2358         directories didn't work if logging in put you in a directory other
2359         than "/" is fixed now.  Removed the comment here warning of the bug.
2360
2361         * main.c (print_help): --continue's description was misleading.
2362         We don't "restart", we "resume".  Also, better to say
2363         "partially-downloaded file" rather than just "existing file".
2364
2365 2001-01-06  Dan Harkless  <wget@harkless.org>
2366
2367         * ChangeLog: The '[Not in 1.6 branch.]'s were decided not to be
2368         the best way to go about my aim.  Removed them in favor of:
2369
2370         * ChangeLog-branches/1.6_branch.ChangeLog: New file.
2371
2372 2001-01-04  Hrvoje Niksic  <hniksic@arsdigita.com>
2373
2374         * url.c (replace_attr): New function, to be used by both
2375         TO_COMPLETE and TO_RELATIVE case in convert_links.
2376         (find_fragment): New function for finding URL fragments.
2377         (replace_attr): Better handle the case where the original string
2378         is not quoted.  Use find_fragment.
2379         (convert_links): Use replace_attr().
2380
2381 2000-12-31  Dan Harkless  <wget@harkless.org>
2382
2383         * ChangeLog: Since this flat file doesn't have multiple branches,
2384         looking at the dates would make you think that things went into
2385         1.6 that actually just went into the 1.7-dev branch.  Added "[Not
2386         in 1.6 branch.]" where appropriate to clarify.
2387         
2388 2000-12-30  Dan Harkless  <wget@harkless.org>
2389
2390         * ftp.c, http.c:  Applied Hack Kampbjørn <hack@hackdata.com>'s
2391         patch to deal with h_errno not being defined in netdb.h under Cygwin.
2392
2393 2000-12-18  Csaba Raduly  <csaba.raduly@sophos.com>
2394
2395         * sysdep.h: Include <malloc.h> and <io.h> under Watcom.
2396
2397 2000-12-17  Igor Khristophorov  <igor@atdot.org>
2398
2399         * http.c (check_end): Fix test for '+' or '-'.
2400
2401 2000-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
2402
2403         * url.c (parseurl): Rename inner loop var from i to ind to avoid
2404         clash with the function top-level-declared variable i.
2405         (str_url): Likewise, rename inner-loop i to j.
2406
2407         * recur.c (parse_robots): Don't declare LEN at top of function.
2408         (robots_match): Renamed parameter FORBIDDEN to avoid hiding of
2409         global variable.
2410
2411         * main.c (main): Change erroneous use of bitwise and to logical.
2412
2413         * init.c (cmd_address): Don't heap-allocate `sin'; it can be on
2414         the stack because it will be copied to closure.
2415
2416         Thanks to Csaba Raduly's run of PC-LINT over the sources.
2417
2418 2000-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
2419
2420         * http.c (basic_authentication_encode): Use xmalloc(), not
2421         malloc().  Thanks to Csaba Raduly's run of PC-LINT over the
2422         sources.
2423
2424 2000-12-17  Csaba Raduly  <csaba.raduly@sophos.com>
2425
2426         * sysdep.h: Test for __EMX__ rather than for EMXOS2 for OS/2
2427         compilation.
2428
2429 2000-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
2430
2431         * mswindows.c: Include <errno.h>.
2432
2433         * gen_sslfunc.c: Include <errno.h>.
2434
2435         * ftp-basic.c: Don't attempt to declare errno or h_errno because
2436         they're not used.
2437
2438         * main.c: Include <errno.h> because errno is used.
2439
2440         * ftp.c: Ditto.
2441
2442         * http.c: Include <netdb.h> for h_errno.
2443
2444 2000-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
2445
2446         * html-parse.c (advance_declaration): MSVC assert() chokes on
2447         '\"'.  Use '"' instead.
2448
2449 2000-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
2450
2451         * utils.c (xfree_real): Removed.
2452         (xfree_debug): Just call free().
2453
2454         * wget.h (xfree): Make it an alias for free.
2455
2456 2000-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
2457
2458         * http.c (http_loop): Furthermore, touch output_document only if
2459         it is known to be an existing regular file.
2460
2461 2000-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
2462
2463         * ftp.c (ftp_retrieve_list): Ditto.
2464
2465         * http.c (http_loop): Touch output_document if that is used for
2466         output.
2467
2468 2000-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
2469
2470         * http.c: Include gen_sslfunc.h after including Wget's headers.
2471         (persistent_available_p): Needed coma before `int ssl'.
2472
2473 2000-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
2474
2475         * ftp.c (ftp_loop_internal): Ditto.
2476
2477         * http.c (http_loop): Use it.
2478
2479         * retr.c (sleep_between_retrievals): New function that handles the
2480         logic of opt.wait and opt.waitretry.
2481
2482 2000-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
2483
2484         * rbuf.h: Implement only a single version of RBUF_READCHAR, using
2485         rbuf_read_bufferful when the buffer is depleted.
2486
2487         * rbuf.c (rbuf_read_bufferful): New function.
2488
2489 2000-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
2490
2491         * gen_sslfunc.h: Use ansi2knr style function declarations.
2492
2493         * gen_sslfunc.c: Reformat according to the GNU coding standards.
2494         More should be done.
2495
2496         * http.c (persistent_available_p): Place the cheap SSL test nearer
2497         the top of the function.
2498         (CLOSE_FINISH, CLOSE_INVALIDATE): Define only one version of each.
2499
2500 2000-12-05  Hrvoje Niksic  <hniksic@arsdigita.com>
2501
2502         * url.c (init_unsafe_char_table): Reinstate space as an unsafe
2503         char.
2504
2505 2000-12-03  Christian Fraenkel <christian.fraenkel@gmx.net>
2506
2507         * Makefile.in: added gen_sslfunc object
2508         * config.h.in: added HAVE_SSL define
2509         * connect.c: changed select_fd from static int to int
2510         * connect.h: ditto
2511         * gen_sslfunc.h: New file
2512         * gen_sslfunc.c: ditto
2513         * http.c: added HTTPS fuctionality
2514         * retrc.c: ditto
2515         * url.c: ditto
2516         * init.c: added opt.httpsproxy
2517         * options.h: ditto
2518         * rbuf.h: added alternate rbuf struct
2519         * wget.h: added CONSSLERR
2520         * rbuf.c: ditto
2521
2522         * http.c: Added HTTPS fuctionality.
2523
2524         * retrc.c: Ditto.
2525
2526         * url.c: Ditto.
2527
2528         * init.c: Added opt.httpsproxy.
2529
2530         * options.h: Ditto.
2531
2532         * rbuf.h: Added alternate rbuf struct.
2533
2534         * wget.h: Added CONSSLERR.
2535
2536         * rbuf.c: Ditto.
2537
2538 2000-11-30  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
2539
2540         * ftp-ls.c (ftp_parse_unix_ls): Added second parameter
2541         "ignore_perms" to ignore file and directory permissions for
2542         Windows NT FTP server listings.
2543         (ftp_parse_winnt_ls): New function.
2544         (ftp_parse_ls): Parses UNIX and Windows NT listings
2545         separately. Simple heuristics for distinguishing between UNIX and
2546         MS-DOS-like FTP listing provided by Windows NT FTP service.
2547
2548 2000-11-18  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
2549
2550         * ftpparse.c, ftpparse.h: New files.
2551
2552         * ftp-ls.c (ftp_parse_ls): Use ftp_parse_unix_ls for UNIX servers
2553         only. Use ftp_parse_nonunix_ls otherwise.
2554         (ftp_parse_nonunix_ls): Stub to the ftpparse library handling all
2555         exotic FTP servers.
2556
2557         * ftp.h (stype): New enum, distinguishes UNIX, VMS, and "other"
2558         FTP servers.
2559
2560         * ftp.c: New static wariables host_type, pwd, and pwd_len. 
2561         (getftp): Support for VMS. Support for FTP servers that do not
2562         place you in the root directory after login.
2563         (ftp_retrieve_list): VMS is silent about the real file size, issue
2564         a more appropriate message.
2565         (ftp_get_listing): Pass host_type to ftp_parse_ls.
2566
2567         * ftp-basic.c (ftp_pwd, ftp_syst): New functions.
2568
2569 2000-11-30  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
2570
2571         * ftp-ls.c (ftp_parse_unix_ls): Added second parameter
2572         "ignore_perms" to ignore file and directory permissions for
2573         Windows NT FTP server listings.
2574         (ftp_parse_winnt_ls): New function.
2575         (ftp_parse_ls): Parses UNIX and Windows NT listings
2576         separately. Simple heuristics for distinguishing between UNIX
2577         and MS-DOS-like FTP listing provided by Windows NT FTP service.
2578
2579 2000-11-29  John Summerfield  <summer@OS2.ami.com.au>
2580
2581         * netrc.c (parse_netrc): Get rid of line ending.
2582
2583 2000-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
2584
2585         * ftp.c (ftp_retrieve_list): Undo typo "fix" until resolution by
2586         Dan.
2587
2588 2000-11-24  Karl Eichwalder  <ke@suse.de>
2589
2590         * main.c (print_help): Untabify.
2591
2592 2000-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
2593
2594         * utils.c (xrealloc_debug): Do the unregister/register thing only
2595         if the pointer has actually changed.
2596         (xmalloc_real): Declare `static' in DEBUG_MALLOC builds.
2597         (xfree_real): Ditto.
2598         (xrealloc_real): Ditto.
2599         (xstrdup_real): Ditto.
2600
2601 2000-11-22  Hrvoje Niksic  <hniksic@arsdigita.com>
2602
2603         * ftp.c (getftp): ftp_getaddress() returns a malloc'ed copy of the
2604         string; no need to strdup() it.
2605         (getftp): Make pwd_len a local variable.
2606         (ftp_loop): Free PWD before returning.
2607
2608         * init.c (cleanup): Free opt.ftp_pass only if it's non-NULL.
2609
2610 2000-11-22  Hrvoje Niksic  <hniksic@arsdigita.com>
2611
2612         * all: Use xfree() instead of free.
2613
2614         * utils.c (xfree): New function.
2615
2616 2000-11-21  Hrvoje Niksic  <hniksic@arsdigita.com>
2617
2618         * url.c (convert_links): HTML-quote the converted string.
2619
2620         * utils.c (html_quote_string): Move here from ftp-ls.c
2621         (html_quote_string): Make non-static; declare in utils.h.
2622         (html_quote_string): Convert SP to &#32;.
2623
2624 2000-11-21  Hrvoje Niksic  <hniksic@arsdigita.com>
2625
2626         * ftp.c (getftp): Reformat Jan's code according to GNU coding
2627         standards; remove (debugging?) printf's; use '\0' for the ASCII
2628         zero character.  Use alloca() instead of malloc() for
2629         inter-function temporary allocations.
2630
2631 2000-11-18  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
2632
2633         * ftpparse.c, ftpparse.h: New files.
2634
2635         * ftp-ls.c (ftp_parse_ls): Use ftp_parse_unix_ls for UNIX servers
2636         only. Use ftp_parse_nonunix_ls otherwise.
2637         (ftp_parse_nonunix_ls): Stub to the ftpparse library handling all
2638         exotic FTP servers.
2639
2640         * ftp.h (stype): New enum, distinguishes UNIX, VMS, and "other"
2641         FTP servers.
2642
2643         * ftp.c: New static wariables host_type, pwd, and pwd_len. 
2644         (getftp): Support for VMS. Support for FTP servers that do not
2645         place you in the root directory after login.
2646         (ftp_retrieve_list): VMS is silent about the real file size, issue
2647         a more appropriate message.
2648         (ftp_get_listing): Pass host_type to ftp_parse_ls.
2649
2650         * ftp-basic.c (ftp_pwd, ftp_syst): New functions.
2651
2652 2000-11-21  Hrvoje Niksic  <hniksic@arsdigita.com>
2653
2654         * hash.c (hash_table_put): Don't overwrite deleted mappings.
2655
2656 2000-11-21  Hrvoje Niksic  <hniksic@arsdigita.com>
2657
2658         * hash.c (find_mapping): New function.
2659         (hash_table_get): Use it.
2660         (hash_table_get_pair): Ditto.
2661         (hash_table_exists): Ditto.
2662         (hash_table_remove): Ditto.
2663         (hash_table_remove): Really delete the entry if the mapping
2664         following LOCATION is empty.
2665
2666         * utils.c (string_set_add): Check whether the element has existed
2667         before.
2668
2669         * hash.c (hash_table_get_pair): New function.
2670
2671 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
2672
2673         * http.c (http_process_type): Ignore trailing whitespace; use
2674         strdupdelim().
2675
2676         * recur.c (recursive_retrieve): Use the new `convert' field.
2677         (convert_all_links): Ditto.
2678         (convert_all_links): Don't respect meta_disallow_follow.
2679
2680         * html-url.c (handle_link): Fill out link_relative_p and
2681         link_complete_p.
2682
2683         * url.h (struct _urlpos): Make elements more readable.
2684
2685         * recur.c (recursive_retrieve): Call slist_prepend instead of
2686         slist_append.
2687         (convert_all_links): Call slist_nreverse before iterating through
2688         urls_html.
2689
2690         * utils.c (slist_prepend): New function.
2691         (slist_nreverse): Ditto.
2692
2693 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
2694
2695         * http.c (check_end): Constify.
2696
2697 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
2698
2699         * http.c (http_loop): If username and password are known, try the
2700         `Basic' authentication scheme by default.
2701
2702         * connect.h: Declare test_socket_open.
2703
2704 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
2705
2706         * version.c: Bump version from 1.5.3+dev to 1.7-dev.
2707
2708 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
2709
2710         * http.c (gethttp): Don't use the return value of sprintf().
2711         (gethttp): Inhibit keep-alive if opt.http_keep_alive is 0.
2712
2713 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
2714
2715         * recur.c (recursive_retrieve): Print the "so we don't load"
2716         debugging message only if we really don't load.
2717
2718         * http.c (gethttp): Inhibit keep-alive if proxy is being used.
2719         (gethttp): Don't request keep-alive if keep-alive is inhibited.
2720
2721 2000-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
2722
2723         * http.c (gethttp): Make the HTTP persistent connections more
2724         robust.
2725
2726 2000-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
2727
2728         * retr.c (get_contents): If use_expected, make sure that the
2729         appropriate amount of data is being read.
2730
2731         * http.c (gethttp): Check for both `Keep-Alive: ...' and
2732         `Connection: Keep-Alive'.
2733
2734         * wget.h (DEBUGP): Call debug_logprintf only if opt.debug is
2735         turned on.
2736
2737 2000-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
2738
2739         * http.c (connection_available_p): Use it.
2740
2741         * connect.c (test_socket_open): New function.
2742
2743         * http.c (gethttp): Support persistent connections.  Based on the
2744         ideas, and partly on code, by Sam Horrocks <sam@daemoninc.com>.
2745         (register_persistent): New function.
2746         (connection_available_p): Ditto.
2747         (invalidate_connection): Ditto.
2748
2749 2000-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
2750
2751         * url.c (convert_links): Handle UREL2ABS case.
2752
2753         * recur.c (recursive_retrieve): Instead of the list
2754         urls_downloaded, use hash tables dl_file_url_map and
2755         dl_url_file_map.
2756         (convert_all_links): Use them to retrieve data.
2757
2758         * host.c (clean_hosts): Free the hash tables.
2759
2760         * main.c (private_initialize): Call host_init().
2761
2762         * host.c (store_hostaddress): Use a saner, hash table-based data
2763         model.
2764         (realhost): Ditto.
2765         (host_init): Initialize the hash tables.
2766
2767 2000-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
2768
2769         * utils.c (slist_append): Eviscerate NOSORT.  Hash tables are now
2770         used for what the sorted slists used to be used for.
2771         (slist_contains): Don't rely on the list being sorted.
2772         (slist_append): Simplify the code.
2773
2774         * recur.c (recursive_cleanup): Use free_string_set.
2775
2776         * utils.c (string_set_add, string_set_exists, string_set_free):
2777         New functions for easier freeing of hash tables whose keys are
2778         strdup'ed strings.
2779
2780         * recur.c (recursive_retrieve): Use the hash table functions for
2781         storing undesirable URLs.
2782
2783         * hash.c: New file.
2784
2785 2000-11-17  Hrvoje Niksic  <hniksic@arsdigita.com>
2786
2787         * main.c (private_initialize): Call url_init.
2788         (main): Call private_initialize.
2789
2790         * url.c (unsafe_char_table): New table.
2791         (UNSAFE_CHAR): Use it.
2792         (init_unsafe_char_table): New function.
2793         (url_init): New function; call init_unsafe_char_table.
2794
2795 2000-11-16  Hrvoje Niksic  <hniksic@arsdigita.com>
2796
2797         * mswindows.h: Define snprintf and vsnprintf to _snprintf and
2798         _vsnprintf respectively.
2799
2800 2000-11-15  Hrvoje Niksic  <hniksic@arsdigita.com>
2801
2802         * config.h.in: Do the _XOPEN_SOURCE and _SVID_SOURCE things only
2803         on Linux.
2804
2805 2000-11-15  Hrvoje Niksic  <hniksic@arsdigita.com>
2806
2807         * html-url.c (handle_link): Handle HTML fragment identifiers.
2808
2809         * recur.c (recursive_retrieve): If norobot info is respected and
2810         the file is specified not to be followed by robots, respect that.
2811
2812         * html-url.c (collect_tags_mapper): Handle <meta name=robots
2813         content=X>.  For us the important cases are where X is NONE or
2814         where X contains NOFOLLOW.
2815         (get_urls_html): Propagate that information to the caller.
2816
2817 2000-11-13  Hrvoje Niksic  <hniksic@arsdigita.com>
2818
2819         * url.c (convert_links): Unlink the file we might be reading from
2820         before writing to it.
2821         (convert_links): Use alloca instead of malloc for
2822         filename_plus_orig_suffix.
2823
2824 2000-11-12  Hrvoje Niksic  <hniksic@arsdigita.com>
2825
2826         * host.c (realhost): Add HOST to the list with quality==0 only if
2827         it wasn't already there.
2828         Based on analysis by Lu Guohan <feng@public.bjnet.edu.cn>.
2829
2830 2000-11-10  Hrvoje Niksic  <hniksic@arsdigita.com>
2831
2832         * url.c (get_urls_file): Ditto.
2833         (convert_links): Ditto.
2834
2835         * html-url.c (get_urls_html): Use read_file() instead of
2836         load_file().
2837
2838         * utils.c (read_file): New function, instead of the old
2839         load_file().
2840         (read_file_free): Ditto.
2841
2842         * url.c (findurl): Search only for the supported protocols.
2843         (convert_links): Use fwrite() when writing out a region of
2844         characters.
2845
2846 2000-11-10  Hrvoje Niksic  <hniksic@arsdigita.com>
2847
2848         * ftp-ls.c: Move html_quote_string and ftp_index here.
2849
2850         * url.c: Remove get_urls_html, since that's now in html-url.c.
2851
2852         * html-url.c: New file.
2853
2854         * html-parse.c: New file.
2855
2856 2000-11-10  Hrvoje Niksic  <hniksic@arsdigita.com>
2857
2858         * init.c (run_wgetrc): Don't bother killing off '\r' since
2859         pars_line() skips whitespace at end of line anyway.
2860         (parse_line): Oops, it didn't.  Now it does.
2861
2862         * recur.c (parse_robots): Ditto here.
2863
2864         * ftp-ls.c (ftp_parse_unix_ls): Kill off the newline character
2865         manually because read_whole_line no longer does.
2866
2867         * utils.c (read_whole_line): Rewrite to: a) use less memory
2868         (reallocates to needed size after work), b) work faster -->
2869         fgets() instead of getc, c) be more correct --> doesn't kill the
2870         newline character at the end of line.
2871
2872 2000-11-10  Hrvoje Niksic  <hniksic@arsdigita.com>
2873
2874         * init.c (comind): Initialize MAX to array size - 1.
2875
2876 2000-11-08  Hrvoje Niksic  <hniksic@arsdigita.com>
2877
2878         * url.c (construct): Changed last_slash[-1] to *(last_slash - 1).
2879         Suggested by Edward J. Sabol.
2880
2881 2000-11-08  Hrvoje Niksic  <hniksic@arsdigita.com>
2882
2883         * url.c (construct): Handle the case where host name is not
2884         followed by a slash.
2885
2886 2000-11-06  Hrvoje Niksic  <hniksic@arsdigita.com>
2887
2888         * init.c: commands[] need to be sorted!  ("base" wasn't.)
2889
2890 2000-11-05  Hrvoje Niksic  <hniksic@arsdigita.com>
2891
2892         * wget.h (DO_REALLOC_FROM_ALLOCA): Use braces to disambiguate
2893         `if'.
2894
2895 2000-11-05  Hrvoje Niksic  <hniksic@arsdigita.com>
2896
2897         * url.c (construct): Insert unneeded initialization for the
2898         compiler to shut up.
2899
2900         * config.h.in: Define _XOPEN_SOURCE to 500 to get the prototype
2901         for strptime() (*duh*).  Define _SVID_SOURCE to get S_IFLNK which
2902         otherwise gets lost when you define _XOPEN_SOURCE.
2903
2904         * utils.c (touch): Include the file name in the error message.
2905         From Debian.
2906
2907 2000-11-05  Hrvoje Niksic  <hniksic@arsdigita.com>
2908
2909         * log.c (logvprintf): Use vsnprintf() in all cases.  If necessary,
2910         resize the buffer to fit the formated message.  That way, messages
2911         of arbitrary size may be printed.
2912         (logvprintf): Use saved_append() to optionally log the last
2913         several lines of output.
2914         (logputs): Ditto.
2915         (log_close): Adapt to new data structures.
2916         (log_dump): Ditto.
2917         (redirect_output): Print messages to stderr, not to stdout.
2918
2919         * log.c (saved_append_1): New function.  Replaces the old logging
2920         system ("log all output until 10M characters") with a new, much
2921         more reasonable one ("log last screenful of text").
2922         (saved_append): New function; call saved_append_1.
2923         (free_log_line): New function.
2924
2925 2000-11-05  Hrvoje Niksic  <hniksic@arsdigita.com>
2926
2927         * url.c (construct): Fix comment.
2928         (find_last_char): Document.
2929
2930 2000-11-04  Hrvoje Niksic  <hniksic@arsdigita.com>
2931
2932         * snprintf.c: New file.
2933
2934 2000-11-03  Hrvoje Niksic  <hniksic@arsdigita.com>
2935
2936         * wget.h: If HAVE_STDARG_H is not defined, don't declare argument
2937         types to logprintf() and debug_logprintf().
2938
2939 2000-11-02  Hrvoje Niksic  <hniksic@arsdigita.com>
2940
2941         * ftp.c (ftp_loop_internal): Hide the password from the URL when
2942         printing non-verbose.  Problem spotted by Dariusz Mlynarczyk
2943         <darekm@bydg.lomac.com.pl>.
2944
2945 2000-11-02  Junio Hamano  <junio@twinsun.com>
2946
2947         * ftp-basic.c (ftp_login): Make comparison case-insensitive.
2948
2949 2000-11-02  Tyler Riddle  <triddle@liquidmarket.com>
2950
2951         * http.c (known_authentication_scheme_p): Recognize NTML
2952         authentication.
2953         (create_authorization_line): Treat NTML the same as `Basic'.
2954
2955 2000-11-02  Hrvoje Niksic  <hniksic@arsdigita.com>
2956
2957         * retr.c (retrieve_url): Free url before returning.
2958         (retrieve_url): Free mynewloc before returning.
2959         Spotted by Mark A. Mankins <Mankins_Mark@prc.com>.
2960
2961 2000-11-02  Hrvoje Niksic  <hniksic@arsdigita.com>
2962
2963         * url.c (parseurl): Remove possible reading past the end of
2964         sup_protos[].  Spotted by Mark A. Mankins <Mankins_Mark@prc.com>.
2965
2966 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
2967
2968         * main.c (main): In case of opt.downloaded overflowing, print
2969         <overflow> instead of a totally bogus random value.
2970
2971         * retr.c (retrieve_from_file): Ditto.
2972
2973         * recur.c (recursive_retrieve): Ditto.
2974
2975         * main.c (main): Ditto.
2976
2977         * http.c (http_loop): Ditto.
2978
2979         * ftp.c (ftp_loop_internal): Use downloaded_increase() instead of
2980         `+=', and downloaded_exceeds_quota() instead of the simple-minded
2981         check.
2982         (ftp_retrieve_list): Ditto.
2983         (ftp_retrieve_dirs): Ditto.
2984         (ftp_retrieve_glob): Ditto.
2985
2986         * retr.c (downloaded_increase): New function.  Notice overflows of
2987         opt.downloaded.
2988         (downloaded_exceeds_quota): Make sure that opt.downloaded is not
2989         used if it overflowed.
2990
2991         * options.h (struct options): New member downloaded_overflow.
2992
2993 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
2994
2995         * wget.h (enum): Remove extra space after last enumeration.
2996
2997 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
2998
2999         * main.c (main): Use legible_very_long() for printing
3000         opt.downloaded.
3001
3002         * utils.c (legible_1): New function that operates on strings and
3003         does the brunt of legible()'s work.
3004         (legible): Use legible_1().
3005         (legible_very_long): New function; dump the argument with
3006         sprintf(), and call legible_1().
3007
3008         * options.h (struct options): Use VERY_LONG_TYPE for
3009         opt.downloaded.
3010
3011         * sysdep.h (VERY_LONG_TYPE): Define it to have a 64-bit or greater
3012         type.
3013
3014         * config.h.in: Make sure that SIZEOF_LONG and SIZEOF_LONG_LONG get
3015         defined.  Define HAVE_LONG_LONG if long long is available.
3016
3017 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
3018
3019         * utils.c (long_to_string): Update with a later, better version.
3020
3021 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
3022
3023         * url.c (path_simplify_with_kludge): New function.
3024         (path_simplify_with_kludge): Disable it.  Instead...
3025         (parse_dir): ...make sure that at this point the right thing is
3026         done, i.e. that "query" part of the URL (?...) is always assigned
3027         to the file, never to the directory portion of the path.
3028
3029 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
3030
3031         * retr.c (retrieve_url): Detect redirection cycles.
3032
3033 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
3034
3035         * url.c (get_urls_html): Decode HTML entities using
3036         html_decode_entities.
3037
3038         * html.c (htmlfindurl): Don't count the `#' in numeric entities
3039         (&#NNN;) as an HTML fragemnt.
3040         (html_decode_entities): New function.
3041
3042 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
3043
3044         * html.c (htmlfindurl): Fix recognition of # HTML fragments.
3045
3046 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
3047
3048         * url.c (construct): Rewritten for clarity.  Avoids the
3049         unnecessary copying and stack-allocation the old version
3050         performed.
3051
3052 2000-10-31  Hrvoje Niksic  <hniksic@arsdigita.com>
3053
3054         * ftp.c (getftp): Ditto.
3055
3056         * http.c (gethttp): Rewind the stream when retrying from scratch.
3057
3058 2000-10-31  Hrvoje Niksic  <hniksic@arsdigita.com>
3059
3060         * retr.c (retrieve_url): Use url_concat() to handle relative
3061         redirections instead of /ad hoc/ code.
3062
3063         * url.c (url_concat): New function encapsulating weird
3064         construct().
3065         (urllen_http_hack): New function.
3066         (construct): When constructing new URLs, recognize that `?' does
3067         not form part of the file name in HTTP.
3068
3069 2000-10-13  Adrian Aichner  <adrian@xemacs.org>
3070
3071         * retr.c: Add msec timing support for WINDOWS.
3072         * retr.c (reset_timer): GetSystemTime() on WINDOWS.
3073         * retr.c (elapsed_time): Calculate delta time to msec on WINDOWS.
3074
3075 2000-10-27  Dan Harkless  <wget@harkless.org>
3076
3077         * retr.c (retrieve_url): Manually applied T. Bharath
3078         <TBharath@responsenetworks.com>'s patch to get wget to grok
3079         illegal relative URL redirects.  Reformatted and re-commented it.
3080
3081 2000-10-23  Dan Harkless  <wget@harkless.org>
3082
3083         * connect.c (make_connection and bindport): Manually applied Rob
3084         Mayoff <mayoff@dqd.com>'s 1.5.3 patch to add --bind-address,
3085         changing coding style to GNU's.
3086
3087         * ftp.c (ftp_loop_internal): --delete-after wasn't implemented for
3088         files downloaded via FTP.  Per a comment, .listing files were not
3089         counted towards number of bytes and files downloaded because they're 
3090         deleted anyway.  Well, they aren't under -nr, so count them then.
3091
3092         * init.c: Manually applied Rob Mayoff's 1.5.3 patch to add
3093         --bind-address, alphabetizing, changing coding style to GNU's,
3094         commenting, and renaming cmd_ip_address() to cmd_address() to
3095         imply hostnames also okay.
3096                 
3097         * main.c (main): --delete-after didn't delete the root of the
3098         tree.  Ignore --convert-links if --delete-after was specified.
3099         Manually applied Rob Mayoff's 1.5.3 patch to add --bind-address,
3100         fixing duplicate use of added-since-1.5.3 case value.
3101         (print_help): Clarified that --delete-after deletes local files.
3102         Rob forgot to add a line for his new --bind-address option.
3103                 
3104         * options.h (struct options): Manually applied Rob Mayoff's patch
3105         to add --bind-address (bind_address structure member).
3106                 
3107         * recur.c (recursive_retrieve): Improved comment; added DEBUGP().
3108         Ignore --convert-links if --delete-after was specified.
3109                 
3110         * retr.c (retrieve_from_file): Just added a DEBUGP().
3111                 
3112 2000-10-19  Dan Harkless  <wget@harkless.org>
3113
3114         * ftp.c (ftp_loop_internal): downloaded_file() enumerators changed.
3115         (getftp): Applied Piotr Sulecki <Piotr.Sulecki@ios.krakow.pl>'s
3116         patch to work around FTP servers that incorrectly respond to the
3117         "REST" command with the remaining size rather than the total file size.
3118                 
3119         * http.c (gethttp): Improved a comment and added code to tack on
3120         ".html" to text/html files without that extension when -E specified.
3121         (http_loop): Use new downloaded_file() enumerators and deal with
3122         the case of gethttp() called xrealloc() on u->local.
3123
3124         * init.c (commands): Added new "htmlextension" command.
3125         Also renamed John Daily's cmd_quad() to the more descriptive
3126         cmd_lockable_boolean(), alpha-sorted the CMD_DECLARE()s and
3127         removed duplicate cmd_boolean() declaration.
3128
3129         * main.c (print_help): Added my new -E / --html-extension option.
3130         (main): Undocumented --email-address option previously used -E synonym.
3131         Stole it away for the much more deserving --html-extension's use.
3132
3133         * options.h (struct options): Added html_extension field.
3134
3135         * url.c (convert_links): URL X that we saved as X.html locally due
3136         to -E needs to be backed up as X.orig, not X.html.orig.  Added comments.
3137         (downloaded_file): Now remembers if we added .html extension to a file.
3138
3139         * url.h (downloaded_file_t): Added extra enumerators to support above.
3140         (downloaded_file): Now takes and returns a downloaded_file_t.
3141
3142         * wget.h (unnamed "dt" enum): Added ADDED_HTML_EXTENSION enumerator.
3143         
3144 2000-10-09  Dan Harkless  <wget@harkless.org>
3145
3146         * html.c (htmlfindurl): Added unneeded initialization to quiet warning.
3147                 
3148         * main.c (print_help): Clarified what --retr-symlinks does.
3149         
3150 2000-09-15  John Daily  <jdaily@cyberdude.com>
3151
3152         * init.c: Add support for "always" and "never" values to allow
3153         .wgetrc to override commandline (useful e.g. with .pm files
3154         calling `wget --passive-ftp' when your firewall doesn't allow that).
3155
3156         * ftp.c (getftp): passive_ftp is first option to support always/never.
3157
3158 2000-08-30  Dan Harkless  <wget@harkless.org>
3159
3160         * ftp.c (ftp_retrieve_list): Use new INFINITE_RECURSION #define.
3161         
3162         * html.c: htmlfindurl() now takes final `dash_p_leaf_HTML' parameter.
3163         Wrapped some > 80-column lines.  When -p is specified and we're at a 
3164         leaf node, do not traverse <A>, <AREA>, or <LINK> tags other than 
3165         <LINK REL="stylesheet">.
3166         
3167         * html.h (htmlfindurl): Now takes final `dash_p_leaf_HTML' parameter.
3168         
3169         * init.c: Added new -p / --page-requisites / page_requisites option.
3170
3171         * main.c (print_help): Clarified that -l inf and -l 0 both allow
3172         infinite recursion.  Changed the unhelpful --mirrior description
3173         to simply give the options it's equivalent to.  Added new -p option.
3174         (main): Added some comments; handle new -p / --page-requisites.
3175         
3176         * options.h (struct options): Added new page_requisites field.
3177
3178         * recur.c: Changed "URL-s" to "URLs" and "HTML-s" to "HTMLs".
3179         Calculate and pass down new `dash_p_leaf_HTML' parameter to
3180         get_urls_html().  Use new INFINITE_RECURSION #define.
3181
3182         * retr.c: Changed "URL-s" to "URLs".  get_urls_html() now takes
3183         final `dash_p_leaf_HTML' parameter.
3184
3185         * url.c: get_urls_html() and htmlfindurl() now take final
3186         `dash_p_leaf_HTML' parameter.
3187
3188         * url.h (get_urls_html): Now takes final `dash_p_leaf_HTML' parameter.
3189
3190         * wget.h: Added some comments and new INFINITE_RECURSION #define.
3191         
3192 2000-08-23  Dan Harkless  <wget@harkless.org>
3193
3194         * main.c (print_help): -B / --base was not mentioned.
3195
3196 2000-08-22  Dan Harkless  <wget@harkless.org>
3197
3198         * main.c (print_help): Modified -nc description to mention that it
3199         also prevents the creation of multiple versions of the same file
3200         with ".<number>" suffixes.
3201
3202 2000-07-14  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
3203
3204         * retr.c (retrieve_url): Consistently strdup opt.referer when
3205         setting u->referer.
3206
3207 2000-06-09  Dan Harkless  <wget@harkless.org>
3208
3209         * main.c (print_help): --help output for --waitretry was over 80 cols.
3210
3211 2000-06-09  Hrvoje Niksic  <hniksic@iskon.hr>
3212
3213         * url.c (encode_string): Fix comment.
3214         Suggested by Herold Heiko <Heiko.Herold@previnet.it>.
3215
3216 2000-06-01  Const Kaplinsky  <const@ce.cctpu.edu.ru>
3217
3218         * ftp.c (ftp_retrieve_list): Change permissions only on plain
3219         files.
3220
3221 2000-06-01  Hrvoje Niksic  <hniksic@iskon.hr>
3222
3223         * url.c (str_url): Print the port number only if it's different
3224         from the default port number for that protocol.
3225
3226 2000-05-22  Dan Harkless  <wget@harkless.org>
3227
3228         * main.c (print_help): Added --help line for Damir Dzeko
3229         <ddzeko@zesoi.fer.hr>'s until-now-undocumented --referer option.
3230         Removed comments that --referer and --waitretry were undocumented.
3231         Changed "`.wgetrc' command" to "`.wgetrc'-style command" on --help
3232         line for --execute.
3233
3234 2000-05-18  Hrvoje Niksic  <hniksic@iskon.hr>
3235
3236         * ftp.c (getftp): Ditto.
3237
3238         * http.c (gethttp): Check for return value of fclose/fflush.
3239
3240 2000-04-12  Hrvoje Niksic  <hniksic@iskon.hr>
3241
3242         * host.c (store_hostaddress): Instead of shifting ADDR, start
3243         copying from the correct address.
3244
3245 2000-04-12  Hrvoje Niksic  <hniksic@iskon.hr>
3246
3247         * http.c (gethttp): Don't free REQUEST -- it was allocated with
3248         alloca().
3249         Pointed out by Gisle Vanem <gvanem@eunet.no>.
3250
3251 2000-04-04  Dan Harkless  <wget@harkless.org>
3252
3253         * host.c (store_hostaddress): R. K. Owen's patch introduces a
3254         "left shift count >= width of type" warning on 32-bit
3255         architectures.  Got rid of it by tricking the compiler w/ a variable.
3256         
3257         * url.c (UNSAFE_CHAR): The macro didn't include all the illegal
3258         characters per RFC1738, namely everything above '~'.  It also
3259         generated a warning on OSes where char =~ unsigned char.  Fixed.
3260         
3261 1998-10-17  Hrvoje Niksic  <hniksic@srce.hr>
3262
3263         * http.c (http_process_type): Removed needless strdup(), a memory
3264         leak.
3265
3266 1998-09-25  Hrvoje Niksic  <hniksic@srce.hr>
3267
3268         * html.c (htmlfindurl): Set PH to the first occurrence of `#'.
3269
3270 1998-09-25  Simon Munton  <simonm@m4data.co.uk>
3271
3272         * init.c (wgetrc_file_name): Don't free HOME under Windows.
3273
3274 1998-12-01  "R. K. Owen"  <rkowen@Nersc.GOV>
3275
3276         * host.c (store_hostaddress): Fix for big endian 64-bit machines.
3277
3278 1998-12-01  Hrvoje Niksic  <hniksic@srce.hr>
3279
3280         * url.c (UNSAFE_CHAR): New macro.
3281         (contains_unsafe): Use it.
3282         (encode_string): Ditto.
3283
3284 1998-12-01  Hrvoje Niksic  <hniksic@srce.hr>
3285
3286         * main.c (i18n_initialize): Use LC_MESSAGES only if available.
3287
3288 2000-03-31  Hrvoje Niksic  <hniksic@srce.hr>
3289
3290         * Use TOUPPER/TOLOWER.
3291
3292 1998-12-22  Alexander V. Lukyanov  <lav@yars.free.net>
3293
3294         * ftp-opie.c (btoe): Zero-terminate OSTORE.
3295
3296 2000-03-21  Hrvoje Niksic  <hniksic@iskon.hr>
3297
3298         * wget.h (DO_REALLOC_FROM_ALLOCA): Ditto.
3299
3300         * sysdep.h (ISALNUM): New macro.
3301         (TOLOWER): Ditto.
3302         (TOUPPER): Ditto.
3303
3304 2000-03-10  Dan Harkless  <wget@harkless.org>
3305
3306         * html.c (idmatch): Implemented checking of my new --follow-tags
3307         and --ignore-tags options.
3308         
3309         * init.c (commands): Added comment reminding people adding new
3310         entries doing allocation to add corresponding freeing in cleanup().
3311         (commands): Added new followtags and ignoretags commands.
3312         (cleanup): Free storage for new followtags and ignoretags.
3313         
3314         * main.c: Use of "comma-separated list" was random -- normalized
3315         it.  Did some alphabetization.  Added comments pointing out
3316         "Options without arguments" and "Options accepting an argument"
3317         sections of long_options[].  Added new options --follow-tags and
3318         -G / --ignore-tags.  Added comment that Damir's --referer is
3319         currently undocumented.  Added comment that Heiko's --waitretry is
3320         partially undocumented (mentioned in --help but not in
3321         wget.texi).  Moved improperly sorted 24, 129, and 'G' cases.
3322         
3323         * options.h (struct options): Added new fields follow_tags and
3324         ignore_tags. 
3325         
3326         * wget.h: Added "#define EQ 0" so we can say "strcmp(a, b) == EQ".
3327         
3328 2000-03-02  Dan Harkless  <wget@harkless.org>
3329
3330         * ftp.c (ftp_loop_internal): Heiko introduced "suggest explicit
3331         braces to avoid ambiguous `else'" warnings.  Eliminated them.
3332         
3333         * http.c (gethttp): Dan Berger's query string patch is totally
3334         bogus.  If you have two different URLs, gen_page.cgi?page1 and
3335         get_page.cgi?page2, they'll both be saved as get_page.cgi and the
3336         second will overwrite the first.  Also, parameters to implicit
3337         CGIs, like "http://www.host.com/db/?2000-03-02" cause the URLs to
3338         be printed with trailing garbage characters, and could seg fault.
3339         Backing out the patch, which Dan B. informed me by email was just
3340         a kludge to download StarOffice from Sun made necessary due to
3341         wget's unconditional escaping of certain characters (room for an
3342         option there?).
3343         (http_loop): Heiko introduced "suggest explicit braces to avoid
3344         ambiguous `else'" warnings.  Eliminated them.
3345         
3346         * main.c: Heiko's --wait / --waitretry backwards compatibility
3347         code looks to have been totally untested -- automatic variable
3348         'wr' was used without being initialized, and a long int was passed
3349         into setval()'s char* val parameter.
3350         
3351         * recur.c (parse_robots): Applied Edward J. Sabol
3352         <sabol@alderaan.gsfc.nasa.gov>'s patch for Guan Yang's reported
3353         problem with "User-agent:<space>*<space>" lines in robots.txt.
3354         
3355         * url.c (parseurl, str_url): Removing Dan Berger's code (see
3356         http.c above for explanation).
3357         
3358 1999-08-25  Heiko Herold  <Heiko.Herold@previnet.it>
3359
3360         * ftp.c: Respect new option waitretry.
3361
3362 2000-01-30  Damir Dzeko  <ddzeko@zesoi.fer.hr>
3363
3364         * http.c (gethttp): Send custom Referer, if required.
3365
3366 1999-09-24  Charles G Waldman  <cgw@fnal.gov>
3367
3368         * netrc.c (parse_netrc): Allow passwords to contain spaces.
3369
3370         * netrc.c (parse_netrc): New function.
3371
3372 1999-09-17  Dan Berger  <dberger@ix.netcom.com>
3373
3374         * http.c (gethttp): Send it.
3375
3376         * url.c (parseurl): Detect query string in HTTP URL-s.
3377         (str_url): Print it.
3378
3379 2000-03-02  HIROSE Masaaki  <hirose31@t3.rim.or.jp>
3380
3381         * html.c (html_allow): Add <link href=...> and <script src=...>.
3382
3383 1999-05-02  andrew deryabin  <djsf@softhome.net>
3384
3385         * http.c (gethttp): Specify port in `Host' header only if it's
3386         different from 80.
3387
3388 1998-11-03  Edward J. Sabol  <sabol@alderaan.gsfc.nasa.gov>
3389
3390         * recur.c (recursive_retrieve): If a finite maximum depth is
3391         specified, and we're are already at that depth, don't download the
3392         HTML file for parsing.
3393
3394 2000-03-01  Dan Harkless  <wget@harkless.org>
3395
3396         * ftp.c (ftp_loop_internal): Call new downloaded_file() function,
3397         even though we don't do conversion on HTML files retrieved via
3398         FTP, so _current_ usage of downloaded_file() makes this call unneeded. 
3399         (ftp_retrieve_list): Added a comment saying where we need to
3400         stat() a .orig file if FTP'd HTML file conversion is ever implemented.
3401         (ftp_retrieve_list): "Local file '%s' is more recent," is sometimes
3402         a lie -- reworded as "Server file no newer than local file '%s' --".
3403         
3404         * http.c (http_loop): Fixed a typo and clarified a comment.
3405         (http_loop): When -K and -N are specified together, compare size
3406         and timestamp of server file X against local file X.orig (if
3407         extant) rather than converted local file X.
3408         (http_loop): "Local file '%s' is more recent," is sometimes a lie
3409         -- reworded as "Server file no newer than local file '%s' --".
3410         (http_loop): Call new downloaded_file() function to prevent
3411         wrongful overwriting of .orig file when -N is specified.
3412         
3413         * url.c (convert_links): When -K specified, only rename X to
3414         X.orig if downloaded_file() returns TRUE.  Otherwise when we skip
3415         file X due to -N, we clobber an X.orig from a previous invocation.
3416         (convert_links): Call the failsafe xstrdup(), not the real strdup().
3417         (convert_links): Added a note asking anyone who understands how
3418         multiple URLs can correspond to a single file to comment it.
3419         (downloaded_file): Added this new function.
3420         
3421         * url.h (downloaded_file): Added prototype for this new function
3422         as well as its downloaded_file_t enum type.
3423
3424         * wget.h (boolean): Added this new typedef and TRUE and FALSE #defines.
3425
3426 2000-02-29  Dan Harkless  <wget@harkless.org>
3427
3428         * version.c: Upped version to developer-only "1.5.3+dev".
3429
3430 2000-02-18  Dan Harkless  <wget@harkless.org>
3431
3432         * init.c (backup_converted): Added this new option.
3433
3434         * main.c (-K / --backup-converted): Added this new option.
3435
3436         * options.h (backup_converted): Added this new option.
3437
3438         * url.c (convert_links): When backup_converted is specified, save
3439         file X as X.orig before converting.
3440
3441         * url.h (urlpos): Fixed typo -- said "Rekative" instead of "Relative".
3442
3443 1998-09-21  Hrvoje Niksic  <hniksic@srce.hr>
3444
3445         * version.c: Wget 1.5.3 is released.
3446
3447 1998-09-21  Hrvoje Niksic  <hniksic@srce.hr>
3448
3449         * host.c (ftp_getaddress): Don't warn when reverse-lookup of local 
3450         address doesn't yield FQDN.
3451
3452 1998-09-21  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
3453
3454         * cmpt.c (strerror): Fix declaration of sys_errlist.
3455
3456 1998-09-11  Hrvoje Niksic  <hniksic@srce.hr>
3457
3458         * main.c (main): Don't use an array subscript as the first
3459         argument to STRDUP_ALLOCA.
3460         From Kaveh R. Ghazi.
3461
3462 1998-09-11  Szakacsits Szabolcs  <szaka@sienet.hu>
3463
3464         * html.c (htmlfindurl): Download table background.
3465
3466 1998-09-11  Hans Grobler  <grobh@conde.ee.sun.ac.za>
3467
3468         * init.c (parse_line): Would free *com before allocating it.
3469         (parse_line): Would free com instead of *com.
3470
3471 1998-09-10  Howard Gayle  <howard@fjst.com>
3472
3473         * url.c (get_urls_html): Would drop the last character of the
3474         link.
3475
3476 1998-09-10  Hrvoje Niksic  <hniksic@srce.hr>
3477
3478         * http.c (http_loop): Don't print status code if quiet.
3479
3480 1998-09-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3481
3482         * log.c: Use <stdarg.h> only when __STDC__.
3483
3484 1998-09-10  Adam D. Moss  <adam@foxbox.org>
3485
3486         * html.c (htmlfindurl): Download <layer src=...>.
3487
3488 1998-09-10  Howard Gayle  <howard@fjst.com>
3489
3490         * ftp.c (ftp_retrieve_list): Don't update the time stamp of a file 
3491         not retrieved.
3492
3493 1998-06-27  Hrvoje Niksic  <hniksic@srce.hr>
3494
3495         * utils.c: Include <libc.h> on NeXT.
3496
3497 1998-06-26  Heinz Salzmann  <heinz.salzmann@intermetall.de>
3498
3499         * url.c (get_urls_html): Fix calculation of URL position.
3500
3501 1998-06-23  Hrvoje Niksic  <hniksic@srce.hr>
3502
3503         * version.c: Wget 1.5.2 is released.
3504
3505 1998-06-23  Dave Love  <d.love@dl.ac.uk>
3506
3507         * ftp.c, init.c, netrc.c: Include errno.h.
3508
3509         * http.c: Include errno.h and time header.
3510
3511         * Makefile.in (exext): Define.
3512         (install.bin, uninstall.bin): Use it.
3513
3514 1998-06-21  Hrvoje Niksic  <hniksic@srce.hr>
3515
3516         * http.c (http_loop): Don't attempt to compare local and remote
3517         sizes if the remote size is unknown.
3518
3519 1998-06-16  Hrvoje Niksic  <hniksic@srce.hr>
3520
3521         * url.c (get_urls_html): Use malloc() instead of alloca in the
3522         loop.
3523
3524 1998-06-13  Hrvoje Niksic  <hniksic@srce.hr>
3525
3526         * version.c: Wget 1.5.2-b4 is released.
3527
3528 1998-06-13  Hrvoje Niksic  <hniksic@srce.hr>
3529
3530         * url.c (get_urls_html): Ignore spaces before and after the URI.
3531
3532 1998-06-08  Wanderlei Antonio Cavassin  <cavassin@conectiva.com.br>
3533
3534         * ftp.c (getftp): Translate `done'.
3535
3536 1998-06-06  Hrvoje Niksic  <hniksic@srce.hr>
3537
3538         * version.c: Wget 1.5.2-b3 is released.
3539
3540 1998-06-06  Alexander Kourakos  <awk@bnt.com>
3541
3542         * init.c (cleanup): Close dfp, don't free it.
3543
3544 1998-06-06  Hrvoje Niksic  <hniksic@srce.hr>
3545
3546         * utils.c (make_directory): Twiddle.
3547
3548         * config.h.in: Added template for access().
3549
3550 1998-06-05  Mathieu Guillaume  <mat@cythere.com>
3551
3552         * html.c (htmlfindurl): Download <input src=...>
3553
3554 1998-06-03  Hrvoje Niksic  <hniksic@srce.hr>
3555
3556         * utils.c (file_exists_p): Use access() with two arguments.
3557
3558 1998-05-27  Martin Kraemer  <Martin.Kraemer@mch.sni.de>
3559
3560         * netrc.c (parse_netrc): Correct logic.
3561
3562 1998-05-27  Hrvoje Niksic  <hniksic@srce.hr>
3563
3564         * ftp.c (getftp): Added `break'; suggested by Lin Zhe Min
3565         <ljm@ljm.wownet.net>.
3566
3567 1998-05-24  Hrvoje Niksic  <hniksic@srce.hr>
3568
3569         * version.c: Wget 1.5.2-b2 is released.
3570
3571 1998-05-18  Juan Jose Rodriguez  <jcnsoft@jal1.telmex.net.mx>
3572
3573         * mswindows.h: Don't translate mkdir to _mkdir under Borland.
3574
3575 1998-05-17  Hrvoje Niksic  <hniksic@srce.hr>
3576
3577         * retr.c (elapsed_time): Return correct value when
3578         HAVE_GETTIMEOFDAY is undefined.
3579
3580 1998-05-13  Hrvoje Niksic  <hniksic@srce.hr>
3581
3582         * version.c: Wget 1.5.2-b1 is released.
3583
3584 1998-05-08  Hrvoje Niksic  <hniksic@srce.hr>
3585
3586         * getopt.c (_getopt_internal): Use exec_name instead of argv[0].
3587         (_getopt_internal): Don't translate `#if 0'-ed strings.
3588
3589 1998-05-06  Douglas E. Wegscheid  <wegscd@whirlpool.com>
3590
3591         * mswindows.c (ws_handler): Use fork_to_background().
3592
3593 1998-05-05  Hrvoje Niksic  <hniksic@srce.hr>
3594
3595         * version.c: Wget 1.5.1 is released.
3596
3597 1998-05-05  Hrvoje Niksic  <hniksic@srce.hr>
3598
3599         * http.c (parse_http_status_line): Avoid `minor' and `major'
3600         names.
3601
3602 1998-05-02  Hrvoje Niksic  <hniksic@srce.hr>
3603
3604         * utils.c (mkdirhier): Renamed to make_directory.
3605
3606 1998-05-01  Hrvoje Niksic  <hniksic@srce.hr>
3607
3608         * mswindows.c (fork_to_background): Define under Windows.
3609
3610         * utils.c (fork_to_background): New function.
3611
3612         * html.c (htmlfindurl): Removed rerdundant casts.
3613
3614 1998-05-01  Douglas E. Wegscheid  <wegscd@whirlpool.com>
3615
3616         * mswindows.c (ws_mypath): Cache the path.
3617
3618 1998-04-30  Douglas E. Wegscheid  <wegscd@whirlpool.com>
3619
3620         * ftp.h: Prefix enum ftype members with FT_.
3621
3622         * ftp-ls.c, ftp.c, html.h: Adjust accordingly.
3623
3624         * mswindows.h: Use stat under Borland, _stat under MSVC.
3625
3626 1998-04-28  Hrvoje Niksic  <hniksic@srce.hr>
3627
3628         * http.c (known_authentication_scheme_p): New function.
3629         (gethttp): Handle authorization more correctly.
3630
3631         * ftp-basic.h: Removed.
3632
3633         * cmpt.h: Removed.
3634
3635         * utils.c: Include <unistd.h> before <pwd.h>; needed under SunOS
3636         with gcc 2.8.
3637         (numdigit): Use `while' loop.
3638
3639         * http.c (create_authorization_line): Detect authentication
3640         schemes case-insensitively.
3641
3642         * http.c (extract_header_attr): Use strdupdelim().
3643         (digest_authentication_encode): Move declaration of local
3644         variables to smaller scope.
3645         (digest_authentication_encode): Reset REALM, OPAQUE and NONCE.
3646         (create_authorization_line): Detect authentication schemes
3647         case-insensitively.
3648
3649         * utils.c (touch): Constify.
3650
3651         * http.c (gethttp): Report a nicer error when no data is received.
3652
3653         * rbuf.h (RBUF_READCHAR): Ditto.
3654
3655         * ftp-basic.c (ftp_response): Use sizeof.
3656
3657 1998-04-27  Hrvoje Niksic  <hniksic@srce.hr>
3658
3659         * retr.c (print_percentage): EXPECTED is long, not int.
3660         (print_percentage): Use floating-point arithmetic to avoid
3661         overflow with large files' sizes multiplied with 100.
3662
3663 1998-04-27  Gregor Hoffleit  <flight@mathi.uni-heidelberg.de>
3664
3665         * config.h.in: Added pid_t stub.
3666
3667         * sysdep.h (S_ISREG): Moved here from mswindows.h (NeXT doesn't
3668         define it).
3669
3670 1998-04-20  Hrvoje Niksic  <hniksic@srce.hr>
3671
3672         * version.c: Wget 1.5.0 is released.
3673
3674 1998-04-18  Hrvoje Niksic  <hniksic@srce.hr>
3675
3676         * url.c (str_url): Ditto.
3677
3678         * ftp-basic.c (ftp_rest): Use new name.
3679
3680         * utils.c (long_to_string): Renamed from prnum().
3681
3682 1998-04-16  Hrvoje Niksic  <hniksic@srce.hr>
3683
3684         * version.c: Wget 1.5-b17 is released.
3685
3686 1998-04-08  Hrvoje Niksic  <hniksic@srce.hr>
3687
3688         * headers.c (header_get): New argument FLAGS.
3689
3690         * http.c (gethttp): If request is malformed, bail out of the
3691         header loop.
3692         (gethttp): Check for empty header *after* the status line checks.
3693         (gethttp): Disallow continuations for status line.
3694
3695 1998-04-08  Hrvoje Niksic  <hniksic@srce.hr>
3696
3697         * version.c: Wget 1.5-b16 is released.
3698
3699 1998-04-08  Hrvoje Niksic  <hniksic@srce.hr>
3700
3701         * init.c (commands): Renamed `always_rest' to `continue'.
3702
3703 1998-04-05  Hrvoje Niksic  <hniksic@srce.hr>
3704
3705         * all: Use it.
3706
3707         * log.c (logputs): New argument.
3708         (logvprintf): Ditto.
3709         (logprintf): Ditto.
3710
3711 1998-04-04  Hrvoje Niksic  <hniksic@srce.hr>
3712
3713         * http.c (http_atotm): Update comment.
3714
3715         * main.c (i18n_initialize): Set LC_MESSAGES, not LC_ALL.
3716
3717         * wget.h: Renamed ENABLED_NLS to HAVE_NLS.
3718
3719         * main.c (i18n_initialize): New function.
3720         (main): Use it.
3721
3722         * log.c: Include <unistd.h>.
3723
3724         * retr.c (show_progress): Cast alloca to char *.
3725
3726 1998-04-04  Hrvoje Niksic  <hniksic@srce.hr>
3727
3728         * version.c: Wget 1.5-b15 is released.
3729
3730 1998-04-04  Hrvoje Niksic  <hniksic@srce.hr>
3731
3732         * utils.h: Declare file_non_directory_p().
3733
3734 1998-04-03  Hrvoje Niksic  <hniksic@srce.hr>
3735
3736         * main.c (main): It's `tries', not `numtries' now.
3737
3738 1998-04-01  Hrvoje Niksic  <hniksic@srce.hr>
3739
3740         * init.c (getperms): Removed.
3741
3742 1998-04-01  Tim Charron  <tcharron@interlog.com>
3743
3744         * log.c (logvprintf): Don't use ARGS twice.
3745
3746 1998-04-01  John  <john@futuresguide.com>
3747
3748         * mswindows.c: Cleaned up.
3749
3750 1998-04-01  Hrvoje Niksic  <hniksic@srce.hr>
3751
3752         * version.c: Wget 1.5-b14 is released.
3753
3754 1998-04-01  Hrvoje Niksic  <hniksic@srce.hr>
3755
3756         * ftp-opie.c (STRLEN4): New macro.
3757         (btoe): Use it.
3758
3759 1998-04-01  Junio Hamano  <junio@twinsun.com>
3760
3761         * http.c: Document all the Digest functions.
3762
3763 1998-04-01  Hrvoje Niksic  <hniksic@srce.hr>
3764
3765         * utils.c (file_non_directory_p): Renamed from isfile().
3766
3767         * mswindows.h (S_ISREG): New macro, suggested by Tim Adam.
3768
3769 1998-03-31  Hrvoje Niksic  <hniksic@srce.hr>
3770
3771         * utils.c (mkdirhier): Use 0777 instead of opt.dirmode.
3772
3773         * init.c (cmd_spec_dotstyle): Use 48 dots per line for binary
3774         style.
3775         (cmd_permissions): Removed.
3776
3777         * config.h.in: Add template for WORDS_BIGENDIAN.
3778
3779 1998-03-31  Junio Hamano  <junio@twinsun.com>
3780
3781         * http.c (HEXD2asc): New macro.
3782         (dump_hash): Use it.
3783
3784 1998-03-31  Hrvoje Niksic  <hniksic@srce.hr>
3785
3786         * version.c: Wget 1.5-b13 is released.
3787
3788 1998-03-31  Hrvoje Niksic  <hniksic@srce.hr>
3789
3790         * main.c (main): Don't try to use `com'.
3791
3792 1998-03-30  Hrvoje Niksic  <hniksic@srce.hr>
3793
3794         * init.c (cmd_permissions): New function.
3795
3796 1998-03-30  Hrvoje Niksic  <hniksic@srce.hr>
3797
3798         * version.c: Wget 1.5-b12 is released.
3799
3800 1998-03-30  Hrvoje Niksic  <hniksic@srce.hr>
3801
3802         * init.c (commands): Renamed `numtries' to `tries'.
3803         (cmd_spec_debug): Removed.
3804         (home_dir): Under Windows, return `C:\' if HOME is undefined.
3805
3806 1998-03-29  Hrvoje Niksic  <hniksic@srce.hr>
3807
3808         * config.h.in: Define _XOPEN_SOURCE.
3809
3810         * init.c (check_user_specified_header): New function.
3811         (cmd_spec_header): Use it.
3812         (cmd_spec_useragent): New function.
3813
3814 1998-03-29  Hrvoje Niksic  <hniksic@srce.hr>
3815
3816         * version.c: Wget 1.5-b11 is released.
3817
3818 1998-03-28  Hrvoje Niksic  <hniksic@srce.hr>
3819
3820         * wget.h: Include <libintl.h> only if NLS is enabled.
3821
3822 1998-03-26  Hrvoje Niksic  <hniksic@srce.hr>
3823
3824         * options.h (struct options): Made `wait' a long.
3825         (struct options): Ditto for `timeout'.
3826
3827 1998-03-19  Hrvoje Niksic  <hniksic@srce.hr>
3828
3829         * utils.c (exists): Renamed to file_exists_p.
3830         (file_exists_p): Use access() if available.
3831
3832 1998-03-17  Hrvoje Niksic  <hniksic@srce.hr>
3833
3834         * utils.c (memfatal): Set save_log_p to 0 to avoid potential
3835         infloop.
3836
3837         * log.c: do_logging -> save_log_p.
3838
3839         * config.h.in: Added template for HAVE_VSNPRINTF.
3840
3841 1998-03-16  Hrvoje Niksic  <hniksic@srce.hr>
3842
3843         * init.c: Ditto.
3844
3845         * http.c: Protect declaration against non-ANSI compiler.
3846
3847         * log.c (logvprintf): Use vsnprintf() if available.
3848
3849         * getopt.c (main): Don't translate test stuff.
3850
3851 1998-03-16  Hrvoje Niksic  <hniksic@srce.hr>
3852
3853         * version.c: Wget 1.5-b10 is released.
3854
3855 1998-03-11  Hrvoje Niksic  <hniksic@srce.hr>
3856
3857         * ftp.c (getftp): Don't translate "CWD %s".
3858
3859         * wget.h (GCC_FORMAT_ATTR): Renamed from FORMAT_ATTR.
3860
3861 1998-03-07  Hrvoje Niksic  <hniksic@srce.hr>
3862
3863         * ftp-opie.c (btoe): Use memcpy() instead of strncat().
3864
3865         * log.c (logputs): New function.
3866         (logvprintf): Renamed from vlogmsg; use logputs().
3867
3868         * retr.c (show_progress): Print `[100%]' when the retrieval is
3869         finished.
3870
3871         * init.c (run_wgetrc): Use FILE, not PATH.
3872         (wgetrc_file_name): Ditto.
3873
3874 1998-03-07  Tim Adam  <tma@osa.com.au>
3875
3876         * recur.c (parse_robots): Correctly reset `entries' on empty
3877         disallow.
3878
3879 1998-03-07  Hrvoje Niksic  <hniksic@srce.hr>
3880
3881         * init.c (cmd_spec_debug): Use cmd_boolean().
3882
3883 1998-02-23  Hrvoje Niksic  <hniksic@srce.hr>
3884
3885         * http.c (gethttp): Create proxy-authorization correctly.
3886
3887 1998-02-22  Hrvoje Niksic  <hniksic@srce.hr>
3888
3889         * md5.c: Ditto.
3890
3891         * getopt.c: Use ANSI function definitions.
3892
3893         * ftp-opie.c: New file.
3894
3895         * options.h: Don't redefine EXTERN.
3896
3897         * init.c: Sort it correctly.
3898
3899 1998-02-22  Hrvoje Niksic  <hniksic@srce.hr>
3900
3901         * version.c: Wget 1.5-b9 is released.
3902
3903 1998-02-22  Hrvoje Niksic  <hniksic@srce.hr>
3904
3905         * recur.c (recursive_retrieve): Reset `first_time'.
3906
3907         * ftp.c (getftp): Added `default' clause to switches of uerr_t.
3908
3909         * rbuf.c (rbuf_peek): Simplified.
3910         (rbuf_flush): Use MINVAL.
3911
3912         * wget.h (MINVAL): Moved from url.h.
3913
3914         * rbuf.h (RBUF_FD): New macro.
3915
3916         * url.c (add_url): Add to the head of the list.
3917
3918         * ftp.c (ftp_retrieve_list): Set the permissions to downloaded
3919         file.
3920         (getftp): Set the default permissions to 0600.
3921
3922 1998-02-21  Hrvoje Niksic  <hniksic@srce.hr>
3923
3924         * url.c (get_urls_html): Ditto.
3925         (convert_links): Ditto.
3926
3927         * recur.c (parse_robots): Ditto.
3928
3929         * html.c (ftp_index): Ditto.
3930
3931         * ftp-ls.c (ftp_parse_unix_ls): Open file as binary.
3932
3933         * init.c (defaults): Initialize `opt' to zero via memset.
3934
3935         * http.c (digest_authentication_encode): goto considered harmful.
3936
3937 1998-02-19  Hrvoje Niksic  <hniksic@srce.hr>
3938
3939         * ftp.c (delelement): Simplify and fix leak.
3940
3941 1998-02-18  Hrvoje Niksic  <hniksic@srce.hr>
3942
3943         * http.c (dump_hash): Use HEXD2ASC instead of home-grown stuff.
3944
3945         * url.h (HEXD2ASC): Removed warning.
3946
3947         * init.c (comind): Use binary search.
3948         (commands): Reorganized.
3949         (setval): Ditto.
3950         (cmd_boolean): New function.
3951         (cmd_number): Ditto.
3952         (cmd_number_inf): Ditto.
3953         (cmd_string): Ditto.
3954         (cmd_vector): Ditto.
3955         (cmd_directory_vector): Ditto.
3956         (cmd_bytes): Ditto.
3957         (cmd_time): Ditto.
3958         (cmd_spec_debug): Ditto.
3959         (cmd_spec_dirmode): Ditto.
3960         (cmd_spec_dirstruct): Ditto.
3961         (cmd_spec_dotstyle): Ditto.
3962         (cmd_spec_header): Ditto.
3963         (cmd_spec_htmlify): Ditto.
3964         (cmd_spec_mirror): Ditto.
3965         (cmd_spec_outputdocument): Ditto.
3966         (cmd_spec_recursive): Ditto.
3967         (settime): Merged with cmd_time().
3968         (setbytes): Merged with cmd_bytes().
3969         (setonoff): Merged with cmd_boolean().
3970         (onoff): Ditto.
3971
3972 1998-02-17  Hrvoje Niksic  <hniksic@srce.hr>
3973
3974         * Makefile.in (distclean): Remove `config.h'.
3975
3976 1998-02-17  Hrvoje Niksic  <hniksic@srce.hr>
3977
3978         * version.c: Wget 1.5-b8 is released.
3979
3980 1998-02-17  Hrvoje Niksic  <hniksic@srce.hr>
3981
3982         * http.c (digest_authentication_encode): New function.
3983         (create_authorization_line): Use it.
3984         (dump_hash): New function.
3985         (digest_authentication_encode): Use it.
3986
3987         * fnmatch.c: Renamed from `mtch.c'.
3988
3989 1998-02-15  Karl Eichwalder  <ke@suse.de>
3990
3991         * main.c (main): Tag "Written by..." string as translatable.
3992
3993 1998-02-15  Hrvoje Niksic  <hniksic@srce.hr>
3994
3995         * wget.h (FREE_MAYBE): New macro.
3996
3997         * http.c (create_authorization_line): Don't use ANSI C string
3998         concatenation feature.
3999         (basic_authentication_encode): Use alloca() for temporary
4000         variables.
4001
4002         * recur.h: Ditto.
4003
4004         * http.c: Ditto.
4005
4006         * headers.h: Ditto.
4007
4008         * ftp-basic.c: Protect declaration against non-ANSI compiler.
4009
4010         * http.c (create_authorization_line): Cast `unsigned char *' to
4011         `char *' for sprintf, to shut up the noisy Digital Unix cc.
4012
4013 1998-02-15  Hrvoje Niksic  <hniksic@srce.hr>
4014
4015         * version.c: Wget 1.5-b7 is released.
4016
4017 1998-02-15  Hrvoje Niksic  <hniksic@srce.hr>
4018
4019         * cmpt.c (strstr): Synched with glibc-2.0.6.
4020
4021         * ftp-basic.c (calculate_skey_response): Ditto.
4022         (calculate_skey_response): Use alloca().
4023
4024         * http.c (create_authorization_line): Work with FSF's version of
4025         md5.c.
4026
4027         * md5.c: New file, from GNU libc.
4028
4029 1998-02-14  Hrvoje Niksic  <hniksic@srce.hr>
4030
4031         * url.h (URL_CLEANSE): Name the temporary variable more carefully.
4032
4033 1998-02-13  Hrvoje Niksic  <hniksic@srce.hr>
4034
4035         * http.c (basic_authentication_encode): New function, instead of
4036         the macro.
4037
4038 1998-02-13  Junio Hamano  <junio@twinsun.com>
4039
4040         * http.c: Add HTTP-DA support.
4041         * ftp-basic.c: Add Opie/S-key support.
4042         * config.h.in, Makefile.in: Add HTTP-DA and Opie/S-key support.
4043         * md5.c, md5.h: New files.
4044
4045 1998-02-13  Hrvoje Niksic  <hniksic@srce.hr>
4046
4047         * http.c (http_process_range): Renamed from hprocrange().
4048         (http_process_range): Parse the whole header.
4049
4050         * headers.c: New file.
4051         (header_process): New function.
4052         (header_get): Renamed from fetch_next_header.
4053
4054         * all: Include utils.h only where necessary.
4055
4056         * wget.h: Declare xmalloc(), xrealloc() and xstrdup() here.
4057
4058         * wget.h: Add provisions for dmalloc.
4059
4060 1998-02-12  Hrvoje Niksic  <hniksic@srce.hr>
4061
4062         * version.c: Wget 1.5-b6 is released.
4063
4064 1998-02-12  Hrvoje Niksic  <hniksic@srce.hr>
4065
4066         * ftp.c (ftp_loop): Determine `filename' more precisely.
4067
4068         * init.c (setval): Don't set `opt.quiet' if output-document is
4069         `-'.
4070
4071         * log.c (log_init): Print to STDERR instead of STDOUT.
4072         (vlogmsg): Use STDERR by default.
4073         (logflush): Ditto.
4074
4075 1998-02-11  Simon Josefsson  <jas@pdc.kth.se>
4076
4077         * host.c: Use addr_in again.
4078
4079 1998-02-08  Karl Eichwalder  <karl@suse.de>
4080
4081         * http.c (gethttp): Fixed typo.
4082
4083 1998-02-08  Hrvoje Niksic  <hniksic@srce.hr>
4084
4085         * version.c: Wget 1.5-b5 is released.
4086
4087 1998-02-08  Hrvoje Niksic  <hniksic@srce.hr>
4088
4089         * retr.c (show_progress): Use it.
4090
4091         * log.c (logflush): New function.
4092
4093         * wget.h: Utilize __attribute__ if on gcc.
4094
4095 1998-02-07  Hrvoje Niksic  <hniksic@srce.hr>
4096
4097         * http.c (base64_encode_line): New argument LENGTH.
4098         (BASIC_AUTHENTICATION_ENCODE): Use it.
4099         (BASIC_AUTHENTICATION_ENCODE): Take length of HEADER into account.
4100
4101         * main.c (main): Fixed fprintf() format mismatch.
4102
4103 1998-02-06  Hrvoje Niksic  <hniksic@srce.hr>
4104
4105         * version.c: Wget 1.5-b4 is released.
4106
4107 1998-02-03  Simon Josefsson  <jas@pdc.kth.se>
4108
4109         * host.c: use sockaddr_in instead of addr_in.
4110
4111 1998-02-04  Hrvoje Niksic  <hniksic@srce.hr>
4112
4113         * init.c (cleanup): Use it.
4114
4115         * recur.c (recursive_cleanup): New function.
4116
4117         * retr.c (retrieve_from_file): Ditto.
4118
4119         * main.c (main): Use it.
4120
4121         * recur.c (recursive_reset): New function.
4122
4123         * retr.c (retrieve_from_file): Ditto.
4124
4125         * main.c (main): Simplify call to recursive_retrieve().
4126
4127         * recur.c (recursive_retrieve): Removed FLAGS argument.
4128
4129         * http.c (gethttp): Changed call to iwrite().
4130
4131 1998-02-03  Hrvoje Niksic  <hniksic@srce.hr>
4132
4133         * url.c (get_urls_html): Ditto.
4134         (free_urlpos): Ditto.
4135         (mkstruct): Ditto.
4136         (construct): Ditto.
4137
4138         * retr.c (retrieve_url): Move declaration of local variables to
4139         smaller scope.
4140
4141         * url.c (urlproto): Use it.
4142         (parseurl): Ditto.
4143         (str_url): Ditto.
4144         (get_urls_html): Ditto.
4145
4146         * utils.h (ARRAY_SIZE): New macro.
4147
4148         * url.c (proto): Moved from url.h.
4149
4150         * url.h (URL_CLEANSE): Reformatted.
4151         (USE_PROXY_P): Renamed from USE_PROXY.
4152
4153         * ftp-basic.c: Adjust to the new interface of iwrite().
4154
4155         * ftp-basic.c (ftp_port): Use alloca().
4156
4157 1998-02-03  Hrvoje Niksic  <hniksic@srce.hr>
4158
4159         * version.c: Wget 1.5-b3 is released.
4160
4161         * host.c (ftp_getaddress): Don't print to stderr directly.
4162
4163         * init.c (setbytes): Support `g' for gigabytes.
4164         (cmdtype): New specification CTIME.
4165         (setval): Use it with settime().
4166         (commands): Use it for WAIT and TIMEOUT.
4167
4168 1998-02-02  Hrvoje Niksic  <hniksic@srce.hr>
4169
4170         * http.c (BASIC_AUTHENTICATION_ENCODE): New macro.
4171         (gethttp): Use it.
4172
4173         * utils.c (unique_name_1): Moved from url.c.
4174         (unique_name): Ditto.
4175
4176         * url.c (url_filename): Ditto.
4177
4178         * log.c (redirect_output): Changed call to unique_name().
4179
4180         * url.c (unique_name_1): Renamed from unique_name().
4181         (unique_name): Changed interface.
4182
4183         * init.c (enum cmdid): Moved from init.h.
4184         (cmdtype): Ditto.
4185         (struct cmd): Ditto.
4186
4187         * main.c (main): Use it.
4188         (main): Moved `--backups' to not have a short option.
4189
4190         * options.h (struct options): New member BACKGROUND.
4191
4192         * main.c (print_help): Rearranged.
4193         (main): New long options for -n* short options: --no-directories,
4194         --no-host-directories, --non-verbose, --no-host-lookup and
4195         --dont-remove-listing.
4196
4197 1998-02-01  Hrvoje Niksic  <hniksic@srce.hr>
4198
4199         * main.c (main): Use log_close().
4200
4201         * log.c: New variable LOGFP.
4202         (vlogmsg): Use it.
4203         (redirect_output): Don't open /dev/null; set LOGFP to stdin
4204         instead.
4205         (log_close): New function.
4206
4207         * options.h (struct options): Removed LFILE.
4208
4209         * log.c (log_enable): Removed.
4210
4211         * main.c (main): Use it.
4212
4213         * log.c (log_init): New function.
4214
4215         * url.c (get_urls_html): Removed needless assignment to BASE.
4216
4217         * host.c (add_hlist): Don't set CMP needlessly.
4218
4219         * utils.c (match_backwards): Ditto.
4220         (in_acclist): Ditto.
4221
4222         * url.c (findurl): Ditto.
4223
4224         * netrc.c (parse_netrc): Ditto.
4225
4226         * log.c (log_dump): Ditto.
4227
4228         * html.c (html_quote_string): Ditto.
4229
4230         * ftp-basic.c (ftp_request): Made static.
4231
4232         * connect.c: Made global variables static.
4233
4234         * url.c (construct): Ditto.
4235
4236         * init.c (init_path): Avoid assignment inside `if'-condition.
4237
4238         * ftp.c: Don't include in.h or winsock.h.
4239
4240         * ftp.c (ftp_loop): Use SZ.
4241
4242         * connect.c (bindport): Cast &addrlen to int *.
4243         (conaddr): Ditto.
4244
4245         * init.c (initialize): Don't use SYSTEM_WGETRC unconditionally.
4246
4247 1998-01-31  Hrvoje Niksic  <hniksic@srce.hr>
4248
4249         * ftp.c (getftp): Initialize opt.ftp_pass here.
4250         (ftp_retrieve_dirs): Use alloca().
4251
4252         * init.c (defaults): Don't initialize opt.ftp_pass.
4253
4254         * sysdep.h (S_ISLNK): Declare for OS/2; ditto for lstat.
4255         From Ivan F. Martinez <ivanfm@ecodigit.com.br>.
4256
4257 1998-01-31  Hrvoje Niksic  <hniksic@srce.hr>
4258
4259         * recur.c (parse_robots): Check for comments more correctly.
4260
4261         * host.c (ftp_getaddress): Use STRDUP_ALLOCA.
4262         (ftp_getaddress): Add diagnostics when reverse-lookup yields only
4263         hostname.
4264
4265 1998-01-31  Hrvoje Niksic  <hniksic@srce.hr>
4266
4267         * version.c: Wget 1.5-b2 is released.
4268
4269         * netrc.c (NETRC_FILE_NAME): Moved from netrc.h.
4270
4271         * utils.c (proclist): Pass FNM_PATHNAME to fnmatch().
4272
4273         * ftp-basic.c (ftp_pasv): Avoid unnecessary casting to unsigned
4274         char.
4275
4276         * log.c: Don't attempt to hide arguments from ansi2knr.
4277
4278         * cmpt.c: Synched strptime() and mktime() with glibc-2.0.6.
4279
4280         * ansi2knr.c: Use a later version, from fileutils-3.16l alpha.
4281
4282         * ftp.c (getftp): Ditto.
4283
4284         * http.c (gethttp): Use it.
4285
4286         * retr.c (get_contents): New argument EXPECTED; pass it to
4287         show_progress().
4288         (show_progress): New argument EXPECTED; use it to display
4289         percentages.
4290
4291         * init.c (setval): Ditto.
4292
4293         * http.c (gethttp): Ditto.
4294         (http_loop): Ditto.
4295
4296         * ftp.c (getftp): Ditto.
4297         (ftp_loop_internal): Ditto.
4298
4299         * ftp-ls.c (ftp_parse_unix_ls): Use abort() instead of assert(0).
4300
4301         * sysdep.h (CLOSE): Simplify; use DEBUGP.
4302
4303         * netrc.c (search_netrc): Use alloca().
4304
4305         * init.c (defaults): Initialize no_flush.
4306
4307         * log.c (vlogmsg): Don't flush if no_flush.
4308
4309         * options.h (struct options): New variable no_flush.
4310
4311         * main.c (main): Don't play games with buffering.
4312
4313         * log.c (vlogmsg): Flush the output after every message.
4314
4315 1998-01-31  Hrvoje Niksic  <hniksic@srce.hr>
4316
4317         * init.c (parse_line): Ditto.
4318
4319         * url.c (get_urls_html): Ditto.
4320
4321         * main.c (main): Don't cast to unsigned char.
4322
4323         * init.c (run_wgetrc): Don't cast to unsigned char.
4324         (parse_line): Accept char instead of unsigned char.
4325
4326         * html.c (htmlfindurl): Use char instead of unsigned char.
4327
4328         * all: Use them.
4329
4330         * sysdep.h: Add wrappers to ctype macros to make them
4331         eight-bit-clean:
4332
4333 1998-01-30  Hrvoje Niksic  <hniksic@srce.hr>
4334
4335         * html.c (htmlfindurl): Download <img lowsrc=...>
4336
4337         * main.c (main): Ignore SIGPIPE.
4338
4339         * connect.c (select_fd): New argument WRITEP.
4340         (iwrite): Call select_fd().
4341
4342 1997-02-27  Fila Kolodny <fila@ibi.com>
4343
4344         * ftp.c (ftp_retrieve_list): If retrieving symlink and the proper
4345         one already exists, just skip it.
4346
4347 1998-01-30  Hrvoje Niksic  <hniksic@srce.hr>
4348
4349         * http.c (gethttp): Cosmetic changes.
4350
4351         * http.c (check_end): Allow `+D...' instead of `GMT'.
4352         From Fabrizio Pollastri <pollastri@cstv.to.cnr.it>.
4353
4354         * url.c (process_ftp_type): New function.
4355         (parseurl): Use it.
4356
4357         * connect.c (iwrite): Allow writing in a few chunks.
4358         (bindport): Made SRV static, so addr can point to it.
4359         (select_fd): Removed HPUX kludge.
4360
4361         * host.c (free_hlist): Incorporated into clean_hosts().
4362
4363 1998-01-29  Hrvoje Niksic  <hniksic@srce.hr>
4364
4365         * host.c (hlist): Made static.
4366         (search_address): Cosmetic change.
4367
4368 1998-01-29  Hrvoje Niksic  <hniksic@srce.hr>
4369
4370         * version.c: Wget v1.5-b1 is released.
4371
4372         * http.c (hgetlen): Use sizeof() to get the header length.
4373         (hgetrange): Ditto.
4374         (hgettype): Ditto.
4375         (hgetlocation): Ditto.
4376         (hgetmodified): Ditto.
4377         (haccepts_none): Ditto.
4378
4379         * main.c (main): Updated `--version' and `--help' output, as per
4380         Francois Pinard's suggestions.
4381
4382         * main.c: Include locale.h; call setlocale(), bindtextdomain() and 
4383         textdomain().
4384
4385         * config.h.in: Define stubs for I18N3.
4386
4387         * wget.h: Include libintl.h.
4388
4389 1998-01-28  Hrvoje Niksic  <hniksic@srce.hr>
4390
4391         * url.c (mkstruct): Check for opt.cut_dirs.
4392         (mkstruct): alloca()-te more, xmalloc() less.
4393
4394         * utils.c (load_file): Check for ferror().
4395
4396         * url.c (get_urls_file): Close only the files we opened.
4397         (get_urls_html): Ditto.
4398         (count_slashes): New function.
4399
4400         * http.h: Removed.
4401
4402         * http.c (gethttp): Respect username and password provided by
4403         proxy URL.
4404         (base64_encode_line): Write into an existing buffer instead of
4405         malloc-ing a new one.
4406         (struct http_stat): Moved from http.h
4407
4408         * retr.c (retrieve_url): Free SUF.
4409
4410         * all: Removed lots of unnecessary .h dependencies.
4411
4412         * html.c (global_state): Made static.
4413
4414         * utils.h (ALLOCA_ARRAY): New macro.
4415
4416         * main.c (main): New option `--cut-dirs'.
4417
4418         * url.c (construct): Use alloca() for T.
4419
4420         * utils.c (mkdirhier): Use STRDUP_ALLOCA.
4421
4422         * host.c (_host_t): Moved from host.h.
4423         (struct host): Renamed from _host_t.
4424         (store_hostaddress): Use STRDUP_ALLOCA for INET_S.
4425         (realhost): Ditto.
4426
4427         * host.h: Don't include url.h.
4428
4429         * ftp.c (LIST_FILENAME): Moved from ftp.h.
4430
4431         * init.c (DEFAULT_FTP_ACCT): Moved from ftp.h.
4432
4433         * main.c (main): Enable log if the output goes to a TTY.
4434
4435         * connect.h: Removed unused constant `BACKLOG'.
4436
4437         * config.h.in: Check for isatty().
4438
4439         * Makefile.in (LINK): Use CFLAGS when linking.
4440
4441 1998-01-27  Hrvoje Niksic  <hniksic@srce.hr>
4442
4443         * mswindows.c (ws_hangup): Use redirect_output().
4444
4445         * main.c (redirect_output_signal): New function; use
4446         redirect_output().
4447
4448         * log.c (redirect_output): New function, based on hangup(), which
4449         is deleted.
4450
4451         * log.c (vlogmsg): New function.
4452
4453         * wget.h (DEBUGP): Use debug_logmsg().
4454
4455         * main.c (hangup): Use it.
4456
4457         * log.c (log_dump): New function.
4458
4459         * utils.h (DO_REALLOC): Use `long' for various sizes.
4460
4461         * http.c (hskip_lws): Use `while', for clarity.
4462         (HTTP_DYNAMIC_LINE_BUFFER): New constant.
4463         (fetch_next_header): Use it instead of DYNAMIC_LINE_BUFFER.
4464
4465         * ftp-basic.c (FTP_DYNAMIC_LINE_BUFFER): New constant.
4466         (ftp_response): Use it instead of DYNAMIC_LINE_BUFFER.
4467
4468         * utils.c (DYNAMIC_LINE_BUFFER): Moved from utils.c.
4469         (LEGIBLE_SEPARATOR): Ditto.
4470         (FILE_BUFFER_SIZE): Ditto.
4471
4472         * retr.c (BUFFER_SIZE): Moved from retr.h.
4473
4474         * log.c: New file.
4475         (logmsg): Moved from utils.c.
4476         (debug_logmsg): New function.
4477
4478         * mswindows.h: Include it here.
4479
4480         * init.c: Ditto.
4481
4482         * utils.c: Don't include <windows.h>.
4483
4484 1998-01-25  Hrvoje Niksic  <hniksic@srce.hr>
4485
4486         * host.c (ftp_getaddress): Ditto.
4487
4488         * main.c (main): Use it.
4489
4490         * utils.h (STRDUP_ALLOCA): New macro.
4491
4492         * init.c: Prepend `wget: ' to error messages printed on stderr.
4493
4494         * utils.c (mkdirhier): Renamed from mymkdir.
4495         (touch): Renamed from my_touch.
4496         (pwd_cuserid): Renamed from my_cuserid().
4497
4498 1998-01-24  Andy Eskilsson  <andy.eskilsson@telelogic.se>
4499
4500         * utils.c (accdir): Process wildcards.
4501         (proclist): New function.
4502         (accdir): Use it to avoid code repetition.
4503
4504 1998-01-24  Hrvoje Niksic  <hniksic@srce.hr>
4505
4506         * recur.c (parse_robots): Respect opt.useragent; use alloca().
4507
4508         * http.c (gethttp): Construct useragent accordingly.
4509
4510         * version.c: Changed version string to numbers-only.
4511
4512         * main.c (print_help): List all the options.
4513
4514         * mswindows.c (windows_main_junk): Initialize argv0 here.
4515
4516 1998-01-24  Karl Heuer  <kwzh@gnu.org>
4517
4518         * netrc.c (search_netrc): Initialize `l' only after processing
4519         netrc.
4520
4521         * main.c (main): Don't trap SIGHUP if it's being ignored.
4522
4523 1998-01-24  Hrvoje Niksic  <hniksic@srce.hr>
4524
4525         * all: Use logmsg().
4526
4527         * utils.c (time_str): Moved from retr.c.
4528         (logmsg): New function.
4529         (logmsg_noflush): Ditto.
4530
4531         * rbuf.c: New file, moved buf_* functions here.
4532
4533         * ftp.c (ftp_expected_bytes): Moved from ftp-basic.c.
4534
4535         * ftp-basic.c (ftp_rest): Use prnum().
4536
4537         * ftp-basic.c: Ditto.
4538
4539         * ftp.c: Use the new reading functions and macros.
4540
4541         * retr.c (buf_initialize): New function.
4542         (buf_initialized_p): Ditto.
4543         (buf_uninitialize): Ditto.
4544         (buf_fd): Ditto.
4545
4546         * http.c (fetch_next_header): Use the BUF_READCHAR macro for
4547         efficiency.
4548         (gethttp): Use alloca() where appropriate.
4549
4550         * retr.c (buf_readchar): Use it.
4551         (buf_peek): Use rstreams.
4552
4553         * retr.h (BUF_READCHAR): New macro.
4554
4555         * init.c (home_dir): Rewritten for clarity.
4556         (init_path): Ditto.
4557
4558         * mswindows.c (ws_backgnd): Made static.
4559         (read_registry): Ditto.
4560         (ws_cleanup): Ditto.
4561         (ws_handler): Ditto.
4562
4563 1998-01-23  Hrvoje Niksic  <hniksic@srce.hr>
4564
4565         * alloca.c: New file.
4566
4567         * Makefile.in (ALLOCA): Define.
4568
4569         * mswindows.c (ws_help): Constify.
4570         (ws_help): Use alloca.
4571
4572         * mswindows.c: Reformat.
4573
4574         * all: Added _(...) annotations for I18N snarfing and translation.
4575
4576         * host.c (ftp_getaddress): Nuke SYSINFO.
4577         (ftp_getaddress): Don't use getdomainname().
4578         (ftp_getaddress): Use uname(), where available.
4579
4580         * http.c (gethttp): Protect a stray fprintf().
4581
4582         * init.c (settime): New function.
4583         (setval): Treat WAIT specially, allowing suffixes like `m' for
4584         minutes, etc.
4585
4586 1998-01-21  Hrvoje Niksic  <hniksic@srce.hr>
4587
4588         * url.c (get_urls_html): Use alloca() for TEMP.
4589
4590 1998-01-21  Jordan Mendelson  <jordy@wserv.com>
4591
4592         * url.c (rotate_backups): New function.
4593
4594         * http.c (gethttp): Ditto.
4595
4596         * ftp.c (getftp): Rotate backups.
4597
4598 1997-12-18  Hrvoje Niksic  <hniksic@srce.hr>
4599
4600         * all: Renamed nmalloc(), nrealloc() and nstrdup() to xmalloc(),
4601         xrealloc() and xstrdup().  Use the new functions.
4602
4603         * url.c (decode_string): Made static.
4604         (has_proto): Ditto.
4605         (parse_dir): Ditto.
4606         (parse_uname): Ditto.
4607         (mkstruct): Ditto.
4608         (construct): Ditto.
4609         (construct_relative): Ditto.
4610
4611         * retr.c (show_progress): Made static.
4612
4613         * recur.c (robots_url): Made static.
4614         (retrieve_robots): Ditto.
4615         (parse_robots): Ditto.
4616         (robots_match): Ditto.
4617
4618         * main.h: Removed.
4619
4620         * main.c (printhelp): Made static.
4621         (hangup): Ditto.
4622
4623         * init.c (comind): Made static.
4624         (defaults): Ditto.
4625         (init_path): Ditto.
4626         (run_wgetrc): Ditto.
4627         (onoff): Ditto.
4628         (setonoff): Ditto.
4629         (setnum): Ditto.
4630         (myatoi): Ditto.
4631         (getperms): Ditto.
4632         (setbytes): Ditto.
4633
4634         * http.c (fetch_next_header): Made static.
4635         (hparsestatline): Ditto.
4636         (hskip_lws): Ditto.
4637         (hgetlen): Ditto.
4638         (hgetrange): Ditto.
4639         (hgettype): Ditto.
4640         (hgetlocation): Ditto.
4641         (hgetmodified): Ditto.
4642         (haccepts_none): Ditto.
4643         (gethttp): Ditto.
4644         (base64_encode_line): Ditto.
4645         (mktime_from_utc): Ditto.
4646         (http_atotm): Ditto.
4647
4648         * html.c (idmatch): Made static.
4649
4650         * host.c (search_host): Made static.
4651         (search_address): Ditto.
4652         (free_hlist): Ditto.
4653
4654         * ftp.c (getftp): Made static.
4655         (ftp_loop_internal): Ditto.
4656         (ftp_get_listing): Ditto.
4657         (ftp_retrieve_list): Ditto.
4658         (ftp_retrieve_dirs): Ditto.
4659         (ftp_retrieve_glob): Ditto.
4660         (freefileinfo): Ditto.
4661         (delelement): Ditto.
4662
4663         * ftp-ls.c (symperms): Made static.
4664         (ftp_parse_unix_ls): Ditto.
4665
4666         * connect.c (select_fd): Made static.
4667
4668         * utils.c (xmalloc): Renamed from nmalloc.
4669         (xrealloc): Renamed from nrealloc.
4670         (xstrdup): Renamed from nstrdup.
4671
4672         * getopt.c (exchange): Use alloca.
4673
4674         * mswindows.c (mycuserid): Use strncpy.
4675
4676         * New files mswindows.c, mswindows.h, sysdep.h.  winjunk.c,
4677         systhings.h, windecl.h and winjunk.h removed.
4678
4679         * mswindows.c (sleep): New function.
4680
4681         * utils.c: Include <windows.h> under Windows.
4682
4683 1997-06-12  Darko Budor  <dbudor@zesoi.fer.hr>
4684
4685         * url.h (URL_UNSAFE): Change default under Windows.
4686
4687         * retr.c (retrieve_from_file): Respect opt.delete_after.
4688
4689         * main.c (main): Call ws_help on Windows.
4690
4691         * winjunk.c (windows_main_junk): New function.
4692
4693         * main.c (main): Junk-process argv[0].
4694
4695         * http.c (mktime_from_utc): Return -1 if mktime failed.
4696
4697         * http.c (http_loop): Ditto.
4698
4699         * ftp.c (ftp_loop_internal): Change title on Windows when using a
4700         new URL.
4701
4702         * winjunk.c (getdomainname): Lots of functions.
4703
4704 1997-06-12  Hrvoje Niksic  <hniksic@srce.hr>
4705
4706         * cmpt.c (strptime_internal): Handle years more correctly for
4707         `%y'.
4708
4709 1997-06-09  Mike Thomas <mthomas@reality.ctron.com>
4710
4711         * http.c (gethttp): Allocate enough space for
4712         `Proxy-Authorization' header.
4713
4714 1997-05-10  Hrvoje Niksic  <hniksic@srce.hr>
4715
4716         * version.c: Wget/1.4.5 is released.
4717
4718 1997-05-10  Hrvoje Niksic  <hniksic@srce.hr>
4719
4720         * retr.c (get_contents): Check return value of fwrite more
4721         carefully.
4722
4723 1997-03-30  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
4724
4725         * cmpt.c (strptime_internal) [case 'Y']: Always subtract 1900 from
4726         year, regardless of century.
4727
4728 1997-03-30  Hrvoje Niksic  <hniksic@srce.hr>
4729
4730         * utils.c (isfile): Use `lstat' instead of `stat'.
4731
4732 1997-03-29  Hrvoje Niksic  <hniksic@srce.hr>
4733
4734         * utils.c (numdigit): Use explicit test.
4735
4736 1997-03-21  Hrvoje Niksic  <hniksic@srce.hr>
4737
4738         * http.c (http_loop): Always use `url_filename' to get u->local.
4739
4740 1997-03-20  Hrvoje Niksic  <hniksic@srce.hr>
4741
4742         * url.c: Recognize https.
4743
4744 1997-03-13  Hrvoje Niksic  <hniksic@srce.hr>
4745
4746         * recur.c (recursive_retrieve): Lowercase just the host name.
4747
4748 1997-03-09  Hrvoje Niksic  <hniksic@srce.hr>
4749
4750         * url.c (get_urls_file): Use the correct test.
4751         (get_urls_html): Ditto.
4752
4753 1997-03-07  Hrvoje Niksic  <hniksic@srce.hr>
4754
4755         * connect.c: Reverted addrlen to int.
4756
4757         * init.c (parse_line): Check for -1 instead of NONE.
4758
4759         * version.c: Changed version to 1.4.5.
4760
4761 1997-02-17  Hrvoje Niksic  <hniksic@srce.hr>
4762
4763         * init.c: New option netrc.
4764         (initialize): Don't parse .netrc.
4765
4766         * cmpt.c (recursive): Return rp.
4767         (strptime_internal): Match the long strings first, the abbreviated
4768         second.
4769
4770 1997-02-16  Hrvoje Niksic  <hniksic@srce.hr>
4771
4772         * http.c (check_end): New function.
4773         (http_atotm): Use it.
4774  
4775 1997-02-13  gilles Cedoc  <gilles@cedocar.fr>
4776
4777         * http.c (gethttp): Use them.
4778
4779         * init.c: New options proxy_user and proxy_passwd.
4780
4781 1997-02-14  Hrvoje Niksic  <hniksic@srce.hr>
4782
4783         * ftp.c (ftp_retrieve_list): Create links even if not relative.
4784
4785 1997-02-10  Hrvoje Niksic  <hniksic@srce.hr>
4786
4787         * recur.c (recursive_retrieve): Lowercase the host name, if the
4788         URL is not "optimized".
4789
4790         * host.c (realhost): Return l->hostname, even if it matches with
4791         host.
4792
4793 1997-02-10  Marin Purgar  <pmc@asgard.hr>
4794
4795         * connect.c: Make addrlen size_t instead of int.
4796         (conaddr): Ditto.
4797
4798 1997-02-09  Gregor Hoffleit  <flight@mathi.uni-heidelberg.DE>
4799
4800         * systhings.h: Define S_ISLNK on NeXT too.
4801
4802 1997-02-09  Hrvoje Niksic  <hniksic@srce.hr>
4803
4804         * version.c: Released 1.4.3.
4805
4806         * url.c: Futher update to list of protostrings.
4807         (skip_proto): Skip `//' correctly for FTP and HTTP.
4808
4809         * url.c (get_urls_html): Handle bogus `http:' things a little
4810         different.
4811
4812         * main.c (main): Removed `follow-ftp' from `f'.
4813         (main): Dumped the `prefix-files' and `file-prefix' options and
4814         features; old and bogus.
4815         (main): Exit on failed setval() in `-e'.
4816
4817         * http.c (fetch_next_header): Use it to detect header continuation
4818         correctly.
4819
4820         * retr.c (buf_peek): New function.
4821
4822 1997-02-08  Hrvoje Niksic  <hniksic@srce.hr>
4823
4824         * wget.h: Include time.h and stuff.
4825
4826 1997-02-08  Roger Beeman  <beeman@cisco.com>
4827
4828         * ftp.c: Include <time.h>
4829
4830 1997-02-07  Hrvoje Niksic  <hniksic@srce.hr>
4831
4832         * url.c (findurl): Would read over buffer limits.
4833
4834 1997-02-06  Hrvoje Niksic  <hniksic@srce.hr>
4835
4836         * ftp-ls.c (ftp_parse_unix_ls): Allow spaces in file names.
4837
4838 1997-02-05  Hrvoje Niksic  <hniksic@srce.hr>
4839
4840         * http.c (http_atotm): Initialize tm.is_dst.
4841
4842 1997-02-02  Hrvoje Niksic  <hniksic@srce.hr>
4843
4844         * http.c (gethttp): Don't print the number of retrieved headers.
4845
4846         * main.c (main): New option `--no-clobber', alias for `-nc'.
4847
4848         * url.c: Recognize `https://'.
4849
4850 1997-02-01  Hrvoje Niksic  <hniksic@srce.hr>
4851
4852         * host.c (herrmsg): Don't use h_errno.
4853
4854 1997-01-30  Hrvoje Niksic  <hniksic@srce.hr>
4855
4856         * host.c (accept_domain): Use it.
4857
4858         * main.c (main): New option `--exclude-domains'.
4859
4860         * retr.c (retrieve_url): Use it.
4861         (retrieve_url): Bail out when an URL is redirecting to itself.
4862
4863         * url.c (url_equal): New function.
4864
4865 1997-01-29  Hrvoje Niksic  <hniksic@srce.hr>
4866
4867         * connect.c: Include arpa/inet.h instead of arpa/nameser.h.
4868
4869         * http.c (mk_utc_time): New function.
4870         (http_atotm): Use it; handle time zones correctly.
4871
4872 1997-01-28  Hrvoje Niksic  <hniksic@srce.hr>
4873
4874         * http.c: Ditto.
4875
4876         * ftp-basic.c: Use it instead of WRITE.
4877
4878         * connect.c (iwrite): New function.
4879
4880 1997-01-27  Hrvoje Niksic  <hniksic@srce.hr>
4881
4882         * cmpt.c (mktime): New function.
4883
4884         * netrc.c: Include <sys/types.h>.
4885
4886         * main.c (main): Wouldn't recognize --spider.
4887
4888         * retr.c (rate): Use `B', `KB' and `MB'.
4889         (reset_timer,elapsed_time): Moved from utils.c.
4890
4891         * ftp.c (ftp_retrieve_list): Ditto.
4892
4893         * http.c (http_loop): Don't touch the file if opt.dfp.
4894
4895 1997-01-24  Hrvoje Niksic  <hniksic@srce.hr>
4896
4897         * cmpt.c: New file.
4898
4899         * ftp.c (ftp_retrieve_glob): New argument semantics.
4900         (ftp_retrieve_dirs): Use it.
4901         (ftp_loop): Ditto.
4902
4903         * html.c (htmlfindurl): Recognize `'' as the quote char.
4904
4905 1997-01-23  Hrvoje Niksic  <hniksic@srce.hr>
4906
4907         * ftp.c (ftp_loop_internal): Use it.
4908
4909         * utils.c (remove_link): New function.
4910
4911 1997-01-22  Hrvoje Niksic  <hniksic@srce.hr>
4912
4913         * retr.c (retrieve_url): Require STRICT redirection URL.
4914
4915         * url.c (parseurl): New argument STRICT.
4916
4917         * http.c (hparsestatline): Be a little-bit less strict about
4918         status line format.
4919
4920 1997-01-21  Hrvoje Niksic  <hniksic@srce.hr>
4921
4922         * http.c (gethttp): Use it.
4923
4924         * main.c (main): Don't use '<digit>' as options.
4925
4926         * init.c: New option ignore_length.
4927
4928         * http.c (gethttp): Ditto.
4929         (http_loop): Check for redirection without Location:.
4930         (gethttp): Don't print Length unless RETROKF.
4931
4932         * ftp.c (getftp): Use it.
4933
4934         * url.c (mkalldirs): New function.
4935
4936         * utils.c (mymkdir): Don't check for existing non-directory.
4937
4938         * url.c (mkstruct): Don't create the directory.
4939
4940 1997-01-20  Hrvoje Niksic  <hniksic@srce.hr>
4941
4942         * init.c (setval): Removed NO_RECURSION checks.
4943
4944 1997-01-19  Hrvoje Niksic  <hniksic@srce.hr>
4945
4946         * version.c: "Released" 1.4.3-pre2.
4947
4948         * recur.c (recursive_retrieve): Bypass host checking only if URL
4949         is ftp AND parent URL is not ftp.
4950
4951         * ftp-basic.c (ftp_request): Print out Turtle Power.
4952
4953         * ftp.c (ftp_loop): Call ftp_retrieve_glob with 0 if there's no
4954         wildcard.
4955         (ftp_retrieve_glob): Call ftp_loop_internal even on empty list, if
4956         not glob.
4957
4958         * http.c (gethttp): Be a little bit smarter about status codes.
4959
4960         * recur.c (recursive_retrieve): Always reset opt.recursive when
4961         dealing with FTP.
4962
4963 1997-01-18  Hrvoje Niksic  <hniksic@srce.hr>
4964
4965         * retr.c (retrieve_url): New variable location_changed; use it for
4966         tests instead of mynewloc.
4967         (retrieve_url): Allow heuristic adding of html.
4968
4969         * url.c (url_filename): Don't use the `%' in Windows file names.
4970
4971         * http.c (http_loop): Always time-stamp the local file.
4972
4973         * http.c (http_loop): Ditto.
4974
4975         * ftp.c (ftp_retrieve_list): Use it.
4976
4977         * utils.c (my_touch): New function.
4978
4979         * ftp.c (ftp_retrieve_list): Use #ifdef HAVE_STRUCT_UTIMBUF
4980         instead of #ifndef NeXT.
4981
4982         * utils.c (strptime): New version, by Ulrich Drepper.
4983
4984 1997-01-17  Hrvoje Niksic  <hniksic@srce.hr>
4985
4986         * http.c (haccepts_none): Renamed from `haccepts_bytes'.
4987         (gethttp): If haccepts_none(), disable ACCEPTRANGES.
4988         (http_loop): Would remove ACCEPTRANGES.
4989
4990         * ftp.c (getftp): Call ftp_list with NULL.
4991
4992 1997-01-15  Hrvoje Niksic  <hniksic@srce.hr>
4993
4994         * html.c (ftp_index): Don't print minutes and seconds if we don't
4995         know them; beautify the output.
4996
4997         * ftp.c (getftp): Don't close the socket on FTPNSFOD.
4998
4999 1997-01-14  Hrvoje Niksic  <hniksic@srce.hr>
5000
5001         * utils.c (strptime): New function.
5002         (strptime): Don't use get_alt_number.
5003         (strptime): Don't use locale.
5004         (match_string): Made it a function.
5005
5006 1997-01-12  Hrvoje Niksic  <hniksic@srce.hr>
5007
5008         * http.c (http_atotm): New function.
5009         (http_loop): Use it.
5010
5011         * atotm.c: Removed from the distribution.
5012
5013         * http.c (base64_encode_line): Rewrite.
5014
5015 1997-01-09  Hrvoje Niksic  <hniksic@srce.hr>
5016
5017         * ftp.c (getftp): Use ftp_expected_bytes; print size.
5018
5019         * ftp-basic.c (ftp_response): Use ftp_last_respline.
5020         (ftp_expected_bytes): New function.
5021
5022         * ftp.c (getftp): Print the unauthoritative file length.
5023
5024         * ftp-ls.c: Renamed from ftp-unix.c.
5025         (ftp_parse_ls): Moved from ftp.c.
5026         (ftp_parse_unix_ls): Recognize seconds in time spec.
5027         (ftp_parse_unix_ls): Recognize year-less dates of the previous
5028         year.
5029
5030 1997-01-08  Hrvoje Niksic  <hniksic@srce.hr>
5031
5032         * ftp-basic.c: Don't declare errno if #defined.
5033
5034         * host.c (ftp_getaddress): Check for sysinfo legally.
5035
5036 1997-01-08  Darko Budor  <dbudor@diana.zems.fer.hr>
5037
5038         * connect.c (iread): Use READ.
5039
5040 1996-12-23  Hrvoje Niksic  <hniksic@srce.hr>
5041
5042         * url.c: Recognize finger, rlogin, tn3270, mid and cid as valid
5043         schemes.
5044
5045 1996-12-22  Hrvoje Niksic  <hniksic@srce.hr>
5046
5047         * host.c (ftp_getaddress): Allow `.' in hostname.
5048
5049 1996-12-26  Darko Budor <dbudor@zems.fer.hr>
5050
5051         * wget.h: READ and WRITE macros for use instead of read and write
5052         on sockets, grep READ *.c, grep WRITE *.c
5053
5054         * wsstartup.c: new file - startup for winsock
5055
5056         * wsstartup.h: new file
5057
5058         * win32decl.h: new file - fixup for <errno.h> and winsock trouble
5059
5060         * configure.bat: Configure utility for MSVC
5061
5062         * src/Makefile.ms,config.h.ms: new files for use with MSVC 4.x
5063
5064 1996-12-22  Hrvoje Niksic  <hniksic@srce.hr>
5065
5066         * version.c: Released 1.4.3-pre.
5067
5068         * utils.c (prnum): Accept long.
5069         (legible): Use prnum().
5070
5071         * connect.c (make_connection): Accept port as short.
5072         (bindport): Ditto.
5073
5074         * http.c (gethttp): Use search_netrc.
5075
5076 1996-12-21  Hrvoje Niksic  <hniksic@srce.hr>
5077
5078         * ftp.c (getftp): Use search_netrc.
5079
5080         * netrc.c (free_netrc): New function.
5081
5082         * init.c (home_dir): New function.
5083
5084         * url.c (convert_links): Allow REL2ABS changes.
5085
5086 1996-12-21  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>
5087
5088         * netrc.c: New file.
5089         (parse_netrc, maybe_add_to_list): New functions.
5090
5091 1996-12-17  Hrvoje Niksic  <hniksic@srce.hr>
5092
5093         * retr.c (retrieve_url): Reset opt.recursion before calling
5094         ftp_loop if it is reached through newloc.
5095
5096         * init.c (run_wgetrc): Print the wgetrc path too, when reporting
5097         error; don't use "Syntax error", since we don't know if it is
5098         really a syntax error.
5099
5100 1996-12-16  Hrvoje Niksic  <hniksic@srce.hr>
5101
5102         * utils.c (acceptable): Extract the filename part of the path.
5103
5104         * recur.c (recursive_retrieve): Call acceptable() with the right
5105         argument; would bug out on wildcards.
5106
5107         * init.c (parse_line): Likewise.
5108
5109         * html.c (htmlfindurl): Cast to char * when calling stuff.
5110
5111 1996-12-15  Hrvoje Niksic  <hniksic@srce.hr>
5112
5113         * ftp.c (getftp): Use ftp_pasv.
5114
5115         * ftp-basic.c (ftp_request): Accept NULL value.
5116         (ftp_pasv): New function.
5117
5118         * options.h (struct options): Add passive FTP option.
5119
5120 1996-12-15  Hrvoje Niksic  <hniksic@srce.hr>
5121
5122         * url.c (parseurl): Debug output.
5123
5124         * utils.c (path_simplify): New one, adapted from bash's
5125         canonicalize_pathname().
5126
5127 1996-12-14  Hrvoje Niksic  <hniksic@srce.hr>
5128
5129         * ftp.c (getftp): Don't discard the buffer.
5130
5131         * retr.c (get_contents): New parameter nobuf.
5132
5133 1996-12-13  Shawn McHorse  <riffraff@txdirect.net>
5134
5135         * html.c (htmlfindurl): Recognize <meta contents="d; URL=...".
5136
5137         * init.c (setval): Strip the trailing slashes on CVECDIR.
5138
5139 1996-12-13  Hrvoje Niksic  <hniksic@srce.hr>
5140
5141         * init.c: Make excludes and includes under CVECDIR instead of
5142         CVEC.
5143
5144 1996-12-13  Shawn McHorse  <riffraff@txdirect.net>
5145
5146         * url.c (get_urls_html): Skip "http:".
5147
5148 1996-12-13  Hrvoje Niksic  <hniksic@srce.hr>
5149
5150         * utils.c (strcasecmp): From glibc.
5151         (strncasecmp): Also.
5152         (strstr): Also.
5153
5154         * url.c: Added javascript: to the list of URLs prefixes.
5155
5156 1996-12-12  Shawn McHorse  <riffraff@txdirect.net>
5157
5158         * recur.c (retrieve_robots): Print the warning message only if
5159         verbose.
5160
5161 1996-12-12  Gregor Hoffleit  <flight@mathi.uni-heidelberg.DE>
5162
5163         * ftp.c (ftp_retrieve_list): Use NeXT old utime interface.
5164
5165 1996-12-12  Hrvoje Niksic  <hniksic@srce.hr>
5166
5167         * systhings.h: New file.
5168
5169         * ../configure.in: Check for utime.h
5170
5171         * ftp.c: Check whether we have unistd.h.
5172
5173 1996-11-27  Hrvoje Niksic  <hniksic@srce.hr>
5174
5175         * recur.c (recursive_retrieve): Send the canonical URL as referer.
5176         (recursive_retrieve): Call get_urls_html with the canonical URL.
5177
5178 1996-12-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5179
5180         * (configure.in, config.h.in, src/Makefile.in, src/*.[ch]): Add
5181         ansi2knr support for compilers which don't support ANSI style
5182         function prototypes and signatures.
5183
5184         * (aclocal.m4, src/ansi2knr.c, src/ansi2knr.1): New files.
5185
5186 1996-11-26  Hrvoje Niksic  <hniksic@srce.hr>
5187
5188         * url.c: Use it; Recognize paths ending with "." and ".." as
5189         directories.
5190         (url_filename): Append .n whenever file exists and could be a
5191         directory.
5192
5193         * url.h (ISDDOT): New macro.
5194
5195         * init.c (parse_line): Use unsigned char.
5196
5197         * url.c (get_urls_html): Cast to unsigned char * when calling
5198         htmlfindurl.
5199
5200         * html.c (htmlfindurl): Use unsigned char.
5201
5202         * version.c: Changed version to 1.4.3.
5203
5204 1996-11-25  Hrvoje Niksic  <hniksic@srce.hr>
5205
5206         * version.c: Released 1.4.2.
5207
5208         * ftp.c (getftp): Simplified assertion.
5209         (ftp_loop_internal): Remove symlink before downloading.
5210         (ftp_retrieve_list): Unlink the symlink name before attempting to
5211         create a symlink!
5212
5213         * options.h (struct options): Renamed print_server_response to
5214         server_response.
5215
5216         * ftp.c (rel_constr): Removed.
5217         (ftp_retrieve_list): Don't use it.
5218         (ftp_retrieve_list): Use opt.retr_symlinks.
5219
5220 1996-11-24  Hrvoje Niksic  <hniksic@srce.hr>
5221
5222         * main.c (main): New option retr_symlinks.
5223
5224         * url.c (convert_links): Print verbose message.
5225
5226 1996-11-24  Hrvoje Niksic  <hniksic@srce.hr>
5227
5228         * http.c (http_loop): Reset newloc in the beginning of function;
5229         would cause FMR in retrieve_url.
5230
5231 1996-11-23  Hrvoje Niksic  <hniksic@srce.hr>
5232
5233         * recur.c (convert_all_links): Find the URL of each HTML document,
5234         and feed it to get_urls_html; would bug out.
5235         (convert_all_links): Check for l2 instead of dl; removed dl.
5236
5237         * url.c (convert_links): Don't refer to freed newname.
5238
5239         * recur.c (recursive_retrieve): Add this_url to urls_downloaded.
5240
5241         * main.c (main): Print the OS_TYPE in the debug output, too.
5242
5243         * recur.c (recursive_retrieve): Check for opt.delete_after.
5244
5245         * main.c (main): New option delete-after.
5246
5247         * init.c (setval): Cleaned up.
5248
5249 1996-11-21  Hrvoje Niksic  <hniksic@srce.hr>
5250
5251         * Makefile.in (wget): Make `wget' the default target.
5252
5253         * ftp.c (ftp_loop_internal): Move noclobber checking out of the
5254         loop.
5255         (ftp_retrieve_list): Warn about non-matching sizes.
5256
5257         * http.c (http_loop): Made -nc non-dependent on opt.recursive.
5258
5259         * init.c (setnum): Renamed from setnuminf; New argument flags.
5260         (setval): Use it.
5261
5262         * main.c (main): Sorted the options.
5263         (main): New option --wait.
5264
5265 1996-11-21  Shawn McHorse  <riffraff@txdirect.net>
5266
5267         * html.c (htmlfindurl): Reset s->in_quote after getting out of
5268         quotes.
5269
5270 1996-11-20  Hrvoje Niksic  <hniksic@srce.hr>
5271
5272         * version.c: Changed version to 1.4.2.
5273
5274 1996-11-20  Hrvoje Niksic  <hniksic@srce.hr>
5275
5276         * version.c: Released 1.4.1.
5277
5278         * html.c (html_quote_string): New function.
5279         (ftp_index): Use it.
5280         (htmlfindurl): A more gentle ending debug message.
5281
5282         * ftp.c (ftp_loop): Check for opt.htmlify.
5283
5284         * init.c: New command htmlify.
5285
5286         * ftp.c (getftp): Nicer error messages, with `'-encapsulated
5287         strings.
5288         (ftp_loop): Print size of index.html.
5289
5290         * init.c (setval): Implement "styles".
5291
5292         * main.c (main): New option dotstyle.
5293
5294 1996-11-19  Hrvoje Niksic  <hniksic@srce.hr>
5295
5296         * ftp.c (getftp): Close the master socket in case of errors, after
5297         bindport().
5298
5299         * connect.c (bindport): Initialize msock to -1.
5300
5301         * ftp.c (getftp): Initialize dtsock to -1.
5302
5303         * connect.c (closeport): Don't close sock if sock == -1.
5304
5305 1996-11-18  Hrvoje Niksic  <hniksic@srce.hr>
5306
5307         * init.c (setnuminf): Nuked default value -- just leave unchanged.
5308         (setval): Don't send default values.
5309         (defaults): Use DEFAULT_TIMEOUT -- aaargh.
5310
5311         * options.h (struct options): Use long for dot_bytes.
5312
5313         * init.c (setquota): Renamed to setbytes.
5314         (setval): Use setbytes on DOTBYTES.
5315
5316 1996-11-17  Hrvoje Niksic  <hniksic@srce.hr>
5317
5318         * ftp.c (getftp): Initialize con->dltime.
5319
5320         * recur.c (recursive_retrieve): Use same_host instead of
5321         try_robots; simply load robots_txt whenever the host is changed.
5322         (recursive_retrieve): Free forbidden before calling parse_robots.
5323
5324 1996-11-16  Hrvoje Niksic  <hniksic@srce.hr>
5325
5326         * retr.c (show_progress): Use them.
5327
5328         * options.h (struct options): New options dot_bytes, dots_on_line
5329         and dot_spacing.
5330
5331 1996-11-16  Mark Boyns  <boyns@sdsu.edu>
5332
5333         * recur.c (recursive_retrieve): Retrieve directories regardless of
5334         acc/rej rules; check for empty u->file.
5335
5336 1996-11-14  Hrvoje Niksic  <hniksic@srce.hr>
5337
5338         * init.c (setval): Use it.
5339
5340         * utils.c (merge_vecs): New function.
5341
5342         * init.c (setval): Reset the list-type functions when encountering
5343         "".
5344
5345 1996-11-14  Shawn McHorse  <riffraff@txdirect.net>
5346
5347         * recur.c (recursive_retrieve): Use base_url instead of this_url
5348         for no_parent.
5349
5350 1996-11-14  Shawn McHorse  <riffraff@txdirect.net>
5351
5352         * html.c (htmlfindurl): Reset s->in_quote after exiting the quote.
5353
5354 1996-11-13  Hrvoje Niksic  <hniksic@srce.hr>
5355
5356         * utils.c (sepstring): Rewrote; don't use strtok.
5357
5358         * recur.c (recursive_retrieve): Enter assorted this_url to slist
5359         when running the first time.
5360         (retrieve_robots): Warn to ignore errors when robots are loaded.
5361
5362         * utils.c (load_file): Moved from url.c.
5363
5364         * http.c: Made static variables const too in h* functions.
5365
5366         * main.c (main): Renamed --continue-ftp to --continue.
5367
5368         * recur.c (recursive_retrieve): Use it.
5369
5370         * utils.c (frontcmp): New function.
5371
5372         * url.c (accdir): New function.
5373
5374         * html.c (htmlfindurl): Recognize <area href=...>.
5375
5376         * ftp.c (ftp_retrieve_dirs): Implemented opt.includes.
5377
5378         * init.c (setval): Free the existing opt.excludes and
5379         opt.includes, if available.
5380
5381         * main.c (main): New option -I.
5382
5383 1996-11-12  Hrvoje Niksic  <hniksic@srce.hr>
5384
5385         * ftp.c (ftp_retrieve_glob): Do not weed out directories.
5386
5387         * version.c: Changed version to 1.4.1.
5388
5389 1996-11-11  Hrvoje Niksic  <hniksic@srce.hr>
5390
5391         * version.c: Released 1.4.0.
5392
5393 1996-11-10  Hrvoje Niksic  <hniksic@srce.hr>
5394
5395         * main.c (main): Free com and val after parse_line.
5396         (printhelp): Reorder the listing.
5397
5398         * http.c: More robust header parsing.
5399
5400         * http.c: Allow any number of spaces, or no spaces, precede ':'.
5401         (hskip_lws): New function.
5402         (haccepts_bytes): New function.
5403         (gethttp): Use it.
5404
5405         * init.c (setval): Check header sanity.
5406         (setval): Allow resetting of headers.
5407
5408 1996-11-10  Hrvoje Niksic  <hniksic@srce.hr>
5409
5410         * http.c (http_loop): Don't use has_wildcards.
5411
5412         * http.c (gethttp): Free all_headers -- would leak.
5413
5414         * recur.c (recursive_retrieve): Initialize depth to 1 instead of
5415         0 -- this fixes a long-standing bug in -rl.
5416
5417 1996-11-09  Hrvoje Niksic  <hniksic@srce.hr>
5418
5419         * ftp.c: Use -1 as "impossible" value for con->fd.
5420
5421         * url.h (URL_SEPARATOR): Don't treat `*' and `+' as separators.
5422
5423         * init.c (parse_line): Use isalpha.
5424
5425         * ftp-unix.c: Use HAVE_UNISTD_H.
5426
5427         * mtch.c (has_wildcards): Don't match \.
5428
5429         * http.c (http_loop): Warn on HTTP wildcard usage.
5430
5431 1996-11-08  Hrvoje Niksic  <hniksic@srce.hr>
5432
5433         * url.c (url_filename): Do not create numbered suffixes if
5434         opt.noclobber -- would bug out on -nc.
5435
5436 1996-11-07  Hrvoje Niksic  <hniksic@srce.hr>
5437
5438         * recur.c (parse_robots): Don't chuck out the commands without
5439         arguments (`Disallow:<empty>' didn't work).
5440         (parse_robots): Compare versions lowercase.
5441         (parse_robots): Match on base_version, not version_string!
5442         (parse_robots): Handle comments properly.
5443         (parse_robots): Match versions in a sane way.
5444
5445         * init.c: Print nicer error messages.
5446
5447         * version.c: Changed version to 1.4.0.
5448
5449 1996-11-06  Hrvoje Niksic  <hniksic@srce.hr>
5450
5451         * version.c: Released 1.4.0-test2.
5452
5453         * init.c (run_wgetrc): Close fp.
5454
5455         * ftp.c (ftp_retrieve_dirs): Allocate the correct length for
5456         u->dir.
5457
5458 1996-11-06  Hrvoje Niksic  <hniksic@srce.hr>
5459
5460         * init.c (setquota): Allow inf as quota specification.
5461
5462 1996-11-05  Hrvoje Niksic  <hniksic@srce.hr>
5463
5464         * ftp.c (ftp_retrieve_dirs): Return QUOTEXC if quota exceeded.
5465         (ftp_retrieve_glob): Return QUOTEXC on quota exceeded.
5466
5467         * main.c (main): Check for quota by comparison with downloaded
5468         stuff, not from status.
5469
5470         * connect.c (select_fd): Should compile on HPUX without warnings now.
5471
5472         * ftp.c (ftp_get_listing): Check whether ftp_loop_internal
5473         returned RETROK.
5474
5475 1996-11-04  Hrvoje Niksic  <hniksic@srce.hr>
5476
5477         * ftp.c (ftp_retrieve_glob): Print the pattern nicely.
5478         (getftp): Return FTPRETRINT on control connection error.
5479
5480         * html.c (htmlfindurl): Recognize <embed src=...> and
5481         <bgsound src=...>.
5482         (ftp_index): Handle username and password correctly.
5483
5484         * main.c (main): Made `-np' a synonim for --no-parent.
5485
5486 1996-11-02  Hrvoje Niksic  <hniksic@srce.hr>
5487
5488         * ftp.c (ftp_loop): Check for opt.ftp_glob too before calling
5489         ftp_retrieve_glob.
5490
5491         * version.c: Changed version to 1.4.0-test2.
5492
5493 1996-11-02  Hrvoje Niksic  <hniksic@srce.hr>
5494
5495         * version.c: Released 1.4.0-test1.
5496
5497         * url.c (str_url): Don't use sprintf when creating %2F-prefixed
5498         directory.
5499         (convert_links): Removed definition of make_backup.
5500
5501         * http.h: Removed definition of MAX_ERROR_LENGTH.
5502
5503         * host.c (ftp_getaddress): Check for "(none)" domains.
5504
5505         * ftp.c (ftp_retrieve_dirs): Docfix.
5506
5507         * http.c (gethttp): Use ou->referer instead of u->referer.
5508
5509         * retr.c (retrieve_url): Reset u to avoid freeing pointers twice;
5510         this was known to cause coredumps on Linux.
5511
5512         * html.c (ftp_index): Cast the argument to local_time to time_t *.
5513
5514 1996-11-01  Hrvoje Niksic  <hniksic@srce.hr>
5515
5516         * connect.c (select_fd): Use exceptfds -- once and for all.
5517
5518         * retr.c (retrieve_from_file): Free filename after
5519         recursive_retrieve.
5520         (retrieve_from_file): Send RFIRST_TIME to recursive_retrieve on
5521         first-time retrieval.
5522         (retrieve_from_file): Return uerr_t; new argument, count.
5523         (retrieve_from_file): Break on QUOTEXC.
5524
5525         * init.c (setquota): Fixed a bug that caused rejection of
5526         non-postfixed values..
5527
5528 1996-10-30  Hrvoje Niksic  <hniksic@srce.hr>
5529
5530         * version.c: Changed name to wget.
5531
5532         * connect.c (iread): Smarter use of select.
5533         (select_fd): Set errno on timeout.  If not timeout, return 1
5534         instead of 0.
5535
5536 1996-10-29  Hrvoje Niksic  <hniksic@srce.hr>
5537
5538         * ftp.c (ftp_loop_internal): Don't use con->cmd before
5539         establishing it.
5540
5541 1996-10-26  Hrvoje Niksic  <hniksic@srce.hr>
5542
5543         * http.c (gethttp): Send correct referer when using proxy.
5544         (gethttp): Use struct urlinfo ou to access the relevant data; send
5545         correct authorization in all cases.
5546
5547         * host.c (same_host): Use skip_uname to skip username and
5548         password.
5549
5550         * url.c (skip_uname): New function.
5551         (parseurl): Use it.
5552
5553         * host.c (same_host): Do not assume HTTP -- same_host should now
5554         be totally foolproof.
5555
5556         * url.c (skip_proto): New function.
5557         (parse_uname): Use it.
5558
5559         * http.c (gethttp): Create local user and passwd from what is
5560         given.
5561
5562         * url.c (parseurl): Check for HTTP username and password too.
5563
5564 1996-10-25  Hrvoje Niksic  <hniksic@srce.hr>
5565
5566         * config.h.in: Removed #define gethostbyname R...
5567
5568 1996-10-22  Hrvoje Niksic  <hniksic@srce.hr>
5569
5570         * version.c: Changed version to 1.4.0-test1.
5571
5572 1996-10-21  Hrvoje Niksic  <hniksic@srce.hr>
5573
5574         * version.c: "Released" 1.4b29.
5575
5576         * recur.c (recursive_retrieve): Check for no_parent.
5577
5578         * init.c (setval): Option update.
5579
5580         * main.c (main): New option no-parent.
5581
5582         * options.h (struct options): New variable no_parent.
5583
5584         * recur.c (recursive_retrieve): Only files are checked for
5585         opt.accepts and opt.rejects.
5586         (recursive_retrieve): Check directories for opt.excludes.
5587         (recursive_retrieve): Make the dir absolute when checking
5588         opt.excludes.
5589
5590         * html.c (htmlfindurl): Recognize <applet code=...> and <script
5591         src=...>
5592
5593 1996-10-18  Hrvoje Niksic  <hniksic@srce.hr>
5594
5595         * ftp.c (getftp): Do not line-break assert entries at all.
5596         (ftp_retrieve_dirs): docfix.
5597
5598         * connect.c (select_fd): Use fd + 1 as nfds.
5599
5600         * version.c: Changed version to 1.4b29.
5601
5602 1996-10-18  Hrvoje Niksic  <hniksic@srce.hr>
5603
5604         * version.c: "Released" 1.4b28.
5605
5606         * ftp.c (ftp_loop_internal): Check whether f->size == len and
5607         don't continue the loop if it is.
5608         (ftp_get_listing): Remove list_filename on unsuccesful loop.
5609
5610 1996-10-17  Hrvoje Niksic  <hniksic@srce.hr>
5611
5612         * ftp.c (ftp_loop_internal): Use strcpy to initialize tmp.
5613         (getftp): Do not use multiline assert.
5614
5615         * http.c (hparsestatline): Use mjr and mnr instead of major and
5616         minor, which don't compile on Ultrix.
5617         (http_loop): Use strcpy() to initialize tmp.
5618
5619         * all: Geturl -> Fetch
5620
5621 1996-10-17  Hrvoje Niksic  <hniksic@srce.hr>
5622
5623         * recur.c (parse_robots): Fixed an off-by-one bug when looking for
5624         ':'.
5625
5626         * html.c (htmlfindurl): Fixed several possible off-by-one bugs by
5627         moving `bufsize &&' to the beginning of each check in for-loops.
5628
5629         * recur.c (parse_robots): Close fp on exit.
5630
5631         * url.c (mymkdir): Check for each directory before creating.
5632
5633 1996-10-16  Hrvoje Niksic  <hniksic@srce.hr>
5634
5635         * version.c: Changed version to 1.4b28.
5636
5637 1996-10-16  Hrvoje Niksic  <hniksic@srce.hr>
5638
5639         * version.c: "Released" 1.4b27.
5640
5641         * init.c (parse_line): Use isspace.
5642         (parse_line): Free *com on all errors.
5643
5644         * ftp.c (ftp_loop): Change FTPOK to RETROK before exiting.
5645         (delelement): Use next instead of f->next and prev instead of
5646         f->prev.
5647         (delelement): Free the members of the deleted element.
5648
5649         * http.c (http_loop): Do not return RETROK on code != 20x.
5650
5651         * init.c (cleanup): Free opt.user_header.
5652         (cleanup): Free opt.domains.
5653
5654         * url.c (freelists): Moved to cleanup().
5655
5656         * http.c (hparsestatline): Docfix.
5657
5658         * main.c (main): Return with error status on unsuccesful
5659         retrieval.
5660
5661         * init.c (setval): Do not remove listing when mirroring.
5662
5663         * url.c (url_filename): Use opt.fileprefix.
5664
5665         * ftp.c (ftp_get_listing): Use url_filename to get filename for
5666         .listing.
5667
5668         * main.c (main): New option: -rn.
5669
5670 1996-10-15  Hrvoje Niksic  <hniksic@srce.hr>
5671
5672         * Makefile.in (RM): Added RM = rm -f.
5673
5674         * host.c (clean_hosts): New function.
5675         (free_hlist): Just free the list, no reset.
5676
5677         * version.c: Changed version to 1.4b27.
5678
5679 1996-10-13  Hrvoje Niksic  <hniksic@srce.hr>
5680
5681         * version.c: "Released" 1.4b26.
5682
5683         * retr.c (retrieve_from_file): If call get_urls_html with
5684         opt.spider to make it silent in spider mode.
5685
5686         * url.c (str_url): Use CLEANDUP instead of URL_CLEANSE.
5687
5688         * url.h (CLEANDUP): New macro.
5689
5690         * http.c (gethttp): Fixed a bug that freed location only when it
5691         was NULL.
5692
5693         * retr.c (retrieve_url): Free url if it will not be stored,
5694         i.e. newloc is NULL.
5695
5696         * html.c (htmlfindurl): Handle exiting from quotes correctly; the
5697         old version would bug out on <a href="x#a"href="y">.
5698
5699         * html.h (state_t): New member in_quote.
5700
5701         * html.c (htmlfindurl): Free s->attr at the beginning of
5702         attr-loop.
5703
5704         * recur.c (recursive_retrieve): Recognize RCLEANUP.
5705         (tried_robots): Make hosts a global variable.
5706         (recursive_retrieve): Free constr after URL host optimization.
5707         (tried_robots): Free urlinfo before exiting.
5708
5709         * utils.c (free_slist): New function.
5710
5711         * recur.c (recursive_retrieve): Use flags to add cleanup
5712         possibility.
5713
5714         * main.c (main): Free filename after recursive_retrieve.
5715
5716         * http.c (gethttp): Store successful responses too.
5717
5718 1996-10-12  Hrvoje Niksic  <hniksic@srce.hr>
5719
5720         * all: Constified the whole source.  This required some minor
5721         changes in many functions in url.c, possibly introducing bugs -- I
5722         hope not.
5723
5724         * ftp-basic.c: Removed last_respline.
5725
5726         * http.c (gethttp): Free type.
5727
5728         * host.c (same_host): Free real1 and real2.
5729
5730         * main.c (main): New option --spider.
5731
5732         * retr.c (get_contents): Don't reset errno.
5733
5734         * main.c (main): Sorted the options.
5735
5736         * connect.c (iread): Set errno to ETIMEDOUT only if it was left
5737         uninitialized by select().
5738
5739         * http.c (http_loop): Print the time when the connection is
5740         closed.
5741         (gethttp): Debug-print the HTTP request.
5742
5743 1996-10-11  Hrvoje Niksic  <hniksic@srce.hr>
5744
5745         * connect.c (iread): Do not try reading after timeout.
5746
5747         * main.c (main): Would bug out on -T.
5748
5749         * connect.c (select_fd): Do not use exceptfds.
5750         (iread): Set ETIMEDOUT on select_fd <= 0.
5751
5752         * version.c: Changed version to 1.4b26.
5753
5754 1996-10-10  Hrvoje Niksic  <hniksic@srce.hr>
5755
5756         * version.c: "Released" 1.4b25.
5757
5758         * ftp-unix.c (ftp_parse_unix_ls): Ignore lines without file name
5759         or link name.
5760
5761         * http.c (gethttp): Add errcode to struct hstat.
5762         (http_loop): Use it.
5763
5764         * url.c (no_proxy_match): Simplify using char** for no_proxy.
5765
5766         * options.h (struct options): Make opt.no_proxy a vector.
5767
5768         * utils.c (sepstring): Use !*s instead of !strlen(s).
5769
5770         * init.c (setval): Set opt.maxreclevel to 0 on --mirror.
5771         (getperms): Use ISODIGIT instead of isdigit.
5772
5773         * ftp.c (getftp): Print time.
5774
5775         * main.c (main): Use legible output of downloaded quantity.
5776
5777         * ftp.c (getftp): Use elapsed_time().
5778         (ftp_loop_internal): Use rate().
5779
5780         * http.c (http_loop): Add download ratio output; Use rate().
5781
5782         * utils.c (rate): New function.
5783
5784 1996-10-09  Hrvoje Niksic  <hniksic@srce.hr>
5785
5786         * http.c (http_loop): Use timer.
5787
5788         * ftp.c: Split to ftp-basic.c and ftp.c
5789
5790         * utils.c (reset_timer): New function.
5791         (elapsed_time): New function.
5792
5793         * retr.c (show_progress): Make bytes_in_line and offs long; should
5794         work on 16-bit machines.
5795
5796 1996-10-08  Hrvoje Niksic  <hniksic@srce.hr>
5797
5798         * url.c (in_acclist): New argument backward.
5799
5800         * ftp.c (ftp_retrieve_glob): Use acceptable() to determine whether
5801         a file should be retrieved according to suffix.
5802         (ftp_get_listing): Check the return value of unlink; Do not call
5803         ftp_retrieve_dirs if depth reached maxreclevel.
5804         (ftp_retrieve_dirs): Check whether the directory is in
5805         exclude-list.
5806
5807         * main.c (main): Print the version number at the beginning of
5808         DEBUG output.
5809         (main): Use strrchr when creating exec_name.
5810
5811         * ftp.c (ftp_retrieve_glob): Do not close control connection.
5812
5813         * version.c: Changed version to 1.4b25.
5814
5815 1996-10-07  Hrvoje Niksic  <hniksic@srce.hr>
5816
5817         * version.c: "Released" 1.4b24.
5818
5819         * Makefile.in: Rewrite.
5820
5821         * ftp.c (ftp_loop_internal): Likewise.
5822
5823         * retr.c (time_str): Check for failed time().
5824
5825         * html.c (htmlfindurl): Recognize <fig src> and <overlay src> from
5826         HTML3.0.
5827
5828         * retr.c (time_str): Return time_t *.
5829
5830         * connect.c (bindport): Close msock on unsuccesful bind.
5831         (bindport): The same for getsockname and listen.
5832
5833         * retr.c (retrieve_url): Allow any number of retries on
5834         proxy.
5835
5836         * http.c (gethttp): Do not treat errno == 0 as timeout.
5837         (http_loop): Likewise.
5838         (http_loop): Cosmetic changes.
5839
5840         * connect.c (iread): Set errno to ETIMEDOUT in case of timeout.
5841
5842         * retr.c (get_contents): Reset errno.
5843
5844         * ftp.c (getftp): Minor fixes.
5845
5846 1996-10-06  Hrvoje Niksic  <hniksic@srce.hr>
5847
5848         * http.c: Do not use backups.
5849
5850         * geturl.1 (WARNING): Warn that man-page could be obsolete.
5851
5852         * getopt.c (getopt_long): Moved to getopt.c
5853
5854         * geturl.texi: Enhanced.
5855
5856         * main.c (main): Use it.
5857
5858         * recur.c (convert_all_links): New function.
5859
5860         * utils.c (add_slist): New argument flags.
5861
5862         * recur.c (recursive_retrieve): Update a list of downloaded URLs.
5863         (parse_robots): Do not chuck out empty value fields.
5864         (parse_robots): Make yourself welcome on empty Disallow.
5865
5866         * version.c: Changed version to 1.4b24.
5867
5868 1996-10-06  Hrvoje Niksic  <hniksic@srce.hr>
5869
5870         * version.c: "Released" 1.4b23.
5871
5872         * ftp.c (ftp_loop_internal): Get the time after getftp.
5873
5874         * Makefile.in (install.info): New target.
5875         (install): Use it.
5876
5877         * http.c (http_loop): Fix output when doing -O.
5878
5879 1996-10-05  Hrvoje Niksic  <hniksic@srce.hr>
5880
5881         * geturl.texi: New file.
5882
5883         * main.c (main): Do not print the warnings and download summary if
5884         opt.quiet is set.
5885
5886         * version.c: Changed version to 1.4b23.
5887
5888 1996-10-05  Hrvoje Niksic  <hniksic@srce.hr>
5889
5890         * "Released" 1.4b22.
5891
5892         * atotm.c (atotm): Use True and False instead of TRUE and FALSE,
5893         to avoid redefinition warnings.
5894
5895         * host.c (store_hostaddress): Use memcpy() to copy the address
5896         returned by inet_addr.
5897
5898         * version.c: Changed version to 1.4b22.
5899
5900 1996-10-04  Hrvoje Niksic  <hniksic@srce.hr>
5901
5902         * version.c: "Released" 1.4b21.
5903
5904         * ftp-unix.c (ftp_parse_ls): Renamed to ftp_parse_unix_ls.
5905
5906         * ftp.c (ftp_port): Use conaddr.
5907         (getftp): Print the file length.
5908         (ftp_retrieve_list): Check the stamps of plain files only.
5909
5910         * connect.c (closeport): Do not call shutdown().
5911         (conaddr): New function.
5912
5913         * html.c (ftp_index): Made it dfp-aware.
5914
5915         * init.c (cleanup): New name of freemem. Close opt.dfp.
5916
5917         * ftp.c (getftp): Use opt.dfp if it is set.
5918
5919         * ftp-unix.c (ftp_parse_ls): Recognize time in h:mm format.
5920
5921         * ftp.c (ftp_retrieve_dirs): Fixed a bug that caused incorrect
5922         CWDs to be sent with recursive FTP retrievals.
5923
5924 1996-10-03  Hrvoje Niksic  <hniksic@srce.hr>
5925
5926         * recur.c (parse_robots): Made it more compliant with "official"
5927         specifications.
5928
5929         * http.c: New function.
5930
5931         * ftp-unix.c (ftp_parse_ls): Added better debug output.
5932
5933         * ftp.c (getftp): Print out the LIST in case of
5934         opt.print_server_response.
5935
5936         * version.c: Changed version to 1.4b21.
5937
5938 1996-10-01  Hrvoje Niksic  <hniksic@srce.hr>
5939
5940         * version.c: "Released" 1.4b20.
5941
5942         * README: Update.
5943
5944         * http.c (gethttp): Preset lengths of various headers instead of
5945         calculating them dynamically.
5946         (gethttp): Check for 206 partial contents.
5947
5948 1996-09-30  Hrvoje Niksic  <hniksic@srce.hr>
5949
5950         * configure.in: Set SYSTEM_GETURLRC to $libdir/geturlrc
5951
5952         * http.c (gethttp): Send the port number in the Host: header.
5953
5954 1996-09-29  Hrvoje Niksic  <hniksic@srce.hr>
5955
5956         * http.c (gethttp): Send host: header.
5957         (gethttp): Add the possibility of user-defined headers.
5958         (gethttp): Move decision about pragma: no-cache to http_loop,
5959         where it belongs.
5960         (gethttp): Pass a struct instead of enormous argument list.
5961         (http_loop): Use a new, fancier display format.
5962         (ftp_loop): Likewise.
5963
5964         * main.c: (hangup): Turn off buffering of the new log file.
5965
5966         * install-sh: Likewise.
5967
5968         * config.sub: Replace with the one in autoconf-2.10
5969
5970         * geturl.1: Update.
5971
5972         * init.c: New options httpuser and httppasswd.
5973
5974         * http.c: (base64_encode_line): New function.
5975         (gethttp): Send authentication.
5976
5977         * connect.c (make_connection): Use store_hostaddress.
5978
5979 1996-09-28  Hrvoje Niksic  <hniksic@srce.hr>
5980
5981         * host.c (store_hostaddress): New function.
5982
5983         * NEWS: Update.
5984
5985         * http.c (hgetrange): New function.
5986         (gethttp): Use ranges.
5987
5988         * utils.c (numdigit): Accept long instead of int.
5989
5990         * http.c (http_loop): Add restart capabilities.
5991
5992         * ftp.c (ftp_retrieve_glob): Fixed a bug that could cause matchres
5993         being used uninitialized.
5994         (ftp_retrieve_list): Similar fix.
5995
5996         * host.c (add_hlist): Fixed a bug that could cause cmp being used
5997         uninitialized.
5998
5999         * url.c (construct_relative): New function.
6000
6001         * recur.c (recursive_retrieve): Use it.
6002
6003         * retr.c (convert_links): New function.
6004
6005 1996-09-27  Hrvoje Niksic  <hniksic@srce.hr>
6006
6007         * url.c (free_urlpos): New function.
6008
6009         * recur.c (recursive_retrieve): Adapt.
6010
6011         * url.c (get_urls_html): Return a linked list instead of a vector.
6012
6013         * url.c (get_urls_file): Return a linked list instead of a vector.
6014
6015         * geturl.1: Update.
6016
6017         * http.c (gethttp): Implement it.
6018
6019         * init.c (setval): New option: SAVEHEADERS
6020
6021         * ftp.c (ftp_loop_internal): Do not set restval if listing is to
6022         be retrieved. Lack of this test caused bugs when the connection
6023         was lost during listing.
6024
6025         * retr.c (retrieve_url): Fixed a bug that caused
6026         coredumps. *newloc is now reset by default.
6027         (retrieve_url): Lift the twenty-tries limit on proxies.
6028
6029         * version.c: Changed version to 1.4b20.
6030
6031 1996-09-20  Hrvoje Niksic  <hniksic@srce.hr>
6032
6033         * version.c: "Released" 1.4b19.
6034
6035 1996-09-19  Hrvoje Niksic  <hniksic@srce.hr>
6036
6037         * ftp.c (ftp_loop_internal): Renamed from ftp_1fl_loop.
6038         (getftp): Changed prototype to accept ccon *.
6039
6040 1996-09-17  Hrvoje Niksic  <hniksic@srce.hr>
6041
6042         * ftp.c (ftp_retrieve_list): Fixed a bug that caused setting
6043         incorrect values to files pointed to by symbolic links.
6044         (ftp_1fl_loop): Do not count listings among the downloaded URL-s.
6045
6046 1996-09-16  Hrvoje Niksic  <hniksic@srce.hr>
6047
6048         * url.c (mkstruct): Do not prepend "./" in front of a pathname.
6049
6050         * main.c (main): New option: --user-agent.
6051
6052         * geturl.1: Ditto.
6053
6054         * init.h: Ditto.
6055
6056         * init.c (setval): Ditto.
6057
6058         * main.c (main): Rename "server-headers" to "server-response".
6059
6060         * ftp-unix.c (ftp_parse_ls): Check for asterisks at the end of
6061         executables in 'ls -F' listings.
6062
6063 1996-09-15  Hrvoje Niksic  <hniksic@srce.hr>
6064
6065         * url.c (parseurl): Remove realloc() and sprintf().
6066         (str_url): Get rid of sprintf().
6067
6068         * recur.c (recursive_retrieve): Enable FTP recursion through proxy
6069         servers.
6070
6071         * url.h (URL_CLEANSE): Made it else-resistant.
6072         (USE_PROXY): New macro.
6073
6074 1996-09-14  Hrvoje Niksic  <hniksic@srce.hr>
6075
6076         * NEWS: Update.
6077
6078         * version.c: Changed version to 1.4b19.
6079
6080 1996-09-14  Hrvoje Niksic  <hniksic@srce.hr>
6081
6082         * version.c: "Released" 1.4b18.
6083
6084         * url.c: Made it reallocate space exponentially.
6085
6086 1996-09-14  Drazen Kacar  <dave@fly.cc.fer.hr>
6087
6088         * html.c (htmlfindurl): Added <frame src> and <iframe src> among
6089         the list of stuff to fetch.
6090
6091 1996-09-13  Hrvoje Niksic  <hniksic@srce.hr>
6092
6093         * url.c (get_urls_html): Fixed a bug that caused SIGSEGV's with
6094         -Fi.
6095
6096         * html.c (htmlfindurl): Rewrite.
6097
6098         * http.c (gethttp): Use opt.proxy_cache.
6099
6100         * main.c (main): Added --cache option.
6101
6102         * ftp.c (ftp_response): Print server response if opt.print_server
6103         response is set.
6104         (getftp): Print newlines after each request if the server response
6105         is to be printed.
6106         (ftp_response): Copy the last response line to last_respline.
6107
6108         * http.c (gethttp): Add Pragma: nocache for retried
6109         proxy-retrievals.
6110
6111         * ftp.c (getftp): Use it.
6112
6113         * retr.c (buf_discard): New function.
6114
6115         * ftp.c (ftp_response): Use buf_readchar().
6116         (getftp): Flush the control connection buffer before calling
6117         get_contents().
6118
6119         * retr.c (buf_readchar): New function.
6120         (buf_flush): New function.
6121         (get_contents): Use buf_readchar() instead of read(x, x, 1).
6122         (get_contents): Use buf_flush.
6123
6124 1996-09-12  Hrvoje Niksic  <hniksic@srce.hr>
6125
6126         * ftp.c: Incorporate changes to ftp_response.
6127
6128         * ftp.c (ftp_response): Allocate the server response dynamically,
6129         as in read_whole_line and fetch_next_header.
6130
6131         * utils.c (read_whole_line): Fixed a bug that prevented reading
6132         the last line if it is not \n-terminated. Also fixed a possible
6133         memory overflow.
6134
6135         * http.c (fetch_next_header): Return malloc-ed string as large as
6136         needed.
6137         (gethttp): Use new fetch_next_header.
6138
6139 1996-09-12  Hrvoje Niksic  <hniksic@srce.hr>
6140
6141         * http.c (hgetlen): Compute the header length the first time only.
6142         (hgettype): Ditto.
6143         (hgetlocation): Ditto.
6144         (hgetmodified): Ditto.
6145
6146 1996-09-11  Hrvoje Niksic  <hniksic@srce.hr>
6147
6148         * sample.geturlrc: Update.
6149
6150 1996-09-10  Hrvoje Niksic  <hniksic@srce.hr>
6151
6152         * http.c (http_loop): Ditto.
6153
6154         * ftp.c (getftp): Open the output file as binary.
6155
6156         * version.c: Changed version to 1.4b18.
6157
6158 1996-09-10  Hrvoje Niksic  <hniksic@srce.hr>
6159
6160         * version.c: "Released" 1.4b17.
6161
6162         * ftp-unix.c (ftp_parse_ls): If unable to open file, return NULL
6163         instead of failed assertion.
6164
6165 1996-09-09  Hrvoje Niksic  <hniksic@srce.hr>
6166
6167         * ftp.c (ftp_get_listing): Add a numbered suffix to LIST_FILENAME
6168         if a file of that name already exists.
6169
6170 1996-09-05  Hrvoje Niksic  <hniksic@srce.hr>
6171
6172         * ftp.c (ftp_1fl_loop): Handler FTPPORTERR and FOPENERR correctly.
6173
6174         * config.h.in: Define gethostbyname as Rgethostbyname when using
6175         Socks.
6176
6177         * configure.in: Check for -lresolv if using Socks.
6178
6179         * version.c: Changed version to 1.4b17.
6180
6181 1996-07-15  Hrvoje Niksic  <hniksic@srce.hr>
6182
6183         * version.c: "Released" 1.4b16.
6184
6185         * http.c (gethttp): More intelligent check for first line of HTTP
6186         response.
6187         (gethttp): Would bug out on time-stamping.
6188
6189         * version.c: Changed version to 1.4b16.
6190
6191 1996-07-11  Hrvoje Niksic  <hniksic@srce.hr>
6192
6193         * version.c: Released 1.4b15.
6194
6195         * http.c (http_loop): Print \n after the loop entry, not before.
6196
6197         * url.c (url_filename): Use ISDOT.
6198
6199         * url.h (ISDOT): New macro.
6200
6201         * recur.c (recursive_retrieve): Change only opt.recursive for
6202         following FTP.
6203
6204 1996-07-11  Antonio Rosella <antonio.rosella@agip.it>
6205
6206         * socks/geturl.cgi: Fixed version No.
6207
6208         * socks/download-netscape.html: Ditto.
6209
6210         * socks/download.html: Changed socks.html to download.html.
6211
6212 1996-07-11  Hrvoje Niksic  <hniksic@srce.hr>
6213
6214         * url.c (url_filename): Check for opt.dirstruct instead for
6215         opt.recursive && opt.dirstruct.
6216
6217         * init.c (defaults): Ditto.
6218         (defaults): Reset dirstruct by default.
6219         (setval): Set opt.dirstruct whenever setting recursive.
6220
6221         * init.h: Removed FORCEDIRHIER.
6222
6223         * INSTALL: Added -L to socks-description.
6224
6225         * version.c: Changed version to 1.4b15.
6226
6227 1996-07-10  Hrvoje Niksic  <hniksic@srce.hr>
6228
6229         * version.c: "Released" 1.4b14.
6230
6231         * geturl.1: Update AUTHOR to include Rosella as contributor.
6232
6233         * NEWS: Update.
6234
6235         * socks/geturl.cgi: Simplified command creation, nuked <blink>.
6236
6237         * socks/geturl.cgi: Wrap nutscape extensions within if $netscape.
6238         (cal_time): Fix == to eq.
6239
6240         * socks/geturl.cgi: GPL-ized with permission of A. Rosella.
6241
6242         * geturl.1 (hostname): Moved URL CONVENTIONS to the beginning.
6243
6244         * Makefile.in: Use @VERSION@.
6245
6246         * configure.in: Check version from version.c.
6247
6248         * socks/geturl.cgi: Changed /pub/bin/perl to /usr/bin/perl.
6249
6250         * socks/download.html: Created from download-netscape.html, made
6251         HTML-2.0 compliant.
6252
6253         * recur.c (recursive_retrieve): Set opt.force_dir_hier when
6254         following FTP links from recursions.
6255
6256 1996-07-09  Hrvoje Niksic  <hniksic@srce.hr>
6257
6258         * url.c (mymkdir): Fixed a bug that prevented mymkdir() to create
6259         absolute directories correctly.
6260
6261         * version.c: Changed version to 1.4b14.
6262
6263 1996-07-09  Hrvoje Niksic  <hniksic@srce.hr>
6264
6265         * version.c: "Released" 1.4b13.
6266
6267         * url.c (make_backup): New function.
6268
6269         * http.c (http_loop): Make a backup copy of the local file (using
6270         rename(2)) before opening it.
6271
6272         * main.c (main): Added --backups.
6273
6274         * host.c (ftp_getaddress): Bail out on failed mycuserid().
6275         (ftp_getaddress): Check for leading dot on MY_DOMAIN.
6276         (ftp_getaddress): Check for empty, null or (null) domain.
6277
6278         * url.c (get_urls_html): If this_url is NULL, the base must have a
6279         protocol.
6280         (parseurl): Use has_proto.
6281
6282         * retr.c (retrieve_url): Warn when proxy is used with more than 20
6283         retries.
6284
6285         * url.c (mkstruct): Create the directory (calling mymkdir()) only
6286         if it is not already there.
6287         (has_proto): New function.
6288         (get_urls_html): Eliminate the remaining call to findurl -- use
6289         has_proto.
6290
6291         * geturl.1: Ditto.
6292
6293         * main.c: Change -X to -x.
6294
6295         * url.c (url_filename): Simplify creation of filename if
6296         prefix_files is set.
6297         (url_filename): Simplify everything. And I do mean *everything*.
6298         (mkstruct): Add dir_prefix before hostname.
6299         (path_simplify): Fixed a bug that caused writing outside the path
6300         string in case of "." and ".." path strings.
6301
6302 1996-07-06  Hrvoje Niksic  <hniksic@srce.hr>
6303
6304         * init.c: Added --mirror.
6305
6306         * main.c (main): Added -X to force saving of directory hierarchy.
6307
6308         * ftp.c (ftp_retrieve_list): Added recursion depth counter.
6309         (ftp_retrieve_list): Check whether quota is exceeded.
6310
6311         * url.c (get_urls_html): Skip leading blanks for absolute URIs.
6312
6313         * http.c (gethttp): Use referer if present.
6314
6315         * recur.c (recursive_retrieve): Set u->referer before calling
6316         retrieve_url.
6317
6318         * url.c (newurl): Use memset to nullify the struct members.
6319         (freeurl): Free the referer field too.
6320
6321         * url.h: Added referer to urlinfo.
6322
6323         * geturl.1: Updated the manual to document some of the new features.
6324
6325         * utils.c (numdigit): Moved from url.c.
6326
6327         * README: Rewritten.
6328
6329         * config.h.in: Add the support for socks.
6330
6331         * configure.in: Add the support for socks.
6332
6333         * url.c (url_filename): If the dir_prefix is ".", work with just
6334         the file name.
6335         (url_filename): Do not look for .n extensions if timestamping if
6336         turned on.
6337
6338         * retr.c (show_progress): Skip the over-abundant restval data, and
6339         print the rest of it with ',' instead of '.'.
6340
6341 1996-07-05  Hrvoje Niksic  <hniksic@srce.hr>
6342
6343         * retr.c (show_progress): Changed second arg. to long (as it
6344         should be).
6345         (show_progress): Moved to retr.c.
6346         (get_contents): Moved to retr.c.
6347
6348         * version.c: Change version to 1.4b13.
6349
6350 1996-07-05  Hrvoje Lacko <hlacko@fly.cc.fer.hr>
6351
6352         * url.c (in_acclist): Would return after the first suffix.
6353
6354 1996-07-04  Hrvoje Niksic  <hniksic@srce.hr>
6355
6356         * version.c: "Released" 1.4b12.
6357
6358         * url.c (path_simplify): More kludgifications.
6359         (get_urls_html): Use new parameters for htmlfindurl.
6360
6361         * html.c: Removed memorizing "parser states", since the new
6362         organization does not require them.
6363
6364         * init.c (run_geturlrc): Use read_whole_line.
6365
6366         * ftp-unix.c (ftp_parse_ls): Use read_whole_line.
6367
6368         * recur.c (parse_robots): Use read_whole_line.
6369
6370         * utils.c (read_whole_line): New function.
6371
6372         * recur.c (tried_robots): Use add_slist/in_slist, *much* cleaner.
6373
6374         * host.c (ngethostbyname): Call inet_addr just once. Yet to be
6375         tested on OSF and Ultrix.
6376         (add_hlist): New function.
6377         (free_hlist): New function.
6378         (search_host): New function.
6379         (search_address): New function.
6380         (realhost): Use search_host, search_address and add_hlist.
6381         (same_host): Replaced realloc() with strdupdelim(), made
6382         case-insensitive, fixed a memory leak.
6383
6384         * html.c (ftp_index): Fixed tm_min and tm_sec to be tm_hour and
6385         tm_min, like intended.
6386
6387         * version.c: Change user agent information to
6388         Geturl/version.
6389
6390 1996-07-03  Hrvoje Niksic  <hniksic@srce.hr>
6391
6392         * utils.c: Renamed nmalloc.c to utils.c, .h likewise.
6393
6394         * url.c (acceptable): Always accept directories.
6395
6396         * ftp-unix.c (ftp_parse_ls): Support brain-damaged "ls -F"-loving
6397         servers by stripping trailing @ from symlinks and trailing / from
6398         directories.
6399
6400         * ftp.c (ftp_loop): Debugged the "enhanced" heuristics. :-)
6401
6402         * url.c (skip_url): Use toupper instead of UCASE.
6403
6404         * host.c (sufmatch): Made it case-insensitive.
6405
6406         * url.c (match_backwards_or_pattern): Fixed i == -1 to j == -1.
6407         (match_backwards): New function, instead of
6408         match_backwards_or_pattern.
6409
6410         * recur.c (recursive_retrieve): Increased performance by
6411         introducing inl, which reduces number of calls to in_slist to only
6412         one.
6413
6414         * ftp.c (ftp_loop): Enhanced the heuristics that decides which
6415         routine to use.
6416
6417         * main.c (printhelp): Removed the warranty stuff.
6418
6419 1996-07-02  Hrvoje Niksic  <hniksic@srce.hr>
6420
6421         * url.c (add_slist): Simplify.
6422         (match_backwards_or_pattern): New function.
6423         (in_acclist): Use match_backwards_or_pattern.
6424         (matches): Remove.
6425
6426 1996-06-30  Hrvoje Niksic  <hniksic@srce.hr>
6427
6428         * ftp.c (ftp_loop): Call ftp_index on empty file names, if not
6429         recursive.
6430
6431         * html.c (ftp_index): Fixed to work. Beautified the output.
6432
6433         * ftp.c (ftp_retrieve_glob): Another argument to control whether
6434         globbing is to be used.
6435         (ftp_retrieve_list): Compare the time-stamps of local and remote
6436         files to determine whether to download.
6437
6438 1996-06-29  Hrvoje Niksic  <hniksic@srce.hr>
6439
6440         * ftp.c (rel_constr): New function.
6441
6442         * retr.c (retrieve_from_file): Check for text/html before
6443         retrieving recursively.
6444
6445         * main.c (main): Check whether the file is HTML before going into
6446         recursive HTML retrieving.
6447
6448         * ftp.c (ftp_retrieve_list): Manage directories.
6449         (ftp_retrieve_glob): Pass all the file-types to ftp_retrieve_list.
6450         (ftp_1fl_loop): Fixed a bug that caused con->com to be incorrectly
6451         initialized, causing bugchecks in getftp to fail.
6452
6453         * configure.in: Check for symlink.
6454
6455         * ftp.c (ftp_retrieve_list): Added support for symlinks.
6456
6457         * version.c: "Released" 1.4b10.
6458
6459         * atotm.c (atotm): Redeclared as time_t.
6460
6461         * init.c: New variable "timestamping".
6462
6463         * main.c (main): New option 'N'.
6464
6465         * http.c (hgetlocation): Case-insensitive match.
6466         (hgetmodified): New function.
6467         (http_loop): Implement time-stamping.
6468
6469 1996-06-28  Hrvoje Niksic  <hniksic@srce.hr>
6470
6471         * version.c: Changed version to 1.4b10
6472
6473         * atotm.c: New file, from phttpd.
6474
6475         * options.h (struct options): New parameter timestamping.
6476
6477         * version.c: 1.4b9 "released".
6478
6479         * recur.c (recursive_retrieve): Used linked list (ulist) for
6480         faster storing of URLs.
6481
6482         * url.c (get_urls_html): Removed the old kludge with comparing the
6483         outputs of htmlfindurl and findurl.
6484         (get_urls_html): Added better protocol support here.
6485         (create_hash): Removed, as well as add_hash and in_hash.
6486         (addslist): New function.
6487         (in_slist): ditto
6488
6489         * version.c: Released 1.4b8, changed version to b9.
6490
6491 1996-06-27  Hrvoje Niksic  <hniksic@srce.hr>
6492
6493         * ftp.c (freefileinfo): New function.
6494         (delelement): New function.
6495
6496         * everywhere: GPL!
6497
6498         * ftp.c (ftp_loop): Use ccon.
6499         (ftp_retrieve_glob): Likewise.
6500
6501         * ftp.h: Define ccon, to define status of control connection.
6502
6503         * ftp.c (ftp_get_listing): New function.
6504         (ftp_retrieve_more): New function.
6505         (ftp_retrieve_glob): New function.
6506
6507 1996-06-25  Hrvoje Niksic  <hniksic@srce.hr>
6508
6509         * configure.in: Removed the search for cuserid().
6510
6511         * init.c (getmode): Renamed to getperms.
6512
6513 1996-06-24  Hrvoje Niksic  <hniksic@srce.hr>
6514
6515         * version.c: New version.
6516
6517         * main.c (hangup): New function, that handles hangup. Hangup
6518         signal now causes geturl to stop writing on stdout, and to write
6519         to a log file.
6520
6521         * ftp.c (getftp): "Released" 1.4b7.
6522
6523         * html.c (htmlfindurl): Ignore everything inside <head>...</head>.
6524         (ftp_index): Use fileinfo/urlinfo.
6525
6526         * ftp-unix.c (ftp_parse_ls): New function.
6527         (symperms): New function.
6528
6529         * ftp.c (ftp_1fl_loop): New function, to handle 1-file loops.
6530
6531         * retr.c (retrieve_url): Added FTP support.
6532
6533 1996-06-23  Hrvoje Niksic  <hniksic@srce.hr>
6534
6535         * geturl.h: Removed NOTFTP2HTML enum.
6536         Added DO_LOGIN, DO_CWD and DO_LIST. LIST_ONLY is obsolete.
6537
6538         * ftp.c (getftp): Resynched with urlinfo.
6539         (getftp): Removed HMTL-ization of index.html from getftp.
6540
6541         * version.c: 1.4b6 "released".
6542
6543         * options.h (options): New struct, to keep options in.
6544
6545         * http.c (http_loop,gethttp): Synched with proxy.
6546
6547         * retr.c (retrieve_url): Implemented proxy retrieval.
6548
6549         * main.c (main): Use retrieve_from_file.
6550
6551 1996-06-22  Hrvoje Niksic  <hniksic@srce.hr>
6552
6553         * retr.c (retrieve_from_file): New function.
6554
6555         * url.c (parseurl): Modified to return URLOK if all OK. Protocol
6556         can be found in u->proto.
6557
6558         * ftp.c (ftp_response): Fixed to accept multi-line responses as
6559         per RFC 959.
6560
6561         * recr.c (recursive_retrieve): Take newloc from retrieve_url.
6562
6563         * url.c (mymkdir): Removed the file of the same name, if one
6564         exists.
6565         (isfile): New function.
6566         (mkstruct): Fixed the '/' glitches.
6567         (path_simplify): Hacked to treat something/.. correctly.
6568
6569 1996-06-21  Hrvoje Niksic  <hniksic@srce.hr>
6570
6571         * http.c (gethttp): Close the socket after error in headers.
6572         (http_loop): HEOF no longer a fatal header.
6573
6574         * loop.c (retrieve_url): When dt is NULL, do not modify it. This
6575         simplifies the syntax of calling retrieve_url.
6576
6577         * recr.c (recursive_retrieve): Modified to use get_urls_html.
6578
6579         * url.c (get_urls_file): New function.
6580         (get_urls_html): New function.
6581
6582         * recr.c (recursive_retrieve): Patched up to conform to the
6583         standards.
6584
6585         * http.c (gethttp): Synched with the rest...
6586         (gethttp): Treat only CONREFUSED specially, with connection
6587         errors.
6588
6589         * init.c,geturl.1,http.c (http_loop): Removed kill_error.
6590
6591 1996-06-20  Hrvoje Niksic  <hniksic@srce.hr>
6592
6593         * http.c (http_loop): New function.
6594
6595         * loop.c: Removed *lots* of stuff from retrieve_url.
6596
6597         * url.c (parseurl): Changed to work with urlinfo. Integrated
6598         username finding and path parsing.
6599         (newurl): New function.
6600         (freeurl): New function.
6601         (mkstruct): Removed the old bogosities, made it urlinfo-compliant.
6602         (url_filename): Likewise.
6603         (path_simplify): Accept relative paths too.
6604         (opt_url): Made urlinfo-compliant, removed bogosities.
6605         (path_simplify): Expanded to accept relative paths.
6606         (str_url): A replacement for hide_url
6607         (decode_string): Fixed a bug that caused malfunctioning when
6608         encountering an illegal %.. combination.
6609         (opt_url): Removed the argument. Dot-optimizations are now default.
6610
6611         * nmalloc.c (strdupdelim): New function.
6612
6613         * url.h: Added the urlinfo structure
6614
6615 1996-06-19  Hrvoje Niksic  <hniksic@srce.hr>
6616
6617         * url.c (hide_url): Thrown out the protocol assertion. Do not
6618         change the URL if the protocol if not recognized.
6619         (findurl): Put continue instead of break.
6620
6621 1996-06-18  Hrvoje Niksic  <hniksic@srce.hr>
6622
6623         * sample.geturlrc: Changed the defaults to be commented out and
6624         harmless (previous defaults caused pains if copied to
6625         ~/.geturlrc).
6626
6627         * http.c (gethttp): Print the HTTP request in debug mode.
6628
6629         * connect.c (iread): Added EINTR check loop to select-ing
6630         too. EINTR is now correctly handled with select().
6631
6632         * TODO: new file
6633
6634 1996-05-07  Hrvoje Niksic  <hniksic@srce.hr>
6635
6636         * host.c (same_host): Made the function a little bit more
6637         intelligent regarding diversified URL syntaxes.
6638
6639         * url.c (skip_url): Spaces are now skipped after URL:
6640
6641         * Released 1.3.1 with the patch to prevent crashing when sending
6642         NULL to robot* functions and the patch to compile "out of the box"
6643         on AIX.
6644
6645         * recr.c (recursive_retrieve): Added checking whether this_url is
6646         NULL when calling the robot functions.
6647
6648         * ChangeLog: New file.