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