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