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