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