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