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