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