]> sjero.net Git - wget/blob - src/ChangeLog
[svn] Check for timegm and use it where available.
[wget] / src / ChangeLog
1 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
2
3         * http.c (mktime_from_utc): Renamed to timegm and moved to cmpt.c.
4         Don't compile it if GNU timegm is available.
5         (http_atotm): Use timegm.
6
7 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
8
9         * http.c (http_atotm): Correctly query the old locale value.
10
11 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
12
13         * config-post.h (alloca): Don't #define alloca under MinGW32,
14         which defines it in malloc.h, included from mswindows.h.
15
16 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
17
18         * utils.c (get_grouping_data): Force the use of separators in C
19         locale.
20
21 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
22
23         * main.c (i18n_initialize): Set all locale categories.
24
25         * http.c (http_atotm): Temporarily set locale to "C".
26
27 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
28
29         * http.c (gethttp): Improve "POST data file missing" error
30         message.
31
32 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
33
34         * progress.c (set_progress_implementation): Type COLON as const
35         char *.
36
37 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
38
39         * utils.c (with_thousand_seps): Handle negative numbers.
40
41 2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
42
43         * progress.c (create_image): Mark the "eta" string for translation.
44
45 2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
46
47         * html-url.c (get_urls_file): Don't explicitly set entry->next to
48         NULL since entry is already zeroed out.
49
50 2005-06-26  Gisle Vanem  <giva@bgnett.no>
51
52         * mswindows.h: Define gai_strerror under MinGW.
53
54 2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
55
56         * utils.c (with_thousand_seps): Correctly implement thousand seps
57         consisting of more than one character.
58
59 2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
60
61         * main.c (secs_to_human_time): Ditto.
62
63         * progress.c (create_image): Print more exact duration of very
64         short downloads.
65
66         * main.c (secs_to_human_time): Don't translate time suffixes "h",
67         "m", and "s", which are not strictly SI, but are "accepted for use
68         with SI".
69         (secs_to_human_time): Print really small intervals as 0s, not
70         0.00s.
71
72 2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
73
74         * config-post.h: Replace the alloca declaration with the one from
75         the latest Autoconf manual.  This should remove a warning with GCC
76         on AIX.
77
78 2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
79
80         * ftp.c (getftp): Always invoke SIZE, not only when continuing a
81         download.
82
83         * main.c (main): Ditto here.
84
85         * progress.c (create_image): When the download is finished, print
86         how long it took.
87
88 2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
89
90         * main.c (main): Print the downloaded and quota amounts with the
91         "human_readable" function.
92
93         * ftp.c (print_length): Ditto.
94
95         * http.c (gethttp): Don't display thousand separators.
96
97         * utils.c (with_thousand_seps): Rewritten to respect locale
98         settings and to be type size agnostic.
99
100 2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
101
102         * utils.c (human_readable): Divide with 1024 instead of shifting
103         so the operation can work with non-integer N.
104
105 2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
106
107         * progress.c (eta_to_human): New logic for more human-readable
108         ETA.
109
110 2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
111
112         * utils.c (with_thousand_seps_sum): Decrease buffer size so it
113         cannot overrun add_thousand_seps's buffer.
114
115 2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
116
117         * utils.c (SPRINTF_WGINT): The correct format is %I64d, not just
118         %I64.
119
120 2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
121
122         * http.c (http_loop): Don't warn about wildcards in HTTP URLs if
123         globbing isn't requested in the first place.
124
125         * retr.c (retrieve_url): Temporarily turn off globbing when
126         processing HTTP->FTP redirects.
127
128 2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
129
130         * utils.c (with_thousand_seps_sum): Now defined only if
131         SUM_SIZE_INT is double.
132
133         * wget.h (SUM_SIZE_INT): Instead of bothering with long, long
134         long, __int64, and friends, simply either use wgint or double, end
135         of story.  Since we know how to print either, we no longer need
136         LARGE_INT_FMT.
137
138         * sysdeps.h (LARGE_INT): Renamed to SUM_SIZE_INT to better reflect
139         its intent, and moved to wget.h.
140
141 2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
142
143         * Makefile.in: No need to clean .libs.
144
145 2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
146
147         * cookies.c (parse_set_cookies): Cast pointer subtraction to int
148         before using it with %d; AIX compiler warns on this.
149         Reported by Jens Schleusener.
150
151 2005-06-24  Hrvoje Niksic  <hniksic@xemacs.org>
152
153         * http.c (gethttp): Don't prepend / here.
154
155         * cookies.c (cookie_handle_set_cookie): Prepend / to PATH.
156         (cookie_header): Ditto.
157
158 2005-06-24  Hrvoje Niksic  <hniksic@xemacs.org>
159
160         * init.c: opt.verbose must be declared as int.
161
162 2005-06-23  Hrvoje Niksic  <hniksic@xemacs.org>
163
164         * cmpt.c (strpbrk): Removed.
165         (mktime): Removed.
166         Include <time.h>.
167
168 2005-06-23  Hrvoje Niksic  <hniksic@xemacs.org>
169
170         * utils.c (read_file): Ditto.
171
172         * main.c (main): Use struct_fstat.
173
174         * mswindows.h (struct_fstat): Define a struct_fstat to deal with
175         the fact that Borland 5.5 has 64-bit stat, but not 64-bit fstat!
176
177 2005-06-23  Hrvoje Niksic  <hniksic@xemacs.org>
178
179         * sysdep.h: Remove code that deals with Watcom.
180
181 2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
182
183         * all: Use bool instead of int and false/true instead of 0/non-0
184         for boolean variables and values.
185
186 2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
187
188         * sysdep.h: Include the stdbool.h/_Bool/bool blurb from Autoconf.
189
190 2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
191
192         * init.c (cmd_lockable_boolean): Removed.
193
194 2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
195
196         * cookies.c (struct cookie): Use 1-bit bitfields for booleans
197         which makes the structure takes less space at no cost in
198         complexity.
199
200 2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
201
202         * Makefile.in ($(OBJ)): Add the config.h dependency.
203
204 2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
205
206         * openssl.c, connect.c, host.c: Replace instances of #ifdef
207         ENABLE_DEBUG if (opt.debug) {...} #endif with IF_DEBUG {...}.
208
209         * main.c: Rename the IF_DEBUG defined here to WHEN_DEBUG.
210
211         * wget.h (IF_DEBUG): New macro.
212         (DEBUGP): Define in terms of IF_DEBUG.
213
214 2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
215
216         * http.c (gethttp): Only handle --set-cookies (and assert that
217         cookie jar exists) if opt.cookies is true.  Failure to do so
218         triggered the assert when --no-cookies was used and the server
219         sent a Set-Cookie header.  Ouch!
220
221 2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
222
223         * connect.c (select_fd): Expect select() to exist.
224
225         * utils.c (xsleep): Always use select() as sleep fallback on
226         non-Windows platforms.
227
228         * ptimer.c: Delete the implementation of PTIMER_TIME.
229
230         * main.c: Assume existence of signal(), test for different signal
231         names instead.
232
233         * cmpt.c: Better document reasons why certain functions are
234         included.
235
236 2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
237
238         * Makefile.in: Remove the manually maintained dependency list;
239         make all object files depend on every header.
240
241 2005-06-20  Hrvoje Niksic  <hniksic@xemacs.org>
242
243         * hash.c: Rename "mapping" to "cell" to avoid confusion with the
244         term "mapping" (or "map") sometimes being used for the entire hash
245         table.  Also rename "non-empty" to "occupied" for easier reading
246         of if (!NON_EMPTY (...)) ... .
247
248 2005-06-20  Hrvoje Niksic  <hniksic@xemacs.org>
249
250         * main.c, ptimer.c, sysdep.h, utils.c: Use #elif to simplify reading of
251         chained if-else-else-else-... statements.
252
253 2005-06-20  Hrvoje Niksic  <hniksic@xemacs.org>
254
255         * all: Return type of signal handlers is `void'.  Include signal.h
256         unconditionally.
257
258         * all: Don't explicitly cast values returned by malloc.  We no
259         longer support ancient compilers that don't declare malloc, and we
260         never supported C++ builds.
261
262 2005-06-19  Hrvoje Niksic  <hniksic@xemacs.org>
263
264         * all: Don't declare errno.  Include both time.h and sys/time.h,
265         as long as sys/time.h exists.  Don't dereference function pointers
266         when invoking the functions they point to.
267
268         * cmpt.c (memmove): Remove function mandated by C89.
269         (strerror): Ditto.
270         (strstr): Ditto.
271
272         * all: Undo the K&R-ization changes from 2005-05-03.
273
274         * all: Remove support for K&R compilers: use C89 function
275         declarations, remove definition of PARAMS, remove support for
276         varargs, and remove ansi2knr.  Assume the presence of time.h,
277         string.h, and other headers mandated by C89.
278
279 2005-06-19  Hrvoje Niksic  <hniksic@xemacs.org>
280
281         * init.c (cmd_lockable_boolean): Don't recognize literal "2" and
282         "-1" values; unlike 0 and 1, those should never be exposed to the
283         user.  Update the error message to be more self-consistent, as
284         proposed by Benno Schulenberg.
285
286 2005-06-18  Hrvoje Niksic  <hniksic@xemacs.org>
287
288         * http.c (gethttp): Don't free "head" before using it to save
289         headers.
290
291 2005-06-18  Hrvoje Niksic  <hniksic@xemacs.org>
292
293         * http.c (gethttp): When -E is in use, check for file existence
294         after appending ".html" to the name and modify the file name if
295         necessary.
296
297 2005-06-17  Hrvoje Niksic  <hniksic@xemacs.org>
298
299         * connect.c (socket_has_inet6): Removed.
300
301         * host.c (lookup_host): Don't use the AI_ADDRCONFIG getaddrinfo
302         hint.
303
304 2005-06-16  Hrvoje Niksic  <hniksic@xemacs.org>
305
306         * init.c (cmd_lockable_boolean): Improve the error message so it
307         lists the more useful values first.
308
309 2005-06-15  Hrvoje Niksic  <hniksic@xemacs.org>
310
311         * http.c (gethttp): Also report the system error when the POST
312         data file is missing.
313
314 2005-06-15  Benno Schulenberg  <benno@nietvergeten.nl>
315
316         * ftp.c, http.c, connect.c, cookies.c, html-url.c, init.c, res.c:
317         Gettext-ize messages that were previously missed.
318
319 2005-06-15  Hrvoje Niksic  <hniksic@xemacs.org>
320
321         * host.h (ip_address): Remove the trailing comma from the type
322         enum in the no-IPv6 case.
323
324         * main.c (struct cmdline_option): Remove the trailing comma from
325         the enum.
326
327         Reported by Jens Schleusener.
328
329 2005-05-30  Hrvoje Niksic  <hniksic@xemacs.org>
330
331         * url.c (strpbrk_or_eos): Check for a recent GCC version before
332         using the statement-as-expression extension.
333
334 2005-05-30  Hrvoje Niksic  <hniksic@xemacs.org>
335
336         * http.c (gethttp): Don't attempt to "skip short body" if we're
337         issuing a HEAD request (in which case the response head is not
338         followed by a body).
339
340 2005-05-30  Hrvoje Niksic  <hniksic@xemacs.org>
341
342         * init.c (cmd_spec_header): Don't split the string along the
343         commas using cmd_vector; just append the new value using
344         vec_append instead.
345
346         * utils.c (vec_append): New function.
347
348 2005-05-27  Andreas Beckmann  <debian@abeckmann.de>
349
350         * html-url.c (tag_handle_link): Mark the content from the <link
351         src="..."> tag as expecting HTML.
352
353 2005-05-24  Hrvoje Niksic  <hniksic@xemacs.org>
354
355         * http.c (http_atotm): Document the origin of the "cookie date"
356         format.
357
358 2005-05-21  Hrvoje Niksic  <hniksic@xemacs.org>
359
360         * init.c (setval_internal): Report exact command name alongside
361         the "display name".
362
363 2005-05-18  Hrvoje Niksic  <hniksic@xemacs.org>
364
365         * cookies.c (update_cookie_field): Explicitly cast -1 to time_t to
366         cope with systems where time_t is unsigned.
367
368         * cookies.c: Remove unnecessary casts to time_t from values
369         already of that type.
370
371 2005-05-17  Hrvoje Niksic  <hniksic@xemacs.org>
372
373         * ftp.c (ftp_loop_internal): Same here.
374
375         * http.c (http_loop): Don't clobber the file when -c is specified
376         and the first attempt to retrieve the file fails.
377
378 2005-05-16  Hrvoje Niksic  <hniksic@xemacs.org>
379
380         * openssl.c (ssl_check_certificate): Print all issues with a
381         certificate.
382
383 2005-05-16  Hrvoje Niksic  <hniksic@xemacs.org>
384
385         * ftp-basic.c: Don't xfree() the line returned by ftp_response if
386         the returned code is not FTPOK.
387
388 2005-05-16  Hrvoje Niksic  <hniksic@xemacs.org>
389
390         * init.c (cleanup): Don't free the non-existent opt.ftp_acc.  Free
391         the SSL-related stuff.
392
393 2005-05-16  Hrvoje Niksic  <hniksic@xemacs.org>
394
395         * ftp.c (print_length): Consistently print \n at end of the
396         "Length" line.
397
398 2005-05-14  Hrvoje Niksic  <hniksic@xemacs.org>
399
400         * openssl.c (ssl_connect): Announce the beginning and the end of
401         the SSL handshake when in debug mode.
402
403         * wget.h (PTR_FORMAT): New macro for easier printing of pointer
404         values.  Use %0*lx along with PTR_FORMAT instead of %p.
405
406 2005-05-14  Hrvoje Niksic  <hniksic@xemacs.org>
407
408         * http.c (gethttp): Would forget to close the connection when
409         keep_alive was not used.
410
411 2005-05-13  Hrvoje Niksic  <hniksic@xemacs.org>
412
413         * openssl.c (pattern_match): Document the code that decides
414         whether "*" matches ".".
415
416 2005-05-12  Hrvoje Niksic  <hniksic@xemacs.org>
417
418         * ftp-ls.c (ftp_index): Use %d to print the port number, which is
419         now int.
420         From Steven M. Schweda's VMS patches.
421
422 2005-05-12  Hrvoje Niksic  <hniksic@xemacs.org>
423
424         * url.c (rewrite_shorthand_url): Don't rewrite "https://host" to
425         "ftp://https//host" when SSL is not used.
426
427 2005-05-11  Hrvoje Niksic  <hniksic@xemacs.org>
428
429         * openssl.c (ssl_check_server_identity): Renamed to
430         ssl_check_certificate because it does more than just checking the
431         server's identity.
432         (ssl_check_certificate): Tell the user about
433         --no-check-certificate.
434
435 2005-05-11  Hrvoje Niksic  <hniksic@xemacs.org>
436
437         * openssl.c (ssl_init): Always use SSL_VERIFY_NONE, so that the
438         handshake finishes even if the certificate is invalid.  That way
439         ssl_check_server_identity can provide better diagnostics on why
440         the verification failed.
441
442 2005-05-11  Hrvoje Niksic  <hniksic@xemacs.org>
443
444         * openssl.c (pattern_match): New function.
445         (ssl_check_server_identity): Treat peer certificate common name as
446         wildcard.
447
448 2005-05-10  Hrvoje Niksic  <hniksic@xemacs.org>
449
450         * openssl.c (ssl_check_server_identity): Print certificate subject
451         and issuer.
452
453 2005-05-10  Hrvoje Niksic  <hniksic@xemacs.org>
454
455         * res.c (res_register_specs): Correctly pass pointers to
456         hash_table_get_pair.
457
458 2005-05-10  Hrvoje Niksic  <hniksic@xemacs.org>
459
460         * http.c (gethttp): Call ssl_check_server_identity.
461
462         * openssl.c (ssl_check_server_identity): New function, verifies
463         that the host name in the certificate matches the actual host
464         name.
465         (verify_cert_callback): Removed, since it didn't do anything
466         except returning the preverify_ok argument.
467
468         * connect.c (fd_transport_context): Allow retrieval of the context
469         pointer registered with fd_register_transport.
470
471 2005-05-09  Hrvoje Niksic  <hniksic@xemacs.org>
472
473         * openssl.c (verify_cert_callback): Renamed from verify_callback.
474         Always return the received "ok" value.  Print the X509 name in
475         debug mode.
476         (ssl_init): Enable partial writes in SSL context.
477
478 2005-05-08  Hrvoje Niksic  <hniksic@xemacs.org>
479
480         * http.c (http_loop): Check for wildcards in the URL path
481         component, not in the whole URL.
482
483         * ftp.c (ftp_loop): Check for wildcards in URL path before
484         unescaping, so the users can escape globbing metacharacters with %
485         escapes.
486
487 2005-05-08  Hrvoje Niksic  <hniksic@xemacs.org>
488
489         * init.c (run_command): Correctly interpret the return value of
490         parse_line.
491         (commands): Re-alphabetize.
492
493 2005-05-08  Hrvoje Niksic  <hniksic@xemacs.org>
494
495         * netrc.c (parse_netrc): Explicitly check for assignment != NULL
496         to silence warning from Borland C.
497
498         * url.c (sync_path): Don't unnecessarily increment p.
499         (url_parse): Don't unnecessarily set url_encode to NULL just
500         prior to return from the function.
501
502 2005-05-08  Hrvoje Niksic  <hniksic@xemacs.org>
503
504         * log.c (escnonprint_internal): Place variable declarations
505         before other statements.
506
507 2005-05-08  Hrvoje Niksic  <hniksic@xemacs.org>
508
509         * html-url.c: Include recur.h.
510
511         * http.c (request_new): Define as accepting no args.
512
513 2005-05-07  Hrvoje Niksic  <hniksic@xemacs.org>
514
515         * url.c (strpbrk_or_eos): Made inline.  Use strchr(s, '\0') for
516         finding the NUL char position.
517
518 2005-05-07  Hrvoje Niksic  <hniksic@xemacs.org>
519
520         * url.c (decide_copy_method): Renamed to char_needs_escaping.
521         Since it now returns only two possible values, change it to return
522         boolean (int).
523
524 2005-05-07  Hrvoje Niksic  <hniksic@xemacs.org>
525
526         * ftp-basic.c (ftp_request): Prevent newlines in VALUE causing
527         inadvertent sending of multiple FTP commands.
528
529 2005-05-07  Hrvoje Niksic  <hniksic@xemacs.org>
530
531         * url.c (decide_copy_method): Never cause reencode_escapes to
532         decode % escapes; it is too intrusive and breaks some servers.
533
534 2005-05-07  Hrvoje Niksic  <hniksic@xemacs.org>
535
536         * http.c (gethttp): When tunnelling SSL traffic over proxy with
537         CONNECT, we're really talking to the remote server directly.
538         Because of this, the request-line argument must be the URL path
539         rather than the whole URL, as it would be when using regular
540         proxies.
541         Reported by Charles Lane.
542
543 2005-05-06  Hrvoje Niksic  <hniksic@xemacs.org>
544
545         * init.c (cmd_spec_useragent): Allow empty User-Agent.
546
547         * http.c (gethttp): Don't print "unknown authentication scheme"
548         for failed Basic authentication.
549         (SET_USER_AGENT): Don't set user-agent if opt.useragent is empty.
550         (gethttp): Use alloca for allocation of www_authenticate.
551
552 2005-05-06  Hrvoje Niksic  <hniksic@xemacs.org>
553
554         * main.c (print_help): Fix wording of --secure-protocol help text.
555
556 2005-05-06  Hrvoje Niksic  <hniksic@xemacs.org>
557
558         * cmpt.c (strstr): Updated from glibc 2.3.5.
559
560 2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
561
562         * http.c (http_atotm): Zero out the whole struct tm being passed
563         to strptime.
564
565 2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
566
567         * main.c (main): Propagate option name to setoptval.
568
569         * init.c (setoptval): Accept another argument, OPTNAME.  Propagate
570         that argument as the option name independently of the actual
571         command, determined by command_by_name(com).
572
573 2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
574
575         * init.c (parse_line): Make the return value indicate whether
576         there was a syntax error or a setter failed.
577         (run_wgetrc): Return an indication on whether an error has been
578         encountered.
579         (initialize): Abort if there have been errors running either
580         .wgetrc file.
581
582 2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
583
584         * log.c (copy_and_escape): Slightly reduce code repetition between
585         the two loops.
586
587 2005-05-05  Charles C.Fu  <ccwf@bacchus.com>
588
589         * utils.c (proclist): Strip leading slash when calling fnmatch
590         too, otherwise wildcard comparisons always fail.
591
592 2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
593
594         * utils.c (touch): Set access time to current time.
595
596 2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
597
598         * url.c (url_unescape): Don't unescape %00, it effectively
599         truncates the string.
600
601 2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
602
603         * log.c (copy_and_escape): Replace the FOR_URI argument with a
604         slightly more general mechanism for specifying different kinds of
605         escape.
606
607 2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
608
609         * ftp-basic.c (ftp_response): Fix printing FTP server response.
610
611 2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
612
613         * retr.c (limit_bandwidth_reset): Reset sleep_adjust.
614         (limit_bandwidth): Don't allow huge "adjustment" values that
615         result from being suspended for a while.
616
617 2005-05-04  Hrvoje Niksic  <hniksic@xemacs.org>
618
619         * wget.h: If gettext was found but libtintl.h wasn't, declare
620         gettext's return type to avoid type mismatches.
621
622 2005-05-03  Hrvoje Niksic  <hniksic@xemacs.org>
623
624         * url.c (url_parse): Rename label `error' to avoid conflict with
625         identifier.
626
627         * retr.c (fd_read_body): Rename label `out' to avoid conflict with
628         identifier.
629         (fd_read_hunk): Use explicit double constant.
630         (retrieve_from_file): Don't use string concatenation.
631         (sleep_between_retrievals): Make sure xsleep is called with a
632         `double' argument.
633         (no_proxy_match): Define as static, like it is declared.
634
635         * progress.c (bar_create): Use 0.0 instead of 0 because K&R
636         compilers can't automatically promote it.
637
638         * http-ntlm.c (ntlm_output): Replace \xHH sequences with \OOO for
639         the sake of old compilers.
640
641         * ftp.c (ftp_loop_internal): Don't use string concatenation.
642
643         * http.c (request_send): Use explicit double constants when
644         calling fd_read and fd_write.
645         (post_file): Ditto.
646         (gethttp): Ditto.
647         (skip_short_body): Ditto.
648
649         * ftp-basic.c: When calling fd_write, specify the last argument as
650         a `double' constant for the sake of K&R compilers which don't see
651         the prototype and therefore can't promote it to double
652         automatically.
653
654         * cookies.c (cookie_jar_load): Rename abort label to abort_cookie
655         to avoid name conflict in K&R compilers.
656
657 2005-04-29  Hrvoje Niksic  <hniksic@xemacs.org>
658
659         * ptimer.c (posix_init): Since we allow _POSIX_MONOTONIC_CLOCK==0,
660         it is not enough to check for _POSIX_MONOTONIC_CLOCK-0, we must
661         also check for defined(_POSIX_MONOTONIC_CLOCK).
662
663 2005-04-28  Hrvoje Niksic  <hniksic@xemacs.org>
664
665         * ftp.c, hash.c, connect.c, host.c, http.c: Remove unreached code,
666         such as "break" following return or abort.
667
668 2005-04-28  Hrvoje Niksic  <hniksic@xemacs.org>
669
670         * init.c (commands): Wrap the use of opt.random_file in #ifdef
671         HAVE_SSL.
672
673 2005-04-28  Hrvoje Niksic  <hniksic@xemacs.org>
674
675         * http.c (gethttp): Correctly set the user agent.
676
677 2005-04-27  Hrvoje Niksic  <hniksic@xemacs.org>
678
679         * init.c (cmd_spec_useragent): Free the old value of
680         opt.useragent before setting the new one.
681
682 2005-04-27  Mauro Tortonesi  <mauro@ferrara.linux.it>
683
684         * main.c: Map --ftp-password, --http-password and --proxy-password to
685         the new ftppassword, httppassword and proxypassword commands
686         respectively.  Document the --user and --password options in the help
687         string.
688         
689 2005-04-27  Mauro Tortonesi  <mauro@ferrara.linux.it>
690
691         * ftp.c: Add support for --user and --password.
692         
693         * http.c: Add support for --user and --password.
694         
695         * init.c: Deprecated ftppasswd, httppasswd, login, passwd and
696         proxypasswd commands.  Added ftppassword, ftpuser, httppassword,
697         password, proxypassword and user commands.
698
699         * main.c: Renamed --ftp-passwd to --ftp-password.  Added --ftp-user,
700         --http-password, --password, --proxy-password and --user.  Deprecated
701         --http-passwd and --proxy-passwd.  Added documentation for new options
702         and removed documentation for deprecated options in the help string.
703         
704         * options.h (struct options): Added user and passwd members to handle
705         --user and --password respectively.  Renamed ftp_acc and ftp_pass
706         members to ftp_user and ftp_passwd for consistency.
707
708 2005-04-27  Hrvoje Niksic  <hniksic@xemacs.org>
709
710         * main.c (print_help): Advertise "DER", not "ASN1".
711
712 2005-04-27  Hrvoje Niksic  <hniksic@xemacs.org>
713
714         * openssl.c (init_prng): Disable the weak random seed by default.
715
716         * http.c (gethttp): Simplify SSL initialization; disable SSL when
717         anything goes wrong with the initialization.
718
719         * options.h (struct options): New option opt.random_file.
720
721 2005-04-27  Hrvoje Niksic  <hniksic@xemacs.org>
722
723         * init.c: Wrap private key commands in IF_SSL.
724
725 2005-04-27  Hrvoje Niksic  <hniksic@xemacs.org>
726
727         * openssl.c (ssl_init): Ditto.
728
729         * options.h (struct options): Allow separate specification of key
730         type and certificate type.
731
732         * init.c (cmd_spec_cert_type): Provide a "der" synonym for "asn1"
733         certificate encoding.
734
735 2005-04-26  Hrvoje Niksic  <hniksic@xemacs.org>
736
737         * openssl.c: Renamed "gen_sslfunc.c" to "openssl.c" and
738         "gen_sslfunc.h" to "openssl.h".  This reflects the intent of
739         openssl.c encapsulating the OpenSSL-specific code.
740
741 2005-04-26  Hrvoje Niksic  <hniksic@xemacs.org>
742
743         * init.c: Renamed "closure" (a synonym for context in some
744         cultures) to "place", which more accurately reflects the usage.
745
746 2005-04-26  Hrvoje Niksic  <hniksic@xemacs.org>
747
748         * gen_sslfunc.c (ssl_init): Use default locations for loading the
749         certificate bundles.
750         (ssl_init_prng): Disable the cryptographically weak PRNG
751         initialization fallback.
752
753         * init.c: Renamed SSL command-line arguments and wgetrc commands.
754         (defaults): Check the server certificate by default.
755
756 2005-04-26  Hrvoje Niksic  <hniksic@xemacs.org>
757
758         * cookies.c (cookie_handle_set_cookie): Delete the part of the
759         path after the trailing slash.
760
761         * http.c (gethttp): Call cookie_handle_set_cookie with path that
762         begins with '/'.
763
764 2005-04-26  Hrvoje Niksic  <hniksic@xemacs.org>
765
766         * http.c (gethttp): Call skip_short_body only if keep_alive is in
767         use.
768         (gethttp): Send the User-Agent header with the CONNECT request as
769         well.
770
771 2005-04-25  Hrvoje Niksic  <hniksic@xemacs.org>
772
773         * main.c (option_data): Removed support for the undocumented flag
774         --use-proxy.
775
776 2005-04-25  Hrvoje Niksic  <hniksic@xemacs.org>
777
778         * main.c (option_data): Don't treat -Y as a boolean switch; treat
779         it as a value switch instead, so "-Y off" continues to work.
780
781 2005-04-24  Hrvoje Niksic  <hniksic@xemacs.org>
782
783         * utils.c (aprintf): Delete unreachable statement.
784
785 2005-04-24  Hrvoje Niksic  <hniksic@xemacs.org>
786
787         * host.c (cmp_prefer_ipv4): New function.
788         (cmp_prefer_ipv6): New function.
789         (lookup_host): Use the appropriate comparator according to
790         opt.prefer_family.
791
792         * init.c: New option prefer_family.
793
794         * host.c (is_valid_ipv6_address): Spell NS_* constants in lower
795         case to avoid clash with system headers.
796         (lookup_host): Reorder the addresses so that IPv4 ones come first.
797
798         * utils.c (stable_sort): New function.
799
800 2005-04-24  Hrvoje Niksic  <hniksic@xemacs.org>
801
802         * connect.c (retryable_socket_connect_error): Return 0 for
803         ENETUNREACH and EHOSTUNREACH.
804
805 2005-04-23  Hrvoje Niksic  <hniksic@xemacs.org>
806
807         * cmpt.c: Reenable the memmove implementation for systems that
808         lack it.
809
810         * http.c (gethttp): Store the "authorized" state of the persistent
811         connection.
812         (request_remove_header): New function.
813         (gethttp): Don't send the "Basic" authentication if the connection
814         is already authorized.
815
816 2005-04-23  Hrvoje Niksic  <hniksic@xemacs.org>
817
818         * utils.c (base64_encode): Treat input as unsigned chars.
819         Required for correct encoding of binary stuff.
820
821 2005-04-23  Hrvoje Niksic  <hniksic@xemacs.org>
822
823         * http-ntlm.c: Format the function definitions in an
824         ansi2knr-friendly fashion.
825
826 2005-04-22  Hrvoje Niksic  <hniksic@xemacs.org>
827
828         * http.c (gethttp): Handle multiple WWW-Authentication headers,
829         only one of which is recognized.  Those are sent by IIS with NTLM
830         authorization.
831         (create_authorization_line): Propagate information whether
832         authorization is finished.
833         (gethttp): Only stop authorization when it's really finished, not
834         after fixed two steps.
835
836 2005-04-21  Hrvoje Niksic  <hniksic@xemacs.org>
837
838         * gen_sslfunc.c (ssl_init): Fix warning message text; mark the
839         message as translatable.
840
841 2005-04-21  Hrvoje Niksic  <hniksic@xemacs.org>
842
843         * main.c (print_help): Print the EGD option outside the cluster of
844         SSL options.
845
846 2005-04-21  Hrvoje Niksic  <hniksic@xemacs.org>
847
848         * http-ntlm.c (ntlm_output): Fix setting the domain.
849         Suggested by Sami Krank.
850
851 2005-04-20  Mauro Tortonesi  <mauro@ferrara.linux.it>
852
853         * connect.c: Set IPV6_V6ONLY socket option when -6 switch is used.
854
855 2005-04-20  FUJISHIMA Satsuki  <sf@FreeBSD.org>
856
857         * http.c (request_set_header): Fix the check whether a new header
858         needs to be allocated.
859
860 2005-04-18  Hrvoje Niksic  <hniksic@xemacs.org>
861
862         * utils.c (base64_encode): Use the parameter order that makes more
863         sense.  Return the length of the base64 written.  Updated all
864         callers.
865
866 2005-04-17  Hrvoje Niksic  <hniksic@xemacs.org>
867
868         * http.c (request_set_header): Free NAME when VALUE is NULL and
869         freeing the header name is requested.
870
871 2005-04-17  Hrvoje Niksic  <hniksic@xemacs.org>
872
873         * snprintf.c (fmtstr): Declare VALUE as const char *.
874         Based on patch by Russ Allbery.
875
876 2005-04-17  Hrvoje Niksic  <hniksic@xemacs.org>
877
878         * snprintf.c (fmtfp): More correct handling of significant digit
879         count with %g -- 0.002 has one significant digit, not three.
880
881 2005-04-16  Hrvoje Niksic  <hniksic@xemacs.org>
882
883         * retr.c (fd_read_body): Respect read timeout with non-interactive
884         or no progress gauge -- treat ETIMEDOUT specially only when
885         progress_interactive.
886         Reported by FUJISHIMA Satsuki.
887
888 2005-04-16  FUJISHIMA Satsuki  <sf@FreeBSD.org>
889
890         * http.c (gethttp): Don't use HTTP/1.0 persistent connections over
891         proxy.
892
893 2005-04-16  Hrvoje Niksic  <hniksic@xemacs.org>
894
895         * snprintf.c: Use the PARAMS macro to handle prototypes.  Write
896         function definitions in the ansi2knr-friendly way.
897         (fmtstr): If string precision is specified, don't read VALUE past
898         it.
899         (dopr): Actually print %g and %e formats.
900         (fmtfp): Fix a bug that caused 0.01 to be printed as 0.1.
901         (fmtfp): Use LLONG in floating point conversions to be able to
902         convert more digits.
903         (fmtfp): Interpret precision as number of significant digits with
904         %g.
905         (fmtfp): Omit trailing decimal zeros with %g.
906
907         * snprintf.c: Don't include <ctype.h> because none of it is used.
908         Include strings.h/string.h, as per Autoconf.
909
910 2005-04-15  Hrvoje Niksic  <hniksic@xemacs.org>
911
912         * ptimer.c: Use _POSIX_TIMERS - 0 > 0, which handles the case when
913         _POSIX_TIMERS is defined but empty, as well as the case when it is
914         undefined.  Do the same with the check for _POSIX_MONOTONIC_CLOCK.
915         Suggested by Larry Jones.
916
917 2005-04-15  Hrvoje Niksic  <hniksic@xemacs.org>
918
919         * ptimer.c: Check that _POSIX_TIMERS is defined as well as > 0.
920         Problem reported by Steven M. Schweda.
921
922 2005-04-14  Hrvoje Niksic  <hniksic@xemacs.org>
923
924         * http.c (skip_short_body): Print the skipped body data in debug
925         mode.
926         (skip_short_body): Don't skip more than 4k of body data.
927         (skip_short_body): Return whether the skipping was successful.
928         (gethttp): If skip_short_body failed, invalidate the connection.
929
930 2005-04-12  Gisle Vanem  <giva@bgnett.no>
931
932         * ftp.c (getftp): Ditto.
933
934         * http.c (gethttp): Open the output file in binary mode.
935
936 2005-04-11  Hrvoje Niksic  <hniksic@xemacs.org>
937
938         * hash.c: Conditionalize including config.h on HAVE_CONFIG_H
939         instead of on STANDALONE.
940
941 2005-04-11  Hrvoje Niksic  <hniksic@xemacs.org>
942
943         * gen_sslfunc.c (ssl_print_errors): Made static.
944         (ssl_print_errors): Eliminate potentially dangerous fixed-size
945         error buffer.  Passing NULL to ERR_error_string causes it to use
946         its own static buffer, which is fine for our purposes.
947
948         * gen_sslfunc.c: Include gen_sslfunc.h.  Make the declarations of
949         ssl_init and ssl_conect match the actual definitions.
950         (ssl_connect): Simply return a boolean, the SSL context is no
951         longer useful as a return value.
952
953         * retr.c: Don't include SSL headers; we don't need them.
954
955 2005-04-11  Hrvoje Niksic  <hniksic@xemacs.org>
956
957         * config-post.h: Don't define _VA_LIST under Solaris; it breaks
958         compilation with GCC 3.4 under Solaris 10.  (It was defined to
959         avoid a warning with previous versions of GCC.)
960
961 2005-04-11  Hrvoje Niksic  <hniksic@xemacs.org>
962
963         * xmalloc.c (register_ptr): Warn the user to increase SZ prior to
964         aborting.
965
966 2005-04-11  Hrvoje Niksic  <hniksic@xemacs.org>
967
968         * convert.c (convert_cleanup): Free converted_files.
969
970 2005-04-10  Hrvoje Niksic  <hniksic@xemacs.org>
971
972         * wget.h (DEBUGP): Use __builtin_expect to give a hint to GCC that
973         opt.debug is false in the vast majority of cases.
974
975 2005-04-10  Hrvoje Niksic  <hniksic@xemacs.org>
976
977         * config-post.h: Declare alloca as void *, not char *.
978
979 2005-04-09  Hrvoje Niksic  <hniksic@xemacs.org>
980
981         * recur.c (download_child_p): When -p is used, (temporarily)
982         ignore accept/reject rules for HTMLs, even when they are at the
983         maximum recursion depth.  That is because with -p we are, if
984         necessary, overstepping the max. depth to get the requisites.
985
986 2004-06-12  Larry Jones <lawrence.jones@ugsplm.com>
987
988         * recur.c (download_child_p): Correct the logic in check number 6:
989         test opt.reclevel (not DEPTH) against INFINITE_RECURSION.
990
991 2005-04-09  Hrvoje Niksic  <hniksic@xemacs.org>
992
993         * url.c: Use "static const" in preference to "const static".
994         Sun's cc warns that "storage class after type is obsolescent".
995
996         * url.c (urlchr_table): Don't mark ~ as unsafe, too many broken
997         web sites are confused when ~ is changed to %7E.  Their servers
998         redirect /%7Efoo/ to /~foo/, which Wget again accesses using %7E,
999         causing further redirections, therefore looping infinitely.  See
1000         Debian bug #301624 for an example.
1001
1002 2005-04-09  Hrvoje Niksic  <hniksic@xemacs.org>
1003
1004         * alloca.c: Include wget.h to be able to use xmalloc.  In addition
1005         to defining malloc to xmalloc, also define free to xfree.
1006
1007 2005-04-09  Hrvoje Niksic  <hniksic@xemacs.org>
1008
1009         * http-ntlm.c (ntlm_output): Use "char", not "unsigned char" for
1010         ntlmbuf.  Our base64 functions accept char anyway.
1011         (ntlm_output): Join up the format string, since we nominally
1012         support K&R compilers.
1013         (ntlm_output): Ditto.
1014
1015 2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
1016
1017         * ptimer.c: Use Windows timers under Cygwin, whose POSIX timer
1018         implementation is incomplete.
1019
1020 2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
1021
1022         * ptimer.c (struct ptimer): Remove the unused initialized field.
1023
1024         * ptimer.c: Renamed function parameters from WT (which used to
1025         stand for wget_timer or wtimer) to PT.
1026
1027 2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
1028
1029         * ptimer.c (posix_init): Be smarter about choosing clocks.  In
1030         decreasing order of preference, use CLOCK_MONOTONIC,
1031         CLOCK_HIGHRES, and CLOCK_REALTIME.
1032         (ptimer_allocate): Removed.
1033
1034         * ptimer.c: Refactor the code by cleanly separating the
1035         architecture-dependent code from the architecture-independent
1036         code.
1037
1038 2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
1039
1040         * ptimer.c (ptimer_init): Explicitly check that
1041         _POSIX_MONOTONIC_CLOCK is *both* defined and >=0.  (Undefined
1042         symbols are >=0.)
1043
1044 2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
1045
1046         * ptimer.c (ptimer_diff): Fix typo affecting Windows build.
1047
1048 2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
1049
1050         * ptimer.c (ptimer_init): In fact, _POSIX_MONOTONIC_CLOCK needs to
1051         be >= 0.
1052
1053         * ptimer.c (ptimer_init): Check whether _POSIX_MONOTONIC_CLOCK is
1054         defined instead of whether it's greater than 0.  glibc defines it
1055         to 0, but still makes it available via sysconf.
1056
1057 2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
1058
1059         * mswindows.c (str_to_int64): Rename OVERFLOW and UNDERFLOW to
1060         INT64_OVERFLOW and INT64_UNDERFLOW, since those names are used.
1061
1062 2005-04-07  Hrvoje Niksic  <hniksic@xemacs.org>
1063
1064         * ptimer.c: New file.  Move the "wtimer" functions from utils.c to
1065         this file and rename them to ptimer_.
1066
1067 2005-04-07  Hrvoje Niksic  <hniksic@xemacs.org>
1068
1069         * host.c (NO_ADDRESS): Define NO_ADDRESS only after the system
1070         headers have been included.
1071
1072 2005-04-06  Hrvoje Niksic  <hniksic@xemacs.org>
1073
1074         * http.c (pconn): Include NTLM data, which is per-connection.
1075         (known_authentication_scheme_p): Recognize NTLM authorization.
1076         (create_authorization_line): Call ntlm_input and ntlm_output.
1077
1078         * http-ntlm.c: New file, donated by Daniel Stenberg and originally
1079         written for curl, heavily modified for Wget.
1080
1081         * utils.c (base64_encode): Relocated from http.c, since it is now
1082         used by http-ntlm.c, and will possibly be used elsewhere.
1083         (base64_decode): New function, originally based on code from GNU
1084         recode.
1085
1086 2005-04-02  Hrvoje Niksic  <hniksic@xemacs.org>
1087
1088         * ftp.c (ftp_loop): Ditto.
1089
1090         * ftp-basic.c (ftp_pasv): Use the xzero shorthand for memset(0).
1091         (ftp_lpsv): Ditto.
1092
1093 2005-04-05  Mauro Tortonesi  <mauro@ferrara.linux.it>
1094
1095         * Makefile.in: removed string_t.c from list of source files.
1096
1097 2005-04-04  Mauro Tortonesi  <mauro@ferrara.linux.it>
1098
1099         * string_t.c: Removed.
1100         
1101         * string_t.h: Removed.
1102
1103 2005-04-02  Hrvoje Niksic  <hniksic@xemacs.org>
1104
1105         * url.c (rewrite_shorthand_url): Only accept recognized schemes.
1106         That way "foo:80" will correctly be rewritten to "http://foo:80"
1107         instead of left unchanged and ultimately rejected because of
1108         "unsupported scheme foo".
1109
1110 2005-03-31  Hrvoje Niksic  <hniksic@xemacs.org>
1111
1112         * utils.c (number_to_string): Avoid explicit 64-bit constants;
1113         construct them by multiplication at compile-time.
1114
1115         * utils.c, elsewhere: Don't append "L" to 32-bit integer
1116         constants; we aren't really compilable on 16-bit systems anyway.
1117
1118         * hash.c (prime_size): Remove primes larger than 2^31, but include
1119         2^31-1, which is prime.
1120
1121 2005-03-30  Hrvoje Niksic  <hniksic@xemacs.org>
1122
1123         * utils.c (string_set_to_array): New function.
1124
1125         * convert.c: Replace the use of "slists" with sets/hash-tables,
1126         which in fact suit the intended purpose much better.
1127         downloaded_html_list is removed altogether.
1128
1129 2005-03-29  Hrvoje Niksic  <hniksic@xemacs.org>
1130
1131         * ftp.h (enum): Rename GLOBALL, GETALL, and GETONE to
1132         GLOB_GLOBALL, GLOB_GETALL, and GLOB_GETONE to avoid conflict with
1133         Linux headers.
1134
1135 2005-03-29  Hrvoje Niksic  <hniksic@xemacs.org>
1136
1137         * utils.c (numdigit): More correct handling of negative numbers.
1138
1139 2005-03-21  Hrvoje Niksic  <hniksic@xemacs.org>
1140
1141         * http.c (gethttp): Print the human-readable size.
1142
1143         * ftp.c (getftp): Print the human-readable size of the file to be
1144         downloaded.
1145
1146         * utils.c (human_readable): New function.
1147
1148         * utils.c: Renamed "legible" to "with_thousand_seps",
1149         "legible_large_int" to "with_thousand_seps_large", and "legible_1"
1150         to "add_thousand_seps".
1151
1152 2005-03-21  Hrvoje Niksic  <hniksic@xemacs.org>
1153
1154         * http.c (gethttp): Inhibit persistent connections when talking to
1155         proxies, as mandated by RFC 2068.
1156
1157 2005-03-20  Hrvoje Niksic  <hniksic@xemacs.org>
1158
1159         * url.c (unescape_single_char): New function.
1160         (url_escape_dir): Use it to unescape slashes in directory
1161         components.
1162         (url_string): Escape unsafe chars in host name, except for the ':'
1163         charaters, which can appear in IPv6 addresses.
1164
1165         * main.c (main): Don't access the cookie jar directly.
1166
1167         * log.c (escnonprint_internal): Correctly calculate the needed
1168         string size.  Don't forget the buffer's new size after having
1169         reallocated it.
1170         (log_cleanup): New function.  Free the escnonprint ring data.
1171
1172         * init.c (cleanup): Don't free the cookie jar explicitly, it is
1173         now done by http_cleanup.
1174         (cleanup): opt.user_headers is now a vector, free it with
1175         free_vec.
1176
1177         * http.c (gethttp): Make sure to free the request data, the status
1178         message, and the response data before returning from the function.
1179         (save_cookies): New function.
1180         (http_cleanup): Free the cookie jar here.
1181
1182         * hash.c: Renamed string_hash to hash_string and ptrhash to
1183         hash_pointer.  Exported hash_pointer.
1184
1185         * xmalloc.c: Organized malloc_table (previously malloc_debug) as a
1186         simple EQ hash table.  register_ptr and unregister_ptr are now of
1187         O(1) complexity.
1188
1189         * xmalloc.c: Renamed "*_debug" to debugging_* and "*_real" to
1190         checking_*.
1191
1192 2005-03-12  Hrvoje Niksic  <hniksic@xemacs.org>
1193
1194         * utils.c (debug_test_md5): Moved to gen-md5.c.
1195
1196         * mswindows.h: Don't declare inet_ntop, since we don't use it.
1197
1198         * mswindows.h: For consistency, also wrap closesocket, it being
1199         a Winsock call.
1200
1201         * mswindows.h: Don't declare sleep and usleep; we're defining
1202         xsleep now.
1203
1204         * mswindows.h (mkdir): Don't special-case Borland C, _mkdir
1205         works there as well.
1206
1207         * host.c: Don't include winsock header files; the correct ones
1208         are already included by mswindows.h.
1209
1210         * mswindows.c (xsleep): Round toward the nearest millisecond
1211         in an attempt to avoid average short sleeps.
1212
1213         * utils.c (wtimer_granularity): Report correct values for
1214         Windows timers and for high-resolution timers.
1215
1216         * utils.c (wtimer_initialize_once): New function, called to
1217         initialize the timer frequency.
1218
1219         * utils.c: Replace the use of GetSystemTime with high-resolution
1220         counters under Windows.  When high-resolution counters are
1221         unavailable, use GetTickCount().
1222
1223 2005-03-15  Hrvoje Niksic  <hniksic@xemacs.org>
1224
1225         * retr.c (fd_read_body): Undo the 2004-11-18 change.  Instead,
1226         always be "exact".
1227
1228 2005-03-17  Hrvoje Niksic  <hniksic@xemacs.org>
1229
1230         * ftp-basic.c (ftp_login): Don't free the string if ftp_response
1231         returned an error status because the line didn't get allocated in
1232         the first place.
1233
1234 2005-03-15  Hrvoje Niksic  <hniksic@xemacs.org>
1235
1236         * http.c (read_http_response_head): Limit the response size to 64k
1237         bytes.
1238
1239         * retr.c (fd_read_hunk): Accept a MAXSIZE argument that limits the
1240         number of bytes the function is allowed to allocate.
1241         (fd_read_line): Limit the line to 4096 bytes.
1242
1243 2005-03-12  Hrvoje Niksic  <hniksic@xemacs.org>
1244
1245         * wget.h: Include options.h after wgint has been defined.
1246
1247         * options.h (struct options): Declare options processed with
1248         cmd_bytes as wgint, not long.
1249
1250 2005-03-18  Hrvoje Niksic  <hniksic@xemacs.org>
1251
1252         * init.c (cmd_file): Use concat_strings.
1253
1254         * http.c (basic_authentication_encode): Use concat_strings.
1255
1256         * ftp-ls.c (ftp_index): Use concat_strings.
1257
1258         * ftp-basic.c (ftp_request): Use concat_strings.
1259
1260         * utils.c (concat_strings): New function.
1261
1262 2005-03-12  Hrvoje Niksic  <hniksic@xemacs.org>
1263
1264         * init.c (simple_atof): Handle negative numbers; skip whitespace
1265         before the number.
1266         (simple_atoi): Ditto.  Also, check for overflow and underflow.
1267         (cmd_number): Bail out on negative numbers.
1268         (parse_bytes_helper): Ditto.
1269
1270 2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
1271
1272         * http.c (gethttp): Handle multiple Set-Cookie headers sent by
1273         remote server.
1274
1275 2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
1276
1277         * init.c (defaults): Use passive FTP by default.
1278
1279 2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
1280
1281         * mswindows.c: Provide wrappers to Winsock functions that set
1282         errno to WSAGetLastError() in case of failure.  Also provide a
1283         Windows-specific version of strerror.
1284
1285         * mswindows.h: Wrap calls to socket, bind, connect, recv, send,
1286         select, getsockname, getpeername, and setsockopt.
1287
1288 2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
1289
1290         * url.c (url_parse): Reject port numbers larger than 65535.  We
1291         also check for overflow while parsing port numbers.
1292
1293 2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
1294
1295         * utils.c (read_file): Don't use wgint for file size; LFS won't
1296         work since the file is mmap'ed as a whole.
1297
1298         * options.h: Don't include stdio.h.
1299
1300         * log.c: Ditto.
1301
1302         * init.c: Disambiguate assignment from non-zero test to avoid
1303         Borland C warning.
1304
1305         * http.c (response_new): Don't needlessly post-increment count.
1306
1307         * hash.c: Include stdio.h.
1308
1309         * gnu-md5.h: Don't include stdio.h.
1310
1311         * getopt.h (struct option): Always use const.
1312
1313         * ftp.c (getftp): Avoid unnecessary assignment to RES to avoid
1314         Borland C warning.
1315
1316         * ftp-ls.c: Disambiguate assignment from non-zero test to avoid
1317         Borland C warning.
1318
1319         * cmpt.c (strptime_internal): Don't initialize rp_backup when
1320         !_NL_CURRENT to avoid Borland C warning.
1321
1322 2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
1323
1324         * utils.c (fopen_excl): Fix parse error when O_BINARY is
1325         available.
1326
1327 2005-03-05  Hrvoje Niksic  <hniksic@xemacs.org>
1328
1329         * url.c (url_file_name): Don't allow hosts named ".." to be
1330         appended as path elements.
1331
1332 2005-03-03  Hrvoje Niksic  <hniksic@xemacs.org>
1333
1334         * retr.c (retrieve_url): Escape location header.
1335
1336         * http.c (print_server_response_1): Escape server response when
1337         printing it.
1338         (gethttp): Escape host name, status message, location header, and
1339         content type.
1340         (http_loop): Escape error message from server.
1341
1342         * host.c (lookup_host): Escape host name when printing it.
1343
1344         * ftp.c (getftp): Escape user name when printing it.
1345         (getftp): Escape remote file and directory for printing.
1346         (getftp): Escape server listing when printing it.
1347         (ftp_retrieve_list): Escape link name and file name.
1348         (ftp_retrieve_glob): Escape file name.
1349
1350         * ftp-basic.c (ftp_response): Escape server response when printing
1351         it.
1352
1353         * cookies.c (parse_set_cookies): Escape the cookie field when
1354         printing it.
1355         (parse_set_cookies): Escape contents of remote header.
1356         (cookie_handle_set_cookie): Escape host name and cookie domain.
1357
1358         * connect.c (connect_to_ip): Escape the host name.
1359
1360         * log.c (escnonprint): New function, used for printing strings
1361         coming from the server that possibly contain non-ASCII characters.
1362         (escnonprint_uri): Ditto.
1363
1364 2005-02-24  Hrvoje Niksic  <hniksic@xemacs.org>
1365
1366         * ftp.c (getftp): Ditto.
1367
1368         * http.c (gethttp): When we're not supposed to overwrite files,
1369         use fopen_excl to open the file and recompute the file name.
1370
1371         * log.c (redirect_output): Use unique_create to avoid a race
1372         condition.
1373
1374         * mswindows.c (fake_fork_child): Use unique_create.
1375
1376         * utils.c (fopen_excl): New function that opens a stdio stream
1377         with the O_EXCL flag (where available).
1378         (unique_create): New function, like unique_name, but also creating
1379         the file and returning a file pointer.
1380         (fork_to_background): Use unique_create to create the file
1381         immediately to avoid race condition with multiple instances of
1382         wget -b.
1383
1384 2005-02-24  Hrvoje Niksic  <hniksic@xemacs.org>
1385
1386         * host.c (lookup_host): Test for AI_ADDRCONFIG directly, instead
1387         of checking for HAVE_GETADDRINFO_AI_ADDRCONFIG.
1388
1389 2005-02-23  Hrvoje Niksic  <hniksic@xemacs.org>
1390
1391         * host.c (is_valid_ipv6_address): Move here from url.c.
1392         (lookup_host): If the address is numeric, don't print the
1393         "resolving..." line, don't set up DNS timeouts, and set the
1394         AI_NUMERICHOST hint, where available.
1395
1396 2005-02-26  Gisle Vanem  <giva@bgnett.no>
1397
1398         * utils.c: Use the nnnLL syntax under GCC.  Define struct_stat to
1399         struct _stati64 under __MINGW32__ as well as under MS VC.
1400
1401 2005-02-26  Hrvoje Niksic  <hniksic@xemacs.org>
1402
1403         * utils.c: Use the nnnI64 syntax for __int64 constants under all
1404         Windows compilers.
1405         (SPRINTF_WGINT): Use "%I64" under all Windows compilers.
1406
1407         * mswindows.h (WGINT_MAX): Use the nnnI64 syntax for
1408         __int64 constants under all Windows compilers.
1409         (struct_stat): Use `struct stati64' under Borland C.
1410         (fstat): Don't redefine to _fstati64 under Borland.
1411
1412         * mswindows.c: Define str_to_int64 under Borland C as well as
1413         under (older) Visual C.
1414
1415 2005-02-25  Hrvoje Niksic  <hniksic@xemacs.org>
1416
1417         * ftp.c (getftp): Initialize err to suppress compiler warning.
1418
1419 2005-02-24  Hrvoje Niksic  <hniksic@xemacs.org>
1420
1421         * ftp.c (ftp_expected_bytes): Fix bug that caused infloop because
1422         of not correctly skipping the '(' character.
1423
1424 2005-02-24  Hrvoje Niksic  <hniksic@xemacs.org>
1425
1426         * mswindows.c (wget_ftello): Removed.
1427
1428         * mswindows.h: Remove bogus definition of stat.
1429         (wget_ftello): Remove the leftover ftello replacement.
1430
1431 2005-02-20  Hrvoje Niksic  <hniksic@xemacs.org>
1432
1433         * mswindows.c (wget_ftello): Wget's replacement for ftello.
1434
1435         * utils.c (file_size): Use ftello where available.
1436
1437         * ftp-ls.c (ftp_parse_unix_ls): Use str_to_wgint to parse the file
1438         size.
1439         (ftp_parse_winnt_ls): Ditto.
1440
1441         * ftp-basic.c (ftp_size): Use str_to_wgint to convert number to
1442         wgint; pass 10 instead of 0 as the BASE argument.
1443
1444         * ftp.c (ftp_expected_bytes): Use str_to_wgint to parse the file
1445         size.
1446
1447         * sysdep.h (LARGE_INT_FMT): Use __int64 as LARGE_INT on
1448         MSVC/Windows; print it with "%I64".
1449
1450         * wget.h: Define a `wgint' type, normally aliased to (the possibly
1451         64-bit variant of) off_t.
1452
1453         * all: Use `wgint' instead of `long' for numeric variables that
1454         can hold file sizes.
1455
1456         * utils.c (number_to_string): Support printing of `wgint'
1457         argument.
1458         (number_to_static_string): New function.
1459
1460         * all: Replace printf("%ld", long_value) with printf("%s",
1461         number_to_static_string(wgint_value)).
1462
1463 2005-02-18  Mauro Tortonesi <mauro@ferrara.linux.it>
1464
1465         * main.c: Added the --ftp-passwd command line option.
1466
1467         * init.c: Renamed command passwd to ftppasswd.
1468
1469 2005-02-11  Mauro Tortonesi <mauro@ferrara.linux.it>
1470         
1471         * string_t.c: Fixed a bug in do_escape and triggered escape of
1472         backslashes in string_escape to avoid ambiguities in the result
1473         string.
1474         
1475 2005-02-10  Mauro Tortonesi <mauro@ferrara.linux.it>
1476
1477         * string.h: Renamed to string_t.h to fix a compilation conflict 
1478         with the string.h header in the standard C library.
1479         
1480         * string.c: Renamed to string_t.c for consistency with string.h.
1481         
1482         * string_t.c: Ditto.
1483
1484         * string_t.h: Ditto.
1485         
1486 2004-12-31  Mauro Tortonesi <mauro@ferrara.linux.it>
1487
1488         * string.c: New file.
1489
1490         * string.h: New file.
1491
1492         * Makefile.in: Added string.c to the list of modules to compile.
1493
1494         * main.c: Updated copyright.
1495
1496 2004-11-18  Ulf Harnhammar <ulf.harnhammar.9485@student.uu.se>
1497
1498         * ftp-ls.c: Fixed a problem in ftp_parse_winnt_ls that could allow a
1499         malicious remote FTP server to crash wget.
1500
1501 2004-11-18  Hans-Andreas Engel <engel@node.ch>
1502
1503         * http.c: Enable --convert-links (-k) when a single page is downloaded
1504         via --output-document (-O).
1505
1506 2004-11-18  Mauro Tortonesi <mauro@deepspace6.net>
1507
1508         * connect.c: Minor correction to the comment in front of fd_peek.
1509
1510 2004-11-18  Leonid Petrov <nouser@lpetrov.net>
1511
1512         * retr.c: Fix a timeout problem in fd_read_body when using http_proxy.
1513
1514 2004-11-15  YAMAZAKI Makoto <Yamazaki.Makoto@fujixerox.co.jp>
1515
1516         * netrc.c: Fix termination by assertion bug in netrc parsing.
1517
1518 2004-05-09  David Fritz  <zeroxdf@att.net>
1519
1520         * mswindows.c (fake_fork): Pass entire command line to the child
1521         process.
1522
1523 2004-03-31  Hrvoje Niksic  <hniksic@xemacs.org>
1524
1525         * http.c (gethttp): Fix typo: SCHEME_SSL -> SCHEME_HTTPS.
1526
1527 2004-03-30  Hrvoje Niksic  <hniksic@xemacs.org>
1528
1529         * http.c (gethttp): Send the Proxy-Authorization header over
1530         non-SSL connections too.
1531
1532 2004-03-25  David Fritz  <zeroxdf@att.net>
1533
1534         * mswindows.c (fake_fork_child): Ignore error code when
1535         OpenFileMapping() fails; assume it failed because the object does
1536         not exist.
1537
1538 2004-03-24  David Fritz  <zeroxdf@att.net>
1539
1540         * mswindows.c (fake_fork): New function.
1541
1542         * mswindows.c (fork_to_background): Use it.
1543
1544 2004-03-19  David Fritz  <zeroxdf@att.net>
1545
1546         * mswindows.c (ws_hangup): Incorporate old fork_to_background()
1547         code.  Add event name argument.
1548         (fork_to_backgorund): Now a simple wrapper around ws_hangup().
1549         (ws_handler): Correctly handle the case when neither CTRLC_BACKGND
1550         nor CTRLBREAK_BACKGND are defined.  Don't bother handling close,
1551         logoff, or shutdown events.  Call ws_hangup() with the correct
1552         event name; don't assume it was CTRL+Break.
1553
1554 2004-03-19  Hrvoje Niksic  <hniksic@xemacs.org>
1555
1556         * url.c (url_parse): Decode %HH sequences in host name.
1557
1558 2004-03-04  Hrvoje Niksic  <hniksic@xemacs.org>
1559
1560         * convert.c (local_quote_string): Quote "#" as "%23" and "%" as
1561         "%25" when creating links to local files.
1562
1563 2004-03-02  David Fritz  <zeroxdf@att.net>
1564
1565         * mswindows.c (ws_percenttitle): Guard against future changes by
1566         doing nothing if the proper variables have not been initialized.
1567         Clamp percentage value.
1568
1569 2004-03-04  Gisle Vanem  <giva@bgnett.no>
1570
1571         * retr.c (fd_read_body): Don't change console title if quiet.
1572
1573 2004-02-25  David Fritz  <zeroxdf@att.net>
1574
1575         * mswindows.c (set_sleep_mode): Remove argument and return value.
1576         Call GetModuleHandle() instead of LoadLibrary()/FreeLibrary() for
1577         kernel32.dll.  Use typedef for function-pointer.  Don't cast
1578         l-value.  Don't use dereference operator when calling through
1579         function-pointer.
1580         (ws_startup): Update call to set_sleep_mode().
1581         (ws_cleanup): Remove call to set_sleep_mode().
1582
1583 2004-02-23  David Fritz  <zeroxdf@att.net>
1584
1585         * http.c (http_loop): Ditto.
1586
1587         * ftp.c (ftp_loop_internal): Update call to ws_changetitle().
1588
1589         * main.c (main): Don't bother calling ws_changetitle().
1590
1591         * mswindows.h (ws_changetitle): Update prototype.
1592
1593         * mswindows.c (ws_changetitle): Remove second argument.  Use
1594         xfree_null().
1595         (ws_percenttitle): Only update title when percentage has changed.
1596
1597 2004-02-23  David Fritz  <zeroxdf@att.net>
1598
1599         * mswindows.h: Ditto.
1600
1601         * mswindows.c: Misc. formatting/comment tweaks throughout.
1602
1603 2004-02-20  David Fritz  <zeroxdf@att.net>
1604
1605         * main.c (print_help): Remove call to ws_help().
1606
1607         * mswindows.c (ws_help): Remove.
1608
1609         * mswindows.h (ws_help): Remove.
1610
1611 2004-02-16  David Fritz  <zeroxdf@att.net>
1612
1613         * init.c (home_dir): Use aprintf() instead of xmalloc()/sprintf().
1614         Under Windows, if $HOME is not defined, use the directory that
1615         contains the Wget binary instead of hard-coded `C:\'.
1616         (wgetrc_file_name): Under Windows, look for $HOME/.wgetrc then, if
1617         not found, look for wget.ini in the directory of the Wget binary.
1618
1619         * mswindows.c (ws_mypath): Employ slightly more robust methodology.
1620         Strip trailing path separator.
1621
1622 2004-02-06  Hrvoje Niksic  <hniksic@xemacs.org>
1623
1624         * http.c (gethttp): Respect --ignore-length.
1625         (gethttp): Inhibit keep-alive if --ignore-length is specified.
1626
1627 2004-02-06  Hrvoje Niksic  <hniksic@xemacs.org>
1628
1629         * connect.c (sockaddr_set_data): Zero out
1630         sockaddr_in/sockaddr_in6.  Apparently BSD-derived stacks need this
1631         when binding a socket to local address.
1632
1633 2004-02-04  Hrvoje Niksic  <hniksic@xemacs.org>
1634
1635         * hash.c: Make the file compilable outside Wget source tree when
1636         -DSTANDALONE is used.
1637
1638 2004-01-29  Hrvoje Niksic  <hniksic@xemacs.org>
1639
1640         * utils.c (determine_screen_width): Return 0 if not running on
1641         Windows or on a TIOCGWINSZ-capable system.
1642
1643 2004-01-28  David Fritz  <zeroxdf@att.net>
1644
1645         * utils.c (determine_screen_width): Correctly determine console
1646         width under Windows.
1647
1648 2004-01-28  Christian Biere  <christianbiere@gmx.de>
1649
1650         * progress.c (bar_set_params): Fixed syntax error when HAVE_ISATTY
1651         was undefined.
1652
1653         * ftp.c (ftp_loop_internal): Allocate a larger buffer in case
1654         "try" gets translated to something large.  Ditto in http_loop in
1655         http.c.
1656
1657         * http.c (response_header_copy): Don't write to buf[BUFSIZE].
1658
1659         * ftp-opie.c (skey_response): Eliminate unnecessary string
1660         concatenation; just call gen_md5_update twice.
1661
1662 2004-01-25  Hrvoje Niksic  <hniksic@xemacs.org>
1663
1664         * utils.c (xsleep): Don't call usleep with values larger than
1665         1,000,000.
1666
1667 2003-12-16  Hrvoje Niksic  <hniksic@xemacs.org>
1668
1669         * http.c (gethttp): Fix generation of `Content-Length'.
1670
1671 2003-12-15  Gisle Vanem  <giva@bgnett.no>
1672
1673         * url.c (url_skip_credentials): Fixed return value; 'url' if no
1674         credentials.
1675
1676 2003-12-14  Hrvoje Niksic  <hniksic@xemacs.org>
1677
1678         * url.c (url_skip_credentials): Return a pointer directly.
1679
1680 2003-12-14  Hrvoje Niksic  <hniksic@xemacs.org>
1681
1682         * url.c (url_file_name): Ditto.
1683         (parse_errors): Ditto.
1684
1685         * retr.c (retr_rate): Ditto.
1686
1687         * progress.c (create_image): Ditto.
1688
1689         * netrc.c (parse_netrc): Ditto.
1690
1691         * main.c (struct cmdline_option): Ditto.
1692         (redirect_output_signal): Ditto.
1693
1694         * init.c (commands): Ditto.
1695
1696         * ftp-ls.c (ftp_index): Ditto.
1697
1698         * cookies.c (check_domain_match): Declare the pointer to a literal
1699         string as `const'.
1700
1701 2003-12-12  Hrvoje Niksic  <hniksic@xemacs.org>
1702
1703         * retr.c (fd_read_body): Pass total size to progress_create, not
1704         the remaining amount.
1705
1706 2003-12-12  Hrvoje Niksic  <hniksic@xemacs.org>
1707
1708         * retr.c (fd_read_body): Don't fiddle with "interactive timeout"
1709         if read timeout is unset.
1710
1711 2003-12-12  Hrvoje Niksic  <hniksic@xemacs.org>
1712
1713         * connect.c (bind_local): Don't set the IPV6_V6ONLY option on the
1714         socket.
1715
1716 2003-12-06  Hrvoje Niksic  <hniksic@xemacs.org>
1717
1718         * url.c (url_file_name): Respect the setting of
1719         opt.protocol_directories.
1720
1721         * main.c (main): Only check for ret=='?' when longindex is unset.
1722         (option_data): New option --protocol-directories.
1723
1724 2003-12-06  Hrvoje Niksic  <hniksic@xemacs.org>
1725
1726         * ftp.c (getftp): Ditto.
1727
1728         * http.c (gethttp): Correctly calculate bandwidth as total data
1729         read divided with download time.
1730
1731         * retr.c (fd_read_body): Separate the return values for data
1732         written and read.
1733
1734 2003-12-05  Hrvoje Niksic  <hniksic@xemacs.org>
1735
1736         * http.c (H_REDIRECTED): Respect the HTTP/1.1 "303 See Other"
1737         response code.
1738         Suggested by Dan Razzell.
1739
1740 2003-11-30  Hrvoje Niksic  <hniksic@xemacs.org>
1741
1742         * retr.c (fd_read_body): Report the amount of data *written* as
1743         amount_read.  This is not entirely logical, but that's what the
1744         callers expect, and it's not easy to change.
1745
1746         * ftp.c (ftp_loop_internal): Ditto.
1747
1748         * http.c (http_loop): Be smarter about assigning restval; if we're
1749         in the nth pass of a download, simply use the information we have
1750         about how much data has been retrieved as restval.
1751
1752         * ftp.c (getftp): Ditto for FTP "REST" command.
1753
1754         * http.c (gethttp): When the server doesn't respect range, skip
1755         the first RESTVAL bytes of the read body.  Never truncate the
1756         output file.
1757
1758         * retr.c (fd_read_body): Support skipping initial STARTPOS octets.
1759
1760 2003-11-30  Hrvoje Niksic  <hniksic@xemacs.org>
1761
1762         * http.c (skip_short_body): Renamed skip_body to skip_short_body;
1763         don't bother calling fd_read_body.
1764
1765 2003-11-30  Hrvoje Niksic  <hniksic@xemacs.org>
1766
1767         * retr.c (fd_read_body): Sanitize arguments and document them
1768         better.  Make sure the timer is created and updated only if
1769         necessary.  Updated callers.
1770
1771 2003-11-30  Hrvoje Niksic  <hniksic@xemacs.org>
1772
1773         * http.c (skip_body): New function.
1774         (gethttp): Use it to skip the body of the responses we don't care
1775         to download.  That allows us to reuse the connection.
1776         (gethttp): Trust that the HEAD requests will not generate body
1777         data.
1778
1779         * retr.c (fd_read_body): Don't write to OUT if it's NULL.
1780
1781 2003-11-29  Hrvoje Niksic  <hniksic@xemacs.org>
1782
1783         * http.c (gethttp): Initialize SSL only the first time when SSL
1784         URL is downloaded.
1785
1786 2003-11-29  Hrvoje Niksic  <hniksic@xemacs.org>
1787
1788         * cookies.c (cookie_header): Only generate the contents of the
1789         header, not the leading "Cookie: " or the trailing "\r\n".
1790
1791         * http.c (gethttp): When adding headers specified with `--header',
1792         allow them to override the headers generated by Wget.
1793
1794         * init.c (cmd_spec_header): Made opt.user_headers a vector.
1795
1796         * http.c (request_new): New function.  Returns a request structure
1797         which can be modified in various ways, most notably by adding HTTP
1798         headers to the request.
1799         (request_set_header): New function for adding the header to the
1800         request.  If the header is already available, it gets replaced.
1801         (request_send): Construct and send the request.
1802         (gethttp): Use the request_* functions to generate the request.
1803
1804 2003-11-28  Hrvoje Niksic  <hniksic@xemacs.org>
1805
1806         * http.c (gethttp): Don't include the Proxy-Authorization header
1807         in the request tunneled through proxy.
1808
1809 2003-11-28  Hrvoje Niksic  <hniksic@xemacs.org>
1810
1811         * http.c (gethttp): Use the CONNECT handle to establish SSL
1812         passthrough through non-SSL proxies.
1813
1814 2003-11-28  Hrvoje Niksic  <hniksic@xemacs.org>
1815
1816         * init.c: Don't #include netinet/Winsock stuff.
1817
1818 2003-11-28  Hrvoje Niksic  <hniksic@xemacs.org>
1819
1820         * http.c: Deleted the old functions header_process,
1821         header_extract_number, header_exists, header_strdup,
1822         http_process_range, http_process_none, http_process_type, and
1823         http_process_connection.
1824
1825         * http.c (response_new): New function.
1826         (response_header_bounds): Ditto.
1827         (response_header_copy): Ditto.
1828         (response_header_strdup): Ditto.
1829         (response_status): Ditto.
1830         (gethttp): Use the new response_* functions to parse the response.
1831         Support HTTP/0.9 responses.
1832
1833 2003-11-27  Hrvoje Niksic  <hniksic@xemacs.org>
1834
1835         * progress.c (create_image): Don't calculate ETA if nothing has
1836         been downloaded yet, because it causes division by zero.
1837
1838 2003-11-27  Hrvoje Niksic  <hniksic@xemacs.org>
1839
1840         * connect.c (bind_local): Rename sa_len to addrlen because IRIX
1841         headers define sa_len as a macro.
1842
1843 2003-11-26  Hrvoje Niksic  <hniksic@xemacs.org>
1844
1845         * html-parse.c (convert_and_copy): Remove embedded newlines when
1846         AP_TRIM_BLANKS is specified.
1847
1848 2003-11-26  Hrvoje Niksic  <hniksic@xemacs.org>
1849
1850         * ftp.c: Set con->csock to -1 where rbuf_uninitialize was
1851         previously used.
1852
1853 2003-11-26  Hrvoje Niksic  <hniksic@xemacs.org>
1854
1855         * Makefile.in (http$o): Added the trailing backslash that was
1856         missing.
1857
1858 2003-11-21  Hrvoje Niksic  <hniksic@xemacs.org>
1859
1860         * headers.c: Removed.  The file is no longer relevant, now that no
1861         special handling of headers is done by the rbuf code.  Moved
1862         portions to http.c.
1863
1864 2003-11-21  Hrvoje Niksic  <hniksic@xemacs.org>
1865
1866         * rbuf.c: Removed.
1867
1868         * ftp-basic.c (ftp_response): Use fd_read_line.  No longer use
1869         struct rbuf.  Updated all callers.
1870
1871         * http.c (gethttp): Use fd_read_head to read all the headers in
1872         one go.
1873         (next_header): New function.
1874
1875         * retr.c (fd_read_line): New function: reads a line from FD,
1876         leaving the rest of the data unread.
1877         (fd_read_head): New function.
1878
1879         * connect.c (fd_peek): New function, implements peeking.
1880         (poll_internal): New function.
1881         (fd_read): Use it.
1882         (fd_write): Ditto.
1883         (fd_peek): Ditto.
1884         (fd_register_transport): Allow registering a "peeker" callback.
1885
1886 2003-11-20  Hrvoje Niksic  <hniksic@xemacs.org>
1887
1888         * connect.c: Renamed xread/xwrite/xclose to
1889         fd_read/fd_write/fd_close.  The "x" prefix is not appropriate
1890         because the semantics have diverged from read/write/close too
1891         significantly.  Updated all callers.
1892
1893 2003-11-20  Hrvoje Niksic  <hniksic@xemacs.org>
1894
1895         * connect.c (sock_write): It's not necessary to initialize RES.
1896
1897 2003-11-19  Hrvoje Niksic  <hniksic@xemacs.org>
1898
1899         * main.c (main): Don't reference opt.ipv4_only and opt.ipv6_only
1900         if IPv6 is disabled.
1901
1902 2003-11-19  Hrvoje Niksic  <hniksic@xemacs.org>
1903
1904         * connect.c (socket_has_inet6): Only compile it if IPv6 is enabled
1905         and AI_ADDRCONFIG is missing.
1906
1907 2003-11-18  Hrvoje Niksic  <hniksic@xemacs.org>
1908
1909         * gen_sslfunc.c (ssl_init_prng): Warn the user when using a weak
1910         random seed.
1911
1912 2003-11-18  Hrvoje Niksic  <hniksic@xemacs.org>
1913
1914         * host.c (address_list_contains): Renamed address_list_find to
1915         address_list_contains because its result is boolean.
1916
1917 2003-11-18  Hrvoje Niksic  <hniksic@xemacs.org>
1918
1919         * connect.c (select_fd): Return 1 if select is not available.
1920
1921 2003-11-17  Hrvoje Niksic  <hniksic@xemacs.org>
1922
1923         * connect.c (connect_to_host): Don't reference address list after
1924         releasing it.
1925
1926 2003-11-17  Hrvoje Niksic  <hniksic@xemacs.org>
1927
1928         * main.c (print_help): Fix alignment of FTP options output.
1929
1930 2003-11-17  Hrvoje Niksic  <hniksic@xemacs.org>
1931
1932         * host.c (lookup_host): Check for the ability to create IPv6
1933         sockets here.
1934
1935         * init.c (defaults): Don't auto-set --inet4-only on IPv6-less
1936         systems.
1937
1938 2003-11-16  Hrvoje Niksic  <hniksic@xemacs.org>
1939
1940         * main.c (print_help): Fix typo in `-O' help message.  Fix docs of
1941         -Y/--proxy.  Fix docs of `--cookies' and `--glob'.  Improve docs
1942         of --convert-links.  Fix docs of SSL options.
1943
1944 2003-11-16  Hrvoje Niksic  <hniksic@xemacs.org>
1945
1946         * ftp-basic.c: Don't include <arpa/inet.h> and others because
1947         they're no longer needed.
1948
1949 2003-11-16  Hrvoje Niksic  <hniksic@xemacs.org>
1950
1951         * main.c (main): Don't allow setting of both opt.ipv4_only and
1952         opt.ipv6_only.
1953
1954         * init.c (defaults): Mark opt.ipv4_only specially when set
1955         automatically.
1956
1957 2003-11-15  Hrvoje Niksic  <hniksic@xemacs.org>
1958
1959         * host.c (lookup_host): Use AI_ADDRCONFIG only if the family is
1960         unspecified.  This ensures that specifying `--no-inet4' on systems
1961         where IPv6 resolves, but doesn't work behaves the same regardless
1962         of the availability of AI_ADDRCONFIG.
1963
1964 2003-11-15  Hrvoje Niksic  <hniksic@xemacs.org>
1965
1966         * host.c: Don't refer to the now-removed function
1967         forget_host_lookup in the documentation of lookup_host.
1968
1969 2003-11-15  Hrvoje Niksic  <hniksic@xemacs.org>
1970
1971         * http.c (persistent_available_p): Correctly specify the endpoint
1972         argument to socket_ip_address.
1973         (gethttp): When printing the "reusing connection to..." message,
1974         specify the host name of the reused connection, not the current
1975         host name.  That makes more sense because it provides a useful
1976         piece of information -- we know to which host we're supposed to
1977         connect anyway!
1978
1979 2003-11-15  Hrvoje Niksic  <hniksic@xemacs.org>
1980
1981         * init.c: Make sure the options are in alphabetic order!
1982
1983         * host.c (lookup_host): Merge lookup_host_passive and lookup_host
1984         after all -- having both would result in some code duplication.
1985         (lookup_host): Set hints.ai_family to AF_INET if ipv4_only is
1986         requested.  Likewise, set it to AF_INET6 for ipv6_only.  Specify
1987         AI_ADDRCONFIG where available.
1988         (lookup_host): New flag LH_REFRESH that specifies that a cached
1989         entry for HOST should be refreshed.
1990         (cache_query): New function.
1991         (cache_store): Ditto.
1992         (cache_remove): Ditto.
1993         (forget_host_lookup): No longer necessary, replaced with static
1994         function cache_remove.
1995
1996 2003-11-14  Hrvoje Niksic  <hniksic@xemacs.org>
1997
1998         * main.c: Enable -4 and -6 only if IPv6 is enabled.
1999
2000 2003-11-14  Hrvoje Niksic  <hniksic@xemacs.org>
2001
2002         * connect.c (register_transport): Renamed from register_extended.
2003         Explain the intended usage.
2004
2005 2003-11-14  Hrvoje Niksic  <hniksic@xemacs.org>
2006
2007         * url.c (uri_merge): Merging "foo" and "bar" should result in
2008         "bar", not in "foo/bar".
2009         (path_simplify): Don't remove empty path elements; don't
2010         special-case leading slash.
2011         (path_simplify): Don't swallow ".."'s at the beginning of string.
2012         E.g. simplify "foo/../../bar" as "../bar", not as "bar".
2013         (append_uri_pathel): Defang ".." path element upon encountering
2014         it.
2015
2016 2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
2017
2018         * http.c (persistent_available_p): Don't attempt to talk to two
2019         different SSL sites over the same secure connection.
2020
2021 2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
2022
2023         * http.c (gethttp): Ditto.
2024
2025         * ftp.c (getftp): Use retryable_socket_connect_error instead of
2026         CONNECT_ERROR.
2027
2028         * wget.h (CONNECT_ERROR): Removed.
2029
2030         * connect.c (retryable_socket_connect_error): New function instead
2031         of unsupported_socket_family_error.
2032
2033 2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
2034
2035         * wget.h (CONNECT_ERROR): Use it.
2036
2037         * connect.c (unsupported_socket_family_error): New function.
2038
2039 2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
2040
2041         * connect.c (bind_local): Renamed bindport to bind_local; return
2042         the socket directly.  Updated callers.
2043         (accept_connection): Renamed acceptport to accept_connection;
2044         return the created socket directly.  Updated callers.
2045
2046 2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
2047
2048         * init.c (defaults): Turn on opt.ipv4_only if we're compiling with
2049         IPv6, and AI_ADDRINFO is not available, and AF_INET6 sockets can't
2050         be created.
2051
2052 2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
2053
2054         * host.c (lookup_host): Document the fact that the addresses are
2055         returned in order.
2056
2057 2003-11-12  Hrvoje Niksic  <hniksic@xemacs.org>
2058
2059         * utils.c: Use limits.h only where available.
2060
2061         * hash.c: Use INVALID_PTR and INVALID_PTR_BYTE.  Include limits.h.
2062
2063 2003-11-11  Hrvoje Niksic  <hniksic@xemacs.org>
2064
2065         * main.c: Added options --inet4-only and --inet6-only.
2066
2067 2003-11-11  Hrvoje Niksic  <hniksic@xemacs.org>
2068
2069         * host.c (host_errstr): Use the more standard message "Unknown
2070         host".
2071
2072 2003-11-10  Hrvoje Niksic  <hniksic@xemacs.org>
2073
2074         * connect.c (connect_to_host): Use that flag to decide whether to
2075         re-resolve the host name.
2076
2077         * host.c (struct address_list): Added a flag that maintains
2078         whether the connection worked at some point.
2079
2080 2003-11-10  Hrvoje Niksic  <hniksic@xemacs.org>
2081
2082         * host.c (lookup_host): Special-case the numeric addresses only in
2083         the non-IPv6 case.
2084
2085 2003-11-10  Hrvoje Niksic  <hniksic@xemacs.org>
2086
2087         * connect.c (resolve_bind_address): Call lookup_host_passive.
2088         Make sure that opt.bind_address is resolved only once.
2089
2090         * host.c (lookup_host_passive): New function, handles "passive"
2091         lookups.
2092         (lookup_host): Remove the passive flags.  Remove the
2093         family-related flags -- use ip_default_family instead.
2094
2095 2003-11-09  Hrvoje Niksic  <hniksic@xemacs.org>
2096
2097         * html-url.c: Get URLs from <object data="...">.
2098
2099 2003-11-09  Hrvoje Niksic  <hniksic@xemacs.org>
2100
2101         * main.c (option_data): Specify the command to use for --mirror.
2102
2103 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
2104
2105         * cookies.c (cookie_handle_set_cookie): Specify exact match for
2106         unspecified domains.
2107
2108 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
2109
2110         * main.c (main): Removed one-letter options `-C', `-g', `-G', and
2111         `-s'.
2112
2113 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
2114
2115         * main.c (main): Add --dont-remove-listing for backward
2116         compatibility with previous versions.
2117         (print_help): Fix typo, spotted by Dennis Smit.
2118
2119 2003-11-08  Gisle Vanem  <giva@bgnett.no>
2120
2121         * ftp-basic.c: Support Windows-2000 ftp servers. Win-2000 *is*
2122         Win-NT 5.0 so calling it ST_WINNT is okay I guess.
2123
2124 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
2125
2126         * progress.c (update_speed_ring): Clear the speed ring when the
2127         download stalls.
2128
2129         * retr.c (get_contents): Specify 0.95s read timeout, so that the
2130         progress gauge can be updated even when data arrives very slowly
2131         or stalls.
2132
2133 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
2134
2135         * utils.c (wtimer_allocate): Bless the use of wtimer_read on a
2136         timer that has merely been allocated because get_contents() does
2137         that.
2138         (wtimer_update): Abort if the timer is not initialized.
2139
2140 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
2141
2142         * retr.c (get_contents): Pass the timer to limit_bandwidth().
2143
2144         * utils.c (wtimer_update): New function instead of wget_elapsed;
2145         just update the timer, but don't return anything.
2146         (wtimer_read): Read and return the last known value of the timer.
2147
2148 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
2149
2150         * http.c (persistent_available_p): Instead of matching all the
2151         addresses of HOST and last host, determine the peer's IP address
2152         with socket_ip_address and see if that address is one of those
2153         HOST resolves to.
2154
2155         * host.c (address_list_match_all): Removed.
2156         (address_list_find): New function, finds an IP address in the
2157         address list.
2158
2159         * ftp.c (ftp_do_pasv): Get the peer's address here, and pass it to
2160         ftp_epsv so it doesn't need to call getpeername.
2161
2162         * ftp-basic.c (ftp_port): Use socket_ip_address instead of
2163         getpeername.
2164         (ftp_lprt): Ditto.
2165
2166         * connect.c (socket_ip_address): Replaces conaddr, generalized to
2167         either get peer's or local address.
2168         (sockaddr_get_data): Made local to this file.
2169
2170 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
2171
2172         * hash.c (HASH_POSITION): Explicitly accept the hash function.
2173         (grow_hash_table): Extract ht->hash_function outside the loop.
2174         (hash_table_remove): Ditto.
2175         (hash_table_clear): Fill entries with 0xff to clear them.
2176         (hash_table_remove): Mark entries as deleted with the correct
2177         marker.
2178
2179 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
2180
2181         * http.c (persistent_available_p): No reason for the host lookup
2182         to be silent -- it's a lookup like any other.
2183
2184 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
2185
2186         * connect.c (register_extended): Check that fd >= 0.
2187
2188 2003-11-07  Hrvoje Niksic  <hniksic@xemacs.org>
2189
2190         * connect.c (LAZY_RETRIEVE_INFO): Set LAST_INFO.
2191
2192 2003-11-07  Hrvoje Niksic  <hniksic@xemacs.org>
2193
2194         * hash.c (NON_EMPTY): Use the all-bit-set value as the marker that
2195         the field is empty.  This allows NULL pointer and 0 value to be
2196         used as keys, which is necessary for the connect.c code to work
2197         when fd==0.
2198         (hash_table_new): Fill mappings with 0xff.
2199         (grow_hash_table): Ditto.
2200
2201 2003-11-07  Hrvoje Niksic  <hniksic@xemacs.org>
2202
2203         * url.c (url_parse): Allow empty ports.
2204
2205 2003-11-07  Hrvoje Niksic  <hniksic@xemacs.org>
2206
2207         * main.c (print_help): Break the help string into multiple chunks.
2208         (cmdline_option): New option handler OPT_FUNCALL.  Generalized
2209         HANDLE_CMD to generic DATA.
2210         (option_data): Use the new OPT_FUNCALL feature.
2211
2212 2003-11-06  Hrvoje Niksic  <hniksic@xemacs.org>
2213
2214         * log.h: Declare log_init, log_close, and
2215         log_request_redirect_output here.
2216
2217 2003-11-05  Dennis Smit  <ds@nerds-incorporated.org>
2218
2219         * main.c: (main): added --preserve-permissions option.
2220
2221         * ftp.c (ftp_retrieve_list): added support for
2222         --preserve-permissions option.
2223
2224         * init.c: added support for --preserve-permission option.
2225
2226         * option.h: added support for --preserve-permission option.
2227
2228 2003-11-06  Hrvoje Niksic  <hniksic@xemacs.org>
2229
2230         * main.c (init_switches): New function.  Convert option_data to
2231         long_options and short_options, which can be fed to getopt_long.
2232         (main): Execute command-line options by consulting option_data.
2233
2234 2003-11-06  Hrvoje Niksic  <hniksic@xemacs.org>
2235
2236         * gen_sslfunc.c (ssl_read): Implement a more correct check for
2237         EINTR.
2238         (ssl_write): Ditto.
2239         (init_ssl): Use a global SSL context.
2240
2241 2003-11-06  Hrvoje Niksic  <hniksic@xemacs.org>
2242
2243         * connect.c (xclose): Free INFO even if it doesn't provide a
2244         closer.
2245
2246 2003-11-06  Hrvoje Niksic  <hniksic@xemacs.org>
2247
2248         * connect.c: Updated all callers of
2249         iread/ssl_iread/iwrite/ssl_iwrite to use xread and xwrite instead.
2250
2251         * rbuf.h (struct rbuf): Removed the SSL member because SSL is
2252         handled automatically by xread.
2253
2254         * hash.c (ptrhash): Made private.
2255         (ptrcmp): Ditto.
2256         (inthash): Removed.
2257
2258         * connect.c (select_fd): Don't set errno, leave it to the caller.
2259
2260         * gen_sslfunc.c (connect_ssl): Use register_extended to register
2261         SSL callbacks for communication with SSL-enabled endpoints.
2262         (ssl_read): New function.
2263         (ssl_write): Ditto.
2264         (ssl_poll): Ditto.
2265         (ssl_close): Ditto.
2266
2267         * connect.c (register_extended): New function -- register
2268         callbacks for basic socket operations.
2269         (xread): Ditto.
2270         (xwrite): Ditto.
2271         (xclose): Ditto.
2272         (sock_read): New function, default implementation for reading.
2273         (sock_write): Ditto for writing.
2274         (sock_poll): Ditto for polling.
2275         (sock_close): Ditto for closing.
2276
2277 2003-11-05  Hrvoje Niksic  <hniksic@xemacs.org>
2278
2279         * connect.c (bindport): Fix compilation under pre-C99 compilers.
2280
2281 2003-11-05  Hrvoje Niksic  <hniksic@xemacs.org>
2282
2283         * connect.c (connect_to_ip): More compact error checking.
2284         (bindport): Don't treat failed setsockopt as a fatal error.
2285
2286 2003-11-05  Hrvoje Niksic  <hniksic@xemacs.org>
2287
2288         * connect.c (resolve_bind_address): Use a more accurate error
2289         message -- we're not binding to ANY, we're disabling bind
2290         altogether.
2291
2292 2003-11-05  Hrvoje Niksic  <hniksic@xemacs.org>
2293
2294         * cookies.c (save_cookies_mapper): Respect the setting of
2295         keep-session-cookies.
2296         (cookie_jar_load): Import session cookies.
2297         Based on code submitted by Nicolas Schodet.
2298
2299         * utils.c (datetime_str): Use information in TM when it's
2300         non-NULL.
2301
2302         * main.c (main): New option `--keep-session-cookies'.
2303
2304 2003-11-04  Hrvoje Niksic  <hniksic@xemacs.org>
2305
2306         * Makefile.in (realclean): Delete config.h.in.
2307
2308 2003-11-04  Hrvoje Niksic  <hniksic@xemacs.org>
2309
2310         * config-post.h: New file, included from now autogenerated
2311         config.h.in.
2312
2313 2003-11-04  Hrvoje Niksic  <hniksic@xemacs.org>
2314
2315         * progress.c (progress_handle_sigwinch): Don't call
2316         determine_screen_width() from the signal handler.  Instead, just
2317         set a volatile variable.
2318         (bar_create): Check whether SIGWINCH was received.
2319         (bar_update): Ditto.
2320
2321         * sysdep.h: Define SYSTEM_FNMATCH only if HAVE_FNMATCH_H is true.
2322
2323 2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
2324
2325         * utils.c (xsleep): New function.  Uses nanosleep where available,
2326         resuming sleeps interrupted by signals.  Updated callers of sleep
2327         and usleep to use xsleep.
2328
2329 2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
2330
2331         * ftp-basic.c (ftp_login): Remove shadowing (and bogus)
2332         declaration of SEED.
2333
2334 2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
2335
2336         * log.c (logvprintf): Documented better.  Renamed to
2337         log_vprintf_internal to avoid confusion with the public API
2338         functions logprintf and logputs.
2339
2340 2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
2341
2342         * wget.h (N_): Don't parenthesize argument.
2343
2344 2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
2345
2346         * host.h (ADDRESS_IPV4_DATA): Don't take the address of in.s_addr
2347         because that doesn't work on machines that define it as bitfield.
2348
2349 2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
2350
2351         * connect.c (select_fd): Generalize the third argument into WAIT,
2352         so that the caller can request waiting for both read and write.
2353         Updated callers.
2354
2355 2003-11-02  Hrvoje Niksic  <hniksic@xemacs.org>
2356
2357         * html-url.c (cleanup_html_url): Destroy the hash tables, don't
2358         just call free on them.
2359         (init_interesting): Use hash_table_put instead of string_set_add
2360         because we don't need the strdup that the latter function
2361         performs.
2362
2363         * init.c (cleanup): Don't pass NULL to cookie_jar_delete.
2364
2365         * xmalloc.c (xfree_real): Abort when passed a NULL pointer.
2366         (xfree_debug): Print at the file and line of the offending call to
2367         free.
2368
2369 2003-11-02  Hrvoje Niksic  <hniksic@xemacs.org>
2370
2371         * wget.h: Retired the `boolean' type.  Moved the DEFAULT_LOGFILE
2372         define to log.h.  Moved the INFINITE_RECURSION define to recur.h.
2373
2374         * xmalloc.h: Renamed FREE_MAYBE to xfree_null and moved the
2375         definition from wget.h to xmalloc.h.
2376
2377 2003-11-02  Hrvoje Niksic  <hniksic@xemacs.org>
2378
2379         * html-parse.c (decode_entity): New function; split the decoding
2380         of entities here.
2381         (convert_and_copy): Use it to decode entities.
2382         (decode_entity): Handle the &apos entity.
2383         (decode_entity): Don't decode Latin 1 numeric entities.  Don't
2384         decode &#0.
2385
2386 2003-11-01  Hrvoje Niksic  <hniksic@xemacs.org>
2387
2388         * ftp-opie.c (calculate_skey_response): Use uint32_t instead of
2389         `unsigned long' for the cheksum array.  Document the function.
2390
2391 2003-11-01  Hrvoje Niksic  <hniksic@xemacs.org>
2392
2393         * connect.c (acceptport): Don't call select_fd when timeout is not
2394         requested.
2395
2396 2003-11-01  Hrvoje Niksic  <hniksic@xemacs.org>
2397
2398         * host.c: Removed the ip_default_family global variable.
2399
2400         * host.c (lookup_host): Document the function.  Fixed declaration
2401         of VEC.
2402
2403 2003-10-31  Hrvoje Niksic  <hniksic@xemacs.org>
2404
2405         * various: Use new macros xnew, xnew0, xnew_array, and xnew0_array
2406         in various places.
2407
2408 2003-10-31  Hrvoje Niksic  <hniksic@xemacs.org>
2409
2410         * wget.h: Move declarations of malloc and logging code to
2411         xmalloc.h and log.h respectively to unclutter this file.
2412         (STRDUP_ALLOCA): Made it side-effect free.
2413
2414         * xmalloc.h: New files.  Define macros xnew, xnew0, xnew_array,
2415         and xnew0_array.
2416
2417         * xmalloc.c: New file.  Move the xmalloc routines here.
2418
2419 2003-10-31  Hrvoje Niksic  <hniksic@xemacs.org>
2420
2421         * connect.c (sockaddr_set_data): Remove the broken code that
2422         checked for NULL address.
2423
2424 2003-10-31  Hrvoje Niksic  <hniksic@xemacs.org>
2425
2426         * host.c (address_list_from_single): Removed.
2427         (address_list_from_ipv4_addresses): Renamed from
2428         address_list_from_vector.
2429
2430 2003-10-31  Hrvoje Niksic  <hniksic@xemacs.org>
2431
2432         * sysdep.h (CLOSE): Don't call close on file descriptors less than
2433         0, i.e. on uncreated sockets.
2434
2435         * connect.c (resolve_bind_address): Work on struct sockaddr
2436         directly.
2437         (connect_to_host): Replacement for connect_to_many.  Resolve HOST
2438         and connect to any of its addresses.  If we can't connect and the
2439         host name lookup was cached, try to resolve it again.  This should
2440         fix problems with hosts behind dynamic DNS.  Updated all callers.
2441         (connect_to_ip): Replacement for connect_to_one.  Removed SILENT;
2442         added the argument PRINT instead.  Updated all callers.
2443         (set_connection_host_name): Removed.
2444
2445         * host.c (address_list_address_at): New function instead of
2446         address_list_copy_one. It returns a pointer to ip_address *, so
2447         it's not necessary to copy the data.
2448         (address_list_cached_p): New function.
2449         (forget_host_lookup): Ditto.
2450
2451         * connect.c: Got rid of the MSOCK global variable.  Made bindport
2452         return the local socket it creates.  Added a new argument to
2453         acceptport, the socket to call accept on.  Updated callers.
2454         (closeport): Removed.
2455
2456         * connect.c: Moved the sockaddr code from host.c to this file,
2457         because most of that stuff is used for connecting, and has nothing
2458         to do with host names anyway.
2459         (sockaddr_set_data, sockaddr_get_data): New functions, replace the
2460         old sockaddr_set_address, sockaddr_set_port, sockaddr_get_address,
2461         and sockaddr_get_port.
2462
2463 2003-10-30  Hrvoje Niksic  <hniksic@xemacs.org>
2464
2465         * sysdep.h: Use `S >= 8' rather than `S == 8' when looking for
2466         large integers.
2467
2468 2003-10-30  Hrvoje Niksic  <hniksic@xemacs.org>
2469
2470         * url.c (append_uri_pathel): New argument ESCAPED_P that says
2471         whether [B, E) is to be treated as URL-escaped or not.  If
2472         ESCAPED_P is false, don't unescape the region.
2473         (url_file_name): u->file is not URL-escaped.
2474
2475 2003-10-30  Hrvoje Niksic  <hniksic@xemacs.org>
2476
2477         * retr.c (retrieve_from_file): Use retrieve_tree for
2478         page-requisites.
2479
2480         * main.c (main): Don't define opt.recursive when -p is used.
2481         Instead, make sure that recursion is used for HTTP in that case.
2482
2483 2003-10-29  Hrvoje Niksic  <hniksic@xemacs.org>
2484
2485         * host.h: Defined accessors for elements of ip_address.  Updated
2486         all callers.
2487         (address_list_match_all): Use memcmp in the non-IPv6 case.
2488
2489         * wget.h (CONNECT_ERROR): Don't retry connecting if connect()
2490         returned EAFNOSUPPORT.
2491
2492 2003-10-27  Mauro Tortonesi <mauro@deepspace6.net>
2493
2494         * connect.h: changed bindport prototype and added the related
2495         BIND_ON_IPV4_ONLY and BIND_ON_IPV6_ONLY flags.
2496
2497         * connect.c: changed bindport and resolve_bind_address to allow
2498         protocol-version specific DNS resolution. modified conaddr,
2499         acceptport and connect_to_one to make use of struct
2500         sockaddr_storage and of the new ip_address structure.
2501
2502         * ftp-basic.c: added LPRT/LPSV (RFC1639) support, refactored
2503         PORT/PASV (RFC959) and EPRT/EPSV (RFC2428) support code.
2504
2505         * ftp.c: added the ftp_do_port and ftp_do_pasv functions to
2506         handle FTP over IPv6.
2507
2508         * ftp.h: changed prototype of ftp_epsv and added prototypes for
2509         ftp_lpsv, ftp_lprt and ftp_eprt.
2510
2511         * host.c: renamed the
2512         wget_sockaddr_set_address and wget_sockaddr_get_addr, and
2513         wget_sockaddr_{s,g}et_port couples to sockaddr_{s,g}et_address and
2514         sockaddr_{g,s}et_port respectively.  changed
2515         address_list_match_all, address_list_from_addrinfo sockaddr_len,
2516         pretty_print_address, lookup_host, sockaddr_{s,g}et_address and
2517         sockaddr_{g,s}et_port to make use of struct sockaddr_storage and
2518         of the new ip_address structure.  removed map_ipv4_to_ip and
2519         map_ip_to_ipv4.
2520
2521         * host.h: redefined structure ip_address and removed structure
2522         wget_sockaddr.
2523
2524 2003-10-26  Hrvoje Niksic  <hniksic@xemacs.org>
2525
2526         * sysdep.h: Include inttypes.h where available.
2527
2528         * host.c: Switch from u_int32_t to uint32_t.
2529
2530 2003-10-26  Hrvoje Niksic  <hniksic@xemacs.org>
2531
2532         * netrc.c (parse_netrc): Reset the QUOTE flag after the closing
2533         quote.
2534
2535 2003-10-25  Hrvoje Niksic  <hniksic@xemacs.org>
2536
2537         * url.c (is_valid_ipv6_address): Reformat to GNU coding style.
2538         Use enums for NS_IN* constants.  Use ISXDIGIT.
2539
2540         * convert.c (construct_relative): Document better how the function
2541         works.
2542
2543 2003-10-23  Hrvoje Niksic  <hniksic@xemacs.org>
2544
2545         * config.h.in: Deploy preprocessor magic to avoid Ultrix's
2546         <netdb.h> include <bitypes.h> which defines its own u_int32_t.
2547         Reported by Bernhard Simon.
2548
2549 2003-10-23  Hrvoje Niksic  <hniksic@xemacs.org>
2550
2551         * version.c: Bump version.
2552
2553 2003-10-23  Hrvoje Niksic  <hniksic@xemacs.org>
2554
2555         * url.c: Ditto.
2556
2557         * html-parse.c (advance_declaration): Don't use trailing comma in
2558         enum because older compilers don't support it.
2559
2560         * utils.c: Don't redefine HAVE_SIGSETJMP.
2561
2562 2003-10-16  Hrvoje Niksic  <hniksic@xemacs.org>
2563
2564         * convert.c (construct_relative): Don't handle absolute files
2565         specially -- for example, -P/tmp/foo shouldn't imply that
2566         converted files must refer to "/tmp/foo/..."!
2567
2568 2003-10-15  Hrvoje Niksic  <hniksic@xemacs.org>
2569
2570         * http.c: Consider status 307 a valid redirect.
2571
2572 2003-10-15  Philip Stadermann  <philip.stadermann@credativ.de>
2573
2574         * ftp.c (ftp_retrieve_glob): Correctly loop through the list whose
2575         elements might have been deleted.
2576
2577 2003-10-13  Hrvoje Niksic  <hniksic@xemacs.org>
2578
2579         * html-url.c (tag_handle_meta): Set the Refresh link to expect
2580         HTML.
2581         (append_one_url): Renamed to append_url.
2582
2583 2003-10-13  Hrvoje Niksic  <hniksic@xemacs.org>
2584
2585         * sysdep.h: Only define u_int32_t.
2586
2587 2003-10-11  Hrvoje Niksic  <hniksic@xemacs.org>
2588
2589         * utils.c (large_int_to_string): Use snprintf() to print the
2590         number.  This will work even on systems where libc doesn't
2591         understand %lld, but the compiler does, because it will use our
2592         snprintf replacement.
2593
2594         * init.c (parse_bytes_helper): New function.
2595         (cmd_bytes): Use it to parse bytes, but cast the result to long.
2596         (cmd_bytes_large): Ditto, but store the result to LARGE_INT.  Used
2597         for --quota so that --quota=10G works even on machines without
2598         long long.
2599
2600         * options.h (struct options): Declare quota as LARGE_INT.
2601
2602         * retr.c (downloaded_exceeds_quota): Removed.
2603         (downloaded_increase): Ditto.
2604         (total_downloaded_bytes): New variable, replaces opt.downloaded,
2605         which was the wrong place for it anyway.  Updated callers of
2606         downloaded_exceeds_quota and downloaded_increase to check this
2607         variable directly.
2608
2609         * sysdep.h: Get rid of VERY_LONG_TYPE.  Use LARGE_INT for the same
2610         purpose, defined as `long', `long long' or `double', depending on
2611         size of long and whether long long is available.
2612
2613 2003-10-11  Hrvoje Niksic  <hniksic@xemacs.org>
2614
2615         * sysdep.h: Also check size of short for int32_t.
2616
2617 2003-10-11  Hrvoje Niksic  <hniksic@xemacs.org>
2618
2619         * host.c (lookup_host): Use u_int32_t to store the result of
2620         inet_addr().  That removes the need for offset fiddling, caring
2621         about endian-ness, etc.
2622
2623         * sysdep.h: Define int32_t and u_int32_t if not available.
2624
2625 2003-10-11  Hrvoje Niksic  <hniksic@xemacs.org>
2626
2627         * ftp-basic.c (ftp_epsv): Use socklen_t * as the third argument to
2628         getpeername.
2629
2630         * config.h.in: Define socklen_t stub.
2631
2632         * host.c (sockaddr_len): Return socklen_t.
2633
2634         * connect.c (conaddr): Use socklen_t as the third argument to
2635         accept, getsockname, and connect.
2636
2637 2003-10-10  Hrvoje Niksic  <hniksic@xemacs.org>
2638
2639         * recur.c (retrieve_tree): Don't descend into documents that are
2640         not expected to contain HTML, regardless of their content-type.
2641
2642         * html-url.c (tag_url_attributes): Record which attributes are
2643         supposed to yield HTML links that can be followed.
2644         (tag_find_urls): Propagate that information to the caller through
2645         struct urlpos.
2646
2647 2003-10-10  Hrvoje Niksic  <hniksic@xemacs.org>
2648
2649         * hash.c (find_mapping): Return the next available mapping when
2650         the key is not found, not NULL.
2651         (hash_table_put): Use find_mapping to find the storage for the new
2652         data.
2653         (hash_table_put): Grow the table before exceeding maximum
2654         fullness, not afterwards.
2655
2656 2003-10-10  Hrvoje Niksic  <hniksic@xemacs.org>
2657
2658         * hash.c (hash_table_new): Slightly change the meaning of the
2659         first parameter.  Instead of being the minimum initial size, it is
2660         now the minimum number of items that the hash table can take
2661         without needing to resize.
2662
2663 2003-10-09  Hrvoje Niksic  <hniksic@xemacs.org>
2664
2665         * html-url.c (init_interesting): Initialize interesting_tags and
2666         interesting_attributes as hash tables.  This simplifies the code
2667         immensely because hash tables handle allocation and remove
2668         duplicates automatically.
2669         (find_tag): Removed.
2670         (collect_tags_mapper): Instead of calling find_tag, simply get the
2671         entry from interesting_tags hash table, which is both simpler and
2672         faster.
2673
2674 2003-10-09  Hrvoje Niksic  <hniksic@xemacs.org>
2675
2676         * hash.c (hash_table_get): Declare hash-table argument as const.
2677         (find_mapping): Ditto.
2678         (hash_table_get_pair): Ditto.
2679         (hash_table_contains): Ditto.
2680         (hash_table_count): Ditto.
2681
2682 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
2683
2684         * html-url.c (get_urls_html): Parse the appropriate flags to
2685         html-parse.c.
2686
2687         * html-parse.c (map_html_tags): Accept FLAGS from the caller
2688         instead of examining OPT.
2689
2690 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
2691
2692         * html-url.c (find_tag): Switch to binary search.
2693
2694 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
2695
2696         * main.c (print_help): Fix typo; stured -> stored.
2697
2698 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
2699
2700         * getopt.c: Add definitions of getopt_long and getopt_long_only.
2701
2702 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
2703
2704         * config.h.in: Renamed DEBUG to ENABLE_DEBUG.  ENABLE_DEBUG is, I
2705         think, a better name, because it implies that debugging output is
2706         merely possible, not "on by default", as might be construed from
2707         just DEBUG.
2708
2709 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
2710
2711         * ftp.c (has_insecure_name_p): Define it here.
2712
2713         * utils.c (has_wildcards_p): Define it here.
2714
2715         * sysdep.h: Declare fnmatch-related macros here, if not using
2716         system fnmatch().  Update .c files to not declare fnmatch.h
2717         directly.
2718
2719         * cmpt.c (fnmatch): Moved here.  Use it only under non-GNU libc.
2720
2721 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
2722
2723         * getopt.c: Newer version, imported from Free libit.
2724
2725 2003-10-07  Hrvoje Niksic  <hniksic@xemacs.org>
2726
2727         * cookies.c (struct cookie): Remove unused backpointer to cookie
2728         jar.
2729
2730 2003-10-07  Hrvoje Niksic  <hniksic@xemacs.org>
2731
2732         * cmpt.c (memmove): Comment out, since it's no longer used.
2733
2734         * cookies.c (cookie_jar_generate_cookie_header): Allocate room for
2735         chains in one pass.
2736         (find_chains_of_host): Assume that the caller has allocated DEST
2737         to be sufficiently large to take all the data.
2738         (eliminate_dups): Run through the array and eliminate dups on the
2739         fly instead of using memmove.
2740         (cookie_jar_process_set_cookie): Free cookie->domain before
2741         re-setting it.
2742
2743 2003-10-05  Gisle Vanem  <giva@bgnett.no>
2744
2745         * mswindows.c (set_sleep_mode): Fix type of
2746         _SetThreadExecutionState.
2747
2748 2003-10-05  Hrvoje Niksic  <hniksic@xemacs.org>
2749
2750         * utils.c (file_size): Return -1 if fopen() returns NULL.  Prior
2751         to this patch, wget --post-file=nosuchfile dumped core.
2752
2753 2003-10-04  Gisle Vanem  <giva@bgnett.no>
2754
2755         * mswindows.c (run_with_timeout): Use WaitForSingleObject to wait
2756         for thread termination.
2757
2758 2003-10-04  Hrvoje Niksic  <hniksic@xemacs.org>
2759
2760         * log.c: Use `...' in function definitions; ansi2knr will convert
2761         them to va_dcl.  This allowed removal of the ugly VA_START_1 and
2762         VA_START_2 macros.
2763
2764 2003-10-03  Gisle Vanem  <giva@bgnett.no>
2765
2766         * connect.c: And don't include them here.
2767
2768         * mswindows.h: Include winsock headers here.
2769
2770 2003-10-03  Hrvoje Niksic  <hniksic@xemacs.org>
2771
2772         * html-parse.c (convert_and_copy): Move variable declarations
2773         before statements.
2774
2775 2003-10-02  Gisle Vanem  <giva@bgnett.no>
2776         
2777         * mswindows.c (run_with_timeout): For Windows: Run the 'fun' in a
2778         thread via a helper function. Continually query the thread's
2779         exit-code until finished or timed out.
2780
2781 2003-10-02  Hrvoje Niksic  <hniksic@xemacs.org>
2782
2783         * wget.h (XMALLOC_ARRAY): Removed.
2784         (ALLOCA_ARRAY): Ditto.
2785
2786         * html-parse.c: Renamed alloca_p to resized.
2787         (GROW_ARRAY): Renamed DO_REALLOC_FROM_ALLOCA to GROW_ARRAY and
2788         returned it to html-parse.c, since nothing else was using it.
2789
2790 2003-10-02  Hrvoje Niksic  <hniksic@xemacs.org>
2791
2792         * retr.c (retrieve_url): Initialize DUMMY storage for DT.  Caught
2793         by valgrind.
2794
2795 2003-10-02  Hrvoje Niksic  <hniksic@xemacs.org>
2796
2797         * html-parse.c (convert_and_copy): Handle numeric entities in
2798         hexadecimal, &#xHH.
2799         (convert_and_copy): Copy the contents directly to the pool without
2800         a stack-allocated intermediary.
2801
2802 2003-10-02  Hrvoje Niksic  <hniksic@xemacs.org>
2803
2804         * utils.c (alarm_set): New function; use either setitimer or alarm
2805         to set up the alarm.
2806         (alarm_cancel): New function; cancel the alarm set up by
2807         alarm_set.
2808         (run_with_timeout): Use them.
2809
2810 2003-10-01  Hrvoje Niksic  <hniksic@xemacs.org>
2811
2812         * url.c (url_parse): Don't leak memory when a reencoded URL turns
2813         out to be invalid.
2814
2815         * url.c (parse_errors): Mark error messages for translation.
2816         (url_error): Translate error messages returned to the caller.
2817
2818 2003-10-01  Hrvoje Niksic  <hniksic@xemacs.org>
2819
2820         * ftp.c (ftp_loop_internal): Initialize TMRATE to NULL to shut up
2821         the compiler.
2822
2823 2003-09-26  Gisle Vanem  <giva@bgnett.no>
2824
2825         * src/mswindows.c: Added ws_percenttitle() showing progress in the
2826         window titlebar. Called from retr.c. Secured ws_mypath().
2827
2828         * windows/config.h.ms: alloca() prototype not needed.  Removed
2829         "#undef ENABLE_NLS"; should be in Makefile IMHO. Moved
2830         WGET_USE_STDARG from mswindows.h to config.ms.h because of #ifdef
2831         in log.c. (MSVC's vararg.h and stdarg.h are incompatible).
2832
2833 2003-09-29  Aaron Hawley <Aaron.Hawley@uvm.edu>
2834
2835         * ftp.c (getftp): --spider option should now work with FTP
2836         downloads.
2837         (ftp_loop_internal): quiet reports and calculations of downloads
2838         when --spider option set, nor try deleting when --delete-after
2839         also set.
2840         (ftp_loop): --spider will skip HTML-ification of .listing file.
2841
2842 2003-09-26  Gisle Vanem  <giva@bgnett.no>
2843
2844         * mswindows.c (read_registry): Removed.
2845         (set_sleep_mode): New function.
2846         (windows_main_junk): Call it.
2847
2848 2003-09-26  Gisle Vanem  <giva@bgnett.no>
2849
2850         * mswindows.c (read_registry): Fix invocation of registry
2851         functions.
2852
2853         * mswindows.c (read_registry): Condition definitions of sleep and
2854         usleep with not HAVE_SLEEP and HAVE_USLEEP respectively.  Define
2855         HAVE_SLEEP and HAVE_USLEEP under __DMC__.
2856
2857 2003-09-24  Hrvoje Niksic  <hniksic@xemacs.org>
2858
2859         * url.c (url_escape_1): Revert unintentional change to lowercase
2860         xdigit escapes.
2861         (url_escape_dir): Document that this function depends on the
2862         output of url_escape_1.
2863
2864 2003-09-23  Hrvoje Niksic  <hniksic@xemacs.org>
2865
2866         * progress.c (create_image): Print the current ETA if we're done
2867         with the download.
2868         (create_image): Change '-' display char to '+' in the progress bar.
2869
2870         * Makefile.in (clean): Remove .libs.
2871
2872 2003-09-23  Hrvoje Niksic  <hniksic@xemacs.org>
2873
2874         * cookies.c (struct cookie): New flag domain_exact.
2875         (update_cookie_field): Skip leading dot in domain.
2876         (find_matching_chains): Match numeric addresses exactly; don't
2877         needlessly copy HOST to the stack.
2878         (matching_cookie): Added argument HOST.  If cookie->domain_exact
2879         is set, check that HOST is equal to cookie->domain.
2880         (cookie_jar_load): Only use TAB as delimiter.  Document the
2881         meaning of DOMAIN-FLAG.  Skip leading dot in domain.
2882         (cookie_jar_load): Don't ignore DOMAIN-FLAG -- instead, set
2883         domain_exact to true if DOMAIN-FLAG is false.
2884         (save_cookies_mapper): If domain_exact is false, prepend the
2885         domain with dot, like Mozilla does.
2886
2887 2003-09-22  Hrvoje Niksic  <hniksic@xemacs.org>
2888
2889         * progress.c (create_image): Print the initial part of the
2890         download with '-' characters, analogous to how dot progress prints
2891         the initial part with ','.
2892
2893         * hash.c (ptrhash): New function.
2894         (ptrcmp): Ditto.
2895         (hash_table_new): Default to identity hash table.
2896
2897 2003-09-22  Hrvoje Niksic  <hniksic@xemacs.org>
2898
2899         * safe-ctype.h (_sch_test): The cast of BIT to unsigned char was
2900         broken -- _sch_istable bitmasks are 16-bit, not 8-bit!  Cast BIT
2901         to unsigned short instead.
2902
2903 2003-09-22  Hrvoje Niksic  <hniksic@xemacs.org>
2904
2905         * url.c (path_simplify): Instead of calls to memmove, handle "./"
2906         and "../" by advancing pointers.
2907
2908 2003-09-22  Hrvoje Niksic  <hniksic@xemacs.org>
2909
2910         * retr.c (getproxy): Moved from url.c.
2911
2912         * convert.c: Split off link conversion from url.c into separate
2913         file.  Also included the book-keeping stuff from recur.c.
2914
2915 2003-09-21  Hrvoje Niksic  <hniksic@xemacs.org>
2916
2917         * init.c: Improved documentation of functions.
2918         (cmd_boolean): Attempt to make code that tries to avoid calling
2919         strcmp for "speed" a bit more readable.
2920
2921         * init.c (simple_atof): Report error on encountering non-digit,
2922         non-"." character.
2923         (simple_atoi): Replacement for myatoi(), calling interface
2924         compatible with simple_atof.  Updated myatoi's callers.
2925
2926 2003-09-21  Bertrand Demiddelaer  <bert@b3rt.org>
2927
2928         * url.c (path_simplify): Would read two bytes past the end of the
2929         string in the "./" case.
2930
2931 2003-09-21  Matthew J. Mellon  <mellon@tymenet.com>
2932
2933         * http.c (gethttp): Recognize content-type "application/xhtml+xml"
2934         as what Wget considers "text/html".
2935
2936 2003-09-21  Hrvoje Niksic  <hniksic@xemacs.org>
2937
2938         * connect.c (connect_with_timeout): Made timeout type double.
2939
2940         * options.h (struct options): New members read_timeout,
2941         dns_timeout, and connect_timeout.
2942         Use them.
2943
2944 2003-09-21  Hrvoje Niksic  <hniksic@xemacs.org>
2945
2946         * init.c (simple_atof): New function.
2947         (cmd_time): Use it.
2948         (cmd_bytes): Accept things like "1.5k" and such.  Use simple_atof
2949         to parse decimals.
2950
2951         * retr.c (limit_bandwidth): Adjust each sleep by the error of the
2952         previous one.
2953
2954 2003-09-21  Hrvoje Niksic  <hniksic@xemacs.org>
2955
2956         * main.c (main): Use setoptval() for setting the options.  Use
2957         run_command for `-e'.
2958
2959         * init.c (parse_line): Rewritten to return COMIND right away.
2960         Changed linkage to static.
2961         (run_wgetrc): Use the available comind when calling setval, so it
2962         doesn't have to be computed twice.
2963         (setval_internal): New function, runs the command's action without
2964         any error checking.
2965         (setoptval): New function, does what setval used to do, but exits
2966         in case of error.
2967         (run_command): New function.
2968
2969 2003-09-21  Hrvoje Niksic  <hniksic@xemacs.org>
2970
2971         * connect.c (select_fd): Change MAXTIME's type to double.  Handle
2972         its decimal part.
2973
2974         * retr.c (sleep_between_retrievals): In the random-wait case, use
2975         random_float() to wait between 0 and 2*opt.wait seconds.
2976
2977         * utils.c (run_with_timeout): Accept `double' timeouts.  Correctly
2978         handle timeout values in (0, 1) range.
2979         (random_float): New function.
2980
2981         * options.h (struct options): Change the types of wait, waitretry,
2982         and timeout to double.
2983
2984         * init.c (cmd_time): Accept floating point time.
2985
2986 2003-09-20  Hrvoje Niksic  <hniksic@xemacs.org>
2987
2988         * retr.c (get_contents): Cosmetic fixes.
2989
2990 2003-09-20  Hrvoje Niksic  <hniksic@xemacs.org>
2991
2992         * url.c (uri_merge): Get rid of uri_merge_1.
2993         (uri_merge): Merge "foo//", "bar" as "foo//bar", not "foo///bar",
2994         i.e. don't add an extra slash merely because BASE ends with two
2995         slashes.
2996         (parse_credentials): Renamed from parse_uname.  Rewrittern in
2997         standard [beg, end) calling style.
2998         (url_skip_credentials): Renamed from url_skip_uname.  Made static.
2999         (url_skip_credentials): Include # and ; as terminators.  Old code
3000         would mistakenly consider "http://foo.com#hniksic@iskon.hr" to
3001         contain a username.
3002         (url_skip_scheme): Removed because it was unused.
3003         (url_has_scheme): Require "scheme" to be at least one char long.
3004
3005 2003-09-19  Hrvoje Niksic  <hniksic@xemacs.org>
3006
3007         * url.c (url_file_name): Expect NULL dir_prefix.
3008
3009         * init.c (cmd_file): Use a macro to prevent multiple #ifdef
3010         WINDOWS.
3011         (defaults): Set dir_prefix to NULL by default.
3012
3013 2003-09-19  Hrvoje Niksic  <hniksic@xemacs.org>
3014
3015         * safe-ctype.h (_sch_test): Cast BIT to unsigned char, like latest
3016         gcc does.
3017
3018 2003-09-19  Hrvoje Niksic  <hniksic@xemacs.org>
3019
3020         * wget.h (BOUNDED_TO_ALLOCA): Evaluate PLACE only once.
3021         (ARRAY_SIZE): Renamed to countof.  All callers updated.
3022
3023 2003-09-19  Hrvoje Niksic  <hniksic@xemacs.org>
3024
3025         * main.c (main): New option --strict-comments.
3026
3027         * html-parse.c (find_comment_end): New function: simple BM search
3028         for "-->".
3029         (map_html_tags): Use it if looking at a comment and not in strict
3030         comments mode.
3031
3032 2003-09-17  Aurelien Marchand  <artaxerxes@users.sf.net>
3033
3034         * ftp.h: Added OS400 system in enum
3035         * ftp-basic.c: recognize OS400 systems
3036         * ftp.c: don't prepend the CWD if talking to OS400, since it
3037         breaks the change in library
3038
3039 2003-09-18  Hrvoje Niksic  <hniksic@xemacs.org>
3040
3041         * retr.c (get_contents): Pass the correct argument to ssl_iread.
3042
3043 2003-09-18  Hrvoje Niksic  <hniksic@xemacs.org>
3044
3045         * safe-ctype.h: Don't #define ctype.h macros to errors because
3046         that loses when someone #include's ctype.h after safe-ctype.h.
3047
3048 2003-09-17  Hrvoje Niksic  <hniksic@xemacs.org>
3049
3050         * url.c: Undef U, W, C after use.
3051
3052 2003-09-17  Hrvoje Niksic  <hniksic@xemacs.org>
3053
3054         * init.c (cmd_spec_restrict_file_names): Allow the OS setting to
3055         be augmented by ",nocontrol" which means don't escape the control
3056         characters, but otherwise keep OS settings.
3057
3058         * url.c (file_unsafe_char): Deleted.
3059         (append_uri_pathel): Query filechr_table directly.
3060         (filechr_table): Separated Unix, Windows, and control-unsafe
3061         characters.
3062
3063 2003-09-17  Hrvoje Niksic  <hniksic@xemacs.org>
3064
3065         * url.c (url_escape_1): New function.
3066         (url_escape): Use it.
3067         (sync_path): Handle pathological cases where u->file and u->dir
3068         contain really strange characters.
3069         (ENCODE): Deleted.
3070         (REENCODE): Deleted.
3071
3072 2003-09-16  Hrvoje Niksic  <hniksic@xemacs.org>
3073
3074         * url.c (url_file_name): Don't reallocate FNAME if the file
3075         doesn't exist, as is usually the case.
3076
3077         * utils.c (unique_name): New flag allow_passthrough.
3078
3079 2003-09-16  Hrvoje Niksic  <hniksic@xemacs.org>
3080
3081         * utils.c (wtimer_sys_diff): Convert the time difference to signed
3082         __int64, then to double.  This works around MS VC++ 6 which can't
3083         convert unsigned __int64 to double directly.
3084
3085 2003-09-16  Hrvoje Niksic  <hniksic@xemacs.org>
3086
3087         * Makefile.in (clean): Also remove the core.<number> files
3088         produced by recent Linux systems.
3089
3090 2003-09-16  Hrvoje Niksic  <hniksic@xemacs.org>
3091
3092         * http.c (post_file): Don't pad the file if it's not large
3093         enough.  Bail out instead.
3094
3095 2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
3096
3097         * retr.c (get_contents): Reduce the buffer size to the amount of
3098         data that may pass through for one second.  This prevents long
3099         sleeps when limiting bandwidth.
3100
3101         * connect.c (connect_to_one): Reduce the socket's RCVBUF when
3102         bandwidth limitation to small values is requested.
3103
3104 2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
3105
3106         * progress.c (update_speed_ring): Moved the speed ring update to a
3107         separate function and documented it better.
3108
3109         * progress.c: Use `double' for most timers to support granularity
3110         smaller than 1ms.
3111
3112 2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
3113
3114         * wget.h (XDIGIT_TO_XCHAR): Implement as index into a literal
3115         string.
3116         (XDIGIT_TO_xchar): Ditto.
3117
3118 2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
3119
3120         * utils.c: Change the type of timer-related functions from long to
3121         double, for better precision.  On machines supporting gettimeofday
3122         the timers now work with granularity of less than one millisecond.
3123
3124 2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
3125
3126         * cookies.c (parse_set_cookies): Fixed the parser to handle more
3127         edge conditions.
3128         (test_cookies): New function, contains a test suite for
3129         parse_set_cookies.
3130
3131 2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
3132
3133         * url.c (strpbrk_or_eos): Implement as a macro under Gcc.
3134
3135 2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
3136
3137         * cookies.c (parse_set_cookies): Allow trailing space in
3138         set-cookies header.  Also, allow any amount of whitespace, not
3139         only one character.  Allow empty set-cookies header without
3140         spewing an error.
3141
3142 2003-09-14  Hrvoje Niksic  <hniksic@xemacs.org>
3143
3144         * url.c (append_uri_pathel): Use opt.restrict_file_names when
3145         calling file_unsafe_char.
3146
3147         * init.c: New command restrict_file_names.
3148
3149         * main.c (main): New option --restrict-file-names[=windows,unix].
3150
3151         * url.c (url_file_name): Renamed from url_filename.
3152         (url_file_name): Add directory and hostdir prefix here, not in
3153         mkstruct.
3154         (append_dir_structure): New function, does part of the work that
3155         used to be in mkstruct.  Iterates over path elements in u->path,
3156         calling append_uri_pathel on each one to append it to the file
3157         name.
3158         (append_uri_pathel): URL-unescape a path element and reencode it
3159         with a different set of rules, more appropriate for handling of
3160         files.
3161         (file_unsafe_char): New function, uses a lookup table to decide
3162         whether a character should be escaped for use in file name.
3163         (append_string): New utility function.
3164         (append_char): Ditto.
3165         (file_unsafe_char): New argument restrict_for_windows, decide
3166         whether Windows file names should be escaped in run-time.
3167
3168         * connect.c: Include <stdlib.h> to get prototype for abort().
3169
3170 2003-09-14  Hrvoje Niksic  <hniksic@xemacs.org>
3171
3172         * utils.c (wtimer_sys_set): Extracted the code that sets the
3173         current time here.
3174         (wtimer_reset): Call it.
3175         (wtimer_sys_diff): Extracted the code that calculates the
3176         difference between two system times here.
3177         (wtimer_elapsed): Call it.
3178         (wtimer_elapsed): Don't return a value smaller than the previous
3179         one, which could previously happen when system time is set back.
3180         Instead, reset start time to current time and note the elapsed
3181         offset for future calculations.  The returned times are now
3182         guaranteed to be monotonically nondecreasing.
3183
3184 2003-09-10  Hrvoje Niksic  <hniksic@xemacs.org>
3185
3186         * host.c (lookup_host): Print the result of the DNS lookup.
3187
3188 2003-09-10  Hrvoje Niksic  <hniksic@xemacs.org>
3189
3190         * init.c (cmd_boolean): Accept yes/no along with on/off.
3191         (cmd_lockable_boolean): Ditto.
3192
3193 2003-09-10  Hrvoje Niksic  <hniksic@xemacs.org>
3194
3195         * init.c: New command dns_cache.
3196
3197         * main.c (main): New option --dns-cache[=off].
3198
3199 2003-09-09  Hrvoje Niksic  <hniksic@xemacs.org>
3200
3201         * config.h.in: Initialize HAVE_GETADDRINFO and ENABLE_IPV6.
3202
3203         * all: Use #ifdef ENABLE_IPV6 instead of the older INET6.  Use
3204         HAVE_GETADDRINFO for getaddrinfo-related stuff.
3205
3206 2003-09-09  Hrvoje Niksic  <hniksic@xemacs.org>
3207
3208         * url.c (url_parse): Return an error if the URL contains a [...]
3209         IPv6 numeric address and we don't support IPv6.
3210
3211 2003-09-05  Hrvoje Niksic  <hniksic@xemacs.org>
3212
3213         * url.c (is_valid_ipv6_address): Modified to not require
3214         zero-terminated strings.
3215         (is_valid_ipv4_address): Ditto.
3216
3217 2003-09-05  Mauro Tortonesi <mauro@deepspace6.net>
3218
3219         src/url.c: added RFC 2732 compliance for URL parsing. The
3220         functions is_*_address valid are a modified version of
3221         glibc 2.3.2 inet_pton's code.
3222
3223 2003-09-03  Ahmon Dancy  <dancy@dancysoft.com>
3224
3225         * main.c init.c options.h: Added --retry-connrefused option so
3226         that Connection Refused failures are treated as non-fatal (when
3227         trying to retrieve from busy servers).
3228
3229         * wget.h: New CONNECT_ERROR macro for encapsulating this
3230         modification.
3231
3232         * ftp.c http.c : Use CONNECT_ERROR macro in places where
3233         ECONNREFUSED was checked.
3234
3235 2003-01-11  Ian Abbott  <abbotti@mev.co.uk>
3236
3237         * ftp.c (ftp_retrieve_glob): Reject insecure filenames as determined
3238         by calling new function has_insecure_name_p.  This is based on a
3239         patch by Red Hat.
3240
3241         * fnmatch.c (has_insecure_name_p): New function: returns non-zero
3242         if filename starts with `/' or contains `../' and is therefore
3243         considered insecure.
3244
3245         * fnmatch.h: Declare has_insecure_name_p().
3246
3247 2002-08-03  Hrvoje Niksic  <hniksic@xemacs.org>
3248
3249         * init.c (cmd_file): Allocate RESULT correctly.
3250
3251 2002-07-24  Hrvoje Niksic  <hniksic@xemacs.org>
3252
3253         * recur.c (retrieve_tree): Check whether downloaded_html_set is
3254         non-NULL before using it.
3255
3256 2002-05-27  Hrvoje Niksic  <hniksic@arsdigita.com>
3257
3258         * html-parse.c (NAME_CHAR_P): Allow almost any character here.
3259
3260 2002-05-24  Hrvoje Niksic  <hniksic@arsdigita.com>
3261
3262         * progress.c (bar_set_params): Fall back to dot progress if the
3263         terminal type is "emacs".
3264
3265 2002-05-20  Hrvoje Niksic  <hniksic@arsdigita.com>
3266
3267         * log.c: Don't #undef WGET_USE_STDARG.
3268
3269 2002-05-16  Hrvoje Niksic  <hniksic@arsdigita.com>
3270
3271         * hash.c (prime_size): Store the offset of the prime number in the
3272         prime table.  When searching, start with the given offset.
3273         (hash_table_new): Pass the pointer to ht->prime_offset to
3274         prime_size.
3275         (grow_hash_table): Ditto.
3276         (prime_size): Make 13 the first prime to make empty hash tables
3277         slightly smaller.
3278
3279 2002-05-16  Ian Abbott  <abbotti@mev.co.uk>
3280
3281         * recur.c (download_child_p): Minor optimization to avoid an
3282         unnecessary additional call to schemes_are_similar_p function.
3283
3284 2002-05-16  Ian Abbott  <abbotti@mev.co.uk>
3285
3286         * url.c (schemes_are_similar_p): New function to test enumerated
3287         scheme codes for similarity.
3288
3289         * url.h: Declare it.
3290
3291         * recur.c (download_child_p): Use it to compare schemes.  This
3292         also fixes a bug that allows hosts to be spanned (without the
3293         -H option) when the parent scheme is https and the child's is
3294         http or vice versa.
3295
3296 2002-05-14  Bill Richardson  <bill@riverstonenet.com>
3297
3298         * ftp.c (getftp): Don't ftruncate stdout.
3299
3300         * http.c (gethttp): Don't ftruncate stdout.
3301
3302 2002-05-09  Ian Abbott  <abbotti@mev.co.uk>
3303
3304         * cmpt.c (strptime_internal): Synched with glibc-2.1.3.
3305         (get_number): Ditto.
3306         (get_alt_number): Ditto.
3307         (__isleap): New function-like macro used by strptime.
3308         (day_of_the_week): New function used by strptime.
3309         (day_of_the_year): Ditto.
3310         (__mon_yday): Now shared by mktime and strptime implementations.
3311
3312 2002-05-08  Hrvoje Niksic  <hniksic@arsdigita.com>
3313
3314         * cookies.c (check_domain_match): Use match_tail in case
3315         insensitive mode.
3316
3317         * utils.c (match_tail): Allow the caller to specify case
3318         insensitive mode.
3319
3320         * cookies.c (store_cookie): When expiry_time is 0, print it as
3321         undefined, not indefinite.
3322
3323 2002-05-07  Ian Abbott  <abbotti@mev.co.uk>
3324
3325         * cookies.c (cookie_jar_process_set_cookie): Do not store
3326         discarded cookie.
3327
3328 2002-04-21  Hrvoje Niksic  <hniksic@arsdigita.com>
3329
3330         * cookies.c (check_domain_match): Allow cookies to be set for
3331         subdomains of unknown top-level domains under some circumstances.
3332
3333 2002-04-21  Thomas Lussnig  <thomas.lussnig@bewegungsmelder.de>
3334
3335         * gen_ssl.c:
3336         - allow checking of server cert
3337         - allow defining client cert type
3338         - allow limit of ssl protocol
3339         - check more return values
3340         - added debug message on break
3341
3342 2002-04-21  Hrvoje Niksic  <hniksic@arsdigita.com>
3343
3344         * recur.c (download_child_p): Revert order of items in check
3345         number 6 for clarity.
3346
3347 2002-04-20  Hrvoje Niksic  <hniksic@arsdigita.com>
3348
3349         * init.c: Ditto.
3350
3351         * main.c: Ditto.
3352
3353         * http.c: Use the new interface.
3354
3355         * cookies.c: Provide an OO-style "cookie jar" interface to enable
3356         separate cookie jars.
3357
3358         * http.c (http_atotm): Declare argument as const.
3359
3360 2002-04-20  Hrvoje Niksic  <hniksic@arsdigita.com>
3361
3362         * cookies.c (cookie_new): Default to PORT_ANY.
3363         (find_cookie_chain_exact): Only search by DOMAIN.
3364         (find_matching_cookie): Also check that PORT matches.
3365         (store_cookie): Only match the domain.
3366         (set_cookie_header_cb): When a cookie "fakes" a domain, assume it
3367         is valid for that host rather than discarding it completely.
3368         (find_matching_chains): Don't search by PORT.
3369         (matching_cookie): Also match PORT.
3370         (load_cookies): Set the port if specified, otherwise leave it as
3371         ANY.
3372         (save_cookies_mapper): Save the port if specified, otherwise leave
3373         it empty.
3374
3375 2002-04-19  Thomas Lussnig  <thomas.lussnig@bewegungsmelder.de>
3376
3377         * init.c: The option `egdfile' was not in sort order.
3378
3379 2002-04-16  Hrvoje Niksic  <hniksic@arsdigita.com>
3380
3381         * ftp.c (getftp): Treat directories that begin with <letter>: as
3382         absolute.
3383         (getftp): Strip trailing slashes from con->id before merging it
3384         with TARGET.
3385
3386 2002-04-16  Hrvoje Niksic  <hniksic@arsdigita.com>
3387
3388         * http.c (gethttp): If Content-Type is not given, assume
3389         text/html.
3390
3391 2002-04-15  Hrvoje Niksic  <hniksic@arsdigita.com>
3392
3393         * recur.c (download_child_p): Don't ignore rejection of HTML
3394         documents that are themselves leaves of recursion.
3395
3396 2002-04-15  Ian Abbott  <abbotti@mev.co.uk>
3397
3398         Makefile.in: Updated several dependencies for object files to take
3399         account of nested include files.
3400
3401 2002-04-15  Ian Abbott  <abbotti@mev.co.uk>
3402
3403         Makefile.in: The target `connect$o' (connect.o) now depends on
3404         `utils.h'
3405
3406 2002-04-15  Ian Abbott  <abbotti@mev.co.uk>
3407
3408         * host.c (SET_H_ERRNO): New function-like macro to set `h_errno'.
3409         (gethostbyname_with_timeout): Use it.
3410
3411         * utils.c: Don't define `SETJMP()', `run_with_timeout_env' or
3412         `abort_run_with_timeout()' when `USE_SIGNAL_TIMEOUT' is undefined.
3413
3414 2002-04-15  Hrvoje Niksic  <hniksic@arsdigita.com>
3415
3416         * host.c (getaddrinfo_with_timeout): New function.
3417         (gethostbyname_with_timeout): Ditto.
3418         (lookup_host): Use them.
3419
3420 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
3421
3422         * utils.c (number_to_string): Handle the case when n < -INT_MAX.
3423
3424 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
3425
3426         * init.c (comind): Use a marginally faster implementation of
3427         binary search.  To quote Martin Buchholz, "a nanosecond saved is a
3428         nanosecond earned."
3429
3430 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
3431
3432         * main.c (print_help): Document `--post-data' and `--post-file'.
3433
3434 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
3435
3436         * http.c (gethttp): Ditto.
3437
3438         * retr.c (retrieve_url): Initialize variables to appease the
3439         compiler.
3440
3441         * gen_sslfunc.c (ssl_iread): Don't handle EINTR when calling
3442         select_fd.
3443         (ssl_iwrite): Ditto.
3444
3445         * connect.c (select_fd): Rewrite to handle EINTR.  Set errno to
3446         ETIMEDOUT in case of timeout.
3447         (iread): No need to handle EINTR when calling select_fd.
3448         (iwrite): Ditto.
3449
3450 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
3451
3452         * retr.c (retrieve_url): Make sure that POST is not honored for
3453         redirections.
3454
3455         * http.c (gethttp): Send the POST data when requested.
3456         (post_file): New function.
3457         (gethttp): Use it.
3458
3459         * main.c (main): Ditto.
3460
3461         * init.c: Add new options.
3462
3463         * options.h (struct options): New options post_data and
3464         post_file_name.
3465
3466 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
3467
3468         * connect.c (connect_with_timeout): Firing SIGALRM can result in
3469         connect() exiting with EINTR.  Treat EINTR the same as ETIMEDOUT.
3470
3471 2002-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
3472
3473         * connect.c (connect_with_timeout): Use it.
3474
3475         * utils.c (run_with_timeout): New function.
3476
3477 2002-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
3478
3479         * url.c (getproxy): Accept a struct url argument.  This obviates
3480         the need for USE_PROXY_P.
3481
3482         * retr.c (retrieve_url): Allow proxy to be a non-FTP URL.
3483
3484         * ftp.c (getftp): Recognize FWTK-style proxy.
3485
3486 2002-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
3487
3488         * config.h.in: Only define _VA_LIST when compiled with gcc.
3489
3490 2002-04012  Ian Abbott  <abbotti@mev.co.uk>
3491
3492         * http.c (http_loop): Compensate for MS Windows two-second
3493         granularity of file modification time when comparing timestamps.
3494
3495         * ftp.c (ftp_retrieve_list): Ditto.
3496
3497 2002-04-12  Ian Abbott  <abbotti@mev.co.uk>
3498
3499         * utils.c (has_html_suffix_p): New function to test filename for
3500         common html extensions.
3501
3502         * utils.h: Declare it.
3503
3504         * http.c (http_loop): Use it instead of previous test.
3505
3506         * retr.c (retrieve_url): Ditto.
3507
3508         * recur.c (download_child_p): Ditto.
3509
3510 2002-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
3511
3512         * config.h.in: Define _VA_LIST on Solaris to prevent stdio.h from
3513         declaring va_list.
3514         From Kevin Rodgers <kevinr@ihs.com>.
3515
3516 2002-04-12  Ian Abbott  <abbotti@mev.co.uk>
3517
3518         * Makefile.in: Specify libtool mode explicitly when linking.
3519
3520 2002-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
3521
3522         * connect.c (connect_with_timeout): New function.
3523         (connect_to_one): Use it.
3524
3525         * config.h.in: Add stubs for HAVE_SIGSETJMP, HAVE_SIGBLOCK, and
3526         HAVE_SETJMP_H.
3527
3528 2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
3529
3530         * log.c: Set WGET_USE_STDARG if __STDC__ is defined and stdarg.h
3531         is present.
3532
3533 2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
3534
3535         * progress.c (bar_create): If INITIAL is larger than TOTAL, fix
3536         TOTAL.
3537         (bar_finish): Likewise.
3538
3539 2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
3540
3541         * html-url.c (tag_handle_form): New function.  Pick up form
3542         actions and mark them for conversion only.
3543
3544 2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
3545
3546         * progress.c (struct progress_implementation): Use PARAMS when
3547         declaring the parameters of *create, *update, *finish, and
3548         *set_params.
3549
3550         * netrc.c: Ditto.
3551
3552         * http.c: Reformat some function definitions so that ansi2knr can
3553         read them.
3554
3555         * hash.c (struct hash_table): Use the PARAMS macro around
3556         parameters in the declaration of hash_function and test_function.
3557         (prime_size): Spell 2580823717UL and 3355070839UL as (unsigned
3558         long)0x99d43ea5 and (unsigned long)0xc7fa5177 respectively, so
3559         that pre-ANSI compilers can read them.
3560         (find_mapping): Use PARAMS when declaring EQUALS.
3561         (hash_table_put): Ditto.
3562
3563         * ftp.h: Wrap the parameters of ftp_index declaration in PARAMS.
3564
3565         * cookies.c (cookie_new): Use (unsigned long)0 instead of 0UL,
3566         which was unsupported by pre-ANSI compilers.
3567
3568         From Nelson H. F. Beebe <beebe@math.utah.edu>, for the most part.
3569
3570 2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
3571
3572         * url.c (url_filename): Use compose_file_name regardless of
3573         whether opt.dirstruct is set.
3574         (mkstruct): Don't handle the query and the reencoding of DIR; that
3575         is done in compose_file_name.
3576
3577 2002-04-10  Hrvoje Niksic  <hniksic@arsdigita.com>
3578
3579         * wget.h: Ditto for extern char *exec_name.
3580
3581         * options.h: Don't guard against OPTIONS_DEFINED_HERE -- it is
3582         perfectly legal to follow an `extern' with a non-`extern' ones,
3583         provided the types match.
3584
3585         * main.c: Don't define OPTIONS_DEFINED_HERE.
3586
3587 2002-04-10  Hrvoje Niksic  <hniksic@arsdigita.com>
3588
3589         * progress.c (create_image): Revert to calculating ETA based on
3590         average download speed.
3591         (create_image): Don't print ETA until the download has been active
3592         for at least 3 seconds.
3593         (create_image): When ETA is not available, don't print anything.
3594         The previous version would print --:--.
3595
3596 2002-04-10  Hrvoje Niksic  <hniksic@arsdigita.com>
3597
3598         * progress.c (bar_update): Keep updating a subinterval until it
3599         reaches or exceeds a watermark.  That way the measurement will be
3600         guaranteed to span a configurable minimum of time.  The current
3601         default is 3s in 30 100ms intervals.
3602
3603 2002-04-09  Hrvoje Niksic  <hniksic@arsdigita.com>
3604
3605         * progress.c (bar_update): Maintain an array of the time it took
3606         to perform previous 30 network reads.
3607         (create_image): Calculate the download speed and ETA based on the
3608         last 30 reads, not the entire download.
3609         (create_image): Make sure that the ETA is not changed more than
3610         once per second.
3611
3612 2002-04-09  Ian Abbott  <abbotti@mev.co.uk>
3613
3614         * mswindows.c (borland_utime): New function conditionally defined
3615         when `HACK_BCC_UTIME_BUG' is defined.  A reimplementation of
3616         `utime()' as Borland's `utime()' function is broken on Windows 9x
3617         systems.  (Original patch by Chin-yuan Kuo <sr1111111@yahoo.com.tw>.)
3618
3619 2002-04-08  Hrvoje Niksic  <hniksic@arsdigita.com>
3620
3621         * ftp.c (ftp_loop): Propagate the result of ftp_retrieve_glob.
3622
3623 2002-03-26  Ian Abbott  <abbotti@mev.co.uk>
3624
3625         * Makefile.in: Updated several dependencies for object files.
3626
3627 2002-03-20  Ian Abbott  <abbotti@mev.co.uk>
3628
3629         * mswindows.c: Include "utils.h".
3630
3631 2002-03-18  Ian Abbott  <abbotti@mev.co.uk>
3632
3633         * host.h: Don't include netdb.h on windows.
3634
3635 2002-02-19  Hrvoje Niksic  <hniksic@arsdigita.com>
3636
3637         * recur.c (retrieve_tree): Handle the case when start_url doesn't
3638         parse.
3639
3640 2002-02-19  Andreas Damm  <andreas-sourceforge@radab.org>
3641
3642         * wget.h (DO_REALLOC_FROM_ALLOCA): Multiply with sizeof(type) when
3643         calling xmalloc and memcpy.
3644
3645 2002-02-19  Hrvoje Niksic  <hniksic@arsdigita.com>
3646
3647         * host.h: Include Unix-specific includes #ifndef WINDOWS.
3648         Patch originally provided by Christian Lackas.
3649
3650 2002-02-11  Christian Lackas  <delta@lackas.net>
3651
3652         * recur.c: recurive downloading for https fixed.
3653
3654 2002-02-19  Alan Eldridge  <alane@geeksrus.net>
3655
3656         * host.h: Also include <netinet/in.h> and <sys/socket.h>.
3657
3658         * ftp-basic.c: Also include <netinet/in.h>.
3659
3660 2002-02-05  Ian Abbott  <abbotti@mev.co.uk>
3661
3662         * http.c (gethttp): when -c used, mark already fully retrieved
3663         file as successfully retrieved.
3664
3665 2002-02-19  Hrvoje Niksic  <hniksic@arsdigita.com>
3666
3667         * url.c (url_parse): Don't treat '?' as query string separator
3668         when parsing FTP URLs.
3669
3670 2002-02-01  Hrvoje Niksic  <hniksic@arsdigita.com>
3671
3672         * html-url.c (tag_handle_meta): Don't crash on <meta
3673         http-equiv=refresh> where content is missing.
3674
3675 2002-01-31  Herold Heiko  <Heiko.Herold@previnet.it>
3676
3677         * ftp-basic.c, host.c: don't include sys/socket.h, arpa/inet.h,
3678         netdb.h on windows.
3679
3680 2002-01-30  Hrvoje Niksic  <hniksic@arsdigita.com>
3681
3682         * retr.c (retrieve_url): Remove redirection cycle detection.  This
3683         is because some sites legitimately redirect the user back to the
3684         same location, e.g. after an authorization check performed by
3685         another page.  MAX_REDIRECTIONS is still used to prevent infinite
3686         redirection loops.
3687
3688 2002-01-26  Hrvoje Niksic  <hniksic@arsdigita.com>
3689
3690         * http.c (gethttp): Wrap host name in square brackets if it
3691         contains a colon.
3692
3693 2002-01-26  Hrvoje Niksic  <hniksic@arsdigita.com>
3694
3695         * url.c (url_parse): Allow all hex digits, not only decimal ones,
3696         to form an IP address.
3697
3698 2002-01-26  Hrvoje Niksic  <hniksic@arsdigita.com>
3699
3700         * url.c (urlchr_table): Make square braces reserved, so we can
3701         parse http://[::1]/.
3702         (url_parse): Handle host in braces.
3703         (url_string): If url->host contains colons, wrap it in braces.
3704
3705 2002-01-24  Hrvoje Niksic  <hniksic@arsdigita.com>
3706
3707         * connect.c (resolve_bind_address): New function.
3708         (connect_to_one): Use it.
3709         (bindport): Ditto.
3710
3711         * init.c: Don't resolve bind-address here.
3712
3713         * host.c (wget_sockaddr_set_address): Would bug out with ADDR == NULL.
3714
3715 2002-01-24  Hrvoje Niksic  <hniksic@arsdigita.com>
3716
3717         * host.c (lookup_host): Use sizeof(ip4_address) to calculate the
3718         offset.
3719         (address_list_new): Use map_ipv4_to_ip.
3720         (wget_sockaddr_set_address): Convert ADDR to IPv4 before using it
3721         in IPv4 context.
3722
3723 2002-01-24  Hrvoje Niksic  <hniksic@arsdigita.com>
3724
3725         * source: Integrated IPv6 support.
3726         Written by Thomas Lussnig <thomas.lussnig@bewegungsmelder.de>.
3727
3728 2002-01-15  Ian Abbott  <abbotti@mev.co.uk>
3729
3730         * init.c (cmd_file): Change `\' to `/' for Windows (yes, really!)
3731         (cmd_directory): New function. Like cmd_file(), but strips
3732         trailing directory separators.
3733         (commands): Change action for "dirprefix" from `cmd_file' to
3734         `cmd_directory'.
3735
3736         * utils.c (make_directory): Allow intermediate `mkdir' calls to
3737         fail, as not all path components that do not exist should be
3738         directory components, especially under Windows.
3739
3740 2002-01-17  Hrvoje Niksic  <hniksic@arsdigita.com>
3741
3742         * netrc.c (parse_netrc): Skip leading whitespace before testing
3743         whether the line is empty.  Empty lines still contain the line
3744         terminator.
3745
3746 2002-01-15  Hrvoje Niksic  <hniksic@arsdigita.com>
3747
3748         * gen_sslfunc.c (ssl_iread): Call select on the file descriptor
3749         only if no data is pending in SSL buffers.
3750         From tony@bluetail.com.
3751
3752 2002-01-14  Hrvoje Niksic  <hniksic@arsdigita.com>
3753
3754         * headers.c (header_get): Strip trailing whitespace from the
3755         header.
3756
3757 2002-01-14  Hrvoje Niksic  <hniksic@arsdigita.com>
3758
3759         * url.c (parse_uname): URL-decode *USER and *PASSWD.
3760
3761 2002-01-07  Ian Abbott <abbotti@mev.co.uk>
3762
3763         * url.c (uri_merge_1): Deal with "net path" relative URL (one that
3764         starts with "//").
3765
3766 2002-01-14  Hrvoje Niksic  <hniksic@arsdigita.com>
3767
3768         * http.c (gethttp): Invalidate SOCK if get_contents encountered an
3769         error.
3770
3771 2001-12-24  Hrvoje Niksic  <hniksic@arsdigita.com>
3772
3773         * version.c: Wget 1.8.1 is released.
3774
3775 2001-12-19  Hrvoje Niksic  <hniksic@arsdigita.com>
3776
3777         * version.c: Wget 1.8.1-pre3 is released.
3778
3779 2001-12-19  Hrvoje Niksic  <hniksic@arsdigita.com>
3780
3781         * recur.c (retrieve_tree): Enqueue the canonical representation of
3782         start_url, so that the test against dl_url_file_map works.
3783
3784 2001-12-19  Hrvoje Niksic  <hniksic@arsdigita.com>
3785
3786         * log.c (logputs): Check for requested verbosity before printing
3787         anything.
3788
3789 2001-12-19  Hrvoje Niksic  <hniksic@arsdigita.com>
3790
3791         * html-url.c (tag_handle_link): Treat the "shortcut icon" link as
3792         inline.
3793
3794 2001-12-18  Hrvoje Niksic  <hniksic@arsdigita.com>
3795
3796         * recur.c (retrieve_tree): Make a copy of file obtained from
3797         dl_url_file_map because the code calls xfree(file) later.
3798
3799 2001-12-18  Hrvoje Niksic  <hniksic@arsdigita.com>
3800
3801         * recur.c (register_html): Maintain a hash table of HTML files
3802         along with the list.  Disallow duplicates.
3803         (retrieve_tree): Use downloaded_html_set to check whether the file
3804         found in dl_url_file_map is an HTML file, and descend into it if
3805         so.
3806         (convert_all_links): Don't guard against duplicates in
3807         downloaded_html_list, since they are no longer possible.
3808
3809 2001-12-18  Ian Abbott  <abbotti@mev.co.uk>
3810
3811         * recur.c (retrieve_tree): Pass on referring URL when retrieving
3812         recursed URL.
3813
3814 2001-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
3815
3816         * version.c: Wget 1.8.1-pre2 is released.
3817
3818 2001-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
3819
3820         * retr.c (sleep_between_retrievals): Simplify indentation.
3821
3822 2001-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
3823
3824         * gen_sslfunc.c (ssl_init_prng): Use random_number to get a byte
3825         of "randomness" at a time.
3826         (ssl_init_prng): Don't seed the PRNG; random_number will do that.
3827
3828         * retr.c (sleep_between_retrievals): Use it.  Make sure that the
3829         random amount averages in opt.wait.
3830         (sleep_between_retrievals): Don't seed the PRNG; random_number
3831         will do that.
3832
3833         * utils.c (random_number): New function.
3834
3835 2001-12-14  Hrvoje Niksic  <hniksic@arsdigita.com>
3836
3837         * url.c (path_simplify): Move here from utils.c, and make static.
3838
3839 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
3840
3841         * init.c (wgetrc_file_name): Print correct message when loading
3842         getenv("WGETRC") fails.
3843
3844 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
3845
3846         * recur.c (register_download): Don't abort when one URL references
3847         two different files.
3848
3849 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
3850
3851         * http.c (gethttp): Check for conn->scheme, not u->scheme, before
3852         calling ssl_iwrite.
3853
3854 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
3855
3856         * version.c: Wget 1.8.1-pre1 is released.
3857
3858 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
3859
3860         * res.c (matches): Fix broken URL in the docstring.
3861
3862 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
3863
3864         * html-url.c (tag_url_attributes): Mark <embed href=...> as
3865         external.
3866
3867 2001-12-12  Hrvoje Niksic  <hniksic@arsdigita.com>
3868
3869         * url.c (get_urls_file): Cosmetic changes.
3870
3871 2001-12-12  Hrvoje Niksic  <hniksic@arsdigita.com>
3872
3873         * html-url.c (append_one_url): Resurrect warning when unable to
3874         resolve a relative link.
3875
3876 2001-12-12  Hrvoje Niksic  <hniksic@arsdigita.com>
3877
3878         * html-url.c (collect_tags_mapper): Break into several functions.
3879         (tag_url_attributes): Collect <embed href=...>.
3880
3881 2001-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
3882
3883         * host.c: New type ipv4_address.  Use it consistently instead of
3884         `unsigned char[4]' and `unsigned char *'.
3885         (pretty_print_address): Accept a `const void *', to require even
3886         less casting.
3887
3888 2001-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
3889
3890         * ftp-ls.c (ftp_parse_vms_ls): Fix obvious memory leaks.
3891
3892 2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
3893
3894         * main.c (main): Initialize progress after fork_to_background, so
3895         that it knows when to use dots.
3896
3897         * mswindows.c (ws_hangup): Call log_request_redirect_output.
3898
3899         * utils.c (fork_to_background): Print the PID of the child
3900         process.
3901
3902         * log.c (log_request_redirect_output): Set a flag that output
3903         redirection has been requested.  Doing anything else in a signal
3904         handler is unsafe.
3905         (check_redirect_output): New function: check whether redirection
3906         has been requested and, if so, call redirect_output().
3907         (logputs): Call check_redirect_output.
3908         (logprintf): Ditto.
3909         (debug_logprintf): Ditto.
3910         (redirect_output): Print clearer messages.
3911
3912         * main.c (redirect_output_signal): Don't call
3913         redirect_output_signal directly.  Instead, call
3914         log_request_redirect_output.
3915
3916         * utils.c (memfatal): Ditto.
3917
3918         * progress.c (display_image): Use it.
3919
3920         * log.c (log_set_save_context): New function: allow the caller to
3921         turn off saving log context lines.
3922
3923 2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
3924
3925         * host.c (address_list_set_faulty): Uncomment a sanity check.
3926
3927 2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
3928
3929         * utils.c (long_to_string): Return a pointer after where the
3930         number ends.
3931         (long_to_string): Rename to number_to_string.
3932
3933 2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
3934
3935         * utils.c (path_simplify): Correctly handle the unlikely case that
3936         b starts out as path + 1.
3937
3938 2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
3939
3940         * utils.c (path_simplify): Rewrite, with better comments, and
3941         without the use of strcpy to move overlapping blocks.
3942
3943 2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
3944
3945         * init.c (cmd_spec_progress): Resurrect.  Check whether VAL is a
3946         valid progress type before setting it.
3947
3948 2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
3949
3950         * main.c (main): Remove stray debugging message.
3951
3952 2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
3953
3954         * progress.c (create_image): Fix ETA padding when hours are prined.
3955
3956 2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
3957
3958         * version.c: Wget 1.8 is released.
3959
3960 2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
3961
3962         * url.c (reencode_string): Declare static.
3963
3964         * res.c (registered_specs): Declare static.
3965
3966         * progress.c (current_impl_locked): Declare static.
3967
3968         * log.c (flush_log_p): Declare static.
3969         (needs_flushing): Ditto.
3970
3971         * http.c (digest_authentication_encode): Declare static.
3972
3973         * html-url.c (init_interesting): Declare static.
3974
3975         * host.c (host_name_addresses_map): Declare static.
3976
3977         * cookies.c (find_matching_chains): Declare static.
3978
3979         * ftp-ls.c (ftp_parse_vms_ls): Warn about the memory leak
3980         indicated by lint.
3981
3982         * utils.c (path_simplify): Remove unused variable STUB_CHAR.
3983
3984         * host.c (address_list_set_faulty): Document that INDEX is
3985         currently unused.
3986
3987         * url.c (rewrite_shorthand_url): Remove unused variable PATH.
3988
3989 2001-12-08  Hrvoje Niksic  <hniksic@arsdigita.com>
3990
3991         * version.c: Wget 1.8-pre2 is released.
3992
3993 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
3994
3995         * progress.c (progress_handle_sigwinch): Set up the signal again.
3996
3997         * utils.c: Include <sys/termios.h>, where Solaris defines
3998         TIOCGWINSZ.
3999
4000         * progress.c (bar_create): Don't use the last column on the screen.
4001         (create_image): Pad ETA to constant size.  Pad SIZE to nine digits
4002         only until it exceeded them.
4003
4004 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
4005
4006         * version.c: Wget 1.8-pre1 is released.
4007
4008 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
4009
4010         * progress.c (progress_create): Make sure that, when the output is
4011         redirected, the progress implementation gets changed to the
4012         fallback one.
4013         (bar_set_params): Set current_impl_locked to 1 when "force" is
4014         specified.
4015         (progress_create): Don't change the progress implementation if
4016         current_impl_locked is non-zero.
4017
4018         * main.c (redirect_output_signal): Call
4019         progress_schedule_redirect.
4020
4021         * progress.c (progress_schedule_redirect): New function.
4022
4023 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
4024
4025         * log.c (logvprintf): Restructure to allow being called multiple
4026         times.
4027         (logprintf): Call logvprintf in a loop.
4028         (debug_logprintf): Ditto.
4029
4030 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
4031
4032         * gen_sslfunc.c (ssl_init_prng): Allow the user to disable EGD by
4033         setting egd_file it to empty string.
4034
4035         * main.c (main): Change the option name from --sslegdsock to
4036         --egd-file.
4037
4038 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
4039
4040         * gen_sslfunc.c (ssl_init_prng): Make the printed message
4041         translatable.
4042
4043 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
4044
4045         * url.c (scheme_disable): New function.
4046
4047         * main.c (main): Call ssl_init_prng from here rather than from
4048         init_ssl, so that it has a chance to disable support for https
4049         before a URL has been resolved.
4050
4051         * gen_sslfunc.c (ssl_init_prng): Seed with rand() if all else
4052         failed.
4053         (ssl_init_prng): Disable support for https if seeding the PRNG
4054         fails.
4055
4056 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
4057
4058         * utils.c (read_whole_line): Handle lines beginning with \0.
4059
4060 2001-12-05  Hrvoje Niksic  <hniksic@arsdigita.com>
4061
4062         * recur.c (convert_all_links): Guard against duplicates in
4063         downloaded_html_files.
4064         (register_download): Don't invalidate similar-looking URLs.
4065         (match_except_index): New function.
4066
4067 2001-12-05  Hrvoje Niksic  <hniksic@arsdigita.com>
4068
4069         * utils.c (path_simplify): Document with test cases.
4070
4071 2001-12-04  Hrvoje Niksic  <hniksic@arsdigita.com>
4072
4073         * gen_sslfunc.c: Ditto.
4074
4075         * rbuf.c: Include <string.h>.
4076
4077 2001-12-04  Hrvoje Niksic  <hniksic@arsdigita.com>
4078
4079         * recur.c (retrieve_tree): Check whether the URL was already
4080         downloaded before downloading it again.
4081         (descend_child_p): Renamed to download_child_p.
4082         (register_download): When one URL is downloaded to a file already
4083         "owned" by another URL, delete all references that map any URL to
4084         that file.
4085         (register_delete_file): New function.
4086         (retrieve_tree): Use it after deleting a file.
4087
4088         * url.c (url_parse): Re-canonicalize the URL also if the path is
4089         empty, so that e.g. "http://www.server.com" ->
4090         "http://www.server.com/".
4091         (lowercase_str): Use ISUPPER instead of !ISLOWER.
4092
4093         * retr.c (retrieve_url): Use the canonical URL form when calling
4094         register_download().
4095
4096 2001-12-04  Ian Abbott <abbotti@mev.co.uk>
4097
4098         * snprintf.c (dopr): Use `unsigned int' as the second argument to
4099         va_arg when casting to `unsigned short' is intended.
4100
4101 2001-12-04  Herold Heiko  <Heiko.Herold@previnet.it>
4102
4103         * gen_sslfunc.c: on windows provide ssl crypto random 
4104           initialization through RAND_screen(); could possibly
4105           be not enough for strong ssl communication (see the 
4106           relevant manual page from the openssl package).
4107
4108 2001-12-04  Hrvoje Niksic  <hniksic@arsdigita.com>
4109
4110         * url.c (local_quote_string): Reenable quoting of question marks,
4111         but only when `--html-extension' is used.
4112
4113 2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
4114
4115         * version.c: Wget 1.8-beta3 is released.
4116
4117 2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
4118
4119         * snprintf.c (dopr): Cast the result of va_arg to short int and
4120         short unsigned int where these types are expected to be used.
4121
4122 2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
4123
4124         * snprintf.c (dopr): Replace `short int' and `unsigned short int'
4125         with `int' when using it as the second argument to `va_arg'.
4126
4127 2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
4128
4129         * host.c (address_list_new_one): New function.
4130         (lookup_host): Use it.
4131
4132 2001-12-03  Andre Majorel  <amajorel@teaser.fr>
4133
4134         * host.c (lookup_host): Don't initialize TMPSTORE directly because
4135         it's not legal C.
4136
4137 2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
4138
4139         * ftp-basic.c (ftp_port): Don't return HOSTERR if we fail getting
4140         the socket data.
4141
4142         * ftp.c: Ditto.
4143
4144         * http.c: No need to declare h_errno.
4145
4146         * host.c: Declare h_errno.
4147
4148 2001-12-02  Hrvoje Niksic  <hniksic@arsdigita.com>
4149
4150         * utils.c (file_merge): If BASE doesn't contain a slash, just
4151         return a copy of FILE.
4152
4153 2001-12-02  Hrvoje Niksic  <hniksic@arsdigita.com>
4154
4155         * version.c: Wget 1.8-beta2 is released.
4156
4157 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
4158
4159         * ftp.c (getftp): When PWD fails, assume "/".
4160
4161         * ftp-basic.c (ftp_syst): Fix indentation.
4162
4163 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
4164
4165         * url.c (get_urls_file): If opt.base_href is specified, merge each
4166         URL with the base.
4167
4168 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
4169
4170         * main.c (print_help): Don't document the removed `-nh'.
4171
4172 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
4173
4174         * url.c (url_full_path): Document better.
4175
4176         * http.c (gethttp): Use the full path when creating digest
4177         authorization.
4178
4179 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
4180
4181         * cookies.c (path_matches): Return 0 if PREFIX doesn't begin with
4182         '/'.
4183
4184 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
4185
4186         * cookies.c (path_matches): FULL_PATH doesn't begin with '/', but
4187         PREFIX does.
4188
4189 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
4190
4191         * cookies.c (check_domain_match): Reimplement to match Netscape's
4192         "preliminary specification" for cookies.
4193
4194 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
4195
4196         * url.c (replace_attr_refresh_hack): New function.
4197         (convert_links): Call replace_attr_refresh_hack for Refresh
4198         links.  It will add the "TMOUT; URL=" junk before the link.
4199
4200         * html-url.c (collect_tags_mapper): Set ID to the ID of the
4201         "content" attribute, not "http-equiv".
4202         (collect_tags_mapper): Don't use OFFSET to hack the raw_* values;
4203         instead, store the information that this entry belongs to a
4204         "refresh" link.
4205
4206 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
4207
4208         * version.c: Wget 1.8-beta1 is released.
4209
4210 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
4211
4212         * recur.c (retrieve_tree): Allow -p retrievals to exceed maximum
4213         depth by more than one.
4214
4215 2001-11-30  Hrvoje Niksic  <hniksic@arsdigita.com>
4216
4217         * retr.c (retrieve_url): Don't allow more than 20 redirections.
4218
4219 2001-11-30  Hrvoje Niksic  <hniksic@arsdigita.com>
4220
4221         * recur.c (retrieve_tree): Skip the non-inline entries when
4222         enqueuing the children of a leaf HTML node in -p mode.
4223         (descend_url_p): Ignore opt.no_parent when in -p mode and UPOS is
4224         "inline".
4225
4226         * html-url.c (get_urls_html): Don't accept dash_p_leaf_HTML.
4227         (collect_tags_mapper): When an entry is "inline", mark it as such.
4228
4229         * recur.c (descend_url_p): Fix test when checking for
4230         acceptance/rejection rules.
4231
4232 2001-10-31 Daniel BODEA <dali@dali-designs.com>
4233
4234         * netrc.c (search_netrc): When slack_default is 0, still look for
4235         an account with matching password, just not the "default account".
4236         HTTP Authorization using .netrc should now work as expected.
4237
4238 2001-11-30  T. Bharath  <TBharath@responsenetworks.com>
4239
4240         * http.c (persistent_available_p): Call SHUTDOWN_SSL if
4241         test_socket_open fails.
4242
4243 2001-11-30  Hrvoje Niksic  <hniksic@arsdigita.com>
4244
4245         * progress.c (display_image): Just print one CR to reset the
4246         cursor position.
4247
4248 2001-11-30  Christian Fraenkel  <c.fraenkel@gmx.net>
4249
4250         * init.c: New command `ssl_egd_sock'.
4251
4252         * main.c (main): New option `--sslegdsock'.
4253
4254         * gen_sslfunc.c (ssl_init_prng): Seed the RNG using EGD.
4255
4256 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
4257
4258         * cmpt.c (memmove): Include a simple memmove implementation.
4259
4260 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
4261
4262         * headers: Guard against header files being included twice.
4263
4264 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
4265
4266         * gen-md5.c: Use unsigned char * as the buffer argument to
4267         gen_md5_update.
4268
4269 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
4270
4271         * connect.h: Declare select_fd.
4272
4273 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
4274
4275         * recur.c (descend_url_p): When resolving no_parent, compare with
4276         start_url, not parent url.  Otherwise link from /a/b/ to /a/c/
4277         wouldn't be followed, although the download started from /a/.
4278
4279 2001-01-23  Herold Heiko  <Heiko.Herold@previnet.it>
4280
4281         * config.h.ms, mswindows.h: defined HAVE_ISATTY, use _isatty for
4282         MS VC; somebody with Borland compiler please check and provide
4283         patch if possible;
4284
4285         * cmpt.c: provided a usleep emulation.
4286
4287 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
4288
4289         * host.c (address_list_new): Initialize al->faulty.
4290
4291 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
4292
4293         * http.c (http_process_range): Accept the broken output of
4294         "JavaWebServer/1.1.1".
4295
4296 2001-11-28  Hrvoje Niksic  <hniksic@arsdigita.com>
4297
4298         * progress.c (dot_set_params): If PARAMS is unspecified, use
4299         dot_style, if available.
4300
4301         * init.c: Ditto.
4302
4303         * main.c (main): Resurect --dot-style.
4304
4305         * progress.c (dot_finish): Print the quantity if we're left at the
4306         beginning of a row.
4307
4308 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
4309
4310         * cmpt.c (random): Removed.
4311
4312         * retr.c (sleep_between_retrievals): Use the more portable rand()
4313         instead of random().
4314
4315 2001-11-27  Ian Abbott <abbotti@mev.co.uk>
4316
4317         * retr.c (retrieve_from_file): Initialize `new_file' to NULL to
4318         prevent seg fault.
4319
4320 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
4321
4322         * connect.c (connect_to_many): Use address_list_set_faulty to
4323         prevent the faulty address from being reused.
4324
4325         * host.c (address_list_set_faulty): New function.
4326         (address_list_get_bounds): New function, instead of
4327         address_list_count.
4328
4329 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
4330
4331         * url.c (convert_links): Don't translate %d-%d.
4332
4333         * main.c (print_help): Remove stray HAVE_RANDOM code.
4334
4335 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
4336
4337         * ftp.c (getftp): Improve output after sending PASV.  Don't
4338         attempt to "look up" the IP address we already know; call
4339         connect_to_one directly.
4340
4341 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
4342
4343         * progress.c: Change the default progress implementation to "bar".
4344
4345 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
4346
4347         * progress.c (bar_create): Print two newlines.
4348
4349 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
4350
4351         * cmpt.c (random): New function, a simple-minded replacement for
4352         random() on systems that don't have it.
4353
4354 2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
4355
4356         * config.h.in: Put a HAVE_USLEEP stub.
4357
4358         * cmpt.c (usleep): Replacement implementation of usleep using
4359         select.
4360
4361         * init.c: New option init_rate.
4362
4363         * main.c (main): New option --limit-rate.
4364
4365         * retr.c (limit_bandwidth): New function.
4366         (get_contents): Call it to limit the bandwidth used when
4367         downloading.
4368
4369         * progress.c (dot_update): Would print the wrong download speed on
4370         rows other than the first one when the download was continued.
4371         (dot_finish): Ditto.
4372
4373 2001-11-26  Ian Abbott <abbotti@mev.co.uk>
4374
4375         * http.c (gethttp): fix undeclared variable 'err' when compiled
4376         with HAVE_SSL.
4377
4378 2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
4379
4380         * progress.c: Don't allocate new timers; use the timing data
4381         propagated from the caller.
4382
4383         * retr.c (get_contents): Allocate and use a timer.
4384
4385 2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
4386
4387         * http.c (last_host_ip): Made into an address_list.
4388         (invalidate_persistent): Release pc_last_host_ip.
4389         (register_persistent): Use lookup_host.
4390         (persistent_available_p): Check for equality of hosts using
4391         address_list_match_all.  Call address_list_release.
4392         (http_cleanup): New function.
4393
4394         * ftp.c (getftp): Use lookup_host and connect_to_many.
4395
4396         * http.c (gethttp): Use lookup_host and connect_to_many.
4397
4398         * connect.c (make_connection): Removed.
4399         (connect_to_one): New function.
4400         (connect_to_many): Ditto.
4401         (set_connection_host_name): Ditto.
4402
4403         * host.c (lookup_host): New function; new return type.
4404         (address_list_new): New function.
4405         (address_list_count): Ditto.
4406         (address_list_copy_one): Ditto.
4407         (address_list_delete): Ditto.
4408         (address_list_release): Ditto.
4409         (pretty_print_address): Ditto.
4410
4411 2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
4412
4413         * recur.c (retrieve_tree): In case of followed redirection,
4414         blacklist the pre-redirection URL.
4415
4416 2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
4417
4418         * recur.c (descend_redirect_p): New function.
4419         (retrieve_tree): Make sure redirections are not blindly followed.
4420
4421 2001-11-04  Alan Eldridge  <alane@geeksrus.net>
4422
4423         * config.h.in: added HAVE_RANDOM.
4424
4425         * options.h: added random_wait to struct options.
4426
4427         * main.c (print_help [HAVE_RANDOM], main): added arg parsing, help
4428         for --random-wait.
4429
4430         * retr.c (sleep_between_retrievals) [HAVE_RANDOM]: added
4431         implementation of random wait times.
4432
4433         * init.c (commands): added "randomwait" keyword.
4434
4435 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
4436
4437         * recur.c (descend_url_p): Be more conservative with blacklisting
4438         URLs.
4439         (convert_all_links): Print how many files have been converted, and
4440         how long it took.
4441
4442         * progress.c (create_image): Place the number of downloaded bytes
4443         right after the progress bar.
4444
4445         * utils.c (suffix): Return a pointer into the string.
4446
4447 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
4448
4449         * url.c (convert_links): Handle CO_NULLIFY_BASE.
4450
4451         * recur.c (retrieve_tree): Ignore download-ignorable children.
4452         (convert_all_links): Specify CO_NULLIFY_BASE when link_base_p.
4453
4454         * html-url.c (handle_link): Return the newly created urlpos.
4455         (collect_tags_mapper): When dealing with BASE, store the base
4456         reference and mark it as download-ignorable.
4457
4458 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
4459
4460         * url.c (convert_links): Attempt to quote '?' as "%3F" when
4461         linking to local files.  Given up on the attempt, as it breaks
4462         local browsing.
4463
4464 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
4465
4466         * main.c (private_initialize): Removed.
4467         (main): Don't call private_initialize.
4468
4469         * http.c: Call lookup_host.
4470
4471         * host.c (host_init): Removed.
4472         (add_host_to_cache): Initialize host_name_address_map here, on
4473         demand.
4474         (ngethostbyname): Commented out.
4475
4476         * connect.c (make_connection): Remove dead code; use lookup_host.
4477
4478         * host.c (store_hostaddress): Renamed to lookup_host and reversed
4479         the args.
4480         Removed host_address_name_map and host_slave_master_map.
4481
4482 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
4483
4484         * progress.c (dot_create): Align the "[ skipping ... ]" string
4485         with the dots.
4486
4487         * retr.c (rate): Split into two functions: calc_rate and
4488         retr_rate.
4489
4490         * progress.c (create_image): Draw a dummy progress bar even when
4491         total size is unknown.
4492         (display_image): Place the text cursor at the end of the "image".
4493
4494 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
4495
4496         * url.c (reencode_string): Use unsigned char, not char --
4497         otherwise the hex digits come out wrong for 8-bit chars such as
4498         nbsp.
4499         (lowercase_str): New function.
4500         (url_parse): Canonicalize u->url if needed.
4501         (get_urls_file): Parse each URL, and return only the valid ones.
4502         (free_urlpos): Call url_free.
4503         (mkstruct): Add :port if the port is non-standard.
4504         (mkstruct): Append the query string to the file name, if any.
4505         (urlpath_length): Use strpbrk_or_eos.
4506         (uri_merge_1): Handle the cases where LINK is an empty string,
4507         where LINK consists only of query, and where LINK consists only of
4508         fragment.
4509         (convert_links): Count and report both kinds of conversion.
4510         (downloaded_file): Use a hash table, not a list.
4511         (downloaded_files_free): Free the hash table.
4512
4513         * retr.c (retrieve_from_file): Ditto.
4514
4515         * main.c (main): Call either retrieve_url or retrieve_tree
4516         for each URL, not both.
4517
4518         * retr.c (register_all_redirections): New function.
4519         (register_redirections_mapper): Ditto.
4520         (retrieve_url): Register the redirections.
4521         (retrieve_url): Make the string "Error parsing proxy ..." 
4522         translatable.
4523
4524         * res.c (add_path): Strip leading slash from robots.txt paths so
4525         that the path representations are "compatible".
4526         (free_specs): Free each individual path, too.
4527         (res_cleanup): New function.
4528         (cleanup_hash_table_mapper): Ditto.
4529
4530         * recur.c (url_queue_new): New function.
4531         (url_queue_delete): Ditto.
4532         (url_enqueue): Ditto.
4533         (url_dequeue): Ditto.
4534         (retrieve_tree): New function, replacement for recursive_retrieve.
4535         (descend_url_p): New function.
4536         (register_redirection): New function.
4537
4538         * progress.c (create_image): Cosmetic changes.
4539
4540         * init.c (cleanup): Do all those complex cleanups only if
4541         DEBUG_MALLOC is defined.
4542
4543         * main.c: Removed --simple-check and the corresponding
4544         simple_host_check in init.c.
4545
4546         * html-url.c (handle_link): Parse the URL here, and propagate the
4547         parsed URL to the caller, who would otherwise have to parse it
4548         again.
4549
4550         * host.c (xstrdup_lower): Moved to utils.c.
4551         (realhost): Removed.
4552         (same_host): Ditto.
4553
4554 2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
4555
4556         * utils.c (path_simplify): Preserver the (non-)existence of
4557         leading slash.  Return non-zero if changes were made.
4558
4559 2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
4560
4561         * progress.c (bar_update): Don't modify bp->total_length if it is
4562         zero.
4563
4564 2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
4565
4566         * retr.c (retrieve_url): When the redirection URL doesn't parse,
4567         print the correct error message rather than "UNKNOWN".
4568
4569 2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
4570
4571         * progress.c (bar_finish): If the timer didn't record any time
4572         since the download beginning, fake 1ms.
4573
4574 2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
4575
4576         * recur.c (recursive_retrieve): Fix typo.
4577
4578 2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
4579
4580         * progress.c (create_image): Don't translate "%ld ".
4581
4582 2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
4583
4584         * progress.c (bar_set_params): Allow the user to force the use of
4585         the bar.
4586
4587 2001-11-23  Lemble Gregory  <gregory.lemble@st.com>
4588
4589         * gen_sslfunc.c (ssl_init_prng): New function; seed the SSL RNG.
4590
4591 2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
4592
4593         * progress.c: Renamed dp_* functions to dot_* for greater clarity
4594         and consistency with bar_*.
4595         (print_download_speed): Get rid of the unneeded '@' character.
4596         (create_image): Fix download rate geometry.
4597
4598         * progress.c (print_elapsed): Remove spurious space.
4599         (print_elapsed): Renamed to print_download_speed, since that's
4600         what it does.
4601
4602 2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
4603
4604         * progress.c (bar_update): If the downloaded amount becomes larger
4605         than the expected amount, adjust the expected amount accordingly.
4606
4607 2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
4608
4609         * utils.c (determine_screen_width): New function.
4610
4611         * main.c (main): New option `--progress=TYPE'.
4612         (main): Implement compatibility with the old option `--dot-style'.
4613
4614         * init.c: Removed cmd_spec_dotstyle -- that logic is now in
4615         dp_set_params.
4616         (cmd_spec_progress): New function.
4617
4618         * retr.c (get_contents): Use the progress_* functions instead of
4619         the old show_progress().
4620         (show_progress): Removed.
4621         (rate): Print "xxxx.xx K/s" instead of "KB/s".  Ditto for MB/s,
4622         etc.
4623
4624         * progress.c (set_progress_implementation): New function.
4625         (valid_progress_implementation_p): Ditto.
4626         (progress_create): Ditto.
4627         (progress_update): Ditto.
4628         (progress_finish): Ditto.
4629         (dp_create): Ditto.
4630         (dp_update): Ditto.
4631         (dp_finish): Ditto.
4632         (dp_set_params): Ditto.
4633         (print_elapsed): Ditto.
4634
4635 2001-11-22  Hrvoje Niksic  <hniksic@arsdigita.com>
4636
4637         * retr.c (show_progress): Use it.
4638
4639         * log.c (log_set_flush): New function.
4640
4641 2001-11-22  Hrvoje Niksic  <hniksic@arsdigita.com>
4642
4643         * utils.c (path_simplify): Don't remove trailing slashes.
4644
4645         * ftp.c (ftp_get_listing): Use it.
4646
4647         * utils.c (file_merge): New function.
4648
4649         * url.c (opt_url): Removed.
4650
4651         * recur.c (recursive_retrieve): Inline "opt_url" logic.
4652
4653         * main.c (main): Use xfree(), not free().
4654
4655         * url.c (rewrite_url_maybe): Renamed to rewrite_shorthand_url.
4656
4657         * ftp.c (ccon): Move `ccon' typedef here, since it's only used
4658         internally.
4659
4660         * config.h.in: Include a stub for HAVE_STRPBRK.
4661
4662         * cmpt.c (strpbrk): Include a replacement for systems without
4663         strpbrk().
4664
4665         * ftp.c: Use url_set_dir and url_set_file when modifying the URL.
4666
4667         * url.c (url_set_dir): New function.
4668         (url_set_file): Ditto.
4669
4670         * ftp-basic.c (ftp_process_type): Process FTP type here; the URL
4671         parser makes the URL "params" available, so we can do that in this
4672         function.
4673
4674         * retr.c: Ditto.
4675
4676         * ftp.c: Ditto; pass the local file information in `ccon'.
4677
4678         * http.c: Get rid of the ugly kludge that had URL being replaced
4679         with the proxy URL when proxy retrieval was requested.  Use a
4680         separate parameter to http_loop and gethttp for the proxy URL.
4681
4682         * http.c: Changed to reflect the fact that local file, proxy, and
4683         referer information are no longer stored in struct url.  The local
4684         file information is passed in `struct hstat' now.
4685
4686         * url.c: Reworked URL parsing to be more regular.  Reencode the
4687         URL using reencode_string.
4688         Removed non-URL-related information from struct url.  This
4689         includes fields `proxy', `local', and `referer'.
4690
4691 2001-11-22  Jochen Hein  <jochen@jochen.org>
4692
4693         * main.c (main): Split the copyright notice for easier
4694         translation.
4695
4696 2001-08-21  Dave Turner <dct25@hermes.cam.ac.uk>
4697
4698         * ftp-basic.c (ftp_size): New function to send non-standard SIZE
4699           command to server to request file size.
4700         * ftp.h (ftp_size): Export it.
4701         * ftp.c (getftp): Use new ftp_size function if restoring
4702           transfer of a file with unknown size.
4703
4704 2001-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
4705
4706         * url.c (parseurl): Don't depend on the now-obsolete TYPE.
4707
4708 2001-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
4709
4710         * url.c (getproxy): Handle URL shorthands.
4711
4712 2001-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
4713
4714         * main.c: Remove --wait / --waitretry backwards compatibility
4715         code.
4716         
4717 2001-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
4718
4719         * main.c (main): Use it.
4720
4721         * url.c (rewrite_url_maybe): New function.
4722
4723 2001-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
4724
4725         * url.c: Clean up handling of URL schemes.
4726
4727 2001-05-13  Hrvoje Niksic  <hniksic@arsdigita.com>
4728
4729         * url.c: Get rid of `protostrings'.
4730         (skip_proto): Don't use protostrings.
4731         (has_proto): Ditto.
4732
4733 2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
4734
4735         * Makefile.in: Conditionally compile getopt.o.
4736
4737 2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
4738
4739         * md5.h: Renamed to gnu-md5.h.
4740
4741         * md5.c: Renamed to gnu-md5.c.
4742
4743         * http.c: Ditto.
4744
4745         * ftp-opie.c: Use the new macros.
4746
4747         * sysdep.h: Define md5-related macros.
4748
4749         * config.h.in: Define HAVE_SOLARIS_MD5 or HAVE_BUILTIN_MD5
4750         depending on which md5 implementation is used.
4751
4752 2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
4753
4754         * res.c (res_register_specs): Initialize OLD and HP_OLD to appease
4755         the compiler.
4756
4757 2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
4758
4759         * http.c (gethttp): Print the whole response line when printing
4760         headers is requested.
4761
4762 2001-05-12  Hrvoje Niksic  <hniksic@arsdigita.com>
4763
4764         * res.c: New file.  Implement all RES-related code here.
4765
4766 2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
4767
4768         * version.c: Wget 1.7.1 is released.
4769
4770 2001-11-16  Hrvoje Niksic  <hniksic@arsdigita.com>
4771
4772         * headers.c (header_extract_number): Ignore trailing whitespace.
4773
4774 2001-08-24  Ian Abbott  <abbotti@mev.co.uk>
4775
4776         * html-url.c (collect_tags_mapper): Fix bug converting links
4777         with -k option for tags with multiple link attributes by
4778         handling links in the order they appear.
4779
4780 2001-08-15  Ian Abbott  <abbotti@mev.co.uk>
4781
4782         * ftp.c (ftp_loop_internal): Avoid a potential buffer overflow in
4783           the call to the 'rate' function by moving it past the error
4784           checking for the 'getftp' function return value.
4785
4786 2001-11-16  Hrvoje Niksic  <hniksic@arsdigita.com>
4787
4788         * html-parse.c (advance_declaration): Use 0x22 instead of '"' or
4789         '\"'.  Different compilers' assert macros are broken in different
4790         ways.
4791
4792 2001-09-29  Christian Fraenkel  <c.fraenkel@gmx.net>
4793
4794         * http.c (gethttp): print debug output for errors occuring during
4795         the ssl handshake.
4796
4797 2001-11-16  Chris Seawood  <cls@seawood.org>
4798
4799         * init.c: Ditto.
4800
4801         * host.c: Ditto.
4802
4803         * connect.c: Ditto.
4804
4805         * sysdep.h: Support compilation under BEOS.
4806
4807 2001-06-08  Edward J. Sabol  <sabol@alderaan.gsfc.nasa.gov>
4808
4809         * url.c (url_equal): Fix a memory leak when parseurl returns an
4810         error on the second URL. Also, since url_equal is not used at the
4811         moment, do not compile it.
4812
4813         * url.h: Ditto for the prototype of url_equal.
4814
4815 2001-11-16  Hrvoje Niksic  <hniksic@arsdigita.com>
4816
4817         * html-parse.c (map_html_tags): Support XML-style empty tags.
4818
4819 2001-06-26  Hrvoje Niksic  <hniksic@arsdigita.com>
4820
4821         * wget.h (DO_REALLOC_FROM_ALLOCA): Check for do_realloc_newsize in
4822         loop condition because we're no longer setting SIZEVAR here.
4823
4824 2001-06-26  Hrvoje Niksic  <hniksic@arsdigita.com>
4825
4826         * wget.h (DO_REALLOC_FROM_ALLOCA): Set SIZEVAR after the memcpy()
4827         call because it needs the old value.
4828
4829 2001-06-18  Hrvoje Niksic  <hniksic@arsdigita.com>
4830
4831         * cookies.c (ATTR_NAME_CHAR): Allow almost any character to be in
4832         an attribute name.
4833
4834 2001-06-18  Hrvoje Niksic  <hniksic@arsdigita.com>
4835
4836         * url.c (url_filename): Make sure that slashes that sneak in to
4837         u->file via query string get protected.
4838         (file_name_protect_query_string): New function.
4839
4840 2001-06-14  Hrvoje Niksic  <hniksic@arsdigita.com>
4841
4842         * recur.c (recursive_retrieve): Also check undesirable_urls with
4843         canonicalized URL.
4844
4845 2001-06-14  Hrvoje Niksic  <hniksic@arsdigita.com>
4846
4847         * http.c (gethttp): Search `.netrc' with real host, not the proxy
4848         one.
4849
4850 2001-06-14  Hrvoje Niksic  <hniksic@arsdigita.com>
4851
4852         * sysdep.h (MAP_FAILED): Provide MAP_FAILED for systems that don't
4853         define it.
4854
4855 2001-06-09  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
4856
4857         * ftp.h: Provide correct prototype for ftp_parse_ls().
4858
4859 2001-06-04  Hrvoje Niksic  <hniksic@arsdigita.com>
4860
4861         * version.c: Wget 1.7 is released.
4862
4863 2001-06-03  Karl Eichwalder  <ke@suse.de>
4864
4865         * ftp-ls.c (ftp_parse_ls): Fix typo.
4866
4867 2001-05-27  Hrvoje Niksic  <hniksic@arsdigita.com>
4868
4869         * all: Update copyright information.
4870
4871 2001-05-26  Hrvoje Niksic  <hniksic@arsdigita.com>
4872
4873         * http.c (gethttp): Indicate that the continued download failed
4874         for *this* file.
4875
4876 2001-05-26  Hrvoje Niksic  <hniksic@arsdigita.com>
4877
4878         * version.c: Wget 1.7-pre1 is released.
4879
4880 2001-05-26  Hrvoje Niksic  <hniksic@arsdigita.com>
4881
4882         * version.c: Updated version to 1.7-pre1.
4883
4884 2001-05-14  Hrvoje Niksic  <hniksic@arsdigita.com>
4885
4886         * gen_sslfunc.c: Don't include <sys/time.h> directly.
4887
4888 2001-05-14  Hrvoje Niksic  <hniksic@arsdigita.com>
4889
4890         * http.c (gethttp): Use real URL data for cookies, not the proxy
4891         stuff.
4892
4893 2001-05-12  Hrvoje Niksic  <hniksic@arsdigita.com>
4894
4895         * main.c (print_help): Document `--no-http-keep-alive'.
4896
4897         * utils.c (numdigit): Handle negative numbers *correctly*.
4898
4899         * hash.c (make_nocase_string_hash_table): Use term "nocase" rather
4900         than the confusing "unsigned".
4901
4902         * utils.c (string_set_contains): Renamed from string_set_exists.
4903
4904         * hash.c (hash_table_contains): Renamed from hash_table_exists.
4905
4906         * cookies.c: Move case-insensitive hash tables to hash.c.
4907
4908 2001-05-09  Hrvoje Niksic  <hniksic@arsdigita.com>
4909
4910         * http.c (gethttp): Before concluding that the file is already
4911         fully retrieved, make sure that the file existed and `Range' was
4912         actually requested.
4913
4914 2001-05-09  Hrvoje Niksic  <hniksic@arsdigita.com>
4915
4916         * cookies.c (eliminate_dups): New function.
4917         (build_cookies_request): Use it.
4918         (build_cookies_request): Set chain_store_size after reallocating
4919         all_chains.
4920         (check_domain_match): Annotated for easier future debugging.
4921         (store_cookie): In the debug message, print whether the cookie is
4922         permanent.
4923
4924 2001-05-08  Hrvoje Niksic  <hniksic@arsdigita.com>
4925
4926         * http.c (http_loop): Reset no_truncate before deciding whether to
4927         set it.
4928         (gethttp): Further clarify "-c conflicts with existing file" error
4929         message, based on input from Herold Heiko.
4930
4931 2001-05-07  Hrvoje Niksic  <hniksic@arsdigita.com>
4932
4933         * http.c (http_loop): If restval is set, set no_truncate to 1
4934         unconditionally.
4935
4936 2001-05-02  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
4937
4938         * ftp-ls.c (ftp_parse_winnt_ls): Assure months are being correctly
4939         converted. Pointed out by <Stefan.Weil@de.heidelberg.com>.
4940         (ftp_parse_vms_ls): Ditto.
4941
4942 2001-04-30  Hrvoje Niksic  <hniksic@arsdigita.com>
4943
4944         * init.c (cmd_address): Zero SIN before using it; apparently
4945         needed on *BSD.
4946
4947 2001-04-29  Hrvoje Niksic  <hniksic@arsdigita.com>
4948
4949         * ftp.c (ftp_loop_internal): Don't set NO_TRUNCATE if the file is
4950         empty.
4951
4952 2001-04-29  Hrvoje Niksic  <hniksic@arsdigita.com>
4953
4954         * main.c (main): Make `--cookies' respect its argument.
4955
4956 2001-04-28  Hrvoje Niksic  <hniksic@arsdigita.com>
4957
4958         * main.c (main): Removed undocumented option `--email-address'.
4959
4960         * netrc.c: Use the latest read_whole_line.
4961
4962         * init.c (defaults): Set opt.ftp_pass to "-wget@".
4963
4964         * mswindows.c (pwd_cuserid): Ditto.
4965
4966         * utils.c (pwd_cuserid): Removed.
4967
4968         * host.c (ftp_getaddress): Removed.
4969
4970 2001-04-28  Hrvoje Niksic  <hniksic@arsdigita.com>
4971
4972         (http_loop): Allocate space for filename_plus_orig_suffix with
4973         alloca; this is more efficient and removes the need to free it
4974         before each and every return.
4975
4976 2001-04-28  Hrvoje Niksic  <hniksic@arsdigita.com>
4977
4978         * http.c (gethttp): Return RETRUNNEEDED when the retrieval is
4979         unneeded because the file is already there and fully downloaded,
4980         and -c is specified.
4981         (http_loop): Handle RETRUNNEEDED.
4982
4983         * wget.h (uerr_t): New value RETRUNNEEDED.
4984
4985         * http.c (http_loop): Set no_truncate for files that both exist
4986         and are non-empty.
4987         (gethttp): Consider the download finished when restval >= contlen,
4988         not only when restval==contlen.
4989         (gethttp): Handle redirection before giving up due to -c.
4990         (gethttp): Clarify error message which explains that -c will not
4991         truncate the file.
4992         (gethttp): When returning CONTNOTSUPPORTED, don't forget to free
4993         the stuff that needs freeing and release the socket.
4994
4995 2001-04-27  Hrvoje Niksic  <hniksic@arsdigita.com>
4996
4997         * main.c (print_help): Wget booleans accept "off", not "no".
4998
4999 2001-04-27  Hrvoje Niksic  <hniksic@arsdigita.com>
5000
5001         * http.c (http_loop): If allow_cache is zero, always disable
5002         caching, not only when retrieving through proxy.
5003
5004         * init.c: Ditto.
5005
5006         * options.h (struct options): Rename proxy_cache to allow_cache.
5007
5008 2001-04-27  Hrvoje Niksic  <hniksic@arsdigita.com>
5009
5010         * http.c (mktime_from_utc): Improve documentation.
5011         (http_atotm): Put format strings into a separate array.
5012
5013 2001-04-27  Hrvoje Niksic  <hniksic@arsdigita.com>
5014
5015         * safe-ctype.h: Instead of throwing #error when isalpha is
5016         defined, redefine it to something that will throw a compile-time
5017         error if actually *used*.  Do the same for the rest of the
5018         standard C macros.
5019
5020 2001-04-26  Hrvoje Niksic  <hniksic@arsdigita.com>
5021
5022         * url.c (getproxy): Ignore empty proxy vars.
5023
5024 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
5025
5026         * http.c (http_loop): Would load cookies every time.
5027
5028         * cookies.c (load_cookies): Handle cookies whose values contain
5029         embedded spaces.
5030
5031 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
5032
5033         * utils.c: Define each DIGITS_* in one line.
5034
5035 2001-04-25  Roger L. Beeman  <beeman@cisco.com>
5036
5037         * http.c (http_atotm): Initialize t.tm_isdst to 0.
5038         (mktime_from_utc): Prevent mktime() from having discontinuities at
5039         DST transition points.
5040
5041 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
5042
5043         * html-url.c (get_urls_html): Fix documentation.
5044
5045 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
5046
5047         * url.c (UNSAFE_CHAR): Reimplement using a static table.
5048         (url_init): Removed.
5049         (init_unsafe_char_table): Removed.
5050
5051 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
5052
5053         * snprintf.c (dopr): Replace ISDIGIT with '0' <= ch && ch <= '9'.
5054
5055 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
5056
5057         * utils.c: Document timer functions.
5058
5059         * retr.c (rate): Use it.
5060         (rate): Print in GB/s if transfer rate exceeds 1 GB/s.
5061
5062         * utils.c (wtimer_granularity): New function.
5063
5064 2001-04-24  Hrvoje Niksic  <hniksic@arsdigita.com>
5065
5066         * retr.c (show_progress): Ditto.
5067
5068         * ftp.c (getftp): Ditto.
5069
5070         * http.c (gethttp): Use new timer functions.
5071
5072         * utils.c (wtimer_allocate): New function.
5073         (wtimer_new): Ditto.
5074         (wtimer_delete): Ditto.
5075         (wtimer_reset): Ditto.
5076         (wtimer_elapsed): Ditto.
5077
5078 2001-04-24  Hrvoje Niksic  <hniksic@arsdigita.com>
5079
5080         * utils.c (long_to_string): New, faster version.  Favors smaller
5081         numbers; much of the calculation is now done at compile-time.
5082
5083 2001-04-24  Hrvoje Niksic  <hniksic@arsdigita.com>
5084
5085         * utils.c (numdigit): Handle negative numbers.
5086
5087 2001-04-23  Hrvoje Niksic  <hniksic@arsdigita.com>
5088
5089         * retr.c (show_progress): Print the download rate even when the
5090         percentages are not available.
5091
5092 2001-04-21  Hrvoje Niksic  <hniksic@arsdigita.com>
5093
5094         * ftp.c (getftp): Adjust expected_bytes if the length is
5095         authoritative.
5096
5097 2001-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
5098
5099         * url.c: Don't declare `construct'.
5100
5101         * hash.c (grow_hash_table): Speed up rehashing; inline storing of
5102         mappings to new locations.
5103         (hash_table_new): Make resize_threshold a field in the hash table,
5104         so we don't have to recalculate it in each hash_table_put.
5105         (grow_hash_table): Update resize_threshold.
5106         (MAX): Remove unused macro.
5107         (prime_size): Made static.
5108
5109 2001-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
5110
5111         * retr.c (retrieve_url): Call uri_merge, not url_concat.
5112
5113         * html-url.c (collect_tags_mapper): Call uri_merge, not
5114         url_concat.
5115
5116         * url.c (mkstruct): Use encode_string instead of xstrdup followed
5117         by URL_CLEANSE.
5118         (path_simplify_with_kludge): Deleted.
5119         (contains_unsafe): Deleted.
5120         (construct): Renamed to uri_merge_1.
5121         (url_concat): Renamed to uri_merge.
5122
5123 2001-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
5124
5125         * url.c (str_url): Use encode_string instead of the unnecessary
5126         CLEANDUP.
5127         (encode_string_maybe): New function, returns input string if no
5128         encoding is needed.
5129         (encode_string): Call encode_string_maybe to do the dirty work,
5130         xstrdup if no work needed.
5131
5132 2001-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
5133
5134         * wget.h (XDIGIT_TO_xchar): Define here.
5135
5136         * url.c (decode_string): Use new name.
5137         (encode_string): Ditto.
5138
5139         * http.c (XDIGIT_TO_xchar): Rename HEXD2asc to XDIGIT_TO_xchar.
5140         (dump_hash): Use new name.
5141
5142         * wget.h: Rename ASC2HEXD and HEXD2ASC to XCHAR_TO_XDIGIT and
5143         XDIGIT_TO_XCHAR respectively.
5144
5145 2001-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
5146
5147         * init.c: Include cookies.h.
5148
5149         * cookies.h: Declare cookies_cleanup.
5150
5151         * cookies.c (check_domain_match): Remove unused variable.
5152         (save_cookies): Remove extraneous argument from debug statement.
5153
5154         * host.c (same_host): Don't call skip_url.
5155
5156         * url.c (skip_url): Removed.  Removed its calls from various
5157         functions in url.c.
5158
5159 2001-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
5160
5161         * cookies.c (unsigned_string_hash): Use the new code in
5162         string_hash as reference.
5163
5164         * hash.c (hash_table_map): Allow deletion and change of the
5165         element processed by MAPFUN.
5166         (string_hash): Use the function from glib.
5167
5168 2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
5169
5170         * config.h.in: Include #undef stub.
5171
5172         * hash.c (hash_table_remove): Rewrite to actually clear deleted
5173         entries instead of just marking them as deleted.
5174
5175 2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
5176
5177         * hash.h: Declare hash_table_get_pair and hash_table_count.
5178
5179 2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
5180
5181         * cookies.c: Declare http_atotm.
5182
5183 2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
5184
5185         * ftp-ls.c (ftp_parse_unix_ls): Use octal constants for
5186         permissions.  A compiler that doesn't accept octal constants is
5187         seriously broken and shouldn't be used -- octal constants were
5188         present in K&R C!
5189
5190 2001-01-20  Karl Eichwalder  <ke@suse.de>
5191
5192         * Makefile.in: Provide and use DESTDIR according to the Coding
5193         Standards.
5194
5195 2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
5196
5197         * ftp-ls.c (ftp_parse_vms_ls): Make seconds optional in time
5198         specification.
5199
5200 2001-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
5201
5202         * url.c (parseurl): Don't strip trailing slash when u->dir is "/"
5203         because that strips the *leading* slash, thus forcing relative
5204         FTP retrieval.
5205
5206 2001-04-10  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
5207
5208         * ftp.c (getftp): Convert initial FTP directory from VMS to UNIX
5209         notation for VMS servers. 
5210         (ftp_retrieve_dirs): Do not prepend '/' to f->name when
5211         odir is an empty string.
5212
5213 2001-04-10  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
5214
5215         * ftp-ls.c (ftp_parse_winnt_ls): Made the fix for AM/PM more
5216         effective. Suggested by Edward J. Sabol.
5217
5218 2001-04-10  Hrvoje Niksic  <hniksic@arsdigita.com>
5219
5220         * cookies.c (build_cookies_request): Use and sort cookies from all
5221         matching domains.
5222         (build_cookies_request): Check for duplicates before generating
5223         the `Cookies' header.
5224
5225         * main.c (main): Don't load cookies here.
5226         (main): Make loadcookies and savecookies call the correct command.
5227
5228         * http.c (http_loop): Load cookies on-demand.
5229
5230 2001-04-09  Hrvoje Niksic  <hniksic@arsdigita.com>
5231
5232         * http.c (gethttp): Fix indentation of SSL ifdef.
5233
5234 2001-04-09  Hrvoje Niksic  <hniksic@arsdigita.com>
5235
5236         * ftp.c (ftp_retrieve_dirs): Don't forcibly prepend "/" to u->dir;
5237         that hack is no longer necessary.
5238         (getftp): Prepend initial directory to *non*-absolute u->dir's.
5239
5240 2001-04-09  Hrvoje Niksic  <hniksic@arsdigita.com>
5241
5242         * init.c (cmd_file): New function.
5243         (enable_tilde_expansion): New variable.
5244         (run_wgetrc): Use it.
5245         (cmd_file): Use it.
5246
5247 2001-04-08  Hrvoje Niksic  <hniksic@arsdigita.com>
5248
5249         * init.c: Include cookie-related options.
5250
5251         * main.c (main): Include cookie-specific options.
5252         (main): Load cookies before download is finished.
5253         (main): Save cookies when done.
5254
5255         * http.c (gethttp): Process the `Set-Cookie' header.
5256         (gethttp): Include cookies in the response.
5257
5258         * cookies.c: New file.
5259
5260 2001-04-08  Hrvoje Niksic  <hniksic@arsdigita.com>
5261
5262         * utils.c (datetime_str): New function.
5263
5264 2001-04-08  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
5265
5266         * ftp-ls.c (ftp_parse_winnt_ls): The AM/PM change did assume
5267         12:01PM == 00:01, which was obviously wrong. Taken care of this
5268         anomaly.
5269
5270         * ChangeLog: Removed an excess conflict marker. Reformatted the
5271         entry by Philipp Thomas from 2001-03-09.
5272
5273         * ftp-ls.c (ftp_parse_winnt_ls): Ensure that adjusted PM hours lay
5274         between 0 and 23. Elminate unused variable `sec'.
5275
5276 2001-04-08  Hrvoje Niksic  <hniksic@arsdigita.com>
5277
5278         * hash.c (hash_table_count): New function.
5279
5280 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
5281
5282         * utils.c (read_file): Cast MAP_FAILED to char *.  Enforced by
5283         Digital Unix cc.
5284
5285 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
5286
5287         * config.h.in: Oops, do the namespace tweaks only on systems we
5288         know about.
5289
5290 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
5291
5292         * hash.c: Include <string.h>.
5293
5294 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
5295
5296         * config.h.in: Define "compilation environment" options that work
5297         under Linux and Solaris.  To be reviewed on other OS'es.
5298
5299 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
5300
5301         * http.c (gethttp): Prepend literal newline with `\n\'.
5302
5303 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
5304
5305         * sysdep.h: Don't define VERY_LONG_FORMAT.
5306
5307         * utils.c (very_long_to_string): New function.
5308         (legible_very_long): Use it; don't use VERY_LONG_FORMAT.
5309
5310 2001-04-04  Christian Fraenkel  <christian.fraenkel@gmx.net>
5311
5312         * url.c (parse_uname): Would run past the end of the string if the
5313         username was present, but the URL did not contain a slash, e.g.
5314         http://foo:bar@myhost.
5315
5316 2001-04-03  KOJIMA Hajime  <kjm@rins.ryukoku.ac.jp>
5317
5318         * http.c (http_atotm): Use %A instead of %a to match full
5319         weekday.  (On most systems there is no difference.)
5320
5321 2001-04-03  Paul Bludov  <paul@ozero.net>
5322
5323         * mswindows.c (sleep): Use SleepEx() instead of Sleep().
5324         (ws_changetitle): Use alloca() instead of malloc() to avoid memory
5325         leak.
5326         (ws_mypath): Use GetModuleFileName instead of argv[0].
5327         (ws_startup): Use data.wVersion for comparison.
5328
5329 2001-04-02  Hrvoje Niksic  <hniksic@arsdigita.com>
5330
5331         * http.c (http_loop): Ditto.
5332
5333         * ftp.c (ftp_loop_internal): Made the check whether to continue
5334         retrieval `-O'-friendly.
5335
5336 2001-04-02  Hrvoje Niksic  <hniksic@arsdigita.com>
5337
5338         * netrc.c (parse_netrc): Don't trim the line endings explicitly;
5339         they will be handled as whitespace.
5340         (parse_netrc): Correctly handle lines that end with whitespace.
5341
5342 2001-04-02  Hrvoje Niksic  <hniksic@arsdigita.com>
5343
5344         * retr.c (retrieve_url): New variable global_download_count used
5345         to identify first retrieval.
5346
5347         * ftp.c (getftp): Ditto.
5348
5349         * http.c (gethttp): Rewind opt.dfp only on first retrieval.
5350
5351 2001-04-02  Hrvoje Niksic  <hniksic@arsdigita.com>
5352
5353         * init.c (cmd_address): Heap-allocate the address that gets stored
5354         to CLOSURE.  Old code would simply assign an address on the stack.
5355
5356 2001-04-01  Nicolas Lichtmaier <nick@debian.org>
5357
5358         * ftp.c (ftp_get_listing): Propagate error status.
5359         (ftp_retrieve_glob): Use it.
5360         (ftp_loop): Ditto.
5361
5362 2001-04-01  Nicolas Lichtmaier <nick@debian.org>
5363
5364         * main.c (main): Add -C to the string that is the third arg to
5365         getopt_long().
5366
5367 2001-04-01  Hrvoje Niksic  <hniksic@arsdigita.com>
5368
5369         * ftp.c (getftp): Don't start the download from scratch if `-c'
5370         was specified, but the file is already fully downloaded.
5371
5372         * http.c (gethttp): Don't truncate a pre-existing file if `-c' was
5373         specified and the server doesn't support continued download.
5374         (gethttp): Don't start the download from scratch if `-c' was
5375         specified, but the file is already fully downloaded.
5376
5377 2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
5378
5379         (recursive_retrieve): Don't clear the hash tables at this point at
5380         all; it interferes with the normal operation of register_download.
5381
5382 2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
5383
5384         * recur.c (recursive_retrieve): Clear the hash tables only when
5385         they are defined.
5386
5387 2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
5388
5389         * http.c (gethttp): Make sure the socket is closed with
5390         CLOSE_INVALIDATE before we have drained the body.
5391
5392 2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
5393
5394         * retr.c (retrieve_url): Call register_download() for downloaded
5395         files and register_html() for downloaded HTML files.
5396
5397         * recur.c (register_download): New function; register here that a
5398         file has been downloaded, rather than in recursive_retrieve().
5399         (register_html): New function; enqueue the location of HTML files
5400         here rather than in recursive_retrieve().
5401
5402 2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
5403
5404         * main.c (print_help): Use multiple fputs instead of a single ugly
5405         printf().
5406         (main): Consistently assign numbers >128 to options without a
5407         corresponding character.
5408
5409 2001-03-09  Philipp Thomas  <pthomas@suse.de>
5410
5411         * safe-ctype.h: New file. Locale independent ctype.h replacement
5412         taken from libiberty.
5413
5414         * safe-ctype.c: New file. Tables for above.
5415
5416         * Makefile.in: Add safe-ctype$o to OBJS.  Add dependencies for
5417         safe-ctype$o.
5418
5419         * cmpt.c: Remove include of ctype.h. Use ISSPACE instead of
5420         isspace.
5421
5422         * ftp-basic.c: Don't include ctype.h.
5423
5424         * ftp-ls.c: Likewise.
5425
5426         * ftp.c: Likewise.
5427
5428         * headers.c: Likewise.
5429
5430         * host.c: Likewise.
5431
5432         * html-parse.c: Likewise.
5433
5434         * html-url.c: Likewise.
5435
5436         * http.c: Likewise.
5437
5438         * init.c: Likewise.
5439
5440         * main.c: Likewise. Set LC_CTYPE along with LC_MESSAGES.
5441
5442         * netrc.c: Likewise.
5443
5444         * recur.c: Likewise.
5445
5446         * retr.c: Likewise.
5447
5448         * snprintf.c: Replace ctype.h with safe-ctype.h. Use ISDIGIT
5449         instead of isdigit.
5450
5451         * sysdep.h: Remove defines of ctype macros as they aren't needed
5452         for safe-ctype-h.
5453
5454         * url.c: Don't include ctype.h.
5455
5456         * utils.c: Likewise.
5457
5458         * wget.h: Include safe-ctype.h.
5459
5460 2001-03-27  Dan Harkless  <wget@harkless.org>
5461
5462         * Makefile.in: Moved top_builddir out of "User configuration
5463         section" of top Makefile and analogous spot in this one.
5464
5465 2001-03-17  Dan Harkless  <wget@harkless.org>
5466
5467         * Makefile.in: Include @SSL_INCLUDES@ substition in INCLUDES.
5468         Define top_builddir.  Link wget with libtool so the user doesn't
5469         have to supply a bunch of custom environment variables to 
5470         correctly link with the OpenSSL shared libraries.
5471
5472 2001-03-06  Hack Kampbjorn  <hack@hackdata.com>
5473
5474         * http.c (gethttp): skip :port in host header if it is the
5475         DEFAULT_HTTPS_PORT when using SSL.
5476
5477         * url.c: move the #define of DEFAULT_HTTP_PORT, DEFAULT_FTP_PORT
5478         and DEFAULT_HTTPS_PORT to the header file so it can be use in the
5479         rest of the code. 
5480         * url.h: Ditto
5481
5482 2001-03-01  Jonas Jensen  <bones@huleboer.dk>
5483
5484         * retr.c (show_progress): Correctly calculate the number of bytes
5485         in the first line of the download that have been actually
5486         downloaded in this run.
5487
5488 2001-02-23  Dan Harkless  <wget@harkless.org>
5489
5490         * main.c (print_help): --help documentation for -N said it would
5491         re-download files if they had the _same_ timestamp on server.
5492         (print_help): -nr belongs in "FTP options" section of --help
5493         output, not "Recursive retrieval" section.  Alphabetized FTP
5494         options by long option name.
5495
5496 2001-02-16  Dan Harkless  <wget@harkless.org>
5497
5498         * init.c (commands): Hack Kampbjørn <hack@hackdata.com> discovered
5499         that "httpsproxy" had been inserted into commands[] out of
5500         alphabetical order, causing "BUG: unknown command `httpuser'".
5501
5502 2001-02-13  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
5503
5504         * ftp-ls.c (ftp_parse_ls): Added support of ST_MACOS (Unix-like
5505         listing without correct permissons).
5506
5507         * ftp.h (stype): Added ST_MACOS to identify the NetPresenz MacOS
5508         FTP server. 
5509
5510         * ftp.c (ftp_retrieve_list): New mirroring logic: A remote file
5511         shall be donwloaded only when it's newer than the local copy or
5512         when it has the same timeestamp but its size is different. ST_VMS
5513         and ST_MACOS as special cases that lie about file size. 
5514
5515         * ftp-ls.c (ftp_parse_ls): Support for ST_MACOS.
5516
5517         * Makefile.in: Removed dependency on ftpparse library due to unclear
5518         copyright issues and absence of any feedback to our queries. 
5519
5520         * ftp-ls.c: Removed dependency on ftpparse library due to unclear
5521         copyright issues and absence of any feedback to our queries.   
5522         (ftp_parse_ls): Added a warning message when remote server system
5523         does not seem to be suported by wget. 
5524         (ftp_parse_vms_ls): New function for parsing VMS ftp
5525         server listing output.
5526         (clean_line): New function responsible for removing
5527         end-of-line characters from FTP listing texts.
5528
5529         * ftp.c (getftp): Global variables pwd and host_type are now
5530         member of the ccon structure under names ccon.id and ccon.rs. 
5531
5532         * ftp.h (struct ccon): Added formed global variables from ftp.c,
5533         enum stype rs (remote system identification) and char *id (initial
5534         working directory), as suggested by Hrvoje.
5535
5536         * url.c (parse_uname): Added support for passwords containing '@'
5537         characters.
5538         (skip_uname): Ditto.
5539
5540 2001-02-11  Hrvoje Niksic  <hniksic@arsdigita.com>
5541
5542         * ftp.c (ftp_loop): Reset con.
5543
5544 2001-01-06  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
5545
5546         * url.c (parse_uname): Added support for passwords containing '@'
5547         characters.
5548         (skip_uname): Ditto.
5549
5550 2001-02-11  Hack Kampbjørn  <hack@hackdata.com>
5551
5552         * url.c (parseurl): Debug-print u->ftp_type.
5553
5554 2001-02-11  Hrvoje Niksic  <hniksic@arsdigita.com>
5555
5556         * ftp.c (ftp_loop_internal): Disable padding.
5557         (getftp): Ditto.
5558
5559         * http.c (http_loop): Disable padding.
5560
5561         * retr.c (show_progress): Use it to enable padding.
5562
5563         * retr.c (rate): Optional parameter PAD for padding the rate.
5564
5565 2001-02-10  Hrvoje Niksic  <hniksic@arsdigita.com>
5566
5567         * retr.c (show_progress): Make sure that the last output line
5568         includes progress.
5569
5570 2001-02-10  Jonas Jensen  <bones@huleboer.dk>
5571
5572         * retr.c (show_progress): Print the download rate along with the
5573         percentages.
5574         Along with Anders Thorsby <anders@thorsby.dk>.
5575
5576 2001-02-10  Tim Mooney  <mooney@dogbert.cc.ndsu.NoDak.edu>
5577
5578         * ftp.h: Rename enums `command' to `wget_ftp_command' and
5579         `fstatus' to `wget_ftp_status' because old names clash with Tru64
5580         net/if.h.
5581
5582 2001-02-08  Christian Fraenkel <christian.fraenkel@gmx.net>
5583
5584         * gen_sslfunc.c: verify_callback is now static
5585
5586         * gen_sslfunc.c (init_ssl): load certificate if specified
5587
5588         * gen_sslfunc.c (ssl_printerr): new function
5589
5590         * init.c: added new --sslcertfile and --sslcertkey switches
5591
5592         * main.c: ditto
5593
5594         * options.h: ditto
5595
5596         * http.c (gethttp): abort when init_ssl fails
5597
5598 2001-01-23  Herold Heiko  <Heiko.Herold@previnet.it>
5599
5600         * mswindows.h: Include <malloc.h>; it's needed for alloca().
5601
5602 2001-01-10  Dan Harkless  <wget@harkless.org>
5603
5604         * url.c (str_url): Clarified this function's comment header after
5605         Hrvoje answered my question on the list as to when hide != 1.
5606         Also Hrvoje pointed out I need to use xstrdup() on the string literal.
5607
5608 2001-01-06  Hrvoje Niksic  <hniksic@arsdigita.com>
5609
5610         * connect.c (bindport): Declare addrlen as int.  Diagnosed by
5611         Drazen Kacar <dave@arsdigita.com>.
5612         (conaddr): Ditto.
5613
5614 2001-01-09  Dan Harkless  <wget@harkless.org>
5615
5616         * html-url.c: A bunch of fixup of `--page-requisites'-related
5617         comments to reflect Hrvoje's changes to my code when transplanting
5618         it into this new file, to fix spelling mistakes, to clarify, etc.
5619
5620         * url.c (write_backup_file): Clarified a comment.
5621         (str_url): Henrik van Ginhoven pointed out on the list that we
5622         shouldn't give away the number of characters in the password by
5623         replacing each character with a 'x'.  Use "<password>" instead.
5624
5625         * ftp.c (ftp_retrieve_dirs): The bug where recursion into FTP
5626         directories didn't work if logging in put you in a directory other
5627         than "/" is fixed now.  Removed the comment here warning of the bug.
5628
5629         * main.c (print_help): --continue's description was misleading.
5630         We don't "restart", we "resume".  Also, better to say
5631         "partially-downloaded file" rather than just "existing file".
5632
5633 2001-01-06  Dan Harkless  <wget@harkless.org>
5634
5635         * ChangeLog: The '[Not in 1.6 branch.]'s were decided not to be
5636         the best way to go about my aim.  Removed them in favor of:
5637
5638         * ChangeLog-branches/1.6_branch.ChangeLog: New file.
5639
5640 2001-01-04  Hrvoje Niksic  <hniksic@arsdigita.com>
5641
5642         * url.c (replace_attr): New function, to be used by both
5643         TO_COMPLETE and TO_RELATIVE case in convert_links.
5644         (find_fragment): New function for finding URL fragments.
5645         (replace_attr): Better handle the case where the original string
5646         is not quoted.  Use find_fragment.
5647         (convert_links): Use replace_attr().
5648
5649 2000-12-31  Dan Harkless  <wget@harkless.org>
5650
5651         * ChangeLog: Since this flat file doesn't have multiple branches,
5652         looking at the dates would make you think that things went into
5653         1.6 that actually just went into the 1.7-dev branch.  Added "[Not
5654         in 1.6 branch.]" where appropriate to clarify.
5655         
5656 2000-12-30  Dan Harkless  <wget@harkless.org>
5657
5658         * ftp.c, http.c:  Applied Hack Kampbjørn <hack@hackdata.com>'s
5659         patch to deal with h_errno not being defined in netdb.h under Cygwin.
5660
5661 2000-12-18  Csaba Raduly  <csaba.raduly@sophos.com>
5662
5663         * sysdep.h: Include <malloc.h> and <io.h> under Watcom.
5664
5665 2000-12-17  Igor Khristophorov  <igor@atdot.org>
5666
5667         * http.c (check_end): Fix test for '+' or '-'.
5668
5669 2000-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
5670
5671         * url.c (parseurl): Rename inner loop var from i to ind to avoid
5672         clash with the function top-level-declared variable i.
5673         (str_url): Likewise, rename inner-loop i to j.
5674
5675         * recur.c (parse_robots): Don't declare LEN at top of function.
5676         (robots_match): Renamed parameter FORBIDDEN to avoid hiding of
5677         global variable.
5678
5679         * main.c (main): Change erroneous use of bitwise and to logical.
5680
5681         * init.c (cmd_address): Don't heap-allocate `sin'; it can be on
5682         the stack because it will be copied to closure.
5683
5684         Thanks to Csaba Raduly's run of PC-LINT over the sources.
5685
5686 2000-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
5687
5688         * http.c (basic_authentication_encode): Use xmalloc(), not
5689         malloc().  Thanks to Csaba Raduly's run of PC-LINT over the
5690         sources.
5691
5692 2000-12-17  Csaba Raduly  <csaba.raduly@sophos.com>
5693
5694         * sysdep.h: Test for __EMX__ rather than for EMXOS2 for OS/2
5695         compilation.
5696
5697 2000-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
5698
5699         * mswindows.c: Include <errno.h>.
5700
5701         * gen_sslfunc.c: Include <errno.h>.
5702
5703         * ftp-basic.c: Don't attempt to declare errno or h_errno because
5704         they're not used.
5705
5706         * main.c: Include <errno.h> because errno is used.
5707
5708         * ftp.c: Ditto.
5709
5710         * http.c: Include <netdb.h> for h_errno.
5711
5712 2000-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
5713
5714         * html-parse.c (advance_declaration): MSVC assert() chokes on
5715         '\"'.  Use '"' instead.
5716
5717 2000-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
5718
5719         * utils.c (xfree_real): Removed.
5720         (xfree_debug): Just call free().
5721
5722         * wget.h (xfree): Make it an alias for free.
5723
5724 2000-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
5725
5726         * http.c (http_loop): Furthermore, touch output_document only if
5727         it is known to be an existing regular file.
5728
5729 2000-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
5730
5731         * ftp.c (ftp_retrieve_list): Ditto.
5732
5733         * http.c (http_loop): Touch output_document if that is used for
5734         output.
5735
5736 2000-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
5737
5738         * http.c: Include gen_sslfunc.h after including Wget's headers.
5739         (persistent_available_p): Needed coma before `int ssl'.
5740
5741 2000-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
5742
5743         * ftp.c (ftp_loop_internal): Ditto.
5744
5745         * http.c (http_loop): Use it.
5746
5747         * retr.c (sleep_between_retrievals): New function that handles the
5748         logic of opt.wait and opt.waitretry.
5749
5750 2000-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
5751
5752         * rbuf.h: Implement only a single version of RBUF_READCHAR, using
5753         rbuf_read_bufferful when the buffer is depleted.
5754
5755         * rbuf.c (rbuf_read_bufferful): New function.
5756
5757 2000-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
5758
5759         * gen_sslfunc.h: Use ansi2knr style function declarations.
5760
5761         * gen_sslfunc.c: Reformat according to the GNU coding standards.
5762         More should be done.
5763
5764         * http.c (persistent_available_p): Place the cheap SSL test nearer
5765         the top of the function.
5766         (CLOSE_FINISH, CLOSE_INVALIDATE): Define only one version of each.
5767
5768 2000-12-05  Hrvoje Niksic  <hniksic@arsdigita.com>
5769
5770         * url.c (init_unsafe_char_table): Reinstate space as an unsafe
5771         char.
5772
5773 2000-12-03  Christian Fraenkel <christian.fraenkel@gmx.net>
5774
5775         * Makefile.in: added gen_sslfunc object
5776         * config.h.in: added HAVE_SSL define
5777         * connect.c: changed select_fd from static int to int
5778         * connect.h: ditto
5779         * gen_sslfunc.h: New file
5780         * gen_sslfunc.c: ditto
5781         * http.c: added HTTPS fuctionality
5782         * retrc.c: ditto
5783         * url.c: ditto
5784         * init.c: added opt.httpsproxy
5785         * options.h: ditto
5786         * rbuf.h: added alternate rbuf struct
5787         * wget.h: added CONSSLERR
5788         * rbuf.c: ditto
5789
5790         * http.c: Added HTTPS fuctionality.
5791
5792         * retrc.c: Ditto.
5793
5794         * url.c: Ditto.
5795
5796         * init.c: Added opt.httpsproxy.
5797
5798         * options.h: Ditto.
5799
5800         * rbuf.h: Added alternate rbuf struct.
5801
5802         * wget.h: Added CONSSLERR.
5803
5804         * rbuf.c: Ditto.
5805
5806 2000-11-30  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
5807
5808         * ftp-ls.c (ftp_parse_unix_ls): Added second parameter
5809         "ignore_perms" to ignore file and directory permissions for
5810         Windows NT FTP server listings.
5811         (ftp_parse_winnt_ls): New function.
5812         (ftp_parse_ls): Parses UNIX and Windows NT listings
5813         separately. Simple heuristics for distinguishing between UNIX and
5814         MS-DOS-like FTP listing provided by Windows NT FTP service.
5815
5816 2000-11-18  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
5817
5818         * ftpparse.c, ftpparse.h: New files.
5819
5820         * ftp-ls.c (ftp_parse_ls): Use ftp_parse_unix_ls for UNIX servers
5821         only. Use ftp_parse_nonunix_ls otherwise.
5822         (ftp_parse_nonunix_ls): Stub to the ftpparse library handling all
5823         exotic FTP servers.
5824
5825         * ftp.h (stype): New enum, distinguishes UNIX, VMS, and "other"
5826         FTP servers.
5827
5828         * ftp.c: New static wariables host_type, pwd, and pwd_len. 
5829         (getftp): Support for VMS. Support for FTP servers that do not
5830         place you in the root directory after login.
5831         (ftp_retrieve_list): VMS is silent about the real file size, issue
5832         a more appropriate message.
5833         (ftp_get_listing): Pass host_type to ftp_parse_ls.
5834
5835         * ftp-basic.c (ftp_pwd, ftp_syst): New functions.
5836
5837 2000-11-30  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
5838
5839         * ftp-ls.c (ftp_parse_unix_ls): Added second parameter
5840         "ignore_perms" to ignore file and directory permissions for
5841         Windows NT FTP server listings.
5842         (ftp_parse_winnt_ls): New function.
5843         (ftp_parse_ls): Parses UNIX and Windows NT listings
5844         separately. Simple heuristics for distinguishing between UNIX
5845         and MS-DOS-like FTP listing provided by Windows NT FTP service.
5846
5847 2000-11-29  John Summerfield  <summer@OS2.ami.com.au>
5848
5849         * netrc.c (parse_netrc): Get rid of line ending.
5850
5851 2000-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
5852
5853         * ftp.c (ftp_retrieve_list): Undo typo "fix" until resolution by
5854         Dan.
5855
5856 2000-11-24  Karl Eichwalder  <ke@suse.de>
5857
5858         * main.c (print_help): Untabify.
5859
5860 2000-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
5861
5862         * utils.c (xrealloc_debug): Do the unregister/register thing only
5863         if the pointer has actually changed.
5864         (xmalloc_real): Declare `static' in DEBUG_MALLOC builds.
5865         (xfree_real): Ditto.
5866         (xrealloc_real): Ditto.
5867         (xstrdup_real): Ditto.
5868
5869 2000-11-22  Hrvoje Niksic  <hniksic@arsdigita.com>
5870
5871         * ftp.c (getftp): ftp_getaddress() returns a malloc'ed copy of the
5872         string; no need to strdup() it.
5873         (getftp): Make pwd_len a local variable.
5874         (ftp_loop): Free PWD before returning.
5875
5876         * init.c (cleanup): Free opt.ftp_pass only if it's non-NULL.
5877
5878 2000-11-22  Hrvoje Niksic  <hniksic@arsdigita.com>
5879
5880         * all: Use xfree() instead of free.
5881
5882         * utils.c (xfree): New function.
5883
5884 2000-11-21  Hrvoje Niksic  <hniksic@arsdigita.com>
5885
5886         * url.c (convert_links): HTML-quote the converted string.
5887
5888         * utils.c (html_quote_string): Move here from ftp-ls.c
5889         (html_quote_string): Make non-static; declare in utils.h.
5890         (html_quote_string): Convert SP to &#32;.
5891
5892 2000-11-21  Hrvoje Niksic  <hniksic@arsdigita.com>
5893
5894         * ftp.c (getftp): Reformat Jan's code according to GNU coding
5895         standards; remove (debugging?) printf's; use '\0' for the ASCII
5896         zero character.  Use alloca() instead of malloc() for
5897         inter-function temporary allocations.
5898
5899 2000-11-18  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
5900
5901         * ftpparse.c, ftpparse.h: New files.
5902
5903         * ftp-ls.c (ftp_parse_ls): Use ftp_parse_unix_ls for UNIX servers
5904         only. Use ftp_parse_nonunix_ls otherwise.
5905         (ftp_parse_nonunix_ls): Stub to the ftpparse library handling all
5906         exotic FTP servers.
5907
5908         * ftp.h (stype): New enum, distinguishes UNIX, VMS, and "other"
5909         FTP servers.
5910
5911         * ftp.c: New static wariables host_type, pwd, and pwd_len. 
5912         (getftp): Support for VMS. Support for FTP servers that do not
5913         place you in the root directory after login.
5914         (ftp_retrieve_list): VMS is silent about the real file size, issue
5915         a more appropriate message.
5916         (ftp_get_listing): Pass host_type to ftp_parse_ls.
5917
5918         * ftp-basic.c (ftp_pwd, ftp_syst): New functions.
5919
5920 2000-11-21  Hrvoje Niksic  <hniksic@arsdigita.com>
5921
5922         * hash.c (hash_table_put): Don't overwrite deleted mappings.
5923
5924 2000-11-21  Hrvoje Niksic  <hniksic@arsdigita.com>
5925
5926         * hash.c (find_mapping): New function.
5927         (hash_table_get): Use it.
5928         (hash_table_get_pair): Ditto.
5929         (hash_table_exists): Ditto.
5930         (hash_table_remove): Ditto.
5931         (hash_table_remove): Really delete the entry if the mapping
5932         following LOCATION is empty.
5933
5934         * utils.c (string_set_add): Check whether the element has existed
5935         before.
5936
5937         * hash.c (hash_table_get_pair): New function.
5938
5939 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
5940
5941         * http.c (http_process_type): Ignore trailing whitespace; use
5942         strdupdelim().
5943
5944         * recur.c (recursive_retrieve): Use the new `convert' field.
5945         (convert_all_links): Ditto.
5946         (convert_all_links): Don't respect meta_disallow_follow.
5947
5948         * html-url.c (handle_link): Fill out link_relative_p and
5949         link_complete_p.
5950
5951         * url.h (struct _urlpos): Make elements more readable.
5952
5953         * recur.c (recursive_retrieve): Call slist_prepend instead of
5954         slist_append.
5955         (convert_all_links): Call slist_nreverse before iterating through
5956         urls_html.
5957
5958         * utils.c (slist_prepend): New function.
5959         (slist_nreverse): Ditto.
5960
5961 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
5962
5963         * http.c (check_end): Constify.
5964
5965 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
5966
5967         * http.c (http_loop): If username and password are known, try the
5968         `Basic' authentication scheme by default.
5969
5970         * connect.h: Declare test_socket_open.
5971
5972 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
5973
5974         * version.c: Bump version from 1.5.3+dev to 1.7-dev.
5975
5976 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
5977
5978         * http.c (gethttp): Don't use the return value of sprintf().
5979         (gethttp): Inhibit keep-alive if opt.http_keep_alive is 0.
5980
5981 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
5982
5983         * recur.c (recursive_retrieve): Print the "so we don't load"
5984         debugging message only if we really don't load.
5985
5986         * http.c (gethttp): Inhibit keep-alive if proxy is being used.
5987         (gethttp): Don't request keep-alive if keep-alive is inhibited.
5988
5989 2000-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
5990
5991         * http.c (gethttp): Make the HTTP persistent connections more
5992         robust.
5993
5994 2000-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
5995
5996         * retr.c (get_contents): If use_expected, make sure that the
5997         appropriate amount of data is being read.
5998
5999         * http.c (gethttp): Check for both `Keep-Alive: ...' and
6000         `Connection: Keep-Alive'.
6001
6002         * wget.h (DEBUGP): Call debug_logprintf only if opt.debug is
6003         turned on.
6004
6005 2000-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
6006
6007         * http.c (connection_available_p): Use it.
6008
6009         * connect.c (test_socket_open): New function.
6010
6011         * http.c (gethttp): Support persistent connections.  Based on the
6012         ideas, and partly on code, by Sam Horrocks <sam@daemoninc.com>.
6013         (register_persistent): New function.
6014         (connection_available_p): Ditto.
6015         (invalidate_connection): Ditto.
6016
6017 2000-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
6018
6019         * url.c (convert_links): Handle UREL2ABS case.
6020
6021         * recur.c (recursive_retrieve): Instead of the list
6022         urls_downloaded, use hash tables dl_file_url_map and
6023         dl_url_file_map.
6024         (convert_all_links): Use them to retrieve data.
6025
6026         * host.c (clean_hosts): Free the hash tables.
6027
6028         * main.c (private_initialize): Call host_init().
6029
6030         * host.c (store_hostaddress): Use a saner, hash table-based data
6031         model.
6032         (realhost): Ditto.
6033         (host_init): Initialize the hash tables.
6034
6035 2000-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
6036
6037         * utils.c (slist_append): Eviscerate NOSORT.  Hash tables are now
6038         used for what the sorted slists used to be used for.
6039         (slist_contains): Don't rely on the list being sorted.
6040         (slist_append): Simplify the code.
6041
6042         * recur.c (recursive_cleanup): Use free_string_set.
6043
6044         * utils.c (string_set_add, string_set_exists, string_set_free):
6045         New functions for easier freeing of hash tables whose keys are
6046         strdup'ed strings.
6047
6048         * recur.c (recursive_retrieve): Use the hash table functions for
6049         storing undesirable URLs.
6050
6051         * hash.c: New file.
6052
6053 2000-11-17  Hrvoje Niksic  <hniksic@arsdigita.com>
6054
6055         * main.c (private_initialize): Call url_init.
6056         (main): Call private_initialize.
6057
6058         * url.c (unsafe_char_table): New table.
6059         (UNSAFE_CHAR): Use it.
6060         (init_unsafe_char_table): New function.
6061         (url_init): New function; call init_unsafe_char_table.
6062
6063 2000-11-16  Hrvoje Niksic  <hniksic@arsdigita.com>
6064
6065         * mswindows.h: Define snprintf and vsnprintf to _snprintf and
6066         _vsnprintf respectively.
6067
6068 2000-11-15  Hrvoje Niksic  <hniksic@arsdigita.com>
6069
6070         * config.h.in: Do the _XOPEN_SOURCE and _SVID_SOURCE things only
6071         on Linux.
6072
6073 2000-11-15  Hrvoje Niksic  <hniksic@arsdigita.com>
6074
6075         * html-url.c (handle_link): Handle HTML fragment identifiers.
6076
6077         * recur.c (recursive_retrieve): If norobot info is respected and
6078         the file is specified not to be followed by robots, respect that.
6079
6080         * html-url.c (collect_tags_mapper): Handle <meta name=robots
6081         content=X>.  For us the important cases are where X is NONE or
6082         where X contains NOFOLLOW.
6083         (get_urls_html): Propagate that information to the caller.
6084
6085 2000-11-13  Hrvoje Niksic  <hniksic@arsdigita.com>
6086
6087         * url.c (convert_links): Unlink the file we might be reading from
6088         before writing to it.
6089         (convert_links): Use alloca instead of malloc for
6090         filename_plus_orig_suffix.
6091
6092 2000-11-12  Hrvoje Niksic  <hniksic@arsdigita.com>
6093
6094         * host.c (realhost): Add HOST to the list with quality==0 only if
6095         it wasn't already there.
6096         Based on analysis by Lu Guohan <feng@public.bjnet.edu.cn>.
6097
6098 2000-11-10  Hrvoje Niksic  <hniksic@arsdigita.com>
6099
6100         * url.c (get_urls_file): Ditto.
6101         (convert_links): Ditto.
6102
6103         * html-url.c (get_urls_html): Use read_file() instead of
6104         load_file().
6105
6106         * utils.c (read_file): New function, instead of the old
6107         load_file().
6108         (read_file_free): Ditto.
6109
6110         * url.c (findurl): Search only for the supported protocols.
6111         (convert_links): Use fwrite() when writing out a region of
6112         characters.
6113
6114 2000-11-10  Hrvoje Niksic  <hniksic@arsdigita.com>
6115
6116         * ftp-ls.c: Move html_quote_string and ftp_index here.
6117
6118         * url.c: Remove get_urls_html, since that's now in html-url.c.
6119
6120         * html-url.c: New file.
6121
6122         * html-parse.c: New file.
6123
6124 2000-11-10  Hrvoje Niksic  <hniksic@arsdigita.com>
6125
6126         * init.c (run_wgetrc): Don't bother killing off '\r' since
6127         pars_line() skips whitespace at end of line anyway.
6128         (parse_line): Oops, it didn't.  Now it does.
6129
6130         * recur.c (parse_robots): Ditto here.
6131
6132         * ftp-ls.c (ftp_parse_unix_ls): Kill off the newline character
6133         manually because read_whole_line no longer does.
6134
6135         * utils.c (read_whole_line): Rewrite to: a) use less memory
6136         (reallocates to needed size after work), b) work faster -->
6137         fgets() instead of getc, c) be more correct --> doesn't kill the
6138         newline character at the end of line.
6139
6140 2000-11-10  Hrvoje Niksic  <hniksic@arsdigita.com>
6141
6142         * init.c (comind): Initialize MAX to array size - 1.
6143
6144 2000-11-08  Hrvoje Niksic  <hniksic@arsdigita.com>
6145
6146         * url.c (construct): Changed last_slash[-1] to *(last_slash - 1).
6147         Suggested by Edward J. Sabol.
6148
6149 2000-11-08  Hrvoje Niksic  <hniksic@arsdigita.com>
6150
6151         * url.c (construct): Handle the case where host name is not
6152         followed by a slash.
6153
6154 2000-11-06  Hrvoje Niksic  <hniksic@arsdigita.com>
6155
6156         * init.c: commands[] need to be sorted!  ("base" wasn't.)
6157
6158 2000-11-05  Hrvoje Niksic  <hniksic@arsdigita.com>
6159
6160         * wget.h (DO_REALLOC_FROM_ALLOCA): Use braces to disambiguate
6161         `if'.
6162
6163 2000-11-05  Hrvoje Niksic  <hniksic@arsdigita.com>
6164
6165         * url.c (construct): Insert unneeded initialization for the
6166         compiler to shut up.
6167
6168         * config.h.in: Define _XOPEN_SOURCE to 500 to get the prototype
6169         for strptime() (*duh*).  Define _SVID_SOURCE to get S_IFLNK which
6170         otherwise gets lost when you define _XOPEN_SOURCE.
6171
6172         * utils.c (touch): Include the file name in the error message.
6173         From Debian.
6174
6175 2000-11-05  Hrvoje Niksic  <hniksic@arsdigita.com>
6176
6177         * log.c (logvprintf): Use vsnprintf() in all cases.  If necessary,
6178         resize the buffer to fit the formated message.  That way, messages
6179         of arbitrary size may be printed.
6180         (logvprintf): Use saved_append() to optionally log the last
6181         several lines of output.
6182         (logputs): Ditto.
6183         (log_close): Adapt to new data structures.
6184         (log_dump): Ditto.
6185         (redirect_output): Print messages to stderr, not to stdout.
6186
6187         * log.c (saved_append_1): New function.  Replaces the old logging
6188         system ("log all output until 10M characters") with a new, much
6189         more reasonable one ("log last screenful of text").
6190         (saved_append): New function; call saved_append_1.
6191         (free_log_line): New function.
6192
6193 2000-11-05  Hrvoje Niksic  <hniksic@arsdigita.com>
6194
6195         * url.c (construct): Fix comment.
6196         (find_last_char): Document.
6197
6198 2000-11-04  Hrvoje Niksic  <hniksic@arsdigita.com>
6199
6200         * snprintf.c: New file.
6201
6202 2000-11-03  Hrvoje Niksic  <hniksic@arsdigita.com>
6203
6204         * wget.h: If HAVE_STDARG_H is not defined, don't declare argument
6205         types to logprintf() and debug_logprintf().
6206
6207 2000-11-02  Hrvoje Niksic  <hniksic@arsdigita.com>
6208
6209         * ftp.c (ftp_loop_internal): Hide the password from the URL when
6210         printing non-verbose.  Problem spotted by Dariusz Mlynarczyk
6211         <darekm@bydg.lomac.com.pl>.
6212
6213 2000-11-02  Junio Hamano  <junio@twinsun.com>
6214
6215         * ftp-basic.c (ftp_login): Make comparison case-insensitive.
6216
6217 2000-11-02  Tyler Riddle  <triddle@liquidmarket.com>
6218
6219         * http.c (known_authentication_scheme_p): Recognize NTML
6220         authentication.
6221         (create_authorization_line): Treat NTML the same as `Basic'.
6222
6223 2000-11-02  Hrvoje Niksic  <hniksic@arsdigita.com>
6224
6225         * retr.c (retrieve_url): Free url before returning.
6226         (retrieve_url): Free mynewloc before returning.
6227         Spotted by Mark A. Mankins <Mankins_Mark@prc.com>.
6228
6229 2000-11-02  Hrvoje Niksic  <hniksic@arsdigita.com>
6230
6231         * url.c (parseurl): Remove possible reading past the end of
6232         sup_protos[].  Spotted by Mark A. Mankins <Mankins_Mark@prc.com>.
6233
6234 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
6235
6236         * main.c (main): In case of opt.downloaded overflowing, print
6237         <overflow> instead of a totally bogus random value.
6238
6239         * retr.c (retrieve_from_file): Ditto.
6240
6241         * recur.c (recursive_retrieve): Ditto.
6242
6243         * main.c (main): Ditto.
6244
6245         * http.c (http_loop): Ditto.
6246
6247         * ftp.c (ftp_loop_internal): Use downloaded_increase() instead of
6248         `+=', and downloaded_exceeds_quota() instead of the simple-minded
6249         check.
6250         (ftp_retrieve_list): Ditto.
6251         (ftp_retrieve_dirs): Ditto.
6252         (ftp_retrieve_glob): Ditto.
6253
6254         * retr.c (downloaded_increase): New function.  Notice overflows of
6255         opt.downloaded.
6256         (downloaded_exceeds_quota): Make sure that opt.downloaded is not
6257         used if it overflowed.
6258
6259         * options.h (struct options): New member downloaded_overflow.
6260
6261 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
6262
6263         * wget.h (enum): Remove extra space after last enumeration.
6264
6265 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
6266
6267         * main.c (main): Use legible_very_long() for printing
6268         opt.downloaded.
6269
6270         * utils.c (legible_1): New function that operates on strings and
6271         does the brunt of legible()'s work.
6272         (legible): Use legible_1().
6273         (legible_very_long): New function; dump the argument with
6274         sprintf(), and call legible_1().
6275
6276         * options.h (struct options): Use VERY_LONG_TYPE for
6277         opt.downloaded.
6278
6279         * sysdep.h (VERY_LONG_TYPE): Define it to have a 64-bit or greater
6280         type.
6281
6282         * config.h.in: Make sure that SIZEOF_LONG and SIZEOF_LONG_LONG get
6283         defined.  Define HAVE_LONG_LONG if long long is available.
6284
6285 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
6286
6287         * utils.c (long_to_string): Update with a later, better version.
6288
6289 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
6290
6291         * url.c (path_simplify_with_kludge): New function.
6292         (path_simplify_with_kludge): Disable it.  Instead...
6293         (parse_dir): ...make sure that at this point the right thing is
6294         done, i.e. that "query" part of the URL (?...) is always assigned
6295         to the file, never to the directory portion of the path.
6296
6297 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
6298
6299         * retr.c (retrieve_url): Detect redirection cycles.
6300
6301 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
6302
6303         * url.c (get_urls_html): Decode HTML entities using
6304         html_decode_entities.
6305
6306         * html.c (htmlfindurl): Don't count the `#' in numeric entities
6307         (&#NNN;) as an HTML fragemnt.
6308         (html_decode_entities): New function.
6309
6310 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
6311
6312         * html.c (htmlfindurl): Fix recognition of # HTML fragments.
6313
6314 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
6315
6316         * url.c (construct): Rewritten for clarity.  Avoids the
6317         unnecessary copying and stack-allocation the old version
6318         performed.
6319
6320 2000-10-31  Hrvoje Niksic  <hniksic@arsdigita.com>
6321
6322         * ftp.c (getftp): Ditto.
6323
6324         * http.c (gethttp): Rewind the stream when retrying from scratch.
6325
6326 2000-10-31  Hrvoje Niksic  <hniksic@arsdigita.com>
6327
6328         * retr.c (retrieve_url): Use url_concat() to handle relative
6329         redirections instead of /ad hoc/ code.
6330
6331         * url.c (url_concat): New function encapsulating weird
6332         construct().
6333         (urllen_http_hack): New function.
6334         (construct): When constructing new URLs, recognize that `?' does
6335         not form part of the file name in HTTP.
6336
6337 2000-10-13  Adrian Aichner  <adrian@xemacs.org>
6338
6339         * retr.c: Add msec timing support for WINDOWS.
6340         * retr.c (reset_timer): GetSystemTime() on WINDOWS.
6341         * retr.c (elapsed_time): Calculate delta time to msec on WINDOWS.
6342
6343 2000-10-27  Dan Harkless  <wget@harkless.org>
6344
6345         * retr.c (retrieve_url): Manually applied T. Bharath
6346         <TBharath@responsenetworks.com>'s patch to get wget to grok
6347         illegal relative URL redirects.  Reformatted and re-commented it.
6348
6349 2000-10-23  Dan Harkless  <wget@harkless.org>
6350
6351         * connect.c (make_connection and bindport): Manually applied Rob
6352         Mayoff <mayoff@dqd.com>'s 1.5.3 patch to add --bind-address,
6353         changing coding style to GNU's.
6354
6355         * ftp.c (ftp_loop_internal): --delete-after wasn't implemented for
6356         files downloaded via FTP.  Per a comment, .listing files were not
6357         counted towards number of bytes and files downloaded because they're 
6358         deleted anyway.  Well, they aren't under -nr, so count them then.
6359
6360         * init.c: Manually applied Rob Mayoff's 1.5.3 patch to add
6361         --bind-address, alphabetizing, changing coding style to GNU's,
6362         commenting, and renaming cmd_ip_address() to cmd_address() to
6363         imply hostnames also okay.
6364                 
6365         * main.c (main): --delete-after didn't delete the root of the
6366         tree.  Ignore --convert-links if --delete-after was specified.
6367         Manually applied Rob Mayoff's 1.5.3 patch to add --bind-address,
6368         fixing duplicate use of added-since-1.5.3 case value.
6369         (print_help): Clarified that --delete-after deletes local files.
6370         Rob forgot to add a line for his new --bind-address option.
6371                 
6372         * options.h (struct options): Manually applied Rob Mayoff's patch
6373         to add --bind-address (bind_address structure member).
6374                 
6375         * recur.c (recursive_retrieve): Improved comment; added DEBUGP().
6376         Ignore --convert-links if --delete-after was specified.
6377                 
6378         * retr.c (retrieve_from_file): Just added a DEBUGP().
6379                 
6380 2000-10-19  Dan Harkless  <wget@harkless.org>
6381
6382         * ftp.c (ftp_loop_internal): downloaded_file() enumerators changed.
6383         (getftp): Applied Piotr Sulecki <Piotr.Sulecki@ios.krakow.pl>'s
6384         patch to work around FTP servers that incorrectly respond to the
6385         "REST" command with the remaining size rather than the total file size.
6386                 
6387         * http.c (gethttp): Improved a comment and added code to tack on
6388         ".html" to text/html files without that extension when -E specified.
6389         (http_loop): Use new downloaded_file() enumerators and deal with
6390         the case of gethttp() called xrealloc() on u->local.
6391
6392         * init.c (commands): Added new "htmlextension" command.
6393         Also renamed John Daily's cmd_quad() to the more descriptive
6394         cmd_lockable_boolean(), alpha-sorted the CMD_DECLARE()s and
6395         removed duplicate cmd_boolean() declaration.
6396
6397         * main.c (print_help): Added my new -E / --html-extension option.
6398         (main): Undocumented --email-address option previously used -E synonym.
6399         Stole it away for the much more deserving --html-extension's use.
6400
6401         * options.h (struct options): Added html_extension field.
6402
6403         * url.c (convert_links): URL X that we saved as X.html locally due
6404         to -E needs to be backed up as X.orig, not X.html.orig.  Added comments.
6405         (downloaded_file): Now remembers if we added .html extension to a file.
6406
6407         * url.h (downloaded_file_t): Added extra enumerators to support above.
6408         (downloaded_file): Now takes and returns a downloaded_file_t.
6409
6410         * wget.h (unnamed "dt" enum): Added ADDED_HTML_EXTENSION enumerator.
6411         
6412 2000-10-09  Dan Harkless  <wget@harkless.org>
6413
6414         * html.c (htmlfindurl): Added unneeded initialization to quiet warning.
6415                 
6416         * main.c (print_help): Clarified what --retr-symlinks does.
6417         
6418 2000-09-15  John Daily  <jdaily@cyberdude.com>
6419
6420         * init.c: Add support for "always" and "never" values to allow
6421         .wgetrc to override commandline (useful e.g. with .pm files
6422         calling `wget --passive-ftp' when your firewall doesn't allow that).
6423
6424         * ftp.c (getftp): passive_ftp is first option to support always/never.
6425
6426 2000-08-30  Dan Harkless  <wget@harkless.org>
6427
6428         * ftp.c (ftp_retrieve_list): Use new INFINITE_RECURSION #define.
6429         
6430         * html.c: htmlfindurl() now takes final `dash_p_leaf_HTML' parameter.
6431         Wrapped some > 80-column lines.  When -p is specified and we're at a 
6432         leaf node, do not traverse <A>, <AREA>, or <LINK> tags other than 
6433         <LINK REL="stylesheet">.
6434         
6435         * html.h (htmlfindurl): Now takes final `dash_p_leaf_HTML' parameter.
6436         
6437         * init.c: Added new -p / --page-requisites / page_requisites option.
6438
6439         * main.c (print_help): Clarified that -l inf and -l 0 both allow
6440         infinite recursion.  Changed the unhelpful --mirrior description
6441         to simply give the options it's equivalent to.  Added new -p option.
6442         (main): Added some comments; handle new -p / --page-requisites.
6443         
6444         * options.h (struct options): Added new page_requisites field.
6445
6446         * recur.c: Changed "URL-s" to "URLs" and "HTML-s" to "HTMLs".
6447         Calculate and pass down new `dash_p_leaf_HTML' parameter to
6448         get_urls_html().  Use new INFINITE_RECURSION #define.
6449
6450         * retr.c: Changed "URL-s" to "URLs".  get_urls_html() now takes
6451         final `dash_p_leaf_HTML' parameter.
6452
6453         * url.c: get_urls_html() and htmlfindurl() now take final
6454         `dash_p_leaf_HTML' parameter.
6455
6456         * url.h (get_urls_html): Now takes final `dash_p_leaf_HTML' parameter.
6457
6458         * wget.h: Added some comments and new INFINITE_RECURSION #define.
6459         
6460 2000-08-23  Dan Harkless  <wget@harkless.org>
6461
6462         * main.c (print_help): -B / --base was not mentioned.
6463
6464 2000-08-22  Dan Harkless  <wget@harkless.org>
6465
6466         * main.c (print_help): Modified -nc description to mention that it
6467         also prevents the creation of multiple versions of the same file
6468         with ".<number>" suffixes.
6469
6470 2000-07-14  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
6471
6472         * retr.c (retrieve_url): Consistently strdup opt.referer when
6473         setting u->referer.
6474
6475 2000-06-09  Dan Harkless  <wget@harkless.org>
6476
6477         * main.c (print_help): --help output for --waitretry was over 80 cols.
6478
6479 2000-06-09  Hrvoje Niksic  <hniksic@iskon.hr>
6480
6481         * url.c (encode_string): Fix comment.
6482         Suggested by Herold Heiko <Heiko.Herold@previnet.it>.
6483
6484 2000-06-01  Const Kaplinsky  <const@ce.cctpu.edu.ru>
6485
6486         * ftp.c (ftp_retrieve_list): Change permissions only on plain
6487         files.
6488
6489 2000-06-01  Hrvoje Niksic  <hniksic@iskon.hr>
6490
6491         * url.c (str_url): Print the port number only if it's different
6492         from the default port number for that protocol.
6493
6494 2000-05-22  Dan Harkless  <wget@harkless.org>
6495
6496         * main.c (print_help): Added --help line for Damir Dzeko
6497         <ddzeko@zesoi.fer.hr>'s until-now-undocumented --referer option.
6498         Removed comments that --referer and --waitretry were undocumented.
6499         Changed "`.wgetrc' command" to "`.wgetrc'-style command" on --help
6500         line for --execute.
6501
6502 2000-05-18  Hrvoje Niksic  <hniksic@iskon.hr>
6503
6504         * ftp.c (getftp): Ditto.
6505
6506         * http.c (gethttp): Check for return value of fclose/fflush.
6507
6508 2000-04-12  Hrvoje Niksic  <hniksic@iskon.hr>
6509
6510         * host.c (store_hostaddress): Instead of shifting ADDR, start
6511         copying from the correct address.
6512
6513 2000-04-12  Hrvoje Niksic  <hniksic@iskon.hr>
6514
6515         * http.c (gethttp): Don't free REQUEST -- it was allocated with
6516         alloca().
6517         Pointed out by Gisle Vanem <gvanem@eunet.no>.
6518
6519 2000-04-04  Dan Harkless  <wget@harkless.org>
6520
6521         * host.c (store_hostaddress): R. K. Owen's patch introduces a
6522         "left shift count >= width of type" warning on 32-bit
6523         architectures.  Got rid of it by tricking the compiler w/ a variable.
6524         
6525         * url.c (UNSAFE_CHAR): The macro didn't include all the illegal
6526         characters per RFC1738, namely everything above '~'.  It also
6527         generated a warning on OSes where char =~ unsigned char.  Fixed.
6528         
6529 1998-10-17  Hrvoje Niksic  <hniksic@srce.hr>
6530
6531         * http.c (http_process_type): Removed needless strdup(), a memory
6532         leak.
6533
6534 1998-09-25  Hrvoje Niksic  <hniksic@srce.hr>
6535
6536         * html.c (htmlfindurl): Set PH to the first occurrence of `#'.
6537
6538 1998-09-25  Simon Munton  <simonm@m4data.co.uk>
6539
6540         * init.c (wgetrc_file_name): Don't free HOME under Windows.
6541
6542 1998-12-01  "R. K. Owen"  <rkowen@Nersc.GOV>
6543
6544         * host.c (store_hostaddress): Fix for big endian 64-bit machines.
6545
6546 1998-12-01  Hrvoje Niksic  <hniksic@srce.hr>
6547
6548         * url.c (UNSAFE_CHAR): New macro.
6549         (contains_unsafe): Use it.
6550         (encode_string): Ditto.
6551
6552 1998-12-01  Hrvoje Niksic  <hniksic@srce.hr>
6553
6554         * main.c (i18n_initialize): Use LC_MESSAGES only if available.
6555
6556 2000-03-31  Hrvoje Niksic  <hniksic@srce.hr>
6557
6558         * Use TOUPPER/TOLOWER.
6559
6560 1998-12-22  Alexander V. Lukyanov  <lav@yars.free.net>
6561
6562         * ftp-opie.c (btoe): Zero-terminate OSTORE.
6563
6564 2000-03-21  Hrvoje Niksic  <hniksic@iskon.hr>
6565
6566         * wget.h (DO_REALLOC_FROM_ALLOCA): Ditto.
6567
6568         * sysdep.h (ISALNUM): New macro.
6569         (TOLOWER): Ditto.
6570         (TOUPPER): Ditto.
6571
6572 2000-03-10  Dan Harkless  <wget@harkless.org>
6573
6574         * html.c (idmatch): Implemented checking of my new --follow-tags
6575         and --ignore-tags options.
6576         
6577         * init.c (commands): Added comment reminding people adding new
6578         entries doing allocation to add corresponding freeing in cleanup().
6579         (commands): Added new followtags and ignoretags commands.
6580         (cleanup): Free storage for new followtags and ignoretags.
6581         
6582         * main.c: Use of "comma-separated list" was random -- normalized
6583         it.  Did some alphabetization.  Added comments pointing out
6584         "Options without arguments" and "Options accepting an argument"
6585         sections of long_options[].  Added new options --follow-tags and
6586         -G / --ignore-tags.  Added comment that Damir's --referer is
6587         currently undocumented.  Added comment that Heiko's --waitretry is
6588         partially undocumented (mentioned in --help but not in
6589         wget.texi).  Moved improperly sorted 24, 129, and 'G' cases.
6590         
6591         * options.h (struct options): Added new fields follow_tags and
6592         ignore_tags. 
6593         
6594         * wget.h: Added "#define EQ 0" so we can say "strcmp(a, b) == EQ".
6595         
6596 2000-03-02  Dan Harkless  <wget@harkless.org>
6597
6598         * ftp.c (ftp_loop_internal): Heiko introduced "suggest explicit
6599         braces to avoid ambiguous `else'" warnings.  Eliminated them.
6600         
6601         * http.c (gethttp): Dan Berger's query string patch is totally
6602         bogus.  If you have two different URLs, gen_page.cgi?page1 and
6603         get_page.cgi?page2, they'll both be saved as get_page.cgi and the
6604         second will overwrite the first.  Also, parameters to implicit
6605         CGIs, like "http://www.host.com/db/?2000-03-02" cause the URLs to
6606         be printed with trailing garbage characters, and could seg fault.
6607         Backing out the patch, which Dan B. informed me by email was just
6608         a kludge to download StarOffice from Sun made necessary due to
6609         wget's unconditional escaping of certain characters (room for an
6610         option there?).
6611         (http_loop): Heiko introduced "suggest explicit braces to avoid
6612         ambiguous `else'" warnings.  Eliminated them.
6613         
6614         * main.c: Heiko's --wait / --waitretry backwards compatibility
6615         code looks to have been totally untested -- automatic variable
6616         'wr' was used without being initialized, and a long int was passed
6617         into setval()'s char* val parameter.
6618         
6619         * recur.c (parse_robots): Applied Edward J. Sabol
6620         <sabol@alderaan.gsfc.nasa.gov>'s patch for Guan Yang's reported
6621         problem with "User-agent:<space>*<space>" lines in robots.txt.
6622         
6623         * url.c (parseurl, str_url): Removing Dan Berger's code (see
6624         http.c above for explanation).
6625         
6626 1999-08-25  Heiko Herold  <Heiko.Herold@previnet.it>
6627
6628         * ftp.c: Respect new option waitretry.
6629
6630 2000-01-30  Damir Dzeko  <ddzeko@zesoi.fer.hr>
6631
6632         * http.c (gethttp): Send custom Referer, if required.
6633
6634 1999-09-24  Charles G Waldman  <cgw@fnal.gov>
6635
6636         * netrc.c (parse_netrc): Allow passwords to contain spaces.
6637
6638         * netrc.c (parse_netrc): New function.
6639
6640 1999-09-17  Dan Berger  <dberger@ix.netcom.com>
6641
6642         * http.c (gethttp): Send it.
6643
6644         * url.c (parseurl): Detect query string in HTTP URL-s.
6645         (str_url): Print it.
6646
6647 2000-03-02  HIROSE Masaaki  <hirose31@t3.rim.or.jp>
6648
6649         * html.c (html_allow): Add <link href=...> and <script src=...>.
6650
6651 1999-05-02  andrew deryabin  <djsf@softhome.net>
6652
6653         * http.c (gethttp): Specify port in `Host' header only if it's
6654         different from 80.
6655
6656 1998-11-03  Edward J. Sabol  <sabol@alderaan.gsfc.nasa.gov>
6657
6658         * recur.c (recursive_retrieve): If a finite maximum depth is
6659         specified, and we're are already at that depth, don't download the
6660         HTML file for parsing.
6661
6662 2000-03-01  Dan Harkless  <wget@harkless.org>
6663
6664         * ftp.c (ftp_loop_internal): Call new downloaded_file() function,
6665         even though we don't do conversion on HTML files retrieved via
6666         FTP, so _current_ usage of downloaded_file() makes this call unneeded. 
6667         (ftp_retrieve_list): Added a comment saying where we need to
6668         stat() a .orig file if FTP'd HTML file conversion is ever implemented.
6669         (ftp_retrieve_list): "Local file '%s' is more recent," is sometimes
6670         a lie -- reworded as "Server file no newer than local file '%s' --".
6671         
6672         * http.c (http_loop): Fixed a typo and clarified a comment.
6673         (http_loop): When -K and -N are specified together, compare size
6674         and timestamp of server file X against local file X.orig (if
6675         extant) rather than converted local file X.
6676         (http_loop): "Local file '%s' is more recent," is sometimes a lie
6677         -- reworded as "Server file no newer than local file '%s' --".
6678         (http_loop): Call new downloaded_file() function to prevent
6679         wrongful overwriting of .orig file when -N is specified.
6680         
6681         * url.c (convert_links): When -K specified, only rename X to
6682         X.orig if downloaded_file() returns TRUE.  Otherwise when we skip
6683         file X due to -N, we clobber an X.orig from a previous invocation.
6684         (convert_links): Call the failsafe xstrdup(), not the real strdup().
6685         (convert_links): Added a note asking anyone who understands how
6686         multiple URLs can correspond to a single file to comment it.
6687         (downloaded_file): Added this new function.
6688         
6689         * url.h (downloaded_file): Added prototype for this new function
6690         as well as its downloaded_file_t enum type.
6691
6692         * wget.h (boolean): Added this new typedef and TRUE and FALSE #defines.
6693
6694 2000-02-29  Dan Harkless  <wget@harkless.org>
6695
6696         * version.c: Upped version to developer-only "1.5.3+dev".
6697
6698 2000-02-18  Dan Harkless  <wget@harkless.org>
6699
6700         * init.c (backup_converted): Added this new option.
6701
6702         * main.c (-K / --backup-converted): Added this new option.
6703
6704         * options.h (backup_converted): Added this new option.
6705
6706         * url.c (convert_links): When backup_converted is specified, save
6707         file X as X.orig before converting.
6708
6709         * url.h (urlpos): Fixed typo -- said "Rekative" instead of "Relative".
6710
6711 1998-09-21  Hrvoje Niksic  <hniksic@srce.hr>
6712
6713         * version.c: Wget 1.5.3 is released.
6714
6715 1998-09-21  Hrvoje Niksic  <hniksic@srce.hr>
6716
6717         * host.c (ftp_getaddress): Don't warn when reverse-lookup of local 
6718         address doesn't yield FQDN.
6719
6720 1998-09-21  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
6721
6722         * cmpt.c (strerror): Fix declaration of sys_errlist.
6723
6724 1998-09-11  Hrvoje Niksic  <hniksic@srce.hr>
6725
6726         * main.c (main): Don't use an array subscript as the first
6727         argument to STRDUP_ALLOCA.
6728         From Kaveh R. Ghazi.
6729
6730 1998-09-11  Szakacsits Szabolcs  <szaka@sienet.hu>
6731
6732         * html.c (htmlfindurl): Download table background.
6733
6734 1998-09-11  Hans Grobler  <grobh@conde.ee.sun.ac.za>
6735
6736         * init.c (parse_line): Would free *com before allocating it.
6737         (parse_line): Would free com instead of *com.
6738
6739 1998-09-10  Howard Gayle  <howard@fjst.com>
6740
6741         * url.c (get_urls_html): Would drop the last character of the
6742         link.
6743
6744 1998-09-10  Hrvoje Niksic  <hniksic@srce.hr>
6745
6746         * http.c (http_loop): Don't print status code if quiet.
6747
6748 1998-09-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6749
6750         * log.c: Use <stdarg.h> only when __STDC__.
6751
6752 1998-09-10  Adam D. Moss  <adam@foxbox.org>
6753
6754         * html.c (htmlfindurl): Download <layer src=...>.
6755
6756 1998-09-10  Howard Gayle  <howard@fjst.com>
6757
6758         * ftp.c (ftp_retrieve_list): Don't update the time stamp of a file 
6759         not retrieved.
6760
6761 1998-06-27  Hrvoje Niksic  <hniksic@srce.hr>
6762
6763         * utils.c: Include <libc.h> on NeXT.
6764
6765 1998-06-26  Heinz Salzmann  <heinz.salzmann@intermetall.de>
6766
6767         * url.c (get_urls_html): Fix calculation of URL position.
6768
6769 1998-06-23  Hrvoje Niksic  <hniksic@srce.hr>
6770
6771         * version.c: Wget 1.5.2 is released.
6772
6773 1998-06-23  Dave Love  <d.love@dl.ac.uk>
6774
6775         * ftp.c, init.c, netrc.c: Include errno.h.
6776
6777         * http.c: Include errno.h and time header.
6778
6779         * Makefile.in (exext): Define.
6780         (install.bin, uninstall.bin): Use it.
6781
6782 1998-06-21  Hrvoje Niksic  <hniksic@srce.hr>
6783
6784         * http.c (http_loop): Don't attempt to compare local and remote
6785         sizes if the remote size is unknown.
6786
6787 1998-06-16  Hrvoje Niksic  <hniksic@srce.hr>
6788
6789         * url.c (get_urls_html): Use malloc() instead of alloca in the
6790         loop.
6791
6792 1998-06-13  Hrvoje Niksic  <hniksic@srce.hr>
6793
6794         * version.c: Wget 1.5.2-b4 is released.
6795
6796 1998-06-13  Hrvoje Niksic  <hniksic@srce.hr>
6797
6798         * url.c (get_urls_html): Ignore spaces before and after the URI.
6799
6800 1998-06-08  Wanderlei Antonio Cavassin  <cavassin@conectiva.com.br>
6801
6802         * ftp.c (getftp): Translate `done'.
6803
6804 1998-06-06  Hrvoje Niksic  <hniksic@srce.hr>
6805
6806         * version.c: Wget 1.5.2-b3 is released.
6807
6808 1998-06-06  Alexander Kourakos  <awk@bnt.com>
6809
6810         * init.c (cleanup): Close dfp, don't free it.
6811
6812 1998-06-06  Hrvoje Niksic  <hniksic@srce.hr>
6813
6814         * utils.c (make_directory): Twiddle.
6815
6816         * config.h.in: Added template for access().
6817
6818 1998-06-05  Mathieu Guillaume  <mat@cythere.com>
6819
6820         * html.c (htmlfindurl): Download <input src=...>
6821
6822 1998-06-03  Hrvoje Niksic  <hniksic@srce.hr>
6823
6824         * utils.c (file_exists_p): Use access() with two arguments.
6825
6826 1998-05-27  Martin Kraemer  <Martin.Kraemer@mch.sni.de>
6827
6828         * netrc.c (parse_netrc): Correct logic.
6829
6830 1998-05-27  Hrvoje Niksic  <hniksic@srce.hr>
6831
6832         * ftp.c (getftp): Added `break'; suggested by Lin Zhe Min
6833         <ljm@ljm.wownet.net>.
6834
6835 1998-05-24  Hrvoje Niksic  <hniksic@srce.hr>
6836
6837         * version.c: Wget 1.5.2-b2 is released.
6838
6839 1998-05-18  Juan Jose Rodriguez  <jcnsoft@jal1.telmex.net.mx>
6840
6841         * mswindows.h: Don't translate mkdir to _mkdir under Borland.
6842
6843 1998-05-17  Hrvoje Niksic  <hniksic@srce.hr>
6844
6845         * retr.c (elapsed_time): Return correct value when
6846         HAVE_GETTIMEOFDAY is undefined.
6847
6848 1998-05-13  Hrvoje Niksic  <hniksic@srce.hr>
6849
6850         * version.c: Wget 1.5.2-b1 is released.
6851
6852 1998-05-08  Hrvoje Niksic  <hniksic@srce.hr>
6853
6854         * getopt.c (_getopt_internal): Use exec_name instead of argv[0].
6855         (_getopt_internal): Don't translate `#if 0'-ed strings.
6856
6857 1998-05-06  Douglas E. Wegscheid  <wegscd@whirlpool.com>
6858
6859         * mswindows.c (ws_handler): Use fork_to_background().
6860
6861 1998-05-05  Hrvoje Niksic  <hniksic@srce.hr>
6862
6863         * version.c: Wget 1.5.1 is released.
6864
6865 1998-05-05  Hrvoje Niksic  <hniksic@srce.hr>
6866
6867         * http.c (parse_http_status_line): Avoid `minor' and `major'
6868         names.
6869
6870 1998-05-02  Hrvoje Niksic  <hniksic@srce.hr>
6871
6872         * utils.c (mkdirhier): Renamed to make_directory.
6873
6874 1998-05-01  Hrvoje Niksic  <hniksic@srce.hr>
6875
6876         * mswindows.c (fork_to_background): Define under Windows.
6877
6878         * utils.c (fork_to_background): New function.
6879
6880         * html.c (htmlfindurl): Removed rerdundant casts.
6881
6882 1998-05-01  Douglas E. Wegscheid  <wegscd@whirlpool.com>
6883
6884         * mswindows.c (ws_mypath): Cache the path.
6885
6886 1998-04-30  Douglas E. Wegscheid  <wegscd@whirlpool.com>
6887
6888         * ftp.h: Prefix enum ftype members with FT_.
6889
6890         * ftp-ls.c, ftp.c, html.h: Adjust accordingly.
6891
6892         * mswindows.h: Use stat under Borland, _stat under MSVC.
6893
6894 1998-04-28  Hrvoje Niksic  <hniksic@srce.hr>
6895
6896         * http.c (known_authentication_scheme_p): New function.
6897         (gethttp): Handle authorization more correctly.
6898
6899         * ftp-basic.h: Removed.
6900
6901         * cmpt.h: Removed.
6902
6903         * utils.c: Include <unistd.h> before <pwd.h>; needed under SunOS
6904         with gcc 2.8.
6905         (numdigit): Use `while' loop.
6906
6907         * http.c (create_authorization_line): Detect authentication
6908         schemes case-insensitively.
6909
6910         * http.c (extract_header_attr): Use strdupdelim().
6911         (digest_authentication_encode): Move declaration of local
6912         variables to smaller scope.
6913         (digest_authentication_encode): Reset REALM, OPAQUE and NONCE.
6914         (create_authorization_line): Detect authentication schemes
6915         case-insensitively.
6916
6917         * utils.c (touch): Constify.
6918
6919         * http.c (gethttp): Report a nicer error when no data is received.
6920
6921         * rbuf.h (RBUF_READCHAR): Ditto.
6922
6923         * ftp-basic.c (ftp_response): Use sizeof.
6924
6925 1998-04-27  Hrvoje Niksic  <hniksic@srce.hr>
6926
6927         * retr.c (print_percentage): EXPECTED is long, not int.
6928         (print_percentage): Use floating-point arithmetic to avoid
6929         overflow with large files' sizes multiplied with 100.
6930
6931 1998-04-27  Gregor Hoffleit  <flight@mathi.uni-heidelberg.de>
6932
6933         * config.h.in: Added pid_t stub.
6934
6935         * sysdep.h (S_ISREG): Moved here from mswindows.h (NeXT doesn't
6936         define it).
6937
6938 1998-04-20  Hrvoje Niksic  <hniksic@srce.hr>
6939
6940         * version.c: Wget 1.5.0 is released.
6941
6942 1998-04-18  Hrvoje Niksic  <hniksic@srce.hr>
6943
6944         * url.c (str_url): Ditto.
6945
6946         * ftp-basic.c (ftp_rest): Use new name.
6947
6948         * utils.c (long_to_string): Renamed from prnum().
6949
6950 1998-04-16  Hrvoje Niksic  <hniksic@srce.hr>
6951
6952         * version.c: Wget 1.5-b17 is released.
6953
6954 1998-04-08  Hrvoje Niksic  <hniksic@srce.hr>
6955
6956         * headers.c (header_get): New argument FLAGS.
6957
6958         * http.c (gethttp): If request is malformed, bail out of the
6959         header loop.
6960         (gethttp): Check for empty header *after* the status line checks.
6961         (gethttp): Disallow continuations for status line.
6962
6963 1998-04-08  Hrvoje Niksic  <hniksic@srce.hr>
6964
6965         * version.c: Wget 1.5-b16 is released.
6966
6967 1998-04-08  Hrvoje Niksic  <hniksic@srce.hr>
6968
6969         * init.c (commands): Renamed `always_rest' to `continue'.
6970
6971 1998-04-05  Hrvoje Niksic  <hniksic@srce.hr>
6972
6973         * all: Use it.
6974
6975         * log.c (logputs): New argument.
6976         (logvprintf): Ditto.
6977         (logprintf): Ditto.
6978
6979 1998-04-04  Hrvoje Niksic  <hniksic@srce.hr>
6980
6981         * http.c (http_atotm): Update comment.
6982
6983         * main.c (i18n_initialize): Set LC_MESSAGES, not LC_ALL.
6984
6985         * wget.h: Renamed ENABLED_NLS to HAVE_NLS.
6986
6987         * main.c (i18n_initialize): New function.
6988         (main): Use it.
6989
6990         * log.c: Include <unistd.h>.
6991
6992         * retr.c (show_progress): Cast alloca to char *.
6993
6994 1998-04-04  Hrvoje Niksic  <hniksic@srce.hr>
6995
6996         * version.c: Wget 1.5-b15 is released.
6997
6998 1998-04-04  Hrvoje Niksic  <hniksic@srce.hr>
6999
7000         * utils.h: Declare file_non_directory_p().
7001
7002 1998-04-03  Hrvoje Niksic  <hniksic@srce.hr>
7003
7004         * main.c (main): It's `tries', not `numtries' now.
7005
7006 1998-04-01  Hrvoje Niksic  <hniksic@srce.hr>
7007
7008         * init.c (getperms): Removed.
7009
7010 1998-04-01  Tim Charron  <tcharron@interlog.com>
7011
7012         * log.c (logvprintf): Don't use ARGS twice.
7013
7014 1998-04-01  John  <john@futuresguide.com>
7015
7016         * mswindows.c: Cleaned up.
7017
7018 1998-04-01  Hrvoje Niksic  <hniksic@srce.hr>
7019
7020         * version.c: Wget 1.5-b14 is released.
7021
7022 1998-04-01  Hrvoje Niksic  <hniksic@srce.hr>
7023
7024         * ftp-opie.c (STRLEN4): New macro.
7025         (btoe): Use it.
7026
7027 1998-04-01  Junio Hamano  <junio@twinsun.com>
7028
7029         * http.c: Document all the Digest functions.
7030
7031 1998-04-01  Hrvoje Niksic  <hniksic@srce.hr>
7032
7033         * utils.c (file_non_directory_p): Renamed from isfile().
7034
7035         * mswindows.h (S_ISREG): New macro, suggested by Tim Adam.
7036
7037 1998-03-31  Hrvoje Niksic  <hniksic@srce.hr>
7038
7039         * utils.c (mkdirhier): Use 0777 instead of opt.dirmode.
7040
7041         * init.c (cmd_spec_dotstyle): Use 48 dots per line for binary
7042         style.
7043         (cmd_permissions): Removed.
7044
7045         * config.h.in: Add template for WORDS_BIGENDIAN.
7046
7047 1998-03-31  Junio Hamano  <junio@twinsun.com>
7048
7049         * http.c (HEXD2asc): New macro.
7050         (dump_hash): Use it.
7051
7052 1998-03-31  Hrvoje Niksic  <hniksic@srce.hr>
7053
7054         * version.c: Wget 1.5-b13 is released.
7055
7056 1998-03-31  Hrvoje Niksic  <hniksic@srce.hr>
7057
7058         * main.c (main): Don't try to use `com'.
7059
7060 1998-03-30  Hrvoje Niksic  <hniksic@srce.hr>
7061
7062         * init.c (cmd_permissions): New function.
7063
7064 1998-03-30  Hrvoje Niksic  <hniksic@srce.hr>
7065
7066         * version.c: Wget 1.5-b12 is released.
7067
7068 1998-03-30  Hrvoje Niksic  <hniksic@srce.hr>
7069
7070         * init.c (commands): Renamed `numtries' to `tries'.
7071         (cmd_spec_debug): Removed.
7072         (home_dir): Under Windows, return `C:\' if HOME is undefined.
7073
7074 1998-03-29  Hrvoje Niksic  <hniksic@srce.hr>
7075
7076         * config.h.in: Define _XOPEN_SOURCE.
7077
7078         * init.c (check_user_specified_header): New function.
7079         (cmd_spec_header): Use it.
7080         (cmd_spec_useragent): New function.
7081
7082 1998-03-29  Hrvoje Niksic  <hniksic@srce.hr>
7083
7084         * version.c: Wget 1.5-b11 is released.
7085
7086 1998-03-28  Hrvoje Niksic  <hniksic@srce.hr>
7087
7088         * wget.h: Include <libintl.h> only if NLS is enabled.
7089
7090 1998-03-26  Hrvoje Niksic  <hniksic@srce.hr>
7091
7092         * options.h (struct options): Made `wait' a long.
7093         (struct options): Ditto for `timeout'.
7094
7095 1998-03-19  Hrvoje Niksic  <hniksic@srce.hr>
7096
7097         * utils.c (exists): Renamed to file_exists_p.
7098         (file_exists_p): Use access() if available.
7099
7100 1998-03-17  Hrvoje Niksic  <hniksic@srce.hr>
7101
7102         * utils.c (memfatal): Set save_log_p to 0 to avoid potential
7103         infloop.
7104
7105         * log.c: do_logging -> save_log_p.
7106
7107         * config.h.in: Added template for HAVE_VSNPRINTF.
7108
7109 1998-03-16  Hrvoje Niksic  <hniksic@srce.hr>
7110
7111         * init.c: Ditto.
7112
7113         * http.c: Protect declaration against non-ANSI compiler.
7114
7115         * log.c (logvprintf): Use vsnprintf() if available.
7116
7117         * getopt.c (main): Don't translate test stuff.
7118
7119 1998-03-16  Hrvoje Niksic  <hniksic@srce.hr>
7120
7121         * version.c: Wget 1.5-b10 is released.
7122
7123 1998-03-11  Hrvoje Niksic  <hniksic@srce.hr>
7124
7125         * ftp.c (getftp): Don't translate "CWD %s".
7126
7127         * wget.h (GCC_FORMAT_ATTR): Renamed from FORMAT_ATTR.
7128
7129 1998-03-07  Hrvoje Niksic  <hniksic@srce.hr>
7130
7131         * ftp-opie.c (btoe): Use memcpy() instead of strncat().
7132
7133         * log.c (logputs): New function.
7134         (logvprintf): Renamed from vlogmsg; use logputs().
7135
7136         * retr.c (show_progress): Print `[100%]' when the retrieval is
7137         finished.
7138
7139         * init.c (run_wgetrc): Use FILE, not PATH.
7140         (wgetrc_file_name): Ditto.
7141
7142 1998-03-07  Tim Adam  <tma@osa.com.au>
7143
7144         * recur.c (parse_robots): Correctly reset `entries' on empty
7145         disallow.
7146
7147 1998-03-07  Hrvoje Niksic  <hniksic@srce.hr>
7148
7149         * init.c (cmd_spec_debug): Use cmd_boolean().
7150
7151 1998-02-23  Hrvoje Niksic  <hniksic@srce.hr>
7152
7153         * http.c (gethttp): Create proxy-authorization correctly.
7154
7155 1998-02-22  Hrvoje Niksic  <hniksic@srce.hr>
7156
7157         * md5.c: Ditto.
7158
7159         * getopt.c: Use ANSI function definitions.
7160
7161         * ftp-opie.c: New file.
7162
7163         * options.h: Don't redefine EXTERN.
7164
7165         * init.c: Sort it correctly.
7166
7167 1998-02-22  Hrvoje Niksic  <hniksic@srce.hr>
7168
7169         * version.c: Wget 1.5-b9 is released.
7170
7171 1998-02-22  Hrvoje Niksic  <hniksic@srce.hr>
7172
7173         * recur.c (recursive_retrieve): Reset `first_time'.
7174
7175         * ftp.c (getftp): Added `default' clause to switches of uerr_t.
7176
7177         * rbuf.c (rbuf_peek): Simplified.
7178         (rbuf_flush): Use MINVAL.
7179
7180         * wget.h (MINVAL): Moved from url.h.
7181
7182         * rbuf.h (RBUF_FD): New macro.
7183
7184         * url.c (add_url): Add to the head of the list.
7185
7186         * ftp.c (ftp_retrieve_list): Set the permissions to downloaded
7187         file.
7188         (getftp): Set the default permissions to 0600.
7189
7190 1998-02-21  Hrvoje Niksic  <hniksic@srce.hr>
7191
7192         * url.c (get_urls_html): Ditto.
7193         (convert_links): Ditto.
7194
7195         * recur.c (parse_robots): Ditto.
7196
7197         * html.c (ftp_index): Ditto.
7198
7199         * ftp-ls.c (ftp_parse_unix_ls): Open file as binary.
7200
7201         * init.c (defaults): Initialize `opt' to zero via memset.
7202
7203         * http.c (digest_authentication_encode): goto considered harmful.
7204
7205 1998-02-19  Hrvoje Niksic  <hniksic@srce.hr>
7206
7207         * ftp.c (delelement): Simplify and fix leak.
7208
7209 1998-02-18  Hrvoje Niksic  <hniksic@srce.hr>
7210
7211         * http.c (dump_hash): Use HEXD2ASC instead of home-grown stuff.
7212
7213         * url.h (HEXD2ASC): Removed warning.
7214
7215         * init.c (comind): Use binary search.
7216         (commands): Reorganized.
7217         (setval): Ditto.
7218         (cmd_boolean): New function.
7219         (cmd_number): Ditto.
7220         (cmd_number_inf): Ditto.
7221         (cmd_string): Ditto.
7222         (cmd_vector): Ditto.
7223         (cmd_directory_vector): Ditto.
7224         (cmd_bytes): Ditto.
7225         (cmd_time): Ditto.
7226         (cmd_spec_debug): Ditto.
7227         (cmd_spec_dirmode): Ditto.
7228         (cmd_spec_dirstruct): Ditto.
7229         (cmd_spec_dotstyle): Ditto.
7230         (cmd_spec_header): Ditto.
7231         (cmd_spec_htmlify): Ditto.
7232         (cmd_spec_mirror): Ditto.
7233         (cmd_spec_outputdocument): Ditto.
7234         (cmd_spec_recursive): Ditto.
7235         (settime): Merged with cmd_time().
7236         (setbytes): Merged with cmd_bytes().
7237         (setonoff): Merged with cmd_boolean().
7238         (onoff): Ditto.
7239
7240 1998-02-17  Hrvoje Niksic  <hniksic@srce.hr>
7241
7242         * Makefile.in (distclean): Remove `config.h'.
7243
7244 1998-02-17  Hrvoje Niksic  <hniksic@srce.hr>
7245
7246         * version.c: Wget 1.5-b8 is released.
7247
7248 1998-02-17  Hrvoje Niksic  <hniksic@srce.hr>
7249
7250         * http.c (digest_authentication_encode): New function.
7251         (create_authorization_line): Use it.
7252         (dump_hash): New function.
7253         (digest_authentication_encode): Use it.
7254
7255         * fnmatch.c: Renamed from `mtch.c'.
7256
7257 1998-02-15  Karl Eichwalder  <ke@suse.de>
7258
7259         * main.c (main): Tag "Written by..." string as translatable.
7260
7261 1998-02-15  Hrvoje Niksic  <hniksic@srce.hr>
7262
7263         * wget.h (FREE_MAYBE): New macro.
7264
7265         * http.c (create_authorization_line): Don't use ANSI C string
7266         concatenation feature.
7267         (basic_authentication_encode): Use alloca() for temporary
7268         variables.
7269
7270         * recur.h: Ditto.
7271
7272         * http.c: Ditto.
7273
7274         * headers.h: Ditto.
7275
7276         * ftp-basic.c: Protect declaration against non-ANSI compiler.
7277
7278         * http.c (create_authorization_line): Cast `unsigned char *' to
7279         `char *' for sprintf, to shut up the noisy Digital Unix cc.
7280
7281 1998-02-15  Hrvoje Niksic  <hniksic@srce.hr>
7282
7283         * version.c: Wget 1.5-b7 is released.
7284
7285 1998-02-15  Hrvoje Niksic  <hniksic@srce.hr>
7286
7287         * cmpt.c (strstr): Synched with glibc-2.0.6.
7288
7289         * ftp-basic.c (calculate_skey_response): Ditto.
7290         (calculate_skey_response): Use alloca().
7291
7292         * http.c (create_authorization_line): Work with FSF's version of
7293         md5.c.
7294
7295         * md5.c: New file, from GNU libc.
7296
7297 1998-02-14  Hrvoje Niksic  <hniksic@srce.hr>
7298
7299         * url.h (URL_CLEANSE): Name the temporary variable more carefully.
7300
7301 1998-02-13  Hrvoje Niksic  <hniksic@srce.hr>
7302
7303         * http.c (basic_authentication_encode): New function, instead of
7304         the macro.
7305
7306 1998-02-13  Junio Hamano  <junio@twinsun.com>
7307
7308         * http.c: Add HTTP-DA support.
7309         * ftp-basic.c: Add Opie/S-key support.
7310         * config.h.in, Makefile.in: Add HTTP-DA and Opie/S-key support.
7311         * md5.c, md5.h: New files.
7312
7313 1998-02-13  Hrvoje Niksic  <hniksic@srce.hr>
7314
7315         * http.c (http_process_range): Renamed from hprocrange().
7316         (http_process_range): Parse the whole header.
7317
7318         * headers.c: New file.
7319         (header_process): New function.
7320         (header_get): Renamed from fetch_next_header.
7321
7322         * all: Include utils.h only where necessary.
7323
7324         * wget.h: Declare xmalloc(), xrealloc() and xstrdup() here.
7325
7326         * wget.h: Add provisions for dmalloc.
7327
7328 1998-02-12  Hrvoje Niksic  <hniksic@srce.hr>
7329
7330         * version.c: Wget 1.5-b6 is released.
7331
7332 1998-02-12  Hrvoje Niksic  <hniksic@srce.hr>
7333
7334         * ftp.c (ftp_loop): Determine `filename' more precisely.
7335
7336         * init.c (setval): Don't set `opt.quiet' if output-document is
7337         `-'.
7338
7339         * log.c (log_init): Print to STDERR instead of STDOUT.
7340         (vlogmsg): Use STDERR by default.
7341         (logflush): Ditto.
7342
7343 1998-02-11  Simon Josefsson  <jas@pdc.kth.se>
7344
7345         * host.c: Use addr_in again.
7346
7347 1998-02-08  Karl Eichwalder  <karl@suse.de>
7348
7349         * http.c (gethttp): Fixed typo.
7350
7351 1998-02-08  Hrvoje Niksic  <hniksic@srce.hr>
7352
7353         * version.c: Wget 1.5-b5 is released.
7354
7355 1998-02-08  Hrvoje Niksic  <hniksic@srce.hr>
7356
7357         * retr.c (show_progress): Use it.
7358
7359         * log.c (logflush): New function.
7360
7361         * wget.h: Utilize __attribute__ if on gcc.
7362
7363 1998-02-07  Hrvoje Niksic  <hniksic@srce.hr>
7364
7365         * http.c (base64_encode_line): New argument LENGTH.
7366         (BASIC_AUTHENTICATION_ENCODE): Use it.
7367         (BASIC_AUTHENTICATION_ENCODE): Take length of HEADER into account.
7368
7369         * main.c (main): Fixed fprintf() format mismatch.
7370
7371 1998-02-06  Hrvoje Niksic  <hniksic@srce.hr>
7372
7373         * version.c: Wget 1.5-b4 is released.
7374
7375 1998-02-03  Simon Josefsson  <jas@pdc.kth.se>
7376
7377         * host.c: use sockaddr_in instead of addr_in.
7378
7379 1998-02-04  Hrvoje Niksic  <hniksic@srce.hr>
7380
7381         * init.c (cleanup): Use it.
7382
7383         * recur.c (recursive_cleanup): New function.
7384
7385         * retr.c (retrieve_from_file): Ditto.
7386
7387         * main.c (main): Use it.
7388
7389         * recur.c (recursive_reset): New function.
7390
7391         * retr.c (retrieve_from_file): Ditto.
7392
7393         * main.c (main): Simplify call to recursive_retrieve().
7394
7395         * recur.c (recursive_retrieve): Removed FLAGS argument.
7396
7397         * http.c (gethttp): Changed call to iwrite().
7398
7399 1998-02-03  Hrvoje Niksic  <hniksic@srce.hr>
7400
7401         * url.c (get_urls_html): Ditto.
7402         (free_urlpos): Ditto.
7403         (mkstruct): Ditto.
7404         (construct): Ditto.
7405
7406         * retr.c (retrieve_url): Move declaration of local variables to
7407         smaller scope.
7408
7409         * url.c (urlproto): Use it.
7410         (parseurl): Ditto.
7411         (str_url): Ditto.
7412         (get_urls_html): Ditto.
7413
7414         * utils.h (ARRAY_SIZE): New macro.
7415
7416         * url.c (proto): Moved from url.h.
7417
7418         * url.h (URL_CLEANSE): Reformatted.
7419         (USE_PROXY_P): Renamed from USE_PROXY.
7420
7421         * ftp-basic.c: Adjust to the new interface of iwrite().
7422
7423         * ftp-basic.c (ftp_port): Use alloca().
7424
7425 1998-02-03  Hrvoje Niksic  <hniksic@srce.hr>
7426
7427         * version.c: Wget 1.5-b3 is released.
7428
7429         * host.c (ftp_getaddress): Don't print to stderr directly.
7430
7431         * init.c (setbytes): Support `g' for gigabytes.
7432         (cmdtype): New specification CTIME.
7433         (setval): Use it with settime().
7434         (commands): Use it for WAIT and TIMEOUT.
7435
7436 1998-02-02  Hrvoje Niksic  <hniksic@srce.hr>
7437
7438         * http.c (BASIC_AUTHENTICATION_ENCODE): New macro.
7439         (gethttp): Use it.
7440
7441         * utils.c (unique_name_1): Moved from url.c.
7442         (unique_name): Ditto.
7443
7444         * url.c (url_filename): Ditto.
7445
7446         * log.c (redirect_output): Changed call to unique_name().
7447
7448         * url.c (unique_name_1): Renamed from unique_name().
7449         (unique_name): Changed interface.
7450
7451         * init.c (enum cmdid): Moved from init.h.
7452         (cmdtype): Ditto.
7453         (struct cmd): Ditto.
7454
7455         * main.c (main): Use it.
7456         (main): Moved `--backups' to not have a short option.
7457
7458         * options.h (struct options): New member BACKGROUND.
7459
7460         * main.c (print_help): Rearranged.
7461         (main): New long options for -n* short options: --no-directories,
7462         --no-host-directories, --non-verbose, --no-host-lookup and
7463         --dont-remove-listing.
7464
7465 1998-02-01  Hrvoje Niksic  <hniksic@srce.hr>
7466
7467         * main.c (main): Use log_close().
7468
7469         * log.c: New variable LOGFP.
7470         (vlogmsg): Use it.
7471         (redirect_output): Don't open /dev/null; set LOGFP to stdin
7472         instead.
7473         (log_close): New function.
7474
7475         * options.h (struct options): Removed LFILE.
7476
7477         * log.c (log_enable): Removed.
7478
7479         * main.c (main): Use it.
7480
7481         * log.c (log_init): New function.
7482
7483         * url.c (get_urls_html): Removed needless assignment to BASE.
7484
7485         * host.c (add_hlist): Don't set CMP needlessly.
7486
7487         * utils.c (match_backwards): Ditto.
7488         (in_acclist): Ditto.
7489
7490         * url.c (findurl): Ditto.
7491
7492         * netrc.c (parse_netrc): Ditto.
7493
7494         * log.c (log_dump): Ditto.
7495
7496         * html.c (html_quote_string): Ditto.
7497
7498         * ftp-basic.c (ftp_request): Made static.
7499
7500         * connect.c: Made global variables static.
7501
7502         * url.c (construct): Ditto.
7503
7504         * init.c (init_path): Avoid assignment inside `if'-condition.
7505
7506         * ftp.c: Don't include in.h or winsock.h.
7507
7508         * ftp.c (ftp_loop): Use SZ.
7509
7510         * connect.c (bindport): Cast &addrlen to int *.
7511         (conaddr): Ditto.
7512
7513         * init.c (initialize): Don't use SYSTEM_WGETRC unconditionally.
7514
7515 1998-01-31  Hrvoje Niksic  <hniksic@srce.hr>
7516
7517         * ftp.c (getftp): Initialize opt.ftp_pass here.
7518         (ftp_retrieve_dirs): Use alloca().
7519
7520         * init.c (defaults): Don't initialize opt.ftp_pass.
7521
7522         * sysdep.h (S_ISLNK): Declare for OS/2; ditto for lstat.
7523         From Ivan F. Martinez <ivanfm@ecodigit.com.br>.
7524
7525 1998-01-31  Hrvoje Niksic  <hniksic@srce.hr>
7526
7527         * recur.c (parse_robots): Check for comments more correctly.
7528
7529         * host.c (ftp_getaddress): Use STRDUP_ALLOCA.
7530         (ftp_getaddress): Add diagnostics when reverse-lookup yields only
7531         hostname.
7532
7533 1998-01-31  Hrvoje Niksic  <hniksic@srce.hr>
7534
7535         * version.c: Wget 1.5-b2 is released.
7536
7537         * netrc.c (NETRC_FILE_NAME): Moved from netrc.h.
7538
7539         * utils.c (proclist): Pass FNM_PATHNAME to fnmatch().
7540
7541         * ftp-basic.c (ftp_pasv): Avoid unnecessary casting to unsigned
7542         char.
7543
7544         * log.c: Don't attempt to hide arguments from ansi2knr.
7545
7546         * cmpt.c: Synched strptime() and mktime() with glibc-2.0.6.
7547
7548         * ansi2knr.c: Use a later version, from fileutils-3.16l alpha.
7549
7550         * ftp.c (getftp): Ditto.
7551
7552         * http.c (gethttp): Use it.
7553
7554         * retr.c (get_contents): New argument EXPECTED; pass it to
7555         show_progress().
7556         (show_progress): New argument EXPECTED; use it to display
7557         percentages.
7558
7559         * init.c (setval): Ditto.
7560
7561         * http.c (gethttp): Ditto.
7562         (http_loop): Ditto.
7563
7564         * ftp.c (getftp): Ditto.
7565         (ftp_loop_internal): Ditto.
7566
7567         * ftp-ls.c (ftp_parse_unix_ls): Use abort() instead of assert(0).
7568
7569         * sysdep.h (CLOSE): Simplify; use DEBUGP.
7570
7571         * netrc.c (search_netrc): Use alloca().
7572
7573         * init.c (defaults): Initialize no_flush.
7574
7575         * log.c (vlogmsg): Don't flush if no_flush.
7576
7577         * options.h (struct options): New variable no_flush.
7578
7579         * main.c (main): Don't play games with buffering.
7580
7581         * log.c (vlogmsg): Flush the output after every message.
7582
7583 1998-01-31  Hrvoje Niksic  <hniksic@srce.hr>
7584
7585         * init.c (parse_line): Ditto.
7586
7587         * url.c (get_urls_html): Ditto.
7588
7589         * main.c (main): Don't cast to unsigned char.
7590
7591         * init.c (run_wgetrc): Don't cast to unsigned char.
7592         (parse_line): Accept char instead of unsigned char.
7593
7594         * html.c (htmlfindurl): Use char instead of unsigned char.
7595
7596         * all: Use them.
7597
7598         * sysdep.h: Add wrappers to ctype macros to make them
7599         eight-bit-clean:
7600
7601 1998-01-30  Hrvoje Niksic  <hniksic@srce.hr>
7602
7603         * html.c (htmlfindurl): Download <img lowsrc=...>
7604
7605         * main.c (main): Ignore SIGPIPE.
7606
7607         * connect.c (select_fd): New argument WRITEP.
7608         (iwrite): Call select_fd().
7609
7610 1997-02-27  Fila Kolodny <fila@ibi.com>
7611
7612         * ftp.c (ftp_retrieve_list): If retrieving symlink and the proper
7613         one already exists, just skip it.
7614
7615 1998-01-30  Hrvoje Niksic  <hniksic@srce.hr>
7616
7617         * http.c (gethttp): Cosmetic changes.
7618
7619         * http.c (check_end): Allow `+D...' instead of `GMT'.
7620         From Fabrizio Pollastri <pollastri@cstv.to.cnr.it>.
7621
7622         * url.c (process_ftp_type): New function.
7623         (parseurl): Use it.
7624
7625         * connect.c (iwrite): Allow writing in a few chunks.
7626         (bindport): Made SRV static, so addr can point to it.
7627         (select_fd): Removed HPUX kludge.
7628
7629         * host.c (free_hlist): Incorporated into clean_hosts().
7630
7631 1998-01-29  Hrvoje Niksic  <hniksic@srce.hr>
7632
7633         * host.c (hlist): Made static.
7634         (search_address): Cosmetic change.
7635
7636 1998-01-29  Hrvoje Niksic  <hniksic@srce.hr>
7637
7638         * version.c: Wget v1.5-b1 is released.
7639
7640         * http.c (hgetlen): Use sizeof() to get the header length.
7641         (hgetrange): Ditto.
7642         (hgettype): Ditto.
7643         (hgetlocation): Ditto.
7644         (hgetmodified): Ditto.
7645         (haccepts_none): Ditto.
7646
7647         * main.c (main): Updated `--version' and `--help' output, as per
7648         Francois Pinard's suggestions.
7649
7650         * main.c: Include locale.h; call setlocale(), bindtextdomain() and 
7651         textdomain().
7652
7653         * config.h.in: Define stubs for I18N3.
7654
7655         * wget.h: Include libintl.h.
7656
7657 1998-01-28  Hrvoje Niksic  <hniksic@srce.hr>
7658
7659         * url.c (mkstruct): Check for opt.cut_dirs.
7660         (mkstruct): alloca()-te more, xmalloc() less.
7661
7662         * utils.c (load_file): Check for ferror().
7663
7664         * url.c (get_urls_file): Close only the files we opened.
7665         (get_urls_html): Ditto.
7666         (count_slashes): New function.
7667
7668         * http.h: Removed.
7669
7670         * http.c (gethttp): Respect username and password provided by
7671         proxy URL.
7672         (base64_encode_line): Write into an existing buffer instead of
7673         malloc-ing a new one.
7674         (struct http_stat): Moved from http.h
7675
7676         * retr.c (retrieve_url): Free SUF.
7677
7678         * all: Removed lots of unnecessary .h dependencies.
7679
7680         * html.c (global_state): Made static.
7681
7682         * utils.h (ALLOCA_ARRAY): New macro.
7683
7684         * main.c (main): New option `--cut-dirs'.
7685
7686         * url.c (construct): Use alloca() for T.
7687
7688         * utils.c (mkdirhier): Use STRDUP_ALLOCA.
7689
7690         * host.c (_host_t): Moved from host.h.
7691         (struct host): Renamed from _host_t.
7692         (store_hostaddress): Use STRDUP_ALLOCA for INET_S.
7693         (realhost): Ditto.
7694
7695         * host.h: Don't include url.h.
7696
7697         * ftp.c (LIST_FILENAME): Moved from ftp.h.
7698
7699         * init.c (DEFAULT_FTP_ACCT): Moved from ftp.h.
7700
7701         * main.c (main): Enable log if the output goes to a TTY.
7702
7703         * connect.h: Removed unused constant `BACKLOG'.
7704
7705         * config.h.in: Check for isatty().
7706
7707         * Makefile.in (LINK): Use CFLAGS when linking.
7708
7709 1998-01-27  Hrvoje Niksic  <hniksic@srce.hr>
7710
7711         * mswindows.c (ws_hangup): Use redirect_output().
7712
7713         * main.c (redirect_output_signal): New function; use
7714         redirect_output().
7715
7716         * log.c (redirect_output): New function, based on hangup(), which
7717         is deleted.
7718
7719         * log.c (vlogmsg): New function.
7720
7721         * wget.h (DEBUGP): Use debug_logmsg().
7722
7723         * main.c (hangup): Use it.
7724
7725         * log.c (log_dump): New function.
7726
7727         * utils.h (DO_REALLOC): Use `long' for various sizes.
7728
7729         * http.c (hskip_lws): Use `while', for clarity.
7730         (HTTP_DYNAMIC_LINE_BUFFER): New constant.
7731         (fetch_next_header): Use it instead of DYNAMIC_LINE_BUFFER.
7732
7733         * ftp-basic.c (FTP_DYNAMIC_LINE_BUFFER): New constant.
7734         (ftp_response): Use it instead of DYNAMIC_LINE_BUFFER.
7735
7736         * utils.c (DYNAMIC_LINE_BUFFER): Moved from utils.c.
7737         (LEGIBLE_SEPARATOR): Ditto.
7738         (FILE_BUFFER_SIZE): Ditto.
7739
7740         * retr.c (BUFFER_SIZE): Moved from retr.h.
7741
7742         * log.c: New file.
7743         (logmsg): Moved from utils.c.
7744         (debug_logmsg): New function.
7745
7746         * mswindows.h: Include it here.
7747
7748         * init.c: Ditto.
7749
7750         * utils.c: Don't include <windows.h>.
7751
7752 1998-01-25  Hrvoje Niksic  <hniksic@srce.hr>
7753
7754         * host.c (ftp_getaddress): Ditto.
7755
7756         * main.c (main): Use it.
7757
7758         * utils.h (STRDUP_ALLOCA): New macro.
7759
7760         * init.c: Prepend `wget: ' to error messages printed on stderr.
7761
7762         * utils.c (mkdirhier): Renamed from mymkdir.
7763         (touch): Renamed from my_touch.
7764         (pwd_cuserid): Renamed from my_cuserid().
7765
7766 1998-01-24  Andy Eskilsson  <andy.eskilsson@telelogic.se>
7767
7768         * utils.c (accdir): Process wildcards.
7769         (proclist): New function.
7770         (accdir): Use it to avoid code repetition.
7771
7772 1998-01-24  Hrvoje Niksic  <hniksic@srce.hr>
7773
7774         * recur.c (parse_robots): Respect opt.useragent; use alloca().
7775
7776         * http.c (gethttp): Construct useragent accordingly.
7777
7778         * version.c: Changed version string to numbers-only.
7779
7780         * main.c (print_help): List all the options.
7781
7782         * mswindows.c (windows_main_junk): Initialize argv0 here.
7783
7784 1998-01-24  Karl Heuer  <kwzh@gnu.org>
7785
7786         * netrc.c (search_netrc): Initialize `l' only after processing
7787         netrc.
7788
7789         * main.c (main): Don't trap SIGHUP if it's being ignored.
7790
7791 1998-01-24  Hrvoje Niksic  <hniksic@srce.hr>
7792
7793         * all: Use logmsg().
7794
7795         * utils.c (time_str): Moved from retr.c.
7796         (logmsg): New function.
7797         (logmsg_noflush): Ditto.
7798
7799         * rbuf.c: New file, moved buf_* functions here.
7800
7801         * ftp.c (ftp_expected_bytes): Moved from ftp-basic.c.
7802
7803         * ftp-basic.c (ftp_rest): Use prnum().
7804
7805         * ftp-basic.c: Ditto.
7806
7807         * ftp.c: Use the new reading functions and macros.
7808
7809         * retr.c (buf_initialize): New function.
7810         (buf_initialized_p): Ditto.
7811         (buf_uninitialize): Ditto.
7812         (buf_fd): Ditto.
7813
7814         * http.c (fetch_next_header): Use the BUF_READCHAR macro for
7815         efficiency.
7816         (gethttp): Use alloca() where appropriate.
7817
7818         * retr.c (buf_readchar): Use it.
7819         (buf_peek): Use rstreams.
7820
7821         * retr.h (BUF_READCHAR): New macro.
7822
7823         * init.c (home_dir): Rewritten for clarity.
7824         (init_path): Ditto.
7825
7826         * mswindows.c (ws_backgnd): Made static.
7827         (read_registry): Ditto.
7828         (ws_cleanup): Ditto.
7829         (ws_handler): Ditto.
7830
7831 1998-01-23  Hrvoje Niksic  <hniksic@srce.hr>
7832
7833         * alloca.c: New file.
7834
7835         * Makefile.in (ALLOCA): Define.
7836
7837         * mswindows.c (ws_help): Constify.
7838         (ws_help): Use alloca.
7839
7840         * mswindows.c: Reformat.
7841
7842         * all: Added _(...) annotations for I18N snarfing and translation.
7843
7844         * host.c (ftp_getaddress): Nuke SYSINFO.
7845         (ftp_getaddress): Don't use getdomainname().
7846         (ftp_getaddress): Use uname(), where available.
7847
7848         * http.c (gethttp): Protect a stray fprintf().
7849
7850         * init.c (settime): New function.
7851         (setval): Treat WAIT specially, allowing suffixes like `m' for
7852         minutes, etc.
7853
7854 1998-01-21  Hrvoje Niksic  <hniksic@srce.hr>
7855
7856         * url.c (get_urls_html): Use alloca() for TEMP.
7857
7858 1998-01-21  Jordan Mendelson  <jordy@wserv.com>
7859
7860         * url.c (rotate_backups): New function.
7861
7862         * http.c (gethttp): Ditto.
7863
7864         * ftp.c (getftp): Rotate backups.
7865
7866 1997-12-18  Hrvoje Niksic  <hniksic@srce.hr>
7867
7868         * all: Renamed nmalloc(), nrealloc() and nstrdup() to xmalloc(),
7869         xrealloc() and xstrdup().  Use the new functions.
7870
7871         * url.c (decode_string): Made static.
7872         (has_proto): Ditto.
7873         (parse_dir): Ditto.
7874         (parse_uname): Ditto.
7875         (mkstruct): Ditto.
7876         (construct): Ditto.
7877         (construct_relative): Ditto.
7878
7879         * retr.c (show_progress): Made static.
7880
7881         * recur.c (robots_url): Made static.
7882         (retrieve_robots): Ditto.
7883         (parse_robots): Ditto.
7884         (robots_match): Ditto.
7885
7886         * main.h: Removed.
7887
7888         * main.c (printhelp): Made static.
7889         (hangup): Ditto.
7890
7891         * init.c (comind): Made static.
7892         (defaults): Ditto.
7893         (init_path): Ditto.
7894         (run_wgetrc): Ditto.
7895         (onoff): Ditto.
7896         (setonoff): Ditto.
7897         (setnum): Ditto.
7898         (myatoi): Ditto.
7899         (getperms): Ditto.
7900         (setbytes): Ditto.
7901
7902         * http.c (fetch_next_header): Made static.
7903         (hparsestatline): Ditto.
7904         (hskip_lws): Ditto.
7905         (hgetlen): Ditto.
7906         (hgetrange): Ditto.
7907         (hgettype): Ditto.
7908         (hgetlocation): Ditto.
7909         (hgetmodified): Ditto.
7910         (haccepts_none): Ditto.
7911         (gethttp): Ditto.
7912         (base64_encode_line): Ditto.
7913         (mktime_from_utc): Ditto.
7914         (http_atotm): Ditto.
7915
7916         * html.c (idmatch): Made static.
7917
7918         * host.c (search_host): Made static.
7919         (search_address): Ditto.
7920         (free_hlist): Ditto.
7921
7922         * ftp.c (getftp): Made static.
7923         (ftp_loop_internal): Ditto.
7924         (ftp_get_listing): Ditto.
7925         (ftp_retrieve_list): Ditto.
7926         (ftp_retrieve_dirs): Ditto.
7927         (ftp_retrieve_glob): Ditto.
7928         (freefileinfo): Ditto.
7929         (delelement): Ditto.
7930
7931         * ftp-ls.c (symperms): Made static.
7932         (ftp_parse_unix_ls): Ditto.
7933
7934         * connect.c (select_fd): Made static.
7935
7936         * utils.c (xmalloc): Renamed from nmalloc.
7937         (xrealloc): Renamed from nrealloc.
7938         (xstrdup): Renamed from nstrdup.
7939
7940         * getopt.c (exchange): Use alloca.
7941
7942         * mswindows.c (mycuserid): Use strncpy.
7943
7944         * New files mswindows.c, mswindows.h, sysdep.h.  winjunk.c,
7945         systhings.h, windecl.h and winjunk.h removed.
7946
7947         * mswindows.c (sleep): New function.
7948
7949         * utils.c: Include <windows.h> under Windows.
7950
7951 1997-06-12  Darko Budor  <dbudor@zesoi.fer.hr>
7952
7953         * url.h (URL_UNSAFE): Change default under Windows.
7954
7955         * retr.c (retrieve_from_file): Respect opt.delete_after.
7956
7957         * main.c (main): Call ws_help on Windows.
7958
7959         * winjunk.c (windows_main_junk): New function.
7960
7961         * main.c (main): Junk-process argv[0].
7962
7963         * http.c (mktime_from_utc): Return -1 if mktime failed.
7964
7965         * http.c (http_loop): Ditto.
7966
7967         * ftp.c (ftp_loop_internal): Change title on Windows when using a
7968         new URL.
7969
7970         * winjunk.c (getdomainname): Lots of functions.
7971
7972 1997-06-12  Hrvoje Niksic  <hniksic@srce.hr>
7973
7974         * cmpt.c (strptime_internal): Handle years more correctly for
7975         `%y'.
7976
7977 1997-06-09  Mike Thomas <mthomas@reality.ctron.com>
7978
7979         * http.c (gethttp): Allocate enough space for
7980         `Proxy-Authorization' header.
7981
7982 1997-05-10  Hrvoje Niksic  <hniksic@srce.hr>
7983
7984         * version.c: Wget/1.4.5 is released.
7985
7986 1997-05-10  Hrvoje Niksic  <hniksic@srce.hr>
7987
7988         * retr.c (get_contents): Check return value of fwrite more
7989         carefully.
7990
7991 1997-03-30  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
7992
7993         * cmpt.c (strptime_internal) [case 'Y']: Always subtract 1900 from
7994         year, regardless of century.
7995
7996 1997-03-30  Hrvoje Niksic  <hniksic@srce.hr>
7997
7998         * utils.c (isfile): Use `lstat' instead of `stat'.
7999
8000 1997-03-29  Hrvoje Niksic  <hniksic@srce.hr>
8001
8002         * utils.c (numdigit): Use explicit test.
8003
8004 1997-03-21  Hrvoje Niksic  <hniksic@srce.hr>
8005
8006         * http.c (http_loop): Always use `url_filename' to get u->local.
8007
8008 1997-03-20  Hrvoje Niksic  <hniksic@srce.hr>
8009
8010         * url.c: Recognize https.
8011
8012 1997-03-13  Hrvoje Niksic  <hniksic@srce.hr>
8013
8014         * recur.c (recursive_retrieve): Lowercase just the host name.
8015
8016 1997-03-09  Hrvoje Niksic  <hniksic@srce.hr>
8017
8018         * url.c (get_urls_file): Use the correct test.
8019         (get_urls_html): Ditto.
8020
8021 1997-03-07  Hrvoje Niksic  <hniksic@srce.hr>
8022
8023         * connect.c: Reverted addrlen to int.
8024
8025         * init.c (parse_line): Check for -1 instead of NONE.
8026
8027         * version.c: Changed version to 1.4.5.
8028
8029 1997-02-17  Hrvoje Niksic  <hniksic@srce.hr>
8030
8031         * init.c: New option netrc.
8032         (initialize): Don't parse .netrc.
8033
8034         * cmpt.c (recursive): Return rp.
8035         (strptime_internal): Match the long strings first, the abbreviated
8036         second.
8037
8038 1997-02-16  Hrvoje Niksic  <hniksic@srce.hr>
8039
8040         * http.c (check_end): New function.
8041         (http_atotm): Use it.
8042  
8043 1997-02-13  gilles Cedoc  <gilles@cedocar.fr>
8044
8045         * http.c (gethttp): Use them.
8046
8047         * init.c: New options proxy_user and proxy_passwd.
8048
8049 1997-02-14  Hrvoje Niksic  <hniksic@srce.hr>
8050
8051         * ftp.c (ftp_retrieve_list): Create links even if not relative.
8052
8053 1997-02-10  Hrvoje Niksic  <hniksic@srce.hr>
8054
8055         * recur.c (recursive_retrieve): Lowercase the host name, if the
8056         URL is not "optimized".
8057
8058         * host.c (realhost): Return l->hostname, even if it matches with
8059         host.
8060
8061 1997-02-10  Marin Purgar  <pmc@asgard.hr>
8062
8063         * connect.c: Make addrlen size_t instead of int.
8064         (conaddr): Ditto.
8065
8066 1997-02-09  Gregor Hoffleit  <flight@mathi.uni-heidelberg.DE>
8067
8068         * systhings.h: Define S_ISLNK on NeXT too.
8069
8070 1997-02-09  Hrvoje Niksic  <hniksic@srce.hr>
8071
8072         * version.c: Released 1.4.3.
8073
8074         * url.c: Futher update to list of protostrings.
8075         (skip_proto): Skip `//' correctly for FTP and HTTP.
8076
8077         * url.c (get_urls_html): Handle bogus `http:' things a little
8078         different.
8079
8080         * main.c (main): Removed `follow-ftp' from `f'.
8081         (main): Dumped the `prefix-files' and `file-prefix' options and
8082         features; old and bogus.
8083         (main): Exit on failed setval() in `-e'.
8084
8085         * http.c (fetch_next_header): Use it to detect header continuation
8086         correctly.
8087
8088         * retr.c (buf_peek): New function.
8089
8090 1997-02-08  Hrvoje Niksic  <hniksic@srce.hr>
8091
8092         * wget.h: Include time.h and stuff.
8093
8094 1997-02-08  Roger Beeman  <beeman@cisco.com>
8095
8096         * ftp.c: Include <time.h>
8097
8098 1997-02-07  Hrvoje Niksic  <hniksic@srce.hr>
8099
8100         * url.c (findurl): Would read over buffer limits.
8101
8102 1997-02-06  Hrvoje Niksic  <hniksic@srce.hr>
8103
8104         * ftp-ls.c (ftp_parse_unix_ls): Allow spaces in file names.
8105
8106 1997-02-05  Hrvoje Niksic  <hniksic@srce.hr>
8107
8108         * http.c (http_atotm): Initialize tm.is_dst.
8109
8110 1997-02-02  Hrvoje Niksic  <hniksic@srce.hr>
8111
8112         * http.c (gethttp): Don't print the number of retrieved headers.
8113
8114         * main.c (main): New option `--no-clobber', alias for `-nc'.
8115
8116         * url.c: Recognize `https://'.
8117
8118 1997-02-01  Hrvoje Niksic  <hniksic@srce.hr>
8119
8120         * host.c (herrmsg): Don't use h_errno.
8121
8122 1997-01-30  Hrvoje Niksic  <hniksic@srce.hr>
8123
8124         * host.c (accept_domain): Use it.
8125
8126         * main.c (main): New option `--exclude-domains'.
8127
8128         * retr.c (retrieve_url): Use it.
8129         (retrieve_url): Bail out when an URL is redirecting to itself.
8130
8131         * url.c (url_equal): New function.
8132
8133 1997-01-29  Hrvoje Niksic  <hniksic@srce.hr>
8134
8135         * connect.c: Include arpa/inet.h instead of arpa/nameser.h.
8136
8137         * http.c (mk_utc_time): New function.
8138         (http_atotm): Use it; handle time zones correctly.
8139
8140 1997-01-28  Hrvoje Niksic  <hniksic@srce.hr>
8141
8142         * http.c: Ditto.
8143
8144         * ftp-basic.c: Use it instead of WRITE.
8145
8146         * connect.c (iwrite): New function.
8147
8148 1997-01-27  Hrvoje Niksic  <hniksic@srce.hr>
8149
8150         * cmpt.c (mktime): New function.
8151
8152         * netrc.c: Include <sys/types.h>.
8153
8154         * main.c (main): Wouldn't recognize --spider.
8155
8156         * retr.c (rate): Use `B', `KB' and `MB'.
8157         (reset_timer,elapsed_time): Moved from utils.c.
8158
8159         * ftp.c (ftp_retrieve_list): Ditto.
8160
8161         * http.c (http_loop): Don't touch the file if opt.dfp.
8162
8163 1997-01-24  Hrvoje Niksic  <hniksic@srce.hr>
8164
8165         * cmpt.c: New file.
8166
8167         * ftp.c (ftp_retrieve_glob): New argument semantics.
8168         (ftp_retrieve_dirs): Use it.
8169         (ftp_loop): Ditto.
8170
8171         * html.c (htmlfindurl): Recognize `'' as the quote char.
8172
8173 1997-01-23  Hrvoje Niksic  <hniksic@srce.hr>
8174
8175         * ftp.c (ftp_loop_internal): Use it.
8176
8177         * utils.c (remove_link): New function.
8178
8179 1997-01-22  Hrvoje Niksic  <hniksic@srce.hr>
8180
8181         * retr.c (retrieve_url): Require STRICT redirection URL.
8182
8183         * url.c (parseurl): New argument STRICT.
8184
8185         * http.c (hparsestatline): Be a little-bit less strict about
8186         status line format.
8187
8188 1997-01-21  Hrvoje Niksic  <hniksic@srce.hr>
8189
8190         * http.c (gethttp): Use it.
8191
8192         * main.c (main): Don't use '<digit>' as options.
8193
8194         * init.c: New option ignore_length.
8195
8196         * http.c (gethttp): Ditto.
8197         (http_loop): Check for redirection without Location:.
8198         (gethttp): Don't print Length unless RETROKF.
8199
8200         * ftp.c (getftp): Use it.
8201
8202         * url.c (mkalldirs): New function.
8203
8204         * utils.c (mymkdir): Don't check for existing non-directory.
8205
8206         * url.c (mkstruct): Don't create the directory.
8207
8208 1997-01-20  Hrvoje Niksic  <hniksic@srce.hr>
8209
8210         * init.c (setval): Removed NO_RECURSION checks.
8211
8212 1997-01-19  Hrvoje Niksic  <hniksic@srce.hr>
8213
8214         * version.c: "Released" 1.4.3-pre2.
8215
8216         * recur.c (recursive_retrieve): Bypass host checking only if URL
8217         is ftp AND parent URL is not ftp.
8218
8219         * ftp-basic.c (ftp_request): Print out Turtle Power.
8220
8221         * ftp.c (ftp_loop): Call ftp_retrieve_glob with 0 if there's no
8222         wildcard.
8223         (ftp_retrieve_glob): Call ftp_loop_internal even on empty list, if
8224         not glob.
8225
8226         * http.c (gethttp): Be a little bit smarter about status codes.
8227
8228         * recur.c (recursive_retrieve): Always reset opt.recursive when
8229         dealing with FTP.
8230
8231 1997-01-18  Hrvoje Niksic  <hniksic@srce.hr>
8232
8233         * retr.c (retrieve_url): New variable location_changed; use it for
8234         tests instead of mynewloc.
8235         (retrieve_url): Allow heuristic adding of html.
8236
8237         * url.c (url_filename): Don't use the `%' in Windows file names.
8238
8239         * http.c (http_loop): Always time-stamp the local file.
8240
8241         * http.c (http_loop): Ditto.
8242
8243         * ftp.c (ftp_retrieve_list): Use it.
8244
8245         * utils.c (my_touch): New function.
8246
8247         * ftp.c (ftp_retrieve_list): Use #ifdef HAVE_STRUCT_UTIMBUF
8248         instead of #ifndef NeXT.
8249
8250         * utils.c (strptime): New version, by Ulrich Drepper.
8251
8252 1997-01-17  Hrvoje Niksic  <hniksic@srce.hr>
8253
8254         * http.c (haccepts_none): Renamed from `haccepts_bytes'.
8255         (gethttp): If haccepts_none(), disable ACCEPTRANGES.
8256         (http_loop): Would remove ACCEPTRANGES.
8257
8258         * ftp.c (getftp): Call ftp_list with NULL.
8259
8260 1997-01-15  Hrvoje Niksic  <hniksic@srce.hr>
8261
8262         * html.c (ftp_index): Don't print minutes and seconds if we don't
8263         know them; beautify the output.
8264
8265         * ftp.c (getftp): Don't close the socket on FTPNSFOD.
8266
8267 1997-01-14  Hrvoje Niksic  <hniksic@srce.hr>
8268
8269         * utils.c (strptime): New function.
8270         (strptime): Don't use get_alt_number.
8271         (strptime): Don't use locale.
8272         (match_string): Made it a function.
8273
8274 1997-01-12  Hrvoje Niksic  <hniksic@srce.hr>
8275
8276         * http.c (http_atotm): New function.
8277         (http_loop): Use it.
8278
8279         * atotm.c: Removed from the distribution.
8280
8281         * http.c (base64_encode_line): Rewrite.
8282
8283 1997-01-09  Hrvoje Niksic  <hniksic@srce.hr>
8284
8285         * ftp.c (getftp): Use ftp_expected_bytes; print size.
8286
8287         * ftp-basic.c (ftp_response): Use ftp_last_respline.
8288         (ftp_expected_bytes): New function.
8289
8290         * ftp.c (getftp): Print the unauthoritative file length.
8291
8292         * ftp-ls.c: Renamed from ftp-unix.c.
8293         (ftp_parse_ls): Moved from ftp.c.
8294         (ftp_parse_unix_ls): Recognize seconds in time spec.
8295         (ftp_parse_unix_ls): Recognize year-less dates of the previous
8296         year.
8297
8298 1997-01-08  Hrvoje Niksic  <hniksic@srce.hr>
8299
8300         * ftp-basic.c: Don't declare errno if #defined.
8301
8302         * host.c (ftp_getaddress): Check for sysinfo legally.
8303
8304 1997-01-08  Darko Budor  <dbudor@diana.zems.fer.hr>
8305
8306         * connect.c (iread): Use READ.
8307
8308 1996-12-23  Hrvoje Niksic  <hniksic@srce.hr>
8309
8310         * url.c: Recognize finger, rlogin, tn3270, mid and cid as valid
8311         schemes.
8312
8313 1996-12-22  Hrvoje Niksic  <hniksic@srce.hr>
8314
8315         * host.c (ftp_getaddress): Allow `.' in hostname.
8316
8317 1996-12-26  Darko Budor <dbudor@zems.fer.hr>
8318
8319         * wget.h: READ and WRITE macros for use instead of read and write
8320         on sockets, grep READ *.c, grep WRITE *.c
8321
8322         * wsstartup.c: new file - startup for winsock
8323
8324         * wsstartup.h: new file
8325
8326         * win32decl.h: new file - fixup for <errno.h> and winsock trouble
8327
8328         * configure.bat: Configure utility for MSVC
8329
8330         * src/Makefile.ms,config.h.ms: new files for use with MSVC 4.x
8331
8332 1996-12-22  Hrvoje Niksic  <hniksic@srce.hr>
8333
8334         * version.c: Released 1.4.3-pre.
8335
8336         * utils.c (prnum): Accept long.
8337         (legible): Use prnum().
8338
8339         * connect.c (make_connection): Accept port as short.
8340         (bindport): Ditto.
8341
8342         * http.c (gethttp): Use search_netrc.
8343
8344 1996-12-21  Hrvoje Niksic  <hniksic@srce.hr>
8345
8346         * ftp.c (getftp): Use search_netrc.
8347
8348         * netrc.c (free_netrc): New function.
8349
8350         * init.c (home_dir): New function.
8351
8352         * url.c (convert_links): Allow REL2ABS changes.
8353
8354 1996-12-21  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>
8355
8356         * netrc.c: New file.
8357         (parse_netrc, maybe_add_to_list): New functions.
8358
8359 1996-12-17  Hrvoje Niksic  <hniksic@srce.hr>
8360
8361         * retr.c (retrieve_url): Reset opt.recursion before calling
8362         ftp_loop if it is reached through newloc.
8363
8364         * init.c (run_wgetrc): Print the wgetrc path too, when reporting
8365         error; don't use "Syntax error", since we don't know if it is
8366         really a syntax error.
8367
8368 1996-12-16  Hrvoje Niksic  <hniksic@srce.hr>
8369
8370         * utils.c (acceptable): Extract the filename part of the path.
8371
8372         * recur.c (recursive_retrieve): Call acceptable() with the right
8373         argument; would bug out on wildcards.
8374
8375         * init.c (parse_line): Likewise.
8376
8377         * html.c (htmlfindurl): Cast to char * when calling stuff.
8378
8379 1996-12-15  Hrvoje Niksic  <hniksic@srce.hr>
8380
8381         * ftp.c (getftp): Use ftp_pasv.
8382
8383         * ftp-basic.c (ftp_request): Accept NULL value.
8384         (ftp_pasv): New function.
8385
8386         * options.h (struct options): Add passive FTP option.
8387
8388 1996-12-15  Hrvoje Niksic  <hniksic@srce.hr>
8389
8390         * url.c (parseurl): Debug output.
8391
8392         * utils.c (path_simplify): New one, adapted from bash's
8393         canonicalize_pathname().
8394
8395 1996-12-14  Hrvoje Niksic  <hniksic@srce.hr>
8396
8397         * ftp.c (getftp): Don't discard the buffer.
8398
8399         * retr.c (get_contents): New parameter nobuf.
8400
8401 1996-12-13  Shawn McHorse  <riffraff@txdirect.net>
8402
8403         * html.c (htmlfindurl): Recognize <meta contents="d; URL=...".
8404
8405         * init.c (setval): Strip the trailing slashes on CVECDIR.
8406
8407 1996-12-13  Hrvoje Niksic  <hniksic@srce.hr>
8408
8409         * init.c: Make excludes and includes under CVECDIR instead of
8410         CVEC.
8411
8412 1996-12-13  Shawn McHorse  <riffraff@txdirect.net>
8413
8414         * url.c (get_urls_html): Skip "http:".
8415
8416 1996-12-13  Hrvoje Niksic  <hniksic@srce.hr>
8417
8418         * utils.c (strcasecmp): From glibc.
8419         (strncasecmp): Also.
8420         (strstr): Also.
8421
8422         * url.c: Added javascript: to the list of URLs prefixes.
8423
8424 1996-12-12  Shawn McHorse  <riffraff@txdirect.net>
8425
8426         * recur.c (retrieve_robots): Print the warning message only if
8427         verbose.
8428
8429 1996-12-12  Gregor Hoffleit  <flight@mathi.uni-heidelberg.DE>
8430
8431         * ftp.c (ftp_retrieve_list): Use NeXT old utime interface.
8432
8433 1996-12-12  Hrvoje Niksic  <hniksic@srce.hr>
8434
8435         * systhings.h: New file.
8436
8437         * ../configure.in: Check for utime.h
8438
8439         * ftp.c: Check whether we have unistd.h.
8440
8441 1996-11-27  Hrvoje Niksic  <hniksic@srce.hr>
8442
8443         * recur.c (recursive_retrieve): Send the canonical URL as referer.
8444         (recursive_retrieve): Call get_urls_html with the canonical URL.
8445
8446 1996-12-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8447
8448         * (configure.in, config.h.in, src/Makefile.in, src/*.[ch]): Add
8449         ansi2knr support for compilers which don't support ANSI style
8450         function prototypes and signatures.
8451
8452         * (aclocal.m4, src/ansi2knr.c, src/ansi2knr.1): New files.
8453
8454 1996-11-26  Hrvoje Niksic  <hniksic@srce.hr>
8455
8456         * url.c: Use it; Recognize paths ending with "." and ".." as
8457         directories.
8458         (url_filename): Append .n whenever file exists and could be a
8459         directory.
8460
8461         * url.h (ISDDOT): New macro.
8462
8463         * init.c (parse_line): Use unsigned char.
8464
8465         * url.c (get_urls_html): Cast to unsigned char * when calling
8466         htmlfindurl.
8467
8468         * html.c (htmlfindurl): Use unsigned char.
8469
8470         * version.c: Changed version to 1.4.3.
8471
8472 1996-11-25  Hrvoje Niksic  <hniksic@srce.hr>
8473
8474         * version.c: Released 1.4.2.
8475
8476         * ftp.c (getftp): Simplified assertion.
8477         (ftp_loop_internal): Remove symlink before downloading.
8478         (ftp_retrieve_list): Unlink the symlink name before attempting to
8479         create a symlink!
8480
8481         * options.h (struct options): Renamed print_server_response to
8482         server_response.
8483
8484         * ftp.c (rel_constr): Removed.
8485         (ftp_retrieve_list): Don't use it.
8486         (ftp_retrieve_list): Use opt.retr_symlinks.
8487
8488 1996-11-24  Hrvoje Niksic  <hniksic@srce.hr>
8489
8490         * main.c (main): New option retr_symlinks.
8491
8492         * url.c (convert_links): Print verbose message.
8493
8494 1996-11-24  Hrvoje Niksic  <hniksic@srce.hr>
8495
8496         * http.c (http_loop): Reset newloc in the beginning of function;
8497         would cause FMR in retrieve_url.
8498
8499 1996-11-23  Hrvoje Niksic  <hniksic@srce.hr>
8500
8501         * recur.c (convert_all_links): Find the URL of each HTML document,
8502         and feed it to get_urls_html; would bug out.
8503         (convert_all_links): Check for l2 instead of dl; removed dl.
8504
8505         * url.c (convert_links): Don't refer to freed newname.
8506
8507         * recur.c (recursive_retrieve): Add this_url to urls_downloaded.
8508
8509         * main.c (main): Print the OS_TYPE in the debug output, too.
8510
8511         * recur.c (recursive_retrieve): Check for opt.delete_after.
8512
8513         * main.c (main): New option delete-after.
8514
8515         * init.c (setval): Cleaned up.
8516
8517 1996-11-21  Hrvoje Niksic  <hniksic@srce.hr>
8518
8519         * Makefile.in (wget): Make `wget' the default target.
8520
8521         * ftp.c (ftp_loop_internal): Move noclobber checking out of the
8522         loop.
8523         (ftp_retrieve_list): Warn about non-matching sizes.
8524
8525         * http.c (http_loop): Made -nc non-dependent on opt.recursive.
8526
8527         * init.c (setnum): Renamed from setnuminf; New argument flags.
8528         (setval): Use it.
8529
8530         * main.c (main): Sorted the options.
8531         (main): New option --wait.
8532
8533 1996-11-21  Shawn McHorse  <riffraff@txdirect.net>
8534
8535         * html.c (htmlfindurl): Reset s->in_quote after getting out of
8536         quotes.
8537
8538 1996-11-20  Hrvoje Niksic  <hniksic@srce.hr>
8539
8540         * version.c: Changed version to 1.4.2.
8541
8542 1996-11-20  Hrvoje Niksic  <hniksic@srce.hr>
8543
8544         * version.c: Released 1.4.1.
8545
8546         * html.c (html_quote_string): New function.
8547         (ftp_index): Use it.
8548         (htmlfindurl): A more gentle ending debug message.
8549
8550         * ftp.c (ftp_loop): Check for opt.htmlify.
8551
8552         * init.c: New command htmlify.
8553
8554         * ftp.c (getftp): Nicer error messages, with `'-encapsulated
8555         strings.
8556         (ftp_loop): Print size of index.html.
8557
8558         * init.c (setval): Implement "styles".
8559
8560         * main.c (main): New option dotstyle.
8561
8562 1996-11-19  Hrvoje Niksic  <hniksic@srce.hr>
8563
8564         * ftp.c (getftp): Close the master socket in case of errors, after
8565         bindport().
8566
8567         * connect.c (bindport): Initialize msock to -1.
8568
8569         * ftp.c (getftp): Initialize dtsock to -1.
8570
8571         * connect.c (closeport): Don't close sock if sock == -1.
8572
8573 1996-11-18  Hrvoje Niksic  <hniksic@srce.hr>
8574
8575         * init.c (setnuminf): Nuked default value -- just leave unchanged.
8576         (setval): Don't send default values.
8577         (defaults): Use DEFAULT_TIMEOUT -- aaargh.
8578
8579         * options.h (struct options): Use long for dot_bytes.
8580
8581         * init.c (setquota): Renamed to setbytes.
8582         (setval): Use setbytes on DOTBYTES.
8583
8584 1996-11-17  Hrvoje Niksic  <hniksic@srce.hr>
8585
8586         * ftp.c (getftp): Initialize con->dltime.
8587
8588         * recur.c (recursive_retrieve): Use same_host instead of
8589         try_robots; simply load robots_txt whenever the host is changed.
8590         (recursive_retrieve): Free forbidden before calling parse_robots.
8591
8592 1996-11-16  Hrvoje Niksic  <hniksic@srce.hr>
8593
8594         * retr.c (show_progress): Use them.
8595
8596         * options.h (struct options): New options dot_bytes, dots_on_line
8597         and dot_spacing.
8598
8599 1996-11-16  Mark Boyns  <boyns@sdsu.edu>
8600
8601         * recur.c (recursive_retrieve): Retrieve directories regardless of
8602         acc/rej rules; check for empty u->file.
8603
8604 1996-11-14  Hrvoje Niksic  <hniksic@srce.hr>
8605
8606         * init.c (setval): Use it.
8607
8608         * utils.c (merge_vecs): New function.
8609
8610         * init.c (setval): Reset the list-type functions when encountering
8611         "".
8612
8613 1996-11-14  Shawn McHorse  <riffraff@txdirect.net>
8614
8615         * recur.c (recursive_retrieve): Use base_url instead of this_url
8616         for no_parent.
8617
8618 1996-11-14  Shawn McHorse  <riffraff@txdirect.net>
8619
8620         * html.c (htmlfindurl): Reset s->in_quote after exiting the quote.
8621
8622 1996-11-13  Hrvoje Niksic  <hniksic@srce.hr>
8623
8624         * utils.c (sepstring): Rewrote; don't use strtok.
8625
8626         * recur.c (recursive_retrieve): Enter assorted this_url to slist
8627         when running the first time.
8628         (retrieve_robots): Warn to ignore errors when robots are loaded.
8629
8630         * utils.c (load_file): Moved from url.c.
8631
8632         * http.c: Made static variables const too in h* functions.
8633
8634         * main.c (main): Renamed --continue-ftp to --continue.
8635
8636         * recur.c (recursive_retrieve): Use it.
8637
8638         * utils.c (frontcmp): New function.
8639
8640         * url.c (accdir): New function.
8641
8642         * html.c (htmlfindurl): Recognize <area href=...>.
8643
8644         * ftp.c (ftp_retrieve_dirs): Implemented opt.includes.
8645
8646         * init.c (setval): Free the existing opt.excludes and
8647         opt.includes, if available.
8648
8649         * main.c (main): New option -I.
8650
8651 1996-11-12  Hrvoje Niksic  <hniksic@srce.hr>
8652
8653         * ftp.c (ftp_retrieve_glob): Do not weed out directories.
8654
8655         * version.c: Changed version to 1.4.1.
8656
8657 1996-11-11  Hrvoje Niksic  <hniksic@srce.hr>
8658
8659         * version.c: Released 1.4.0.
8660
8661 1996-11-10  Hrvoje Niksic  <hniksic@srce.hr>
8662
8663         * main.c (main): Free com and val after parse_line.
8664         (printhelp): Reorder the listing.
8665
8666         * http.c: More robust header parsing.
8667
8668         * http.c: Allow any number of spaces, or no spaces, precede ':'.
8669         (hskip_lws): New function.
8670         (haccepts_bytes): New function.
8671         (gethttp): Use it.
8672
8673         * init.c (setval): Check header sanity.
8674         (setval): Allow resetting of headers.
8675
8676 1996-11-10  Hrvoje Niksic  <hniksic@srce.hr>
8677
8678         * http.c (http_loop): Don't use has_wildcards.
8679
8680         * http.c (gethttp): Free all_headers -- would leak.
8681
8682         * recur.c (recursive_retrieve): Initialize depth to 1 instead of
8683         0 -- this fixes a long-standing bug in -rl.
8684
8685 1996-11-09  Hrvoje Niksic  <hniksic@srce.hr>
8686
8687         * ftp.c: Use -1 as "impossible" value for con->fd.
8688
8689         * url.h (URL_SEPARATOR): Don't treat `*' and `+' as separators.
8690
8691         * init.c (parse_line): Use isalpha.
8692
8693         * ftp-unix.c: Use HAVE_UNISTD_H.
8694
8695         * mtch.c (has_wildcards): Don't match \.
8696
8697         * http.c (http_loop): Warn on HTTP wildcard usage.
8698
8699 1996-11-08  Hrvoje Niksic  <hniksic@srce.hr>
8700
8701         * url.c (url_filename): Do not create numbered suffixes if
8702         opt.noclobber -- would bug out on -nc.
8703
8704 1996-11-07  Hrvoje Niksic  <hniksic@srce.hr>
8705
8706         * recur.c (parse_robots): Don't chuck out the commands without
8707         arguments (`Disallow:<empty>' didn't work).
8708         (parse_robots): Compare versions lowercase.
8709         (parse_robots): Match on base_version, not version_string!
8710         (parse_robots): Handle comments properly.
8711         (parse_robots): Match versions in a sane way.
8712
8713         * init.c: Print nicer error messages.
8714
8715         * version.c: Changed version to 1.4.0.
8716
8717 1996-11-06  Hrvoje Niksic  <hniksic@srce.hr>
8718
8719         * version.c: Released 1.4.0-test2.
8720
8721         * init.c (run_wgetrc): Close fp.
8722
8723         * ftp.c (ftp_retrieve_dirs): Allocate the correct length for
8724         u->dir.
8725
8726 1996-11-06  Hrvoje Niksic  <hniksic@srce.hr>
8727
8728         * init.c (setquota): Allow inf as quota specification.
8729
8730 1996-11-05  Hrvoje Niksic  <hniksic@srce.hr>
8731
8732         * ftp.c (ftp_retrieve_dirs): Return QUOTEXC if quota exceeded.
8733         (ftp_retrieve_glob): Return QUOTEXC on quota exceeded.
8734
8735         * main.c (main): Check for quota by comparison with downloaded
8736         stuff, not from status.
8737
8738         * connect.c (select_fd): Should compile on HPUX without warnings now.
8739
8740         * ftp.c (ftp_get_listing): Check whether ftp_loop_internal
8741         returned RETROK.
8742
8743 1996-11-04  Hrvoje Niksic  <hniksic@srce.hr>
8744
8745         * ftp.c (ftp_retrieve_glob): Print the pattern nicely.
8746         (getftp): Return FTPRETRINT on control connection error.
8747
8748         * html.c (htmlfindurl): Recognize <embed src=...> and
8749         <bgsound src=...>.
8750         (ftp_index): Handle username and password correctly.
8751
8752         * main.c (main): Made `-np' a synonim for --no-parent.
8753
8754 1996-11-02  Hrvoje Niksic  <hniksic@srce.hr>
8755
8756         * ftp.c (ftp_loop): Check for opt.ftp_glob too before calling
8757         ftp_retrieve_glob.
8758
8759         * version.c: Changed version to 1.4.0-test2.
8760
8761 1996-11-02  Hrvoje Niksic  <hniksic@srce.hr>
8762
8763         * version.c: Released 1.4.0-test1.
8764
8765         * url.c (str_url): Don't use sprintf when creating %2F-prefixed
8766         directory.
8767         (convert_links): Removed definition of make_backup.
8768
8769         * http.h: Removed definition of MAX_ERROR_LENGTH.
8770
8771         * host.c (ftp_getaddress): Check for "(none)" domains.
8772
8773         * ftp.c (ftp_retrieve_dirs): Docfix.
8774
8775         * http.c (gethttp): Use ou->referer instead of u->referer.
8776
8777         * retr.c (retrieve_url): Reset u to avoid freeing pointers twice;
8778         this was known to cause coredumps on Linux.
8779
8780         * html.c (ftp_index): Cast the argument to local_time to time_t *.
8781
8782 1996-11-01  Hrvoje Niksic  <hniksic@srce.hr>
8783
8784         * connect.c (select_fd): Use exceptfds -- once and for all.
8785
8786         * retr.c (retrieve_from_file): Free filename after
8787         recursive_retrieve.
8788         (retrieve_from_file): Send RFIRST_TIME to recursive_retrieve on
8789         first-time retrieval.
8790         (retrieve_from_file): Return uerr_t; new argument, count.
8791         (retrieve_from_file): Break on QUOTEXC.
8792
8793         * init.c (setquota): Fixed a bug that caused rejection of
8794         non-postfixed values..
8795
8796 1996-10-30  Hrvoje Niksic  <hniksic@srce.hr>
8797
8798         * version.c: Changed name to wget.
8799
8800         * connect.c (iread): Smarter use of select.
8801         (select_fd): Set errno on timeout.  If not timeout, return 1
8802         instead of 0.
8803
8804 1996-10-29  Hrvoje Niksic  <hniksic@srce.hr>
8805
8806         * ftp.c (ftp_loop_internal): Don't use con->cmd before
8807         establishing it.
8808
8809 1996-10-26  Hrvoje Niksic  <hniksic@srce.hr>
8810
8811         * http.c (gethttp): Send correct referer when using proxy.
8812         (gethttp): Use struct urlinfo ou to access the relevant data; send
8813         correct authorization in all cases.
8814
8815         * host.c (same_host): Use skip_uname to skip username and
8816         password.
8817
8818         * url.c (skip_uname): New function.
8819         (parseurl): Use it.
8820
8821         * host.c (same_host): Do not assume HTTP -- same_host should now
8822         be totally foolproof.
8823
8824         * url.c (skip_proto): New function.
8825         (parse_uname): Use it.
8826
8827         * http.c (gethttp): Create local user and passwd from what is
8828         given.
8829
8830         * url.c (parseurl): Check for HTTP username and password too.
8831
8832 1996-10-25  Hrvoje Niksic  <hniksic@srce.hr>
8833
8834         * config.h.in: Removed #define gethostbyname R...
8835
8836 1996-10-22  Hrvoje Niksic  <hniksic@srce.hr>
8837
8838         * version.c: Changed version to 1.4.0-test1.
8839
8840 1996-10-21  Hrvoje Niksic  <hniksic@srce.hr>
8841
8842         * version.c: "Released" 1.4b29.
8843
8844         * recur.c (recursive_retrieve): Check for no_parent.
8845
8846         * init.c (setval): Option update.
8847
8848         * main.c (main): New option no-parent.
8849
8850         * options.h (struct options): New variable no_parent.
8851
8852         * recur.c (recursive_retrieve): Only files are checked for
8853         opt.accepts and opt.rejects.
8854         (recursive_retrieve): Check directories for opt.excludes.
8855         (recursive_retrieve): Make the dir absolute when checking
8856         opt.excludes.
8857
8858         * html.c (htmlfindurl): Recognize <applet code=...> and <script
8859         src=...>
8860
8861 1996-10-18  Hrvoje Niksic  <hniksic@srce.hr>
8862
8863         * ftp.c (getftp): Do not line-break assert entries at all.
8864         (ftp_retrieve_dirs): docfix.
8865
8866         * connect.c (select_fd): Use fd + 1 as nfds.
8867
8868         * version.c: Changed version to 1.4b29.
8869
8870 1996-10-18  Hrvoje Niksic  <hniksic@srce.hr>
8871
8872         * version.c: "Released" 1.4b28.
8873
8874         * ftp.c (ftp_loop_internal): Check whether f->size == len and
8875         don't continue the loop if it is.
8876         (ftp_get_listing): Remove list_filename on unsuccesful loop.
8877
8878 1996-10-17  Hrvoje Niksic  <hniksic@srce.hr>
8879
8880         * ftp.c (ftp_loop_internal): Use strcpy to initialize tmp.
8881         (getftp): Do not use multiline assert.
8882
8883         * http.c (hparsestatline): Use mjr and mnr instead of major and
8884         minor, which don't compile on Ultrix.
8885         (http_loop): Use strcpy() to initialize tmp.
8886
8887         * all: Geturl -> Fetch
8888
8889 1996-10-17  Hrvoje Niksic  <hniksic@srce.hr>
8890
8891         * recur.c (parse_robots): Fixed an off-by-one bug when looking for
8892         ':'.
8893
8894         * html.c (htmlfindurl): Fixed several possible off-by-one bugs by
8895         moving `bufsize &&' to the beginning of each check in for-loops.
8896
8897         * recur.c (parse_robots): Close fp on exit.
8898
8899         * url.c (mymkdir): Check for each directory before creating.
8900
8901 1996-10-16  Hrvoje Niksic  <hniksic@srce.hr>
8902
8903         * version.c: Changed version to 1.4b28.
8904
8905 1996-10-16  Hrvoje Niksic  <hniksic@srce.hr>
8906
8907         * version.c: "Released" 1.4b27.
8908
8909         * init.c (parse_line): Use isspace.
8910         (parse_line): Free *com on all errors.
8911
8912         * ftp.c (ftp_loop): Change FTPOK to RETROK before exiting.
8913         (delelement): Use next instead of f->next and prev instead of
8914         f->prev.
8915         (delelement): Free the members of the deleted element.
8916
8917         * http.c (http_loop): Do not return RETROK on code != 20x.
8918
8919         * init.c (cleanup): Free opt.user_header.
8920         (cleanup): Free opt.domains.
8921
8922         * url.c (freelists): Moved to cleanup().
8923
8924         * http.c (hparsestatline): Docfix.
8925
8926         * main.c (main): Return with error status on unsuccesful
8927         retrieval.
8928
8929         * init.c (setval): Do not remove listing when mirroring.
8930
8931         * url.c (url_filename): Use opt.fileprefix.
8932
8933         * ftp.c (ftp_get_listing): Use url_filename to get filename for
8934         .listing.
8935
8936         * main.c (main): New option: -rn.
8937
8938 1996-10-15  Hrvoje Niksic  <hniksic@srce.hr>
8939
8940         * Makefile.in (RM): Added RM = rm -f.
8941
8942         * host.c (clean_hosts): New function.
8943         (free_hlist): Just free the list, no reset.
8944
8945         * version.c: Changed version to 1.4b27.
8946
8947 1996-10-13  Hrvoje Niksic  <hniksic@srce.hr>
8948
8949         * version.c: "Released" 1.4b26.
8950
8951         * retr.c (retrieve_from_file): If call get_urls_html with
8952         opt.spider to make it silent in spider mode.
8953
8954         * url.c (str_url): Use CLEANDUP instead of URL_CLEANSE.
8955
8956         * url.h (CLEANDUP): New macro.
8957
8958         * http.c (gethttp): Fixed a bug that freed location only when it
8959         was NULL.
8960
8961         * retr.c (retrieve_url): Free url if it will not be stored,
8962         i.e. newloc is NULL.
8963
8964         * html.c (htmlfindurl): Handle exiting from quotes correctly; the
8965         old version would bug out on <a href="x#a"href="y">.
8966
8967         * html.h (state_t): New member in_quote.
8968
8969         * html.c (htmlfindurl): Free s->attr at the beginning of
8970         attr-loop.
8971
8972         * recur.c (recursive_retrieve): Recognize RCLEANUP.
8973         (tried_robots): Make hosts a global variable.
8974         (recursive_retrieve): Free constr after URL host optimization.
8975         (tried_robots): Free urlinfo before exiting.
8976
8977         * utils.c (free_slist): New function.
8978
8979         * recur.c (recursive_retrieve): Use flags to add cleanup
8980         possibility.
8981
8982         * main.c (main): Free filename after recursive_retrieve.
8983
8984         * http.c (gethttp): Store successful responses too.
8985
8986 1996-10-12  Hrvoje Niksic  <hniksic@srce.hr>
8987
8988         * all: Constified the whole source.  This required some minor
8989         changes in many functions in url.c, possibly introducing bugs -- I
8990         hope not.
8991
8992         * ftp-basic.c: Removed last_respline.
8993
8994         * http.c (gethttp): Free type.
8995
8996         * host.c (same_host): Free real1 and real2.
8997
8998         * main.c (main): New option --spider.
8999
9000         * retr.c (get_contents): Don't reset errno.
9001
9002         * main.c (main): Sorted the options.
9003
9004         * connect.c (iread): Set errno to ETIMEDOUT only if it was left
9005         uninitialized by select().
9006
9007         * http.c (http_loop): Print the time when the connection is
9008         closed.
9009         (gethttp): Debug-print the HTTP request.
9010
9011 1996-10-11  Hrvoje Niksic  <hniksic@srce.hr>
9012
9013         * connect.c (iread): Do not try reading after timeout.
9014
9015         * main.c (main): Would bug out on -T.
9016
9017         * connect.c (select_fd): Do not use exceptfds.
9018         (iread): Set ETIMEDOUT on select_fd <= 0.
9019
9020         * version.c: Changed version to 1.4b26.
9021
9022 1996-10-10  Hrvoje Niksic  <hniksic@srce.hr>
9023
9024         * version.c: "Released" 1.4b25.
9025
9026         * ftp-unix.c (ftp_parse_unix_ls): Ignore lines without file name
9027         or link name.
9028
9029         * http.c (gethttp): Add errcode to struct hstat.
9030         (http_loop): Use it.
9031
9032         * url.c (no_proxy_match): Simplify using char** for no_proxy.
9033
9034         * options.h (struct options): Make opt.no_proxy a vector.
9035
9036         * utils.c (sepstring): Use !*s instead of !strlen(s).
9037
9038         * init.c (setval): Set opt.maxreclevel to 0 on --mirror.
9039         (getperms): Use ISODIGIT instead of isdigit.
9040
9041         * ftp.c (getftp): Print time.
9042
9043         * main.c (main): Use legible output of downloaded quantity.
9044
9045         * ftp.c (getftp): Use elapsed_time().
9046         (ftp_loop_internal): Use rate().
9047
9048         * http.c (http_loop): Add download ratio output; Use rate().
9049
9050         * utils.c (rate): New function.
9051
9052 1996-10-09  Hrvoje Niksic  <hniksic@srce.hr>
9053
9054         * http.c (http_loop): Use timer.
9055
9056         * ftp.c: Split to ftp-basic.c and ftp.c
9057
9058         * utils.c (reset_timer): New function.
9059         (elapsed_time): New function.
9060
9061         * retr.c (show_progress): Make bytes_in_line and offs long; should
9062         work on 16-bit machines.
9063
9064 1996-10-08  Hrvoje Niksic  <hniksic@srce.hr>
9065
9066         * url.c (in_acclist): New argument backward.
9067
9068         * ftp.c (ftp_retrieve_glob): Use acceptable() to determine whether
9069         a file should be retrieved according to suffix.
9070         (ftp_get_listing): Check the return value of unlink; Do not call
9071         ftp_retrieve_dirs if depth reached maxreclevel.
9072         (ftp_retrieve_dirs): Check whether the directory is in
9073         exclude-list.
9074
9075         * main.c (main): Print the version number at the beginning of
9076         DEBUG output.
9077         (main): Use strrchr when creating exec_name.
9078
9079         * ftp.c (ftp_retrieve_glob): Do not close control connection.
9080
9081         * version.c: Changed version to 1.4b25.
9082
9083 1996-10-07  Hrvoje Niksic  <hniksic@srce.hr>
9084
9085         * version.c: "Released" 1.4b24.
9086
9087         * Makefile.in: Rewrite.
9088
9089         * ftp.c (ftp_loop_internal): Likewise.
9090
9091         * retr.c (time_str): Check for failed time().
9092
9093         * html.c (htmlfindurl): Recognize <fig src> and <overlay src> from
9094         HTML3.0.
9095
9096         * retr.c (time_str): Return time_t *.
9097
9098         * connect.c (bindport): Close msock on unsuccesful bind.
9099         (bindport): The same for getsockname and listen.
9100
9101         * retr.c (retrieve_url): Allow any number of retries on
9102         proxy.
9103
9104         * http.c (gethttp): Do not treat errno == 0 as timeout.
9105         (http_loop): Likewise.
9106         (http_loop): Cosmetic changes.
9107
9108         * connect.c (iread): Set errno to ETIMEDOUT in case of timeout.
9109
9110         * retr.c (get_contents): Reset errno.
9111
9112         * ftp.c (getftp): Minor fixes.
9113
9114 1996-10-06  Hrvoje Niksic  <hniksic@srce.hr>
9115
9116         * http.c: Do not use backups.
9117
9118         * geturl.1 (WARNING): Warn that man-page could be obsolete.
9119
9120         * getopt.c (getopt_long): Moved to getopt.c
9121
9122         * geturl.texi: Enhanced.
9123
9124         * main.c (main): Use it.
9125
9126         * recur.c (convert_all_links): New function.
9127
9128         * utils.c (add_slist): New argument flags.
9129
9130         * recur.c (recursive_retrieve): Update a list of downloaded URLs.
9131         (parse_robots): Do not chuck out empty value fields.
9132         (parse_robots): Make yourself welcome on empty Disallow.
9133
9134         * version.c: Changed version to 1.4b24.
9135
9136 1996-10-06  Hrvoje Niksic  <hniksic@srce.hr>
9137
9138         * version.c: "Released" 1.4b23.
9139
9140         * ftp.c (ftp_loop_internal): Get the time after getftp.
9141
9142         * Makefile.in (install.info): New target.
9143         (install): Use it.
9144
9145         * http.c (http_loop): Fix output when doing -O.
9146
9147 1996-10-05  Hrvoje Niksic  <hniksic@srce.hr>
9148
9149         * geturl.texi: New file.
9150
9151         * main.c (main): Do not print the warnings and download summary if
9152         opt.quiet is set.
9153
9154         * version.c: Changed version to 1.4b23.
9155
9156 1996-10-05  Hrvoje Niksic  <hniksic@srce.hr>
9157
9158         * "Released" 1.4b22.
9159
9160         * atotm.c (atotm): Use True and False instead of TRUE and FALSE,
9161         to avoid redefinition warnings.
9162
9163         * host.c (store_hostaddress): Use memcpy() to copy the address
9164         returned by inet_addr.
9165
9166         * version.c: Changed version to 1.4b22.
9167
9168 1996-10-04  Hrvoje Niksic  <hniksic@srce.hr>
9169
9170         * version.c: "Released" 1.4b21.
9171
9172         * ftp-unix.c (ftp_parse_ls): Renamed to ftp_parse_unix_ls.
9173
9174         * ftp.c (ftp_port): Use conaddr.
9175         (getftp): Print the file length.
9176         (ftp_retrieve_list): Check the stamps of plain files only.
9177
9178         * connect.c (closeport): Do not call shutdown().
9179         (conaddr): New function.
9180
9181         * html.c (ftp_index): Made it dfp-aware.
9182
9183         * init.c (cleanup): New name of freemem. Close opt.dfp.
9184
9185         * ftp.c (getftp): Use opt.dfp if it is set.
9186
9187         * ftp-unix.c (ftp_parse_ls): Recognize time in h:mm format.
9188
9189         * ftp.c (ftp_retrieve_dirs): Fixed a bug that caused incorrect
9190         CWDs to be sent with recursive FTP retrievals.
9191
9192 1996-10-03  Hrvoje Niksic  <hniksic@srce.hr>
9193
9194         * recur.c (parse_robots): Made it more compliant with "official"
9195         specifications.
9196
9197         * http.c: New function.
9198
9199         * ftp-unix.c (ftp_parse_ls): Added better debug output.
9200
9201         * ftp.c (getftp): Print out the LIST in case of
9202         opt.print_server_response.
9203
9204         * version.c: Changed version to 1.4b21.
9205
9206 1996-10-01  Hrvoje Niksic  <hniksic@srce.hr>
9207
9208         * version.c: "Released" 1.4b20.
9209
9210         * README: Update.
9211
9212         * http.c (gethttp): Preset lengths of various headers instead of
9213         calculating them dynamically.
9214         (gethttp): Check for 206 partial contents.
9215
9216 1996-09-30  Hrvoje Niksic  <hniksic@srce.hr>
9217
9218         * configure.in: Set SYSTEM_GETURLRC to $libdir/geturlrc
9219
9220         * http.c (gethttp): Send the port number in the Host: header.
9221
9222 1996-09-29  Hrvoje Niksic  <hniksic@srce.hr>
9223
9224         * http.c (gethttp): Send host: header.
9225         (gethttp): Add the possibility of user-defined headers.
9226         (gethttp): Move decision about pragma: no-cache to http_loop,
9227         where it belongs.
9228         (gethttp): Pass a struct instead of enormous argument list.
9229         (http_loop): Use a new, fancier display format.
9230         (ftp_loop): Likewise.
9231
9232         * main.c: (hangup): Turn off buffering of the new log file.
9233
9234         * install-sh: Likewise.
9235
9236         * config.sub: Replace with the one in autoconf-2.10
9237
9238         * geturl.1: Update.
9239
9240         * init.c: New options httpuser and httppasswd.
9241
9242         * http.c: (base64_encode_line): New function.
9243         (gethttp): Send authentication.
9244
9245         * connect.c (make_connection): Use store_hostaddress.
9246
9247 1996-09-28  Hrvoje Niksic  <hniksic@srce.hr>
9248
9249         * host.c (store_hostaddress): New function.
9250
9251         * NEWS: Update.
9252
9253         * http.c (hgetrange): New function.
9254         (gethttp): Use ranges.
9255
9256         * utils.c (numdigit): Accept long instead of int.
9257
9258         * http.c (http_loop): Add restart capabilities.
9259
9260         * ftp.c (ftp_retrieve_glob): Fixed a bug that could cause matchres
9261         being used uninitialized.
9262         (ftp_retrieve_list): Similar fix.
9263
9264         * host.c (add_hlist): Fixed a bug that could cause cmp being used
9265         uninitialized.
9266
9267         * url.c (construct_relative): New function.
9268
9269         * recur.c (recursive_retrieve): Use it.
9270
9271         * retr.c (convert_links): New function.
9272
9273 1996-09-27  Hrvoje Niksic  <hniksic@srce.hr>
9274
9275         * url.c (free_urlpos): New function.
9276
9277         * recur.c (recursive_retrieve): Adapt.
9278
9279         * url.c (get_urls_html): Return a linked list instead of a vector.
9280
9281         * url.c (get_urls_file): Return a linked list instead of a vector.
9282
9283         * geturl.1: Update.
9284
9285         * http.c (gethttp): Implement it.
9286
9287         * init.c (setval): New option: SAVEHEADERS
9288
9289         * ftp.c (ftp_loop_internal): Do not set restval if listing is to
9290         be retrieved. Lack of this test caused bugs when the connection
9291         was lost during listing.
9292
9293         * retr.c (retrieve_url): Fixed a bug that caused
9294         coredumps. *newloc is now reset by default.
9295         (retrieve_url): Lift the twenty-tries limit on proxies.
9296
9297         * version.c: Changed version to 1.4b20.
9298
9299 1996-09-20  Hrvoje Niksic  <hniksic@srce.hr>
9300
9301         * version.c: "Released" 1.4b19.
9302
9303 1996-09-19  Hrvoje Niksic  <hniksic@srce.hr>
9304
9305         * ftp.c (ftp_loop_internal): Renamed from ftp_1fl_loop.
9306         (getftp): Changed prototype to accept ccon *.
9307
9308 1996-09-17  Hrvoje Niksic  <hniksic@srce.hr>
9309
9310         * ftp.c (ftp_retrieve_list): Fixed a bug that caused setting
9311         incorrect values to files pointed to by symbolic links.
9312         (ftp_1fl_loop): Do not count listings among the downloaded URL-s.
9313
9314 1996-09-16  Hrvoje Niksic  <hniksic@srce.hr>
9315
9316         * url.c (mkstruct): Do not prepend "./" in front of a pathname.
9317
9318         * main.c (main): New option: --user-agent.
9319
9320         * geturl.1: Ditto.
9321
9322         * init.h: Ditto.
9323
9324         * init.c (setval): Ditto.
9325
9326         * main.c (main): Rename "server-headers" to "server-response".
9327
9328         * ftp-unix.c (ftp_parse_ls): Check for asterisks at the end of
9329         executables in 'ls -F' listings.
9330
9331 1996-09-15  Hrvoje Niksic  <hniksic@srce.hr>
9332
9333         * url.c (parseurl): Remove realloc() and sprintf().
9334         (str_url): Get rid of sprintf().
9335
9336         * recur.c (recursive_retrieve): Enable FTP recursion through proxy
9337         servers.
9338
9339         * url.h (URL_CLEANSE): Made it else-resistant.
9340         (USE_PROXY): New macro.
9341
9342 1996-09-14  Hrvoje Niksic  <hniksic@srce.hr>
9343
9344         * NEWS: Update.
9345
9346         * version.c: Changed version to 1.4b19.
9347
9348 1996-09-14  Hrvoje Niksic  <hniksic@srce.hr>
9349
9350         * version.c: "Released" 1.4b18.
9351
9352         * url.c: Made it reallocate space exponentially.
9353
9354 1996-09-14  Drazen Kacar  <dave@fly.cc.fer.hr>
9355
9356         * html.c (htmlfindurl): Added <frame src> and <iframe src> among
9357         the list of stuff to fetch.
9358
9359 1996-09-13  Hrvoje Niksic  <hniksic@srce.hr>
9360
9361         * url.c (get_urls_html): Fixed a bug that caused SIGSEGV's with
9362         -Fi.
9363
9364         * html.c (htmlfindurl): Rewrite.
9365
9366         * http.c (gethttp): Use opt.proxy_cache.
9367
9368         * main.c (main): Added --cache option.
9369
9370         * ftp.c (ftp_response): Print server response if opt.print_server
9371         response is set.
9372         (getftp): Print newlines after each request if the server response
9373         is to be printed.
9374         (ftp_response): Copy the last response line to last_respline.
9375
9376         * http.c (gethttp): Add Pragma: nocache for retried
9377         proxy-retrievals.
9378
9379         * ftp.c (getftp): Use it.
9380
9381         * retr.c (buf_discard): New function.
9382
9383         * ftp.c (ftp_response): Use buf_readchar().
9384         (getftp): Flush the control connection buffer before calling
9385         get_contents().
9386
9387         * retr.c (buf_readchar): New function.
9388         (buf_flush): New function.
9389         (get_contents): Use buf_readchar() instead of read(x, x, 1).
9390         (get_contents): Use buf_flush.
9391
9392 1996-09-12  Hrvoje Niksic  <hniksic@srce.hr>
9393
9394         * ftp.c: Incorporate changes to ftp_response.
9395
9396         * ftp.c (ftp_response): Allocate the server response dynamically,
9397         as in read_whole_line and fetch_next_header.
9398
9399         * utils.c (read_whole_line): Fixed a bug that prevented reading
9400         the last line if it is not \n-terminated. Also fixed a possible
9401         memory overflow.
9402
9403         * http.c (fetch_next_header): Return malloc-ed string as large as
9404         needed.
9405         (gethttp): Use new fetch_next_header.
9406
9407 1996-09-12  Hrvoje Niksic  <hniksic@srce.hr>
9408
9409         * http.c (hgetlen): Compute the header length the first time only.
9410         (hgettype): Ditto.
9411         (hgetlocation): Ditto.
9412         (hgetmodified): Ditto.
9413
9414 1996-09-11  Hrvoje Niksic  <hniksic@srce.hr>
9415
9416         * sample.geturlrc: Update.
9417
9418 1996-09-10  Hrvoje Niksic  <hniksic@srce.hr>
9419
9420         * http.c (http_loop): Ditto.
9421
9422         * ftp.c (getftp): Open the output file as binary.
9423
9424         * version.c: Changed version to 1.4b18.
9425
9426 1996-09-10  Hrvoje Niksic  <hniksic@srce.hr>
9427
9428         * version.c: "Released" 1.4b17.
9429
9430         * ftp-unix.c (ftp_parse_ls): If unable to open file, return NULL
9431         instead of failed assertion.
9432
9433 1996-09-09  Hrvoje Niksic  <hniksic@srce.hr>
9434
9435         * ftp.c (ftp_get_listing): Add a numbered suffix to LIST_FILENAME
9436         if a file of that name already exists.
9437
9438 1996-09-05  Hrvoje Niksic  <hniksic@srce.hr>
9439
9440         * ftp.c (ftp_1fl_loop): Handler FTPPORTERR and FOPENERR correctly.
9441
9442         * config.h.in: Define gethostbyname as Rgethostbyname when using
9443         Socks.
9444
9445         * configure.in: Check for -lresolv if using Socks.
9446
9447         * version.c: Changed version to 1.4b17.
9448
9449 1996-07-15  Hrvoje Niksic  <hniksic@srce.hr>
9450
9451         * version.c: "Released" 1.4b16.
9452
9453         * http.c (gethttp): More intelligent check for first line of HTTP
9454         response.
9455         (gethttp): Would bug out on time-stamping.
9456
9457         * version.c: Changed version to 1.4b16.
9458
9459 1996-07-11  Hrvoje Niksic  <hniksic@srce.hr>
9460
9461         * version.c: Released 1.4b15.
9462
9463         * http.c (http_loop): Print \n after the loop entry, not before.
9464
9465         * url.c (url_filename): Use ISDOT.
9466
9467         * url.h (ISDOT): New macro.
9468
9469         * recur.c (recursive_retrieve): Change only opt.recursive for
9470         following FTP.
9471
9472 1996-07-11  Antonio Rosella <antonio.rosella@agip.it>
9473
9474         * socks/geturl.cgi: Fixed version No.
9475
9476         * socks/download-netscape.html: Ditto.
9477
9478         * socks/download.html: Changed socks.html to download.html.
9479
9480 1996-07-11  Hrvoje Niksic  <hniksic@srce.hr>
9481
9482         * url.c (url_filename): Check for opt.dirstruct instead for
9483         opt.recursive && opt.dirstruct.
9484
9485         * init.c (defaults): Ditto.
9486         (defaults): Reset dirstruct by default.
9487         (setval): Set opt.dirstruct whenever setting recursive.
9488
9489         * init.h: Removed FORCEDIRHIER.
9490
9491         * INSTALL: Added -L to socks-description.
9492
9493         * version.c: Changed version to 1.4b15.
9494
9495 1996-07-10  Hrvoje Niksic  <hniksic@srce.hr>
9496
9497         * version.c: "Released" 1.4b14.
9498
9499         * geturl.1: Update AUTHOR to include Rosella as contributor.
9500
9501         * NEWS: Update.
9502
9503         * socks/geturl.cgi: Simplified command creation, nuked <blink>.
9504
9505         * socks/geturl.cgi: Wrap nutscape extensions within if $netscape.
9506         (cal_time): Fix == to eq.
9507
9508         * socks/geturl.cgi: GPL-ized with permission of A. Rosella.
9509
9510         * geturl.1 (hostname): Moved URL CONVENTIONS to the beginning.
9511
9512         * Makefile.in: Use @VERSION@.
9513
9514         * configure.in: Check version from version.c.
9515
9516         * socks/geturl.cgi: Changed /pub/bin/perl to /usr/bin/perl.
9517
9518         * socks/download.html: Created from download-netscape.html, made
9519         HTML-2.0 compliant.
9520
9521         * recur.c (recursive_retrieve): Set opt.force_dir_hier when
9522         following FTP links from recursions.
9523
9524 1996-07-09  Hrvoje Niksic  <hniksic@srce.hr>
9525
9526         * url.c (mymkdir): Fixed a bug that prevented mymkdir() to create
9527         absolute directories correctly.
9528
9529         * version.c: Changed version to 1.4b14.
9530
9531 1996-07-09  Hrvoje Niksic  <hniksic@srce.hr>
9532
9533         * version.c: "Released" 1.4b13.
9534
9535         * url.c (make_backup): New function.
9536
9537         * http.c (http_loop): Make a backup copy of the local file (using
9538         rename(2)) before opening it.
9539
9540         * main.c (main): Added --backups.
9541
9542         * host.c (ftp_getaddress): Bail out on failed mycuserid().
9543         (ftp_getaddress): Check for leading dot on MY_DOMAIN.
9544         (ftp_getaddress): Check for empty, null or (null) domain.
9545
9546         * url.c (get_urls_html): If this_url is NULL, the base must have a
9547         protocol.
9548         (parseurl): Use has_proto.
9549
9550         * retr.c (retrieve_url): Warn when proxy is used with more than 20
9551         retries.
9552
9553         * url.c (mkstruct): Create the directory (calling mymkdir()) only
9554         if it is not already there.
9555         (has_proto): New function.
9556         (get_urls_html): Eliminate the remaining call to findurl -- use
9557         has_proto.
9558
9559         * geturl.1: Ditto.
9560
9561         * main.c: Change -X to -x.
9562
9563         * url.c (url_filename): Simplify creation of filename if
9564         prefix_files is set.
9565         (url_filename): Simplify everything. And I do mean *everything*.
9566         (mkstruct): Add dir_prefix before hostname.
9567         (path_simplify): Fixed a bug that caused writing outside the path
9568         string in case of "." and ".." path strings.
9569
9570 1996-07-06  Hrvoje Niksic  <hniksic@srce.hr>
9571
9572         * init.c: Added --mirror.
9573
9574         * main.c (main): Added -X to force saving of directory hierarchy.
9575
9576         * ftp.c (ftp_retrieve_list): Added recursion depth counter.
9577         (ftp_retrieve_list): Check whether quota is exceeded.
9578
9579         * url.c (get_urls_html): Skip leading blanks for absolute URIs.
9580
9581         * http.c (gethttp): Use referer if present.
9582
9583         * recur.c (recursive_retrieve): Set u->referer before calling
9584         retrieve_url.
9585
9586         * url.c (newurl): Use memset to nullify the struct members.
9587         (freeurl): Free the referer field too.
9588
9589         * url.h: Added referer to urlinfo.
9590
9591         * geturl.1: Updated the manual to document some of the new features.
9592
9593         * utils.c (numdigit): Moved from url.c.
9594
9595         * README: Rewritten.
9596
9597         * config.h.in: Add the support for socks.
9598
9599         * configure.in: Add the support for socks.
9600
9601         * url.c (url_filename): If the dir_prefix is ".", work with just
9602         the file name.
9603         (url_filename): Do not look for .n extensions if timestamping if
9604         turned on.
9605
9606         * retr.c (show_progress): Skip the over-abundant restval data, and
9607         print the rest of it with ',' instead of '.'.
9608
9609 1996-07-05  Hrvoje Niksic  <hniksic@srce.hr>
9610
9611         * retr.c (show_progress): Changed second arg. to long (as it
9612         should be).
9613         (show_progress): Moved to retr.c.
9614         (get_contents): Moved to retr.c.
9615
9616         * version.c: Change version to 1.4b13.
9617
9618 1996-07-05  Hrvoje Lacko <hlacko@fly.cc.fer.hr>
9619
9620         * url.c (in_acclist): Would return after the first suffix.
9621
9622 1996-07-04  Hrvoje Niksic  <hniksic@srce.hr>
9623
9624         * version.c: "Released" 1.4b12.
9625
9626         * url.c (path_simplify): More kludgifications.
9627         (get_urls_html): Use new parameters for htmlfindurl.
9628
9629         * html.c: Removed memorizing "parser states", since the new
9630         organization does not require them.
9631
9632         * init.c (run_geturlrc): Use read_whole_line.
9633
9634         * ftp-unix.c (ftp_parse_ls): Use read_whole_line.
9635
9636         * recur.c (parse_robots): Use read_whole_line.
9637
9638         * utils.c (read_whole_line): New function.
9639
9640         * recur.c (tried_robots): Use add_slist/in_slist, *much* cleaner.
9641
9642         * host.c (ngethostbyname): Call inet_addr just once. Yet to be
9643         tested on OSF and Ultrix.
9644         (add_hlist): New function.
9645         (free_hlist): New function.
9646         (search_host): New function.
9647         (search_address): New function.
9648         (realhost): Use search_host, search_address and add_hlist.
9649         (same_host): Replaced realloc() with strdupdelim(), made
9650         case-insensitive, fixed a memory leak.
9651
9652         * html.c (ftp_index): Fixed tm_min and tm_sec to be tm_hour and
9653         tm_min, like intended.
9654
9655         * version.c: Change user agent information to
9656         Geturl/version.
9657
9658 1996-07-03  Hrvoje Niksic  <hniksic@srce.hr>
9659
9660         * utils.c: Renamed nmalloc.c to utils.c, .h likewise.
9661
9662         * url.c (acceptable): Always accept directories.
9663
9664         * ftp-unix.c (ftp_parse_ls): Support brain-damaged "ls -F"-loving
9665         servers by stripping trailing @ from symlinks and trailing / from
9666         directories.
9667
9668         * ftp.c (ftp_loop): Debugged the "enhanced" heuristics. :-)
9669
9670         * url.c (skip_url): Use toupper instead of UCASE.
9671
9672         * host.c (sufmatch): Made it case-insensitive.
9673
9674         * url.c (match_backwards_or_pattern): Fixed i == -1 to j == -1.
9675         (match_backwards): New function, instead of
9676         match_backwards_or_pattern.
9677
9678         * recur.c (recursive_retrieve): Increased performance by
9679         introducing inl, which reduces number of calls to in_slist to only
9680         one.
9681
9682         * ftp.c (ftp_loop): Enhanced the heuristics that decides which
9683         routine to use.
9684
9685         * main.c (printhelp): Removed the warranty stuff.
9686
9687 1996-07-02  Hrvoje Niksic  <hniksic@srce.hr>
9688
9689         * url.c (add_slist): Simplify.
9690         (match_backwards_or_pattern): New function.
9691         (in_acclist): Use match_backwards_or_pattern.
9692         (matches): Remove.
9693
9694 1996-06-30  Hrvoje Niksic  <hniksic@srce.hr>
9695
9696         * ftp.c (ftp_loop): Call ftp_index on empty file names, if not
9697         recursive.
9698
9699         * html.c (ftp_index): Fixed to work. Beautified the output.
9700
9701         * ftp.c (ftp_retrieve_glob): Another argument to control whether
9702         globbing is to be used.
9703         (ftp_retrieve_list): Compare the time-stamps of local and remote
9704         files to determine whether to download.
9705
9706 1996-06-29  Hrvoje Niksic  <hniksic@srce.hr>
9707
9708         * ftp.c (rel_constr): New function.
9709
9710         * retr.c (retrieve_from_file): Check for text/html before
9711         retrieving recursively.
9712
9713         * main.c (main): Check whether the file is HTML before going into
9714         recursive HTML retrieving.
9715
9716         * ftp.c (ftp_retrieve_list): Manage directories.
9717         (ftp_retrieve_glob): Pass all the file-types to ftp_retrieve_list.
9718         (ftp_1fl_loop): Fixed a bug that caused con->com to be incorrectly
9719         initialized, causing bugchecks in getftp to fail.
9720
9721         * configure.in: Check for symlink.
9722
9723         * ftp.c (ftp_retrieve_list): Added support for symlinks.
9724
9725         * version.c: "Released" 1.4b10.
9726
9727         * atotm.c (atotm): Redeclared as time_t.
9728
9729         * init.c: New variable "timestamping".
9730
9731         * main.c (main): New option 'N'.
9732
9733         * http.c (hgetlocation): Case-insensitive match.
9734         (hgetmodified): New function.
9735         (http_loop): Implement time-stamping.
9736
9737 1996-06-28  Hrvoje Niksic  <hniksic@srce.hr>
9738
9739         * version.c: Changed version to 1.4b10
9740
9741         * atotm.c: New file, from phttpd.
9742
9743         * options.h (struct options): New parameter timestamping.
9744
9745         * version.c: 1.4b9 "released".
9746
9747         * recur.c (recursive_retrieve): Used linked list (ulist) for
9748         faster storing of URLs.
9749
9750         * url.c (get_urls_html): Removed the old kludge with comparing the
9751         outputs of htmlfindurl and findurl.
9752         (get_urls_html): Added better protocol support here.
9753         (create_hash): Removed, as well as add_hash and in_hash.
9754         (addslist): New function.
9755         (in_slist): ditto
9756
9757         * version.c: Released 1.4b8, changed version to b9.
9758
9759 1996-06-27  Hrvoje Niksic  <hniksic@srce.hr>
9760
9761         * ftp.c (freefileinfo): New function.
9762         (delelement): New function.
9763
9764         * everywhere: GPL!
9765
9766         * ftp.c (ftp_loop): Use ccon.
9767         (ftp_retrieve_glob): Likewise.
9768
9769         * ftp.h: Define ccon, to define status of control connection.
9770
9771         * ftp.c (ftp_get_listing): New function.
9772         (ftp_retrieve_more): New function.
9773         (ftp_retrieve_glob): New function.
9774
9775 1996-06-25  Hrvoje Niksic  <hniksic@srce.hr>
9776
9777         * configure.in: Removed the search for cuserid().
9778
9779         * init.c (getmode): Renamed to getperms.
9780
9781 1996-06-24  Hrvoje Niksic  <hniksic@srce.hr>
9782
9783         * version.c: New version.
9784
9785         * main.c (hangup): New function, that handles hangup. Hangup
9786         signal now causes geturl to stop writing on stdout, and to write
9787         to a log file.
9788
9789         * ftp.c (getftp): "Released" 1.4b7.
9790
9791         * html.c (htmlfindurl): Ignore everything inside <head>...</head>.
9792         (ftp_index): Use fileinfo/urlinfo.
9793
9794         * ftp-unix.c (ftp_parse_ls): New function.
9795         (symperms): New function.
9796
9797         * ftp.c (ftp_1fl_loop): New function, to handle 1-file loops.
9798
9799         * retr.c (retrieve_url): Added FTP support.
9800
9801 1996-06-23  Hrvoje Niksic  <hniksic@srce.hr>
9802
9803         * geturl.h: Removed NOTFTP2HTML enum.
9804         Added DO_LOGIN, DO_CWD and DO_LIST. LIST_ONLY is obsolete.
9805
9806         * ftp.c (getftp): Resynched with urlinfo.
9807         (getftp): Removed HMTL-ization of index.html from getftp.
9808
9809         * version.c: 1.4b6 "released".
9810
9811         * options.h (options): New struct, to keep options in.
9812
9813         * http.c (http_loop,gethttp): Synched with proxy.
9814
9815         * retr.c (retrieve_url): Implemented proxy retrieval.
9816
9817         * main.c (main): Use retrieve_from_file.
9818
9819 1996-06-22  Hrvoje Niksic  <hniksic@srce.hr>
9820
9821         * retr.c (retrieve_from_file): New function.
9822
9823         * url.c (parseurl): Modified to return URLOK if all OK. Protocol
9824         can be found in u->proto.
9825
9826         * ftp.c (ftp_response): Fixed to accept multi-line responses as
9827         per RFC 959.
9828
9829         * recr.c (recursive_retrieve): Take newloc from retrieve_url.
9830
9831         * url.c (mymkdir): Removed the file of the same name, if one
9832         exists.
9833         (isfile): New function.
9834         (mkstruct): Fixed the '/' glitches.
9835         (path_simplify): Hacked to treat something/.. correctly.
9836
9837 1996-06-21  Hrvoje Niksic  <hniksic@srce.hr>
9838
9839         * http.c (gethttp): Close the socket after error in headers.
9840         (http_loop): HEOF no longer a fatal header.
9841
9842         * loop.c (retrieve_url): When dt is NULL, do not modify it. This
9843         simplifies the syntax of calling retrieve_url.
9844
9845         * recr.c (recursive_retrieve): Modified to use get_urls_html.
9846
9847         * url.c (get_urls_file): New function.
9848         (get_urls_html): New function.
9849
9850         * recr.c (recursive_retrieve): Patched up to conform to the
9851         standards.
9852
9853         * http.c (gethttp): Synched with the rest...
9854         (gethttp): Treat only CONREFUSED specially, with connection
9855         errors.
9856
9857         * init.c,geturl.1,http.c (http_loop): Removed kill_error.
9858
9859 1996-06-20  Hrvoje Niksic  <hniksic@srce.hr>
9860
9861         * http.c (http_loop): New function.
9862
9863         * loop.c: Removed *lots* of stuff from retrieve_url.
9864
9865         * url.c (parseurl): Changed to work with urlinfo. Integrated
9866         username finding and path parsing.
9867         (newurl): New function.
9868         (freeurl): New function.
9869         (mkstruct): Removed the old bogosities, made it urlinfo-compliant.
9870         (url_filename): Likewise.
9871         (path_simplify): Accept relative paths too.
9872         (opt_url): Made urlinfo-compliant, removed bogosities.
9873         (path_simplify): Expanded to accept relative paths.
9874         (str_url): A replacement for hide_url
9875         (decode_string): Fixed a bug that caused malfunctioning when
9876         encountering an illegal %.. combination.
9877         (opt_url): Removed the argument. Dot-optimizations are now default.
9878
9879         * nmalloc.c (strdupdelim): New function.
9880
9881         * url.h: Added the urlinfo structure
9882
9883 1996-06-19  Hrvoje Niksic  <hniksic@srce.hr>
9884
9885         * url.c (hide_url): Thrown out the protocol assertion. Do not
9886         change the URL if the protocol if not recognized.
9887         (findurl): Put continue instead of break.
9888
9889 1996-06-18  Hrvoje Niksic  <hniksic@srce.hr>
9890
9891         * sample.geturlrc: Changed the defaults to be commented out and
9892         harmless (previous defaults caused pains if copied to
9893         ~/.geturlrc).
9894
9895         * http.c (gethttp): Print the HTTP request in debug mode.
9896
9897         * connect.c (iread): Added EINTR check loop to select-ing
9898         too. EINTR is now correctly handled with select().
9899
9900         * TODO: new file
9901
9902 1996-05-07  Hrvoje Niksic  <hniksic@srce.hr>
9903
9904         * host.c (same_host): Made the function a little bit more
9905         intelligent regarding diversified URL syntaxes.
9906
9907         * url.c (skip_url): Spaces are now skipped after URL:
9908
9909         * Released 1.3.1 with the patch to prevent crashing when sending
9910         NULL to robot* functions and the patch to compile "out of the box"
9911         on AIX.
9912
9913         * recr.c (recursive_retrieve): Added checking whether this_url is
9914         NULL when calling the robot functions.
9915
9916         * ChangeLog: New file.