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