Reject allocations of exactly SIZE_MAX bytes.
[pspp] / lib / ChangeLog
1 2003-11-06  Paul Eggert  <eggert@twinsun.com>
2
3         * xalloc.h [HAVE_STDINT_H]: Include <stdint.h>.
4         (xalloc_oversized) [! (PTRDIFF_MAX < SIZE_MAX)]:
5         Reject sizes of exactly SIZE_MAX bytes.
6         * xreadlink.c: Include "xalloc.h" before checking whether SIZE_MAX
7         is defined, since "xalloc.h" now defines SIZE_MAX on modern hosts.
8         
9 2003-11-05  Bruno Haible  <bruno@clisp.org>
10
11         * xsize.h: Include limits.h, to avoid a possible collision with
12         SIZE_MAX defined in <limits.h> on Solaris.
13
14 2003-11-04  Bruno Haible  <bruno@clisp.org>
15
16         * xsize.h: New file.
17         * linebreak.c: Include xsize.h.
18         (mbs_possible_linebreaks, mbs_width_linebreaks): Check malloc()
19         argument for overflow.
20         Suggested by Paul Eggert.
21
22 2003-10-31  Bruno Haible  <bruno@clisp.org>
23
24         * wait-process.c (wait_process): Use waitid with WNOWAIT if available,
25         to avoid (extremely rare) race condition.
26         Suggested by Paul Eggert.
27
28 2003-11-03  Jim Meyering  <jim@meyering.net>
29
30         * userspec.c: Include "userspec.h".
31         * userspec.h: New file.
32
33 2003-10-31  Paul Eggert  <eggert@twinsun.com>
34
35         * mountlist.h (struct mount_entry.me_type_malloced): New member.
36         * mountlist.c (SIZE_MAX): Define if not defined already.
37         (read_filesystem_list): Set and use me_type_malloced.
38         Use "sizeof *me" rather than "sizeof (struct mount_entry)" (or
39         whatever the type happens to be), for brevity and consistency.
40         Check for size calculation overflow on Alphas running OSF/1.
41
42 2003-10-31  Jim Meyering  <jim@meyering.net>
43
44         * hash.c: Include "xalloc.h" for use of xalloc_oversized.
45
46         * linebuffer.c: Include <string.h> for declaration of memset.
47
48 2003-10-30  Paul Eggert  <eggert@twinsun.com>
49             Bruno Haible  <bruno@clisp.org>
50
51         * vasprintf.c: Include <limits.h>, <stdlib.h>.
52         (vasprintf): Fail if the resulting length doesn't fit in an 'int'.
53
54 2003-10-29  Paul Eggert  <eggert@twinsun.com>
55
56         * xalloc.h (xalloc_oversized): Now a macro, not a function,
57         so that it works even if SIZE_MAX < N.  Do not include <stdbool.h>;
58         no longer needed.
59         * quotearg.c (quotearg_n_options): Use it.
60         * group-member.c: Include <stdbool.h>.
61         (free_group_info): Arg is now const *; don't free arg.
62         (get_group_info): Now returns bool and accepts struct group_info *,
63         rather than returning a malloc'ed struct group_info *.
64         All uses changed.  Check for overflow in internal size calculation.
65
66         * getusershell.c (readname): Simplify the code by using x2nrealloc
67         rather than xmalloc/xrealloc.
68         * linebuffer.c (initbuffer, readlinebuffer): Simplify the code by
69         using x2realloc rather than xmalloc/xrealloc.  Also, fix a C
70         conformance bug: the old code used a pointer after freeing the
71         storage that it addressed.
72         * hash.c (hash_initialize): Simplify the code by using xalloc_oversized
73         rather than doing it by hand.
74         * getgroups.c (getgroups): Don't use xrealloc, since we don't need
75         the buffer preserved.  Use free and xmalloc instead.
76         * quotearg.c (quotearg_n_options): Likewise.
77         Use a simpler test for size overflow.  Don't use xalloc_oversized
78         because unsigned int might be wider than size_t (!); this suggests
79         that we should switch from unsigned int to size_t for slot numbers.
80
81 2003-10-27  Bruno Haible  <bruno@clisp.org>
82
83         * stdbool_.h: Better support for BeOS.
84
85 2003-10-27  Paul Eggert  <eggert@twinsun.com>
86
87         * exclude.c (new_exclude): Use xzalloc rather than xmalloc
88         to allocate the returned structure.  Do not allocate a subarray,
89         as x2nrealloc will do that.
90         (add_exclude): Use x2nrealloc to reallocate ex->exclude,
91         instead of xnrealloc.
92         (add_exclude_file): Use x2realloc instead of malloc + xnrealloc.
93
94 2003-10-26  Paul Eggert  <eggert@twinsun.com>
95
96         * xalloc.h (xalloc_oversized): New static inline function, for
97         callers that want to do their own size-overflow checking.  Include
98         <stdbool.h>, since xalloc_oversized returns bool.
99         * xalloc.c (array_size_overflow): Remove.  All callers changed
100         to use xalloc_oversized.
101
102         Add two functions x2realloc, x2nrealloc, for programs that grow
103         arrays dynamically by doubling their sizes.
104         * xalloc.h (x2realloc, x2nrealloc): New decls.
105         * xmalloc.c (x2nrealloc_inline, x2nrealloc, x2realloc):
106         New functions.
107
108         Port to C99 semantics for 'inline' of external functions.
109         Bug reported by Bruno Haible.
110         * xmalloc.c (xnmalloc_inline): New static inline function,
111         with the old contents of xnmalloc.
112         (xnmalloc, xmalloc): Use it.
113         (xnrealloc_inline): New static inline function,
114         with the old contents of xnrealloc.
115         (xnrealloc, xrealloc): Use it.
116
117         * alloc.c (alloca): xmalloc cannot return NULL, so don't test for that.
118
119 2003-10-25  Paul Eggert  <eggert@twinsun.com>
120
121         Fix several address-calculation bugs in the hash modules,
122         plus some minor code cleanup.
123
124         * hash.h: Include <stdbool.h>, for bool.
125         * hash.c: Don't include <stdbool.h>, since hash.h does it now.
126         * hash.h (Hash_hasher, hash_get_n_buckets, hash_get_n_buckets_used,
127         hash_get_n_entries, hash_get_max_bucket_length,
128         hash_get_entries, hash_do_for_each, hash_string, hash_initialize,
129         hash_rehash): Use size_t rather than unsigned.
130         * hash.c (struct hash_table, hash_get_n_buckets,
131         hash_get_n_buckets_used, hash_get_n_entries,
132         hash_get_max_bucket_length, hash_table_ok, hash_print_statistics,
133         hash_get_entries, hash_do_for_each, hash_string, is_prime,
134         next_prime, hash_initialize, hash_rehash, hash_delete, hash_print):
135         Likewise.
136         (SIZE_MAX): Define if not defined.
137         (hash_get_max_bucket_length, hash_table_ok, hash_lookup,
138         hash_get_first, hash_get_next, hash_get_entries, hash_do_for_each,
139         hash_print):
140         Use const * when possible.
141         (hash_string): Use (unsigned char) *P rather than *(unsigned char *) P.
142         (check_tuning): Fix bug: if tuning parameters were very close to
143         0 or 1, rounding errors could have caused subscript violations.
144         (hash_initialize, allocate_entry, hash_print): Remove unnecessary cast.
145         (hash_initialize): Add 'fail:' label
146         to free table and return NULL, and use it to simplify code.
147         Use calloc rather than clearing the storage ourself.
148         (hash_initialize, hash_rehash): Check for arithmetic overflow in
149         buffer size calculations.
150         * hash-pjw.h (hash_pjw): Use size_t, not unsigned.
151         Include <stddef.h>, for size_t.
152         * hash-pjw.c (hash_pjw): Likewise.
153         Switch to method described by Bruno Haible.
154         Include <limits.h>, for CHAR_BIT.
155         (SIZE_BITS): New macro.
156
157 2003-10-21  Paul Eggert  <eggert@twinsun.com>
158
159         * getndelim2.c (getndelim2): When size calculation overflows,
160         ceiling the allocation at NMAX bytes rather than silently
161         discarding input bytes before NMAX is reached.  This makes
162         a difference only if NMAX exceeds SIZE_MAX / 2.
163
164         * obstack.c: Merge from glibc.
165         [defined _LIBC]: Include <obstack.h>, not "obstack.h".
166         Add libc_hidden_def (_obstack_newchunk).
167         (_obstack_free) [! defined _LIBC]: Remove.
168         [defined _LIBC]: Make a strong alias from obstack_free, rather than
169         a clone of the function body.
170         (fputs) [defined _LIBC && defined USE_IN_LIBIO]: Remove.
171         [defined _LIBC && !defined USE_IN_LIBIO]: Include <libio/iolibio.h>.
172
173         * obstack.h: Indenting cleanup, to make it easier to merge with glibc.
174         (obstack_grow, obstack_grow0): Remove unnecessary parentheses around
175         arg to memcpy.
176
177         * obstack.h (obstack_1grow_fast): Properly parenthesize arg.
178         (obstack_ptr_grow_fast, obstack_int_grow_fast):
179         Don't use lvalue casts, as GCC plans to remove support for them
180         in GCC 3.5.  Reported by Joseph S. Myers.  This bug
181         was also present in the non-GCC version, indicating that this
182         code had always been buggy and had never been widely used.
183         (obstack_1grow, obstack_ptr_grow, obstack_int_grow, obstack_blank):
184         Use the fast variant of each macro, rather than copying the
185         definiens of the fast variant; that way, we'll be more likely to
186         catch future bugs in the fast variants.
187
188 2003-10-20  Bruno Haible  <bruno@clisp.org>
189
190         * wait-process.h: New file, from GNU gettext.
191         * wait-process.c: New file, from GNU gettext.
192
193 2003-10-19  Jim Meyering  <jim@meyering.net>
194
195         * vasnprintf.c (vasnprintf): Work around losing snprintf on HPUX 10.20.
196
197 2003-10-16  Paul Eggert  <eggert@twinsun.com>
198
199         * getgroups.c: Include <errno.h>, <stdlib.h>.
200         (getgroups): First arg is int, not size_t.
201         Don't let 'free' mangle errno.
202
203 2003-10-16  Jim Meyering  <jim@meyering.net>
204
205         * xmalloc.c: Include <string.h>, for declarations of memset and memcpy.
206
207 2003-10-15  Paul Eggert  <eggert@twinsun.com>
208
209         * exclude.c: Do not include <inttypes.h> or <stdint.h>.
210         (SIZE_MAX): Remove.
211         (new_exclude, add_exclude_file): Initial size no longer needs to
212         be a power of 2.
213         (add_exclude, add_exclude_file): Use xnrealloc instead of rolling
214         our own address arithmetic overflow checking.
215
216         * fnmatch.c (SIZE_MAX): Define if standard headers don't.
217         (fnmatch): Do not alloca more than 2000 wide characters;
218         instead, use malloc for large buffers.
219         Check for address arithmetic overflow, and return -1
220         with errno set to ENOMEM in that case.
221         * fnmatch_loop.c (ALLOCA_LIMIT): New macro.
222         (NEW_PATTERN): Do not alloca more than 8000 bytes;
223         instead, return -1.  Check for address arithmetic overflow.
224
225 2003-10-14  Paul Eggert  <eggert@twinsun.com>
226
227         Handle invalid suffixes and overflow independently, so that
228         callers can treat them independently as needed.  Fix some bugs in
229         suffix handling, e.g., "100k@" was not diagnosed as an invalid
230         suffix for a human-readable blocksize.  The major caller-visible
231         change is the addition of a new
232         LONGINT_INVALID_SUFFIX_CHAR_WITH_OVERFLOW enum value, indicating
233         that both overflow and suffix chars were found.
234
235         * human.c (humblock): Don't check separately for invalid suffix
236         char; that is xstrtoumax's job (now that its bug is fixed).
237         * xstrtoimax.c (STRTOL_T_MINIMUM, STRTOL_T_MAXIMUM) [defined
238         INTMAX_MAX]: New macros.
239         * xstrtol.c (STRTOL_T_MINIMUM, STRTOL_T_MAXIMUM, TYPE_MINIMUM,
240         TYPE_MAXIMUM): New macros.
241         (bkm_scale, bkm_scale_by_power): Return strtol_error, not int.
242         (bkm_scale, bkm_scale_by_power, __xstrtol): Return maximal values
243         if overflow occurs, as it's what __strtol does and it's more useful
244         in practice.
245         (__xstrtol): If __strtol reports some error other than ERANGE,
246         reflect it to the caller as LONGINT_INVALID.  If it reports
247         ERANGE, continue the rest of parsing, and report LONGINT_OVERFLOW
248         | LONGINT_INVALID_SUFFIX_CHAR if both errors occur.
249         * xstrtol.h (LONGINT_INVALID_SUFFIX_CHAR_WITH_OVERFLOW): New enum
250         value.
251         (_STRTOL_ERROR): Handle it.  Abort when given unknown error codes.
252         * xstrtoul.c (STRTOL_T_MINIMUM, STRTOL_T_MAXIMUM): New macros.
253         * xstrtoumax.c (STRTOL_T_MINIMUM, STRTOL_T_MAXIMUM)
254         [defined UINTMAX_MAX]: New macros.
255
256 2003-10-14  Bruno Haible  <bruno@clisp.org>
257
258         * fatal-signal.h: Improved comments. Suggested by Paul Eggert.
259         * fatal-signal.c: Use sig_atomic_t. Suggested by Paul Eggert.
260         Also use volatile where needed.
261
262 2003-10-12  Paul Eggert  <eggert@twinsun.com>
263
264         * lib/xalloc.h (xnmalloc, xzalloc, xnrealloc, xclone): New decls.
265         (XMALLOC, XCALLOC, XREALLOC, XFREE, CCLONE, CLONE): Deprecate,
266         and define in terms of the other primitives.
267         * lib/xmalloc.c: Include stdbool.h; do not include exit.h.
268         (SIZE_MAX): Define if not already defined.
269         (array_size_overflow): New function.
270         (xalloc_die): Abort instead of exiting if 'error' returns.
271         (xnmalloc, xnrealloc, xzalloc, xclone): New functions.
272         (xmalloc, xrealloc): Use them.
273         (xcalloc): Check for address arithmetic overflow.
274         * lib/xstrdup.c (xstrdup): Use xclone, since memcpy should be
275         a bit faster than strcpy.
276
277 2003-10-08  Paul Eggert  <eggert@twinsun.com>
278
279         Merge getpass from libc, plus a few fixes.
280
281         * getpass.c (HAVE_STDIO_EXT) [_LIBC]: Define to 1.
282         Include <stdbool.h>.
283         Include <stdio_ext.h> if HAVE_STDIO_H, otherwise define
284         __fsetlocking to empty.
285         [_LIBC]: Do not include "getline.h" or "unlocked-io.h", but
286         do include <bits/libc-lock.h>.
287         Do not include <fcntl.h>; not needed.
288         [_LIBC]: Include <wchar.h>.
289         (NOTCANCEL_MODE): New macro.
290         (flockfile, funlockfile) [_LIBC]: New macros.
291         (__libc_cleanup_push, __libc_cleanup_pop, __getline, __tcgetattr)
292         [!_LIBC]: New macros.
293         (call_fclose): New function.
294         (getpass): Use it.  Save tty stream separately; this simplifies the
295         code and makes it more reliable if stdin happens to equal stdout.
296         Invoke __fsetlocking on tty.
297         Handle thread cancellation if needed.
298         Namespace cleanup (use __tcgetattr, __getline).
299         Use bool for Booleans.
300         [USE_IN_LIBIO]: Handle wide streams.
301         [!_LIBC]: Unconditionally do the fseek, since we don't know what
302         stream might go where.
303
304         * unlocked-io.h: Include <stdio.h>, so that the caller
305         doesn't have to include <stdio.h> before us.
306         (clearerr_unlocked, feof_unlocked, ferror_unlocked,
307         fflush_unlocked, fgets_unlocked, fputc_unlocked, fputs_unlocked,
308         fread_unlocked, fwrite_unlocked, getc_unlocked, getchar_unlocked,
309         putc_unlocked, putchar_unlocked): Define to the unlocked counterpart
310         if not declared, so that we can use getpass.c code from libc without
311         rewriting it.
312         (flockfile, ftrylockfile, funlockfile): New macros.
313
314 2003-10-06  Bruno Haible  <bruno@clisp.org>
315
316         * version-etc-2.h: Remove file.
317         * version-etc-2.c: Remove file.
318
319 2003-09-25  Jim Meyering  <jim@meyering.net>
320             Bruno Haible  <bruno@clisp.org>
321
322         This lets translators provide better translations for the
323         "Written by ..." part of --version output.
324         * version-etc.h: Include stdarg.h.
325         (version_etc_copyright): Declare as readonly.
326         (version_etc): Make this function variadic with a NULL-terminated list
327         of author name strings.
328         (version_etc_va): New declaration.
329         * version-etc.c: Include stdarg.h, stdlib.h.
330         (version_etc_copyright): Declare as readonly.
331         (version_etc_va): New function. Provide a different translatable string
332         for each possible number of authors < 10. Abbreviate when there are 10
333         authors or more.
334         (version_etc): Make this function variadic. Call version_etc_va.
335         Suggestion from Gary V. Vaughan.
336
337         * long-options.h (parse_long_options): Change prototype: the authors
338         string is moved to the end and becomes variadic.
339         * long-options.c: Include stdarg.h.
340         (parse_long_options): Make this function variadic, too.
341         Call version_etc_va, not version_etc.
342
343 2003-10-06  Bruno Haible  <bruno@clisp.org>
344
345         * fatal-signal.h: New file, from GNU gettext.
346         * fatal-signal.c: New file, from GNU gettext.
347
348 2003-10-04  Karl Berry  <karl@gnu.org>
349
350         * argp*: update from libc.
351
352 2003-10-01  Larry Jones  <lawrence.jones@eds.com>
353
354         * getpass.c (getpass): Use a no-op fseek when switching from input to
355         output mode on the same stream.
356
357 2003-09-29  Paul Eggert  <eggert@twinsun.com>
358
359         * strftime.c (tm_diff) [! HAVE_TM_GMTOFF]:
360         Fix arg typo in previous patch.
361
362 2003-09-28  Jim Meyering  <jim@meyering.net>
363
364         * error.c: Correct cpp indentation.
365
366 2003-09-27  Paul Eggert  <eggert@twinsun.com>
367
368         * minmax.h (MIN, MAX) [__STDC__ && defined __GNUC__ && __GNUC__ >= 2]:
369         Omit the special code that used __typeof__, since we worry that
370         it could be more trouble than it's worth.  See:
371         http://mail.gnu.org/archive/html/bug-gnulib/2003-01/msg00090.html
372         http://mail.gnu.org/archive/html/bug-gnulib/2003-01/msg00095.html
373
374         * free.c: New file.
375
376 2003-09-26  Jim Meyering  <jim@meyering.net>
377
378         * error.c (error_tail): Move some declarations
379         into inner scope where the local variables are used.
380
381 2003-09-26  Bruno Haible  <bruno@clisp.org>
382
383         * stpncpy.h (gnu_stpncpy): New declaration.
384         (stpncpy): Define as alias for gnu_stpncpy.
385         * stpncpy.c [!_LIBC]: Define gnu_stpncpy, not stpncpy.
386
387 2003-09-26  Paul Eggert  <eggert@twinsun.com>
388
389         * error.c (SIZE_MAX) [!defined SIZE_MAX]: Define.
390         (error_tail): Do not loop, reallocating temporary buffer, since
391         the output cannot contain more wide characters than the input
392         contains bytes, the size must be big enough already.  This avoids
393         one potential size overflow calculation.  Check for size overflow
394         when calculating temporary buffer size.  Free temporary buffer
395         when done, if it was allocated with malloc; this plugs a memory
396         leak.  Remove casts from void * to pointers, that are no longer
397         needed now that we're assuming C89 or better.
398
399         Merge error changes from glibc.
400
401         * error.c, error.h: Update copyright notice header to match glibc.
402         * error.c [defined _LIBC]: Include <errno.h>, <bits/libc-lock.h>.
403         (error, error_at_line) [defined _LIBC && defined __libc_ptf_call]:
404         Disable cancellation while printing error.
405         * error.h: Prepend __ to parameter names.
406
407 2003-09-25  Karl Berry  <karl@gnu.org>
408
409         * argp-fmtstream.c, argp-help.c: update from libc.
410
411 2003-09-25  Bruno Haible  <bruno@clisp.org>
412
413         * version-etc-2.h: New file, from version-etc.h with modifications.
414         * version-etc-2.c: New file, from version-etc.c with modifications.
415
416 2003-09-25  Simon Josefsson  <jas@extundo.com>
417
418         * xgetdomainname.h: New file.
419         * xgetdomainname.c: New file.
420
421 2003-09-25  Simon Josefsson  <jas@extundo.com>
422             Bruno Haible  <bruno@clisp.org>
423
424         * getdomainname.h: New file.
425         * getdomainname.c: New file.
426
427 2003-09-24  Paul Eggert  <eggert@twinsun.com>
428
429         * linebuffer.c (freebuffer): Don't free the argument, just
430         the buffer associated with the argument.  Bug reported by
431         Simon Josefsson.
432
433 2003-09-19  Karl Berry  <karl@gnu.org>
434
435         * argp.h: update from libc.
436
437 2003-09-16  Paul Eggert  <eggert@twinsun.com>
438
439         * linebuffer.c (readlinebuffer): Return NULL immediately upon
440         input error, instead of returning NULL the next time we are called
441         (and therefore losing track of errno).
442
443 2003-09-15  Paul Eggert  <eggert@twinsun.com>
444
445         * getndelim2.c (getndelim2): Don't trash errno when a read
446         fails, so that the caller gets the proper errno.
447
448         * readutmp.c (read_utmp): Likewise.
449         Check for fstat error.  Close stream and free storage
450         when failing.
451
452 2003-09-14  Bruno Haible  <bruno@clisp.org>
453
454         * fwriteerror.h: New file.
455         * fwriteerror.c: New file.
456
457 2003-09-14  Jim Meyering  <jim@meyering.net>
458
459         * getloadavg.c: Correct cpp indentation.
460         * strdup.c: Likewise.
461         * vasnprintf.c: Likewise.
462
463 2003-09-12  Paul Eggert  <eggert@twinsun.com>
464
465         * argmatch.c, fatal.c, xgethostname.c, xmalloc.c: Include exit.h.
466         * obstack.c [!defined _LIBC]: Likewise.
467         * argmatch.c (EXIT_FAILURE): Remove; now done by exit.h
468         * exitfail.c, fatal.c, xgethostname.c, xmalloc.c: Likewise.
469         * exitfail.c: Don't include stdlib.h; no longer needed.
470
471         More changes to assume C89 or better.
472
473         * error.c (error_tail): Assume vprintf.
474
475         * argmatch.c (getenv): Remove decl.
476         * progreloc.c (get_full_program_name): Define via prototype.
477         * setenv.c (clearenv): Likewise.
478         * stpncpy.c: Do not include <string.h> or <sys/types.h>; not
479         needed.
480         * strdup.c: Include <stdlib.h>, <string.h> unconditionally.
481         (malloc, memcpy): Remove decls.
482         * strftime.c (HAVE_LIMITS_H, STDC_HEADERS) [defined _LIBC]: Remove.
483         (HAVE_MEMCPY) [defined emacs && !defined HAVE_BCOPY]: Remove.
484         Include <limits.h>, <stddef.h>, <stdlib.h>, <string.h> unconditionally.
485         (memcpy): Remove macro.
486         (MEMCPY) [!defined COMPILE_WIDE]: Define to memcpy unconditionally.
487         (__P): Remove.  All uses removed.
488         (PTR): Remove.  All uses changed to void *.
489         (CHAR_BIT, NULL): Remove.
490         (spaces, zeros, memset_space, memset_zero)
491         [!defined memset && !defined HAVE_MEMSET && !defined _LIBC]:
492         Remove.
493         (LOCALE_PARAM, LOCALE_PARAM_DECL): Remove.
494         (memcpy_lowcase, memcpy_uppcase, tm_diff, iso_week_days):
495         Define with prototype.
496         Remove now-unnecessary prototype decl.
497         (extra_args_spec): Assume ANSI C.  All uses changed.
498         (extra_args_spec_iso): Remove.
499         (my_strftime, emacs_strftimeu): Define via prototype.
500         * strtod.c: Include <float.h>, <stdlib.h>, <string.h>
501         unconditionally.
502         (DBL_MAX, DBL_MIN, HUGE_VAL, NULL): Remove decls.
503         * strtoimax.c: Include <stdlib.h> unconditionally.
504         (strtoul, strtol): Remove decls.
505         * strtol.c (STDC_HEADERS, HAVE_LIMITS_H, NULL, ULONG_MAX,
506         LONG_MAX): Remove.
507         Include <limits.h>, <stddef.h>, <stdlib.h>, <string.h> unconditionally.
508         (LOCALE_PARAM_DECL): Remove.  All uses changed to LOCALE_PARAM_PROTO.
509         (LOCALE_PARAM_PROTO): New macro.
510         (INTERNAL, INTERNAL1, WEAKNAME): Assume ANSI C, not K&R.
511         (INTERNAL (strtol), strtol): Define with a prototype.
512         (PARAMS): Remove.  All uses removed.
513         * tempname.c: Include <string.h> unconditionally.
514         * userspec.c: Include <stdlib.h>, <string.h> unconditionally.
515         * xgethostname.c (main): Define with a prototype.
516         * xmalloc.c: Include "xalloc.h" first, to check interface.
517         Include <stdlib.h> unconditionally.
518         (calloc, malloc, realloc, free): Remove decls.
519         * xstrtod.c: Include "xstrtod.h" first, to check interface.
520         Include <stdlib.h> unconditionally.  Sort include file names.
521         (strtod): Remove.
522         (xstrtod): Define with a prototype.
523         * xstrtol.c: Include <stdlib.h>, <string.h> unconditionally.
524         (strtol, strtoul): Remove decls.
525
526 2003-09-11  Paul Eggert  <eggert@twinsun.com>
527
528         * strndup.c: Don't include <stdio.h>, <sys/types.h>.
529         Include <stdlib.h>, <string.h> unconditionally.
530         Remove now-unnecessary cast to char *.
531         * strnlen.c: Include <string.h> unconditionally.
532         * yesno.c (yesno): Define with a prototype.
533
534 2003-09-10  Bruno Haible  <bruno@clisp.org>
535
536         * strcspn.c: Include <string.h> unconditionally.
537         * strpbrk.c: Include <string.h> unconditionally.
538         * strstr.c: Include <string.h> unconditionally.
539         * unicodeio.c: Include <string.h> unconditionally.
540         * setenv.c: Include <stdlib.h> and <string.h> unconditionally.
541         * unsetenv.c: Likewise.
542         * xreadlink.c: Include <stdlib.h> unconditionally.
543         * yesno.c: Include <stdlib.h> unconditionally.
544         (rpmatch): Add prototype.
545
546 2003-09-10  Jim Meyering  <jim@meyering.net>
547
548         * error.c: Correct indentation of cpp directives.
549
550 2003-09-09  Paul Eggert  <eggert@twinsun.com>
551
552         More K&R removal.
553
554         * acosl.c (main): Use a prototype.
555         * asinl.c, cosl.c, expl.c, frexpl.c, ldexpl.c, sinl.c,
556         tanl.c: Likewise.
557
558         * getloadavg.c (getloadavg, main): Define via prototypes.
559
560         * getopt.h (struct option.name): Assume C89, and use 'const'.
561         (getopt, etopt_long, getopt_long_only, _getopt_internal)
562         [defined __GNU_LIBRARY__]: Assume C89, so we can always declare
563         with a prototype.
564         * getopt.c (const): Remove macro.
565         Include <string.h> unconditionally.
566         (my_index): Remove; all uses changed to strchr.
567         (strlen): Remove decl.
568         (exchange): Remove forward decl; no longer needed.
569         (exchange, _getopt_initialize, _getopt_internal, getopt, main):
570         Define with prototype.
571         * getopt1.c (const): Remove macro.
572         (getopt_long, getopt_long_only, main): Define with prototype.
573
574         * getugroups.c: Include <string.h> unconditionally.
575
576         * getusershell.c: Include <stdlib.h> unconditionally.
577         (getusershell, setusershell, endusershell, readname, main):
578         Define with prototypes.
579
580         * group-member.c: Include group-member.h first.
581         Include <stdlib.h> unconditionally.
582
583         * hard-locale.c: Include hard-locale.h first.
584         Include <stdlib.h>, <string.h> unconditionally.
585
586         * hash.c (free, malloc): Remove decls.
587         Include <stdlib.h> unconditionally.
588
589         * human.c: Include <stdlib.h>, <string.h> unconditionally.
590         (getenv): Do not declare.
591
592         * idcache.c: Include <string.h> unconditionally.
593
594         * long-options.c: Include long-options.h first, to test interface.
595         Include <stdlib.h> unconditionally.
596
597         * makepath.c: Include makepath.h first, to test interface.
598         Include <stdlib.h> and <string.h> unconditionally.
599
600         * linebuffer.c: Include <stdlib.h>.
601         (free): Remove decl.
602
603         * malloc.c: Include <stdlib.h>, for malloc; don't bother with stddef.h.
604         rpl_malloc returns void *, not char *.
605         * realloc.c (rpl_realloc): Likewise.  Also, define with a prototype.
606
607         * md5.h: Include <limits.h> unconditionally.
608         (UINT_MAX_32_BITS): Don't worry about non-__STDC__ case.
609         (__P): Remove; all uses removed.
610         * md5.c: Include "md5.h" first.
611         (md5_init_ctx, md5_read_ctx, md5_finish_ctx, md5_stream,
612         md5_buffer, md5_process_bytes, md5_process_block):
613         Define with prototypes.
614         * sha.h (__P): Remove all uses.  (It wasn't defined??)
615         * sha.c: Include "sha.h" first.
616         Include <stdlib.h>, <string.h> unconditionally.
617
618         * memchr.c (__ptr_t): Remove; all uses changed to void *.
619         * memcmp.c (__ptr_t): Likewise.
620         * memrchr.c (__ptr_t): Likewise.
621         * memchr.c, memcmp.c, memcoll.c, memrchr.c:
622         Include <string.h> unconditionally.
623         * memchr.c, memrchr.c: Include <limits.h> unconditionally.
624         * memchr.c: Include <stdlib.h> unconditionally.
625         * memchr.c (LONG_MAX): Remove.
626         * memrchr.c (LONG_MAX): Likewise.
627         * memchr.c (__memchr): Define via a prototype.
628         * memrchr.c (__memrchr): Likewise.
629         * memcmp.c (__P): Remove, and remove all uses.
630         (memcmp_bytes, memcmp_common_alignment, memcmp_not_common_alignment):
631         Remove forward decls; no longer needed.
632         * memcpy.c, memmove.c, memset.c: Include <stddef.h>.
633         Use types required by C89 in prototype.
634
635         * mkdir.c: Include <stdlib.h>, <string.h> unconditionally.
636         * savedir.c: Likewise.
637         * mkdir.c (free): Remove decl.
638         * rmdir.c (rmdir): Define with a prototype.
639         * savedir.c: Include savedir.h first, to test interface.
640
641         * mktime.c (STDC_HEADERS): Remove.
642         Include <stdlib.h>, <string.h> unconditionally.
643
644         * modechange.c: Include <stdlib.h> unconditionally.
645         (malloc): Remove decl.
646
647         * mountlist.c: Include <stdlib.h>, <string.h> unconditionally.
648         (free): Remove decl.
649
650         * obstack.h (PTR_INT_TYPE) [!defined __PTRDIFF_TYPE__]:
651         Define to ptrdiff_t, without bothering to check HAVE_STDDEF_H.
652         (This type really should be intptr_t, but that's a C99ism.)
653         (_obstack_memcpy): Remove: all uses changed to memcpy.
654         Include <string.h> unconditionally.
655         (struct obstack): Assume __STDC__ for types of members
656         chunkfun, freefun, extra_arg.
657         (_obstack_newchunk, _obstack_free, _obstack_begin, _obstack_begin_1,
658         _obstack_memory_used, obstack_alloc_failed_handler, obstack_init,
659         obstack_begin, obstack_specify_allocation,
660         obstack_specify_allocation_with_arg, obstack_chunkfun,
661         obstack_freefun, obstack_free) [! (defined __STDC__ && __STDC__)]:
662         Remove unprototyped decls and the macros that use them.
663         * obstack.c (POINTER): Remove.  All uses changed to void *.
664         (obstack_alloc_failed_handler, CALL_CHUNKFUN, CALL_FREEFUN,
665         _obstack_begin, _obstack_begin_1, _obstack_allocated_p)
666         (defined __STDC__ && __STDC__)]:
667         Remove nonprototyped code.
668         Include <stdlib.h> unconditionally.
669         (_obstack_begin, _obstack_begin_1, _obstack_newchunk,
670         _obstack_allocated_p, _obstack_free, obstack_free,
671         _obstack_memory_used, print_and_abort):
672         Define using prototypes.
673         (obstack_1grow, obstack_1grow_fast, obstack_alloc, obstack_base,
674         obstack_blank, obstack_blank_fast, obstack_copy, obstack_copy0,
675         obstack_finish, obstack_grow, obstack_grow0, obstack_make_room,
676         obstack_next_free, obstack_object_size, obstack_room) [0]:
677         Remove unused, unprototyped code.
678
679         * path-concat.c: Include <stdlib.h>, <string.h> unconditionally.
680
681         * physmem.c (physmem_total, physmem_available, main): Define
682         with prototypes.
683
684         * posixtm.c: Include <stdlib.h>, <string.h> unconditionally.
685         (main): Define with a prototype.
686
687         * posixver.c (getenv): Remove decl.
688
689         * putenv.c (malloc): Returns void *, not char *.
690         Include <string.h> unconditionally.
691         (strchr, memcpy, NULL): Do not define.
692
693         * readtokens.c: Include readtokens.h first, to test interface.
694         Include <stdlib.h>, <string.h> unconditionally.
695         (init_tokenbuffer): Define with a prototype.
696
697         * regex.c (PARAMS): Remove.  All uses removed.
698         All uses of _RE_ARGS removed, too.
699         Include <stddef.h>, <stdlib.h>, <string.h>, <limits.h>
700         unconditionally.
701         (bzero): Assume memset exists.
702         (memcmp, memcpy, NULL): Remove.
703         (SIGN_EXTEND_CHAR): Remove; all uses replaced by casts to signed
704         char, or assignments to local vars of type signed char.
705         (init_syntax_once, PREFIX(extract_number_and_incr),
706         PREFIX(print_partial_compiled_pattern),
707         PREFIX(print_compiled_pattern), PREFIX(print_double_string),
708         convert_mbs_to_wcs, print_fastmap, re_set_syntax,
709         PREFIX(regex_grow_registers), PREFIX(regex_compile),
710         PREFIX(store_op1), PREFIX(store_op2), PREFIX(insert_op1),
711         PREFIX(insert_op2), PREFIX(at_begline_loc_p),
712         PREFIX(at_endline_loc_p), group_in_compile_stack, insert_space,
713         wcs_compile_range, byte_compile_range, truncate_wchar,
714         PREFIX(re_compile_fastmap), re_compile_fastmap, re_set_registers,
715         re_search, re_search_2, PREFIX(re_search_2), re_match, re_match_2,
716         count_mbs_length, wcs_re_match_2_internal,
717         byte_re_match_2_internal, PREFIX(group_match_null_string_p),
718         PREFIX(alt_match_null_string_p),
719         PREFIX(common_op_match_null_string_p), PREFIX(bcmp_translate),
720         re_compile_pattern, re_comp, re_exec, regcomp, regexec, regerror,
721         regfree, PREFIX(extract_number)): Define with prototype.  Remove
722         now-unnecessary declaration, if any.
723         (byte_compile_range, PREFIX(regex_compile), re_comp, re_exec,
724         regcomp, regexec):
725         Remove now-unnecessary casts among pointer types.
726         * regex.h (_RE_ARGS): Remove.  All uses removed.
727
728         * rename.c: Include <stdlib.h>, <string.h> unconditionally.
729         (free): Remove decl.
730
731         * rpmatch.c: Include <stdlib.h> unconditionally.
732
733         * same.c: Include <stdlib.h>, <string.h> unconditionally.
734         (free): Remove decl.
735
736         * save-cwd.c: Include <stdlib.h> unconditionally.
737         * xgetcwd.c: Likewise.
738
739         * stat.c: Include <stdlib.h>, <string.h> unconditionally.
740         (free): Remove decl.
741
742         * strchrnul.c (strchrnul): Define with a prototype.
743         Fix bug: c_in was not converted to char before searching.
744
745         The following changes are not K&R related:
746
747         * group-member.h: Include <sys/types.h>, so that this file is
748         self-contained.
749         * makepath.h: Likewise.
750
751         * getusershell.c (readname, default_index, line_size, readname):
752         Use size_t, not int, for sizes.
753         (readname): If the size overflows, report an error instead of
754         looping forever.
755
756 2003-09-09  Derek Robert Price  <derek@ximbiot.com>
757
758         * getndelim2.c: Assume stdlib.h per the C89 spec.
759
760 2003-09-08  Paul Eggert  <eggert@twinsun.com>
761
762         Assume C89 or better; remove K&R cruft.
763         A few of these changes were first proposed by Derek Robert Price
764         in <http://mail.gnu.org/archive/html/bug-gnulib/2003-07/msg00105.html>.
765
766         * addext.c: Include <string.h> unconditionally.
767         * backupfile.c: Include <string.h>, <stdlib.h> unconditionally.
768         Don't declare getenv or malloc.
769
770         * alloca.c: Include <string.h>, <stdlib.h> unconditionally.
771         (POINTER_TYPE, pointer): Remove; all uses changed to void *.
772         (NULL): Remove.
773         (find_stack_direction, alloca): Use prototypes.
774
775         * atexit.c (atexit): Define using a prototype.
776
777         * basename.c, dirname.c, stripslash.c:
778         Include <string.h> unconditionally.
779
780         * bcopy.c: Include <stddef.h>.
781         (bcopy): Define with prototype, using 'const' and 'void' and 'size_t'.
782
783         * canon-host.c: Include <stdlib.h>, <string.h> unconditionally.
784
785         * error.h (error, error_at_line, error_print_progname)
786         [! (defined (__STDC__) && __STDC__)]: Remove decls.
787         * error.c: Include error.h first, to check interface.
788         Include <stdarg.h>, <stdlib.h>, <string.h> unconditionally.
789         (VA_START): Remove; all uses changeed to va_start.
790         (exit, strerror): Remove decls.
791         (error_print_progname): Prototype uncondionally.
792         Don't include <errno.h>; no longer needed.
793         (private_strerror): Remove.
794         (error_tail): Always define.
795         (error, error_at_line): Assume C89 or better; always use prototypes.
796         * fatal.c: Include "fatal.h" first, to test interface.
797         Include <stdarg.h>, <stdlib.h>, <string.h> unconditionally.
798         (VA_START): Remove; all uses changed to va_start.
799         [! (HAVE_VPRINTF || HAVE_DOPRNT || _LIBC)]: Remove support for
800         this case.
801         (exit): Remove decl.
802         (fatal): Prototype unconditionally.  Assume va_start works.
803         Abort at end, to pacify gcc.
804
805         * euidaccess.c (main): Define with a prototype.
806
807         * exclude.c: Include <stdlib.h>, <string.h> unconditionally.
808
809         * exitfail.c: Include <stdlib.h> unconditionally.
810
811         * fnmatch_.h (__P): Remove.  All uses changed to assume
812         prototypes.
813         * fnmatch.c: Include fnmatch.h first, to test interface.
814         Include <string.h>, <stddef.h>, <stdlib.h> unconditionally.
815         (getenv): Remove decl.
816         (fnmatch): Define using a prototype.
817         * fnmatch_loop.c (FCT): Remove forward decl; no longer needed.
818         (FCT): Define using a prototype.
819
820         * getdate.y: Include <stdlib.h>, <string.h> unconditionally.
821
822         * gethostname.c: Include <stddef.h>.
823         (gethostname): Define with prototype.  Length is size_t, not int.
824
825 2003-09-08  Paul Eggert  <eggert@twinsun.com>
826
827         * getversion.c: Remove; was migrated to backupfile.c in 1997.
828         getversion.c should have been removed then, but was accidentally
829         preserved.
830
831         * utime.c [!HAVE_UTIMES_NULL]: Include <sys/stat.h>, <fcntl.h>.
832         (utime_null): Fix typo: 'st' was sometimes called 'sb'.
833
834 2003-09-07  Paul Eggert  <eggert@twinsun.com>
835
836         * time_r.c (gmtime_r, localtime_r): Fix silly typo: missing arg to
837         copy_tm_result.  Bug reported by Simon Josefsson in
838         <http://mail.gnu.org/archive/html/bug-gnulib/2003-09/msg00028.html>.
839
840 2003-09-06  Paul Eggert  <eggert@twinsun.com>
841
842         * time_r.c, time_r.h: New files.
843
844         * mktime.c (my_mktime_localtime_r): Remove; all uses changed to
845         __localtime_r.
846         (__localtime_r) [!defined _LIBC]: New macro.  Include <time_r.h>.
847         (__mktime_internal) [!defined _LIBC]: Now extern, not static.
848
849         * strftime.c (my_strftime_gmtime_r): Remove; all uses changed to
850         __gmtime_r.
851         (my_strftime_localtime_r): Remove; all uses changed to __localtime_r.
852         (__gtime_r, __localtime_r) [!HAVE_TM_GMTOFF]: New macros.
853         Include <time_r.h>.
854
855         * timegm.c: Switch to glibc implementation, with the following changes:
856         [defined HAVE_CONFIG_H]: Include <config.h>.
857         [!defined _LIBC]: Include "timegm.h" rather than <time.h>.
858         (__mktime_internal) [!defined _LIBC]: New decl.
859         (__gmtime_r) [!defined _LIBC]: New macro and function.
860         (timegm): Use a prototype, since gnulib assumes C89.
861         Do not bother declaring tmp to be const, as it's not really usefu.
862         * timegm.h: Hoist "#include <time.h>" out of #ifdef.
863         (timegm): Declare only if HAVE_DECL_TIMEGM.
864
865 2003-09-03  Paul Eggert  <eggert@twinsun.com>
866
867         * human.c (human_readable): Fix bug that rounded 10501 to 10k.
868         Bug reported by Lute Kamstra in
869         <http://mail.gnu.org/archive/html/bug-gnulib/2003-09/msg00003.html>.
870
871         * getdate.y (relative_time_table): Use tDAY_UNIT for "tomorrow",
872         "yesterday", "today", and "now" rather than tMINUTE_UNIT.  Of
873         course with correspondingly smaller numbers for tomorrow and
874         yesterday.  From Tadayoshi Funaba.  Originally installed into
875         sh-utils on 1999-08-07, but the patch got lost (I guess during the
876         coreutils merge?).
877
878 2003-08-31  Simon Josefsson  <jas@extundo.com>
879
880         * timegm.h: New file.
881         * timegm.c: New file.  Based on wget-1.8.2/src/http.c:mktime_from_utc.
882
883 2003-08-31  Karl Berry  <karl@gnu.org>
884
885         * argp.h: update from libc.
886
887 2003-08-28  Bruno Haible  <bruno@clisp.org>
888
889         * binary-io.h: Undefine O_BINARY before defining it. This avoids a
890         warning on QNX, which defines O_BINARY to 000000.
891
892 2003-08-24  Bruno Haible  <bruno@clisp.org>
893
894         * binary-io.h: Include <stdio.h>, to avoid a compilation error when
895         MSVC7 <stdio.h> is included later.
896
897 2003-08-20  Bruno Haible  <bruno@clisp.org>
898
899         * progname.h: New file, from GNU gettext.
900         * progname.c: New file, from GNU gettext.
901         * progreloc.c: New file, from GNU gettext.
902
903 2003-08-19  Bruno Haible  <bruno@clisp.org>
904
905         * xstrdup.c: Assume <string.h> exists.
906
907 2003-08-18  Jim Meyering  <jim@meyering.net>
908
909         * setenv.h: Indent nested cpp directive.
910         * vasnprintf.c: Remove trailing blanks.
911
912 2003-08-17  Simon Josefsson  <jas@extundo.com>
913             Bruno Haible  <bruno@clisp.org>
914
915         * xstrndup.h: New file.
916         * xstrndup.c: New file.
917
918 2003-08-17  Bruno Haible  <bruno@clisp.org>
919
920         * strndup.h: New file.
921
922 2003-08-16  Paul Eggert  <eggert@twinsun.com>
923
924         * regex.h, strdup.c, strtoll.c, strtoul.c: Do not normalize white
925         space, undoing this 2003-08-12 change:
926         <http://mail.gnu.org/archive/html/bug-gnulib/2003-08/msg00080.html>
927
928 2003-08-16  Jim Meyering  <jim@meyering.net>
929
930         Merge from coreutils.
931         * xstrtoimax.c: #else #if -> #elif.
932         * xstrtoumax.c: Likewise.
933
934 2003-08-15  Paul Eggert  <eggert@twinsun.com>
935
936         * config.charset, ref-add.sin, ref-del.sin: Use three spaces,
937         rather than tab, after '#' in shell-script copyright notices.
938         Suggested by Bruno Haible.
939
940 2003-08-15  Jim Meyering  <jim@meyering.net>
941         and Paul Eggert  <eggert@twinsun.com>
942
943         Merge from coreutils.
944         * readutmp.h (HAVE_UTMPX_H): Undef if struct utmp has the ut_exit
945         member but strut utmpx does not.  Needed for AIX 4.3.3.
946         (UT_EXIT_E_TERMINATION, UT_EXIT_E_EXIT): Define.
947
948 2003-08-15  Jim Meyering  <jim@meyering.net>
949
950         Merge from coreutils.
951         * xgethostname.c: Include <stdlib.h>.
952         (xghostname): Don't exit for anything other than memory-related
953         failure; just return NULL.
954         * userspec.c: Include "posixver.h".
955         (parse_user_spec): Accept `.' as a separator only
956         in pre-POSIX-200112 mode.
957         * strtoimax.c: Use #elif rather than #else #if.
958         * strftime.c (my_strftime) [!_LIBC && HAVE_TZNAME && HAVE_TZSET]:
959         Remove function, now that we can rely on a working tzset function.
960         [!_LIBC]: Ensure that the required autoconf test has been run.
961         [!defined _NL_CURRENT && HAVE_STRFTIME]:
962         Use underlying_strftime for %r.
963         * sha.c: Merge in some clean-up and optimization changes from glibc.
964         * sha.c (sha_stream) [BLOCKSIZE]: Move definition to top of file.
965         Ensure that it is a multiple of 64.
966         Rearrange loop exit tests so as to avoid performing an
967         additional fread after encountering an error or EOF.
968         * realloc.c: Update copyright date.
969
970 2003-08-14  Jim Meyering  <jim@meyering.net>
971
972         Merge from coreutils.
973         * obstack.h: Whitespace changes.
974         * mountlist.c: Remove anachronistic casts of xmalloc, xrealloc,
975         and xcalloc return values.
976         (read_filesystem_list) [MOUNTED_GETFSSTAT]:
977         Use MNT_NOWAIT, rather than MNT_WAIT.  Otherwise, `df DIR' could
978         hang on OSF/1 5.1 for DIR on both local and remote file systems.
979         Reported by (and fix confirmed by) Nelson H. F. Beebe.
980         (read_filesystem_list) [MOUNTED_VMOUNT]: Detect any
981         error from mntctl.
982         Use mntctl's return value to drive the entry-processing loop, since
983         we can't rely on the value of the vmt_length member in the last
984         entry.  On some systems doing so could result in exhausting
985         virtual memory.  Based in part on a patch from Mike Jetzer.
986
987 2003-08-14  Jim Meyering  <jim@meyering.net>
988         and Paul Eggert  <eggert@twinsun.com>
989
990         Merges from coreutils, plus other fixes.
991         * physmem.c: Merge in portability changes from gcc/libiberty
992         to support AIX, IRIX, Tru64, and Windows.  See the ChangeLog there
993         for credits and details.  Thanks to Kaveh Ghazi for helping
994         to keep these files in sync.
995         (ARRAY_SIZE): Define it.
996         (physmem_total, physmem_available): Add comments. From Kaveh Ghazi.
997         * memcasecmp.c: Remove unnecessary parentheses after 'defined'.
998         (memcasecmp): Don't assume size_t fits in unsigned int.
999         Remove casts and duplicate code.
1000         * md5.c: Include <string.h> and <stdlib.h> unconditionally.
1001         (memcpy): Remove definition.
1002         Merge in some clean-up and optimization changes from glibc.
1003         [BLOCKSIZE]: Move definition to top of file.
1004         Ensure that it is a multiple of 64.
1005         Rearrange loop exit tests so as to avoid performing an
1006         additional fread after encountering an error or EOF.
1007         * md5.h (md5_uintptr): Define.
1008         * makepath.c (CLEANUP_CWD): Report an error if we failed to
1009         return to the initial working directory.  Preserve errno
1010         for caller.
1011         * idcache.c: Include "xalloc.h".
1012         (xmalloc, xrealloc): Remove decls.
1013         (getuser): Remove casts no longer required in C89.
1014         * human.c: Include stdio.h, for sprintf.
1015         * group-member.c: Include "xalloc.h".
1016         (xmalloc, xrealloc): Remove decls.
1017         (get_group_info): Remove casts no longer required in C89.
1018         * getusershell.c (readname): Remove casts no longer required in C89.
1019         * gettimeofday.c (rpl_gmtime, rpl_tzset): New functions.
1020         * getline.c: Whitespace fix, from coreutils.
1021
1022 2003-08-13  Paul Eggert  <eggert@twinsun.com>
1023
1024         * exclude.c: Include <ctype.h>
1025         (IN_CTYPE_DOMAIN): New macro.
1026         (is_space): New fn.
1027         (add_exclude_file): If LINE_END is a space, ignore trailing spaces
1028         and empty lines.
1029
1030         * argp-help.c, argp-parse.c, config.charset, getopt.h:
1031         Undo previous (whitespace-only) change.
1032
1033 2003-08-12  Paul Eggert  <eggert@twinsun.com>
1034
1035         * argp-help.c, argp-parse.c, config.charset, getopt.h:
1036         Normalize leading white space and remove trailing white space.
1037         * ref-add.sin, ref-del.sin: Use '#' before empty line in copyright
1038         notice, as per ../config/srclist-update.
1039
1040         Merge from coreutils.
1041         * euidaccess.h: New file.
1042         * euidaccess.c: Include it.
1043         * .cppi-disable: Add printf-args.h, printf-parse.h, stdbool_.h,
1044         vasnprintf.h, vasprintf.h.  Remove strdup.c, gettext.h.
1045         * regex.h, strdup.c, strtoll.c, strtoul.c: Normalize white space.
1046
1047 2003-08-11  Bruno Haible  <bruno@clisp.org>
1048
1049         * vasnprintf.c (local_wcslen): New function, for Solaris 2.5.1.
1050         (vasnprintf): Use it instead of wcslen.
1051
1052 2003-08-11  Bruno Haible  <bruno@clisp.org>
1053
1054         * stdbool_.h (_Bool): Undo last change; instead use a negative enum
1055         value to ensure that _Bool promotes to int. Use #define for _Bool when
1056         using the Solaris C compiler. Adds comments suggested by Paul Eggert.
1057
1058 2003-08-10  Karl Berry  <karl@gnu.org>
1059
1060         * regex.h: update from libc (whitespace fix).
1061
1062 2003-08-09  Paul Eggert  <eggert@twinsun.com>
1063
1064         Merge some files from coreutils.  These changes were
1065         originally made by Jim Meyering.
1066         * lib/acl.c: Include <sys/types.h> before <sys/stat.h>;
1067         many older Unixes require this.
1068         * lib/alloca.c (alloca): Remove cast to argument of free;
1069         no longer needed in C89.
1070         * lib/alloca_.h, lib/regex.h: Fix white space to match
1071         what GNU indent does.
1072
1073 2003-08-05  Paul Eggert  <eggert@twinsun.com>
1074
1075         * bumpalloc.h: Remove.
1076
1077 2003-08-04  Paul Eggert  <eggert@twinsun.com>
1078
1079         * getloadavg.c: Change copyright notice and spacing to conform to
1080         GNU coding style.
1081
1082         Merge from coreutils.
1083         * error.c [!USE_IN_LIBIO]: Omit this case; assume USE_IN_LIBIO is 1.
1084         From glibc.
1085         * getdate.y (date): Also accept dates like May-23-2003; suggestion
1086         from Karl Berry, implemented by Jim Meyering.
1087         * getgroups.c: Include "xalloc.h" instead of declaring xalloc fns;
1088         from Dmitry V. Levin.
1089         Remove anachronistic cast of xrealloc.
1090         * fnmatch_.h (__const): Remove.  Use 'const'.
1091         * fnmatch_loop.c (NEW_PATTERN): Cast alloca return value to proper
1092         type. Otherwise, it wouldn't compile with at least /bin/cc on
1093         ymp-cray-unicos9.0.2.X.
1094         Combine two mostly-identical uses of alloca into one.
1095         Thanks to the Cray-Cyber project for access to a Cray Y-MP.
1096
1097 2003-08-04  Dave Love <d.love@dl.ac.uk>
1098
1099         [From Emacs.]
1100
1101         * getloadavg.c: Check `__unix' as well as `unix'.  Use #ifdef, not
1102         #if.  Check HAVE_LIBKSTAT as well as LOAD_AVE_TYPE.  Check
1103         F_SETFD, not FD_SETFD.  Use HAVE_STRUCT_NLIST_N_UN_N_NAME, not
1104         obsolete NLIST_NAME_UNION.
1105         [__GNU__]: Undef BSD and FSCALE.
1106         [!NLIST_STRUCT]: Remove conditional definition of NLIST_STRUCT.
1107
1108 2003-08-03  Paul Eggert  <eggert@twinsun.com>
1109
1110         * stdbool_.h (_Bool): Make it signed char, instead of
1111         an enum type, so that it's guaranteed to promote to int.  See:
1112         <http://mail.gnu.org/archive/html/bug-gnulib/2003-07/msg00124.html>
1113
1114 2003-07-31  Paul Eggert  <eggert@twinsun.com>
1115
1116         * strerror.c: Include config.h, limits.h.  Declare sprintf.
1117         (strerror): Don't assume that a printable int fits in 14 bytes.
1118
1119 2003-07-24  Derek Robert Price  <derek@ximbiot.com>
1120             Bruno Haible  <bruno@clisp.org>
1121
1122         * getline.h (getline, getdelim): Change return type to ssize_t.
1123         * getline.c (getline, getdelim): Likewise.
1124         Remove _GNU_SOURCE define; now it's defined in config.h through
1125         m4/getline.m4.
1126
1127 2003-07-22  Paul Eggert  <eggert@twinsun.com>
1128
1129         * xalloc.h (XCALLOC, XREALLOC, CCLONE): Fix under- and
1130         over-parenthesization in macros.
1131
1132         Sync with coreutils.
1133
1134         * xalloc.h (XMALLOC, XCALLOC, XREALLOC): Remove casts not
1135         required by C99.
1136
1137         Use `exit_failure' for xalloc and xmemcoll instead of their own
1138         private exit-failure variables.
1139         * xalloc.h (xalloc_exit_failure): Remove.
1140         * xmalloc.c: Likewise.  Include exitfail.h.
1141         (xalloc_die): Use exit_failure instead of xalloc_exit_failure.
1142         * xmemcoll.h (xmemcoll_exit_failure): Remove.
1143         * xmemcoll.c: Likewise.  Include exitfail.h.
1144         (xmemcoll): Use exit_failure instead of xalloc_exit_failure.
1145
1146 2003-07-18  Paul Eggert  <eggert@twinsun.com>
1147
1148         * closeout.h (close_stdout_set_status, close_stdout_status): Remove.
1149         * closeout.c: Likewise.  Include "closeout.h" right after config.h,
1150         to test that it can stand by itself.  Include "exitfail.h".
1151         Clients should set exit_failure instead.
1152         (EXIT_FAILURE): Remove; no longer needed.  Do not include <stdlib.h>.
1153
1154 2003-07-18  Andreas Schwab  <schwab@suse.de>
1155
1156         * memcoll.c (memcoll) [!HAVE_STRCOLL]: Clear errno.
1157
1158 2003-07-18  Bruno Haible  <bruno@clisp.org>
1159
1160         * getndelim2.h: New file.
1161         * getndelim2.c: Make into a module of its own. Include config.h,
1162         getndelim2.h.
1163         (getndelim2): Make non-static. Change return type to ssize_t.
1164         * getline.h: Change argument names.
1165         * getline.c: Include getndelim2.h instead of getndelim2.c.
1166         * getnline.c: Include getndelim2.h.
1167
1168 2003-07-17  Bruno Haible  <bruno@clisp.org>
1169
1170         * Makefile.am: Remove file.
1171         * Makefile.in: Remove file.
1172
1173 2003-07-17  Bruno Haible  <bruno@clisp.org>
1174
1175         * getnline.h: New file.
1176         * getnline.c: New file.
1177         * getndelim2.c: New file, extracted from getline.c.
1178         (getndelim2): Renamed from getdelim2, with added nmax argument.
1179         * getline.c: Include getndelim2.c.
1180         (getdelim2): Moved out to getndelim2.c.
1181         (getline, getdelim): Update.
1182
1183 2003-07-15    <karl@gnu.org>
1184
1185         * vasnprintf.c: update from gettext.
1186
1187 2003-07-15  Jim Meyering  <jim@meyering.net>
1188
1189         * makepath.c (make_path): Enclose diagnostic in _(...).
1190
1191 2003-07-14  Paul Eggert  <eggert@twinsun.com>
1192
1193         * asnprintf.c, asprintf.c, config.charset, gettext.h,
1194         localcharset.c, localcharset.h, mkdtemp.c, printf-args.c,
1195         printf-args.h, printf-parse.c, printf-parse.h, ref-add.sin,
1196         ref-del.sin, setenv.c, unsetenv.c, vasnprintf.c, vasnprintf.h,
1197         vasprintf.c, vasprintf.h: Regenerate.  These files are now being
1198         updated automatically by ../config/srclist-update.  This changes
1199         their license from LPGL to GPL.
1200
1201 2003-07-14  Jim Meyering  <jim@meyering.net>
1202
1203         Don't emit diagnostics.  Let callers do that.
1204         * save-cwd.c: Don't include "error.h".
1205         (save_cwd): Don't call error.  Ensure that errno is valid
1206         when returning nonzero.
1207
1208         * save-cwd.h (restore_cwd): Update prototype.
1209         * save-cwd.c (restore_cwd): Remove two parameters.
1210         Simplify.  Don't call error upon failure.  Let callers do that.
1211         (save_cwd): Mention that Irix 5.3 has the same problem as SunOS 4
1212         when auditing is enabled.  But don't bother updating the #if.
1213
1214 2003-07-14  Simon Josefsson  <jas@extundo.com>
1215
1216         * mempcpy.h: New file.
1217         * mempcpy.c: New file.
1218
1219 2003-07-14  Paul Eggert  <eggert@twinsun.com>
1220
1221         * ceill.c, expl.c, floorl.c, frexpl.c, ldexpl.c, mathl.h,
1222         sincosl.c, sqrtl.c, trigl.c, trigl.h, poll.c, poll_.h, mkstemp.c,
1223         unicodeio.c, unicodeio.h, unlocked-io.h:
1224         Switch from LGPL to GPL.
1225
1226 2003-07-11  Alexandre Duret-Lutz  <adl@gnu.org>
1227
1228         * obstack.h (__INT_TO_PTR): Revert change of 2003-03-13;
1229         it breaks C++ compilation.
1230         [!__GNUC__ || !__STDC__] (obstack_finish): Cast result to void*.
1231
1232 2003-07-10  Jim Meyering  <jim@meyering.net>
1233
1234         * vasnprintf.c: Remove trailing blanks.
1235         Make cpp indentation consistent.
1236
1237 2003-07-09  Paul Eggert  <eggert@twinsun.com>
1238
1239         * alloca_.h, euidaccess.c, getpass.c, memrchr.c, obstack.h,
1240         posixver.c, strftime.c, strnlen.c, strverscmp.c:
1241         Switch from LGPL to GPL.
1242
1243 2003-07-07  Paul Eggert  <eggert@twinsun.com>
1244
1245         * mktime.c: Fix some boundary cases and remove need for floating point.
1246
1247         Issue a compile-time diagnostic if time_t is floating point, or if
1248         two's complement arithmetic is not in effect, or if arithmetic
1249         right shift does not propagate the sign.  These assumptions were
1250         all in the original code but they weren't checked.
1251
1252         (TIME_T_MIDPOINT, verify): New macros.
1253         (__isleap): Remove; it has integer overflow problems.
1254         (leapyear): New function, without those problems.
1255         (ydhms_tm_diff): Remove; splitting into two parts.
1256         (ydhms_diff): New function, containing the arithmetic part of
1257         the old ydhms_tm_diff function.  Issue a compile-time
1258         diagnostic if we are not using C99 integer division.
1259         Avoid casts when possible.
1260         (guess_time_tm): New function, containing the checking part of
1261         the old ydhms_tm_diff function.  Return the new value, rather than
1262         the difference between it and the old.  Accept a new argument T
1263         so that *T specifies the old value.  Check for overflow in the result.
1264
1265         (__mktime_internal): Use a time_t offset, not a long int offset.
1266         This undoes the 2003-06-04 change, which is no longer needed now
1267         that we have better overflow checking.
1268         (localtime_offset): Likewise.
1269
1270         (__mktime_internal): Avoid harmful overflow on hosts where time_t
1271         and long are 64-bit but int is only 32-bit.
1272         (ydhms_diff): Use long int to store year1 and yday1.
1273         Issue a compile-time diagnostic if long int is not wide enough.
1274
1275         (__mktime_internal): Use long int to store adjusted year and yday.
1276         Use plain C rather than preprocessor commands, if that doesn't
1277         affect efficiency.
1278         Check for overflow (and try to repair) after each probe
1279         rather than checking only at the very end.  This avoids some bugs
1280         (e.g., southern hemisphere, behind GMT, and GMT offset at minimum time
1281         does not equal GMT offset at maximum time).
1282         Use integer to check for overflow rather than floating point; this
1283         is more portable to non-IEEE hosts, and is a tad faster.
1284         When we detect that we are oscillating between two values,
1285         don't check whether tm_isdst has the requested value, since
1286         we already know the answer.  When tm_isdst has the wrong value,
1287         use a different heuristic to find the right one, based on the
1288         extreme values actually observed in practice in tz2003a,
1289         rather than the (overly optimistic) "previous 3 calendar quarters".
1290
1291         (not_equal_tm, print_tm, check_result): Use "const T" rather than
1292         "T const" to accommodate glibc style.
1293         (check_result): Use less-confusing report format.  "long" -> "long int.
1294         (main): Likewise.
1295         Don't loop if the iteration overflows time_t.
1296         Allow a negative step in the iteration.
1297
1298 2003-07-01  Paul Eggert  <eggert@twinsun.com>
1299
1300         * xreadlink.c: Include <sys/types.h> unconditionally, instead of
1301         having it depend on HAVE_SYS_TYPES_H.
1302
1303 2003-06-25  Bruno Haible  <bruno@clisp.org>
1304
1305         * readlink.c: New file.
1306
1307 2003-06-20  Bruno Haible  <bruno@clisp.org>
1308
1309         Assume C89, so PARAMS isn't needed.
1310         * unicodeio.h (PARAMS): Remove.
1311         * unicodeio.c: Don't use PARAMS.
1312
1313 2003-06-18  Jim Meyering  <jim@meyering.net>
1314
1315         Merge changes from coreutils.
1316         * readutmp.c: Include <string.h> and <stdlib.h> unconditionally.
1317         Remove explicit declarations of xmalloc and realloc.
1318         Include xalloc.h.
1319         (read_utmp): Remove anachronistic cast of xmalloc.
1320
1321 2003-06-17  Paul Eggert  <eggert@twinsun.com>
1322
1323         Assume C89, so PARAMS isn't needed.
1324         * backupfile.h (PARAMS): Remove.  All uses removed.
1325         * closeout.h, dirname.h, filemode.h, fsusage.h, getdate.h, getline.h,
1326         group-member.h, hard-locale.h, hash.h, linebuffer.h, long-options.h,
1327         makepath.h, memcasecmp.h, memcoll.h, modechange.h, mountlist.h,
1328         path-concat.h, physmem.h, posixtm.h, quote.h, readutmp.h, same.h,
1329         save-cwd.h, savedir.h, stdio-safer.h, strtoimax.c, strverscmp.h,
1330         unistd-safer.h, version-etc.h, xalloc.h, xreadlink.h, xstrtod.h,
1331         xstrtol.h: Likewise.
1332         * filemode.h, hard-locale.h, memcoll.h, modechange.h, physmem.h,
1333         same.h, strverscmp.h: Do not include config.h; no longer needed.
1334         Anyway, config.h should always be included before any other file.
1335
1336 2003-06-11  Simon Josefsson  <jas@extundo.com>
1337
1338         * sysexit_.h: New file.
1339
1340 2003-05-20  Derek Price  <derek@ximbiot.com>
1341
1342         * stat.c [LSTAT]: Compile/use slash_aware_lstat only if it is necessary.
1343
1344 2003-06-10  Simon Josefsson  <jas@extundo.com>
1345
1346         * strchrnul.h: New file.
1347         * strchrnul.c: New file.
1348
1349 2003-06-10  Simon Josefsson <jas@extundo.com>
1350
1351         * argp.h: New file, from glibc.
1352         * argp-ba.c: New file, from glibc.
1353         * argp-eexst.c: New file, from glibc.
1354         * argp-fmtstream.c: New file, from glibc.
1355         * argp-fmtstream.h: New file, from glibc.
1356         * argp-fs-xinl.c: New file, from glibc.
1357         * argp-help.c: New file, from glibc.
1358         * argp-namefrob.h: New file, from glibc.
1359         * argp-parse.c: New file, from glibc.
1360         * argp-pv.c: New file, from glibc.
1361         * argp-pvh.c: New file, from glibc.
1362         * argp-xinl.c: New file, from glibc.
1363
1364 2003-06-07  Jim Meyering  <jim@meyering.net>
1365
1366         * readtokens.h: Put `Free Software Foundation, Inc.'
1367         in place of my name in the copyright comment.
1368         Remove definition and uses of __P.
1369
1370         From coreutils.
1371         * stat.c: Don't declare xmalloc explicitly.
1372         Instead, include "xalloc.h".
1373         * readtokens.c (readtokens): Remove anachronistic casts of xmalloc,
1374         xrealloc, and xcalloc return values.
1375         * xgetcwd.c (xgetcwd): Include "xgetcwd.h".
1376         Improve comment.
1377         * xgetcwd.h: Remove definition/uses of PARAMS.
1378
1379 2003-06-06  Jim Meyering  <jim@meyering.net>
1380
1381         * stdbool_.h: Renamed from stdbool.h.in.
1382
1383 2003-06-06  Jim Meyering  <jim@meyering.net>
1384
1385         Merge from coreutils.
1386         * same.c: (same_name): Declare *_basename locals to be `const'.
1387         Consolidate declarations and initializations of *_base* locals.
1388
1389         Merge from coreutils.
1390         This avoids a core dump on systems without GNU putenv,
1391         when running `env -u SOME_ALREADY_UNSET_VARIABLE'.
1392         * putenv.c (__set_errno, LOCK, UNLOCK): Define.
1393         (unsetenv): New static function, from GNU libc.
1394         (rpl_putenv): Use it.
1395
1396         * modechange.c: Remove trailing blanks.
1397
1398         Merge from coreutils.
1399         * fsusage.c: Remove declaration of statfs.
1400         It conflicted with one from OSF/1 5.1 in <sys/mount.h>.
1401
1402         * posixtm.c: Include <stdbool.h> unconditionally.
1403
1404 2003-06-05  Paul Eggert  <eggert@twinsun.com>
1405
1406         * mktime.c (__mktime_internal): When resolving a tm_isdst
1407         mismatch, look in future quarters as well as past.  This fixes a
1408         bug when processing fall-backwards gaps immediately after a long
1409         period of daylight-saving time.
1410
1411         * mktime.c: Assume freestanding C89 or better.
1412         (HAVE_LIMITS_H): Remove.  Assume it's 1.
1413         (__P): Remove; not used.
1414         (CHAR_BIT, INT_MIN, INT_MAX): Remove; <limits.h> defines them.
1415         (mktime, not_equal_tm, print_tm, check_result,
1416         main): Use prototypes.  Use const * where appropriate.
1417         (main): Fix typo in testing code that uncovered by above changes.
1418         (Local Variables): Remove -DHAVE_LIMITS_H from compile-command.
1419
1420 2003-06-04  Paul Eggert  <eggert@twinsun.com>
1421
1422         * mktime.c: Fix Debian bug 177940
1423         <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=177940>.
1424         (localtime_offset): Now long int, not time_t, because we want it
1425         to be guaranteed to be signed.  All uses changed.
1426         (__mktime_internal): If overflow would occur when adding offset,
1427         don't add it.
1428
1429         Merge 'human' changes from coreutils.  Rewrite to support
1430         locale-specific notations like thousands separators.
1431         * human.c: Simplify authorship notice.
1432         Include human.h immediately after config.h.
1433         <sys/types.h>, <stdio.h>: Do not include; no longer needed.
1434         <limits.h>: Do not include, since human.h does.
1435         (SIZE_MAX, UINTMAX_MAX): New macros.
1436         <strings.h>: Include if HAVE_STRINGS_H, not if !HAVE_STRING_H.
1437         <locale.h>: Include if HAVE_LOCALE_H and HAVE_LOCALECONV.
1438         (HUMAN_READABLE_SUFFIX_LENGTH_MAX): New macro.
1439         (power_letter): Renamed from suffixes.
1440         (generate_suffix_backwards): Remove.
1441         (adjust_value): Now takes int style (because of human.h changes)
1442         and long double value (for greater precision on some platforms).
1443         (group_number): New function.
1444         (human_readable): Use it.  Use integer options, not enum.
1445         Put the options before the sizes in the arg list.
1446         Support all the new options.
1447         The old human_readable function has been removed;
1448         use inttostr.h instead.
1449         (human_readable, default_block_size, humblock):
1450         Use uintmax_t, not int, for block sizes.
1451         (human_readable_inexact, block_size_types): Remove.
1452         (block_size_opts): New constant.
1453         (human_options): Renamed from human_block_size, with new signature
1454         that allows block sizes up to UINTMAX_MAX.  All callers changed.
1455         * human.h: Add copyright and authorship notice.
1456         Include <limits.h> and <stdbool.h> unconditionally.
1457         (PARAMS): Remove.  All uses removed.
1458         (LONGEST_HUMAN_READABLE): Add support for thousands separator.
1459         (enum human_inexact_style): Remove tag; now a nameless enum.
1460         (human_floor, human_ceiling, human_round_to_even): Now have
1461         values 2, 0, 1 rather than -1, 1, 0.
1462         (human_group_digits, human_suppress_point_zero, human_autoscale,
1463         human_base_1024, human_SI, human_B): New constants.
1464         (human_readable_inexact, human_block_size): Remove.
1465         (human_readable): Size args are now uintmax_t, not int.
1466         (human_options): New decl.
1467
1468         * exclude.c: (new_exclude, add_exclude): Remove casts that are
1469         unnecessary now that we assume C89 or better.  This change
1470         imported from coreutils.
1471
1472         * mktime.c (__mktime_internal): Do not reject negative timestamps
1473         arbitrarily.  This is the same patch as 2003-05-28, but it got lost
1474         in the 2003-05-30 sync from glibc.
1475
1476         .h files should stand alone, but we shouldn't include <sys/types.h>
1477         if we can get away with just <stddef.h>.
1478
1479         * __fpending.h, addext.c, backupfile.c, exclude.c, getline.c,
1480         malloc.c, putenv.c, realloc.c, strcasecmp.c: Include <stddef.h>
1481         rather than <sys/types.h>, as we merely need size_t.
1482         * dirname.h, memcoll.h, xalloc.h, xmemcoll.h: Include <stddef.h>,
1483         to get size_t.
1484         * hash.h, linebuffer.h, readtokens.h, stdio-safer.h, version-etc.h:
1485         Include <stdio.h>, to get FILE.
1486         * memcasecmp.c: Don't include <sys/types.h>, as we can assume
1487         memcasecmp.h has included <stddef.h> and all we need is size_t.
1488         * memcoll.c: Include "memcoll.h", which gets us size_t and checks
1489         our interface, instead of including <sys/types.h>
1490
1491 2003-06-02  Paul Eggert  <eggert@twinsun.com>
1492
1493         [from coreutils]
1494         Fix some minor time-related bugs with POSIX time arguments.
1495         Some valid time stamps were being rejected (notably -1, and
1496         time stamps before 1900 on 64-bit hosts).  And some invalid
1497         time stamps were being accepted, e.g. September 31.
1498
1499         * posixtm.h (posixtime): Return bool instead of time_t, so
1500         that we can return (time_t) -1 successfully.
1501         * posixtm.c: Likewise.
1502         [HAVE_STDBOOL_H]: Include <stdbool.h>.
1503         (bool, false, true) [!HAVE_STDBOOL_H]: New type.
1504         (t): Remove static var.
1505         (year, posix_time_parse): Now takes struct tm * arg to modify, instead
1506         of static var.  All uses changed.
1507         (year): Do not reject years before 1900; they can occur with
1508         64-bit time_t.
1509         (posix_time_parse): Do not check for out-of-range components;
1510         that is now the caller's responsibility, since our checks were
1511         only approximations.
1512         (posixtime): Use mktime to check for out-of-range components,
1513         since it knows them exactly.
1514         If mktime returns (time_t) -1, check whether an error actually occurred
1515         by invoking localtime on -1.
1516         (main) [TEST_POSIXTIME]: Check for input data errors, and report
1517         posixtime failures better.
1518         Improve the test data (in comments only).
1519
1520 2003-05-30    <karl@gnu.org>
1521
1522         * mktime.c: update from libc.
1523
1524 2003-05-30  Bruno Haible  <bruno@clisp.org>
1525
1526         * config.charset: Upgrade to gettext-0.12.1 and libiconv-1.9.1.
1527         * localcharset.h: Likewise.
1528         * localcharset.c: Likewise.
1529
1530 2003-05-28  Paul Eggert  <eggert@twinsun.com>
1531
1532         Assume the headers required for C89 freestanding compilers.
1533         * addext.c, backupfile.c, fsusage.c, human.c, pathmax.h,
1534         rpmatch.c, userspec.c, xreadlink.c, xstrtol.c: Include <limits.h>
1535         without checking for HAVE_LIMITS_H.
1536         * backupfile.c, fsusage.c, hash.c, human.c, safe-read.c, userspec.c,
1537         xstrtol.c (CHAR_BIT) : Don't define, since <limits.h> is guaranteed
1538         to do that.
1539         * fatal.c: Include <stdarg.h> without checking for __STDC__.
1540         * exclude.c: Include <stdbool.h> unconditionally.
1541         * tempname.c: Include <stddef.h> unconditionally.
1542         * hash.c: Include <limits.h>, since we no longer define CHAR_BIT.
1543         * modechange.c, rpmatch.c (NULL): Don't define, since
1544         <stddef.h> does that.
1545         * quote.c: Dont include <stddef.h> or <sys/types.h>; not needed.
1546         * safe-read.c (INT_MAX): Don't define, since <limits.h> does that.
1547         * safe-read.c (TYPE_MINIMUM, TYPE_MAXIMUM): Remove; no longer needed.
1548         * xstrtol.c: Likewise.
1549         * safe-read.c: Remove TYPE_SIGNED; no longer needed.
1550         * savedir.c: Include <stddef.h> instead of defining NULL.
1551
1552         * addext.c (addext): Use assignment rather than cast, to avoid
1553         warnings on some platforms.
1554
1555         * mktime.c (__mktime_internal): Do not reject negative timestamps
1556         arbitrarily.
1557
1558 2003-05-10  Bruno Haible  <bruno@clisp.org>
1559
1560         * linebreak.c (iconv_string_length): Don't return -1 just because the
1561         string is longer than 4 KB.
1562
1563 2003-05-12  Jim Meyering  <jim@meyering.net>
1564
1565         * strftime.c (my_strftime): Let the `-' (no-pad) flag affect
1566         the space-padded-by-default conversion specifiers, %e, %k, %l.
1567
1568 2003-05-03  Bruno Haible  <bruno@clisp.org>
1569
1570         Upgrade to Unicode-4.0.
1571         * linebreak.c (nonspacing_table_data): Change width of U+00AD,
1572         U+0350..U+0357, U+035D..U+035F, U+0600..U+0603, U+0610..U+0615,
1573         U+0656..U+0658, U+0A01, U+0AE2..U+0AE3, U+0CBC, U+17B4..U+17B5,
1574         U+17DD, U+1920..U+1922, U+1927..U+192B, U+1932, U+1939..U+193B
1575         from 1 to 0. Change width of U+0CBF, U+0CC6, U+180E from 0 to 1.
1576         (uc_width): Change width of U+4DC0..U+4DFF from 2 to 1. Change width
1577         of U+2A6D7..U+2F7FF, U+2FA1E..U+2FFFD, U+30000..U+3FFFD from 1 to 2.
1578         Change width of U+E0100..U+E01EF from 1 to 0.
1579
1580 2003-04-25  Bruno Haible  <bruno@clisp.org>
1581
1582         * copy-file.c: Include <stddef.h>, for size_t.
1583
1584 2003-04-25  Jim Meyering  <jim@meyering.net>
1585
1586         * copy-file.c (copy_file_preserving): Declare buf_size to be
1587         of type size_t, not int.
1588
1589 2003-04-11  Jim Meyering  <jim@meyering.net>
1590
1591         Merge changes from Coreutils.
1592
1593         2003-03-22  Jim Meyering  <jim@meyering.net>
1594
1595         * strftime.c (widen): Cast alloca return value to proper type.
1596
1597         2003-01-19  Ulrich Drepper  <drepper@redhat.com>
1598
1599         From GNU libc.
1600         * strftime.c (my_strftime): Handle very large width
1601         specifications for numeric values correctly.  Improve checks for
1602         overflow.
1603
1604         2003-01-19  Jim Meyering  <jim@meyering.net>
1605
1606         * strftime.c (widen) [COMPILE_WIDE]: Merge nearly-identical definitions.
1607         (nl_get_alt_digit) [! defined my_strftime]: Define.
1608         (my_strftime) [_NL_CURRENT]: Merge nearly-identical uses of
1609         _nl_get_alt_digit and _nl_get_walt_digit.
1610
1611         * strftime.c (my_strftime): Merge in locale-related changes from libc.
1612         These changes have no effect outside of _LIBC.
1613
1614 2003-04-10  Bruno Haible  <bruno@clisp.org>
1615
1616         * findprog.h: New file, from GNU gettext.
1617         * findprog.c: New file, from GNU gettext.
1618
1619 2003-04-05  Jim Meyering  <jim@meyering.net>
1620
1621         Merge changes from Coreutils.
1622
1623         * exclude.h (PARAMS): Remove definition and uses.
1624         * exclude.c: Remove uses of `PARAMS'.
1625
1626         * dirname.c [TEST_DIRNAME]: Update build instructions for test.
1627         Add test-cases for DOS filenames. Declare program_name.
1628         (main): Set up program_name.  Patch by Rich Dawe.
1629
1630         * mountlist.c (read_filesystem_list) [MOUNTED_VMOUNT]: Detect any
1631         error from mntctl.
1632         Use mntctl's return value to drive the entry-processing loop, since
1633         we can't rely on the value of the vmt_length member in the last
1634         entry.  On some systems doing so could result in exhausting
1635         virtual memory.  Based in part on a patch from Mike Jetzer.
1636
1637 2003-04-04  Bruno Haible  <bruno@clisp.org>
1638
1639         * linebreak.h: New file, from GNU gettext.
1640         * linebreak.c: New file, from GNU gettext with slight modifications.
1641         * lbrkprop.h: New file, from GNU gettext.
1642
1643 2003-04-03  Bruno Haible  <bruno@clisp.org>
1644
1645         * utf8-ucs4.h: New file, from GNU gettext.
1646         * utf16-ucs4.h: New file, from GNU gettext.
1647         * ucs4-utf8.h: New file, from GNU gettext.
1648         * ucs4-utf16.h: New file, from GNU gettext.
1649
1650 2003-04-02  Bruno Haible  <bruno@clisp.org>
1651
1652         * binary-io.h: New file, from GNU gettext.
1653
1654 2003-04-01  Bruno Haible  <bruno@clisp.org>
1655
1656         * pathname.h: New file, from GNU gettext.
1657         * concatpath.c: New file, from GNU gettext.
1658
1659 2003-03-30  Bruno Haible  <bruno@clisp.org>
1660
1661         * copy-file.c (copy_file_preserving): Don't set owner if the function
1662         chown() doesn't exist.
1663
1664 2003-03-28  Bruno Haible  <bruno@clisp.org>
1665
1666         * copy-file.h: New file, from GNU gettext.
1667         * copy-file.c: New file, from GNU gettext.
1668
1669 2003-03-18  Jim Meyering  <jim@meyering.net>
1670
1671         * quote.c (quote_n): Fix typo in comment.
1672
1673 2003-03-14  Jim Meyering  <jim@meyering.net>
1674
1675         Merge changes from Coreutils.
1676         * obstack.h (obstack_object_size): Declare temporary, __o,
1677         to be const, in order to avoid warnings.
1678         (obstack_room): Likewise.
1679         (obstack_empty_p): Likewise.
1680
1681 2003-03-13  Paul Eggert  <eggert@twinsun.com>
1682
1683         Merge changes from Bison.
1684         * obstack.h: (__INT_TO_PTR) [__STDC__]: Cast result to
1685         (void *) to avoid diagnostic with native c89 on SGI IRIX 6.5
1686         when compiling Bison 1.875's `bitset bset = obstack_alloc
1687         (bobstack, bytes);'.  Problem reported by Nelson H. F. Beebe.
1688         * hash.c: Include <stdbool.h> unconditionally.
1689
1690 2003-03-09  Paul Eggert  <eggert@twinsun.com>
1691
1692         * argmatch.c (EXIT_FAILURE): Define if the system doesn't.
1693         Reported by Bruce Becker; see:
1694         http://mail.gnu.org/archive/html/bug-bison/2003-03/msg00017.html
1695
1696 2003-03-03  Paul Eggert  <eggert@twinsun.com>
1697             Bruno Haible  <bruno@clisp.org>
1698
1699         * mbswidth.h: Include <wchar.h>. Needed for UnixWare 7.1.1.
1700         Reported by John Hughes, see
1701         http://mail.gnu.org/archive/html/bug-bison/2003-02/msg00030.html
1702
1703 2003-02-19  Paolo Bonzino  <bonzini@gnu.org>
1704
1705         * poll_.h: New file.
1706         * poll.c: New file.
1707
1708 2003-02-18  Paolo Bonzino  <bonzini@gnu.org>
1709
1710         * mathl.h: New file.
1711         * acosl.c: New file.
1712         * asinl.c: New file.
1713         * atanl.c: New file.
1714         * ceill.c: New file.
1715         * cosl.c: New file.
1716         * expl.c: New file.
1717         * floorl.c: New file.
1718         * frexpl.c: New file.
1719         * ldexpl.c: New file.
1720         * logl.c: New file.
1721         * sincosl.c: New file.
1722         * sinl.c: New file.
1723         * sqrtl.c: New file.
1724         * tanl.c: New file.
1725         * trigl.c: New file.
1726         * trigl.h: New file.
1727
1728 2003-02-17  Bruno Haible  <bruno@clisp.org>
1729
1730         * mkdtemp.h: New file, from GNU gettext.
1731         * mkdtemp.c: New file, from GNU gettext.
1732
1733 2003-01-31  Bruno Haible  <bruno@clisp.org>
1734
1735         * rename.c: #undef rename before defining rpl_rename.
1736         * strnlen.c: #undef strnlen, define rpl_strnlen instead of strnlen.
1737
1738 2003-01-30  Bruno Haible  <bruno@clisp.org>
1739
1740         * printf-args.h: New file, from GNU gettext.
1741         * printf-args.c: New file, from GNU gettext.
1742         * printf-parse.h: New file, from GNU gettext.
1743         * printf-parse.c: New file, from GNU gettext.
1744         * vasnprintf.h: New file, from GNU gettext.
1745         * vasnprintf.c: New file, from GNU gettext.
1746         * asnprintf.c: New file, from GNU gettext.
1747         * vasprintf.h: New file, from GNU gettext with modifications.
1748         * vasprintf.c: New file, from GNU gettext.
1749         * asprintf.c: New file, from GNU gettext.
1750
1751 2003-01-29  Bruno Haible  <bruno@clisp.org>
1752
1753         * stpncpy.h: New file, from GNU gettext with modifications.
1754         * stpncpy.c: New file, from GNU gettext with modifications.
1755
1756 2003-01-28  Bruno Haible  <bruno@clisp.org>
1757
1758         * c-ctype.h: New file, from GNU gettext, with changes suggested by
1759         Paul Eggert.
1760         * c-ctype.c: New file, from GNU gettext, with changes suggested by
1761         Paul Eggert.
1762
1763 2003-01-27  Bruno Haible  <bruno@clisp.org>
1764
1765         * xsetenv.h: New file, from GNU gettext.
1766         * xsetenv.c: New file, from GNU gettext.
1767
1768 2003-01-23  Bruno Haible  <bruno@clisp.org>
1769
1770         * minmax.h: New file, from GNU gettext, with comments from Paul Eggert.
1771
1772 2003-01-22  Bruno Haible  <bruno@clisp.org>
1773
1774         * exit.h: New file, from GNU gettext.
1775
1776 2003-01-11  Bruno Haible  <bruno@clisp.org>
1777
1778         * stpcpy.h (stpcpy): Use ANSI C function declarations.
1779         * strcase.h (strcasecmp, strncasecmp): Likewise.
1780
1781 2003-01-14  Jim Meyering  <jim@meyering.net>
1782
1783         * same.c (same_name): Tweak a comment.
1784
1785 2003-01-11  Bruno Haible  <bruno@clisp.org>
1786
1787         * same.c (same_name): Reorder tests so as to avoid calling stat()
1788         when a string comparison is sufficient.
1789
1790 2003-01-11  Bruno Haible  <bruno@clisp.org>
1791
1792         * readtokens.c (readtoken): Cast character to 'unsigned char', not
1793         'unsigned int'.
1794
1795 2003-01-11  Bruno Haible  <bruno@clisp.org>
1796
1797         * hash-pjw.c: Add comment about low quality of this function.
1798
1799 2003-01-12  Paul Eggert  <eggert@twinsun.com>
1800
1801         Finish renaming getstr -> getdelim2 and readline -> readlinebuffer,
1802         to avoid collisions with libcurses and libreadline.
1803
1804         * Makefile.am (libfetish_a_SOURCES): Remove getstr.c, getstr.h.
1805         * getstr.h, getstr.c: Remove.
1806         * getline.c: Include "getline.h", to check interface.
1807         Move body of old getstr.c here: this defines MIN_CHUNK and
1808         declares getdelim2, which is renamed from getstr.
1809         (getline, getdelim): Adjust to renaming of getstr -> getdelim2.
1810
1811         * linebuffer.c (readlinebuffer): Renamed from readline.
1812         All uses changed.
1813         * linebuffer.h: Likewise.
1814         (readline): Remove backward-compatibility macro.
1815
1816 2003-01-12  Jim Meyering  <jim@meyering.net>
1817
1818         * makepath.c: Don't test HAVE_ERRNO_H.  It's not necessary.
1819
1820 2003-01-10  Bruno Haible  <bruno@clisp.org>
1821
1822         * alloca_.h: New file.
1823         * getdate.y: Unconditionally include alloca.h.
1824         * makepath.c: Likewise.
1825         * setenv.c: Likewise.
1826         * userspec.c: Likewise.
1827
1828 2003-01-09  Bruno Haible  <bruno@clisp.org>
1829
1830         * stdbool.h.in: New file.
1831
1832 2003-01-08  Bruno Haible  <bruno@clisp.org>
1833
1834         * safe-read.c: Include specification header first, to ensure its
1835         selfcontainedness.
1836         * full-write.c: Likewise.
1837
1838 2003-01-08  Jim Meyering  <jim@meyering.net>
1839
1840         * full-write.c: Undefine and define-away `const' after inclusion
1841         of errno.h, not before.  Suggestion from Bruno Haible.
1842
1843 2003-01-07  Jim Meyering  <jim@meyering.net>
1844
1845         * full-write.c: Rework so that it may serve to define full_read, too.
1846         * full-read.c: Simply #define FULL_READ and include full-write.c.
1847
1848 2003-01-06  Jim Meyering  <jim@meyering.net>
1849
1850         * version-etc.c: Update year in translatable copyright string.
1851
1852 2002-12-25  Bruno Haible  <bruno@clisp.org>
1853
1854         * strtoimax.c: Include <stdint.h> as an alternative to <inttypes.h>.
1855         * xstrtol.h: Likewise.
1856         * xstrtoimax.c: Likewise.
1857         * xstrtoumax.c: Likewise.
1858         * human.h: Likewise.
1859
1860         * tempname.c: Include <inttypes.h> too. Avoids a compilation error
1861         on systems that have <inttypes.h> but not <stdint.h>.
1862
1863 2002-12-31  Paul Eggert  <eggert@twinsun.com>
1864
1865         * memcoll.c (memcoll): Fall back on a simple algorithm using
1866         memcmp if strcoll doesn't work.
1867
1868 2002-12-23  Bruno Haible  <bruno@clisp.org>
1869
1870         * localcharset.h: New file.
1871         * localcharset.c: Include it.
1872         * unicodeio.c: Likewise.
1873
1874 2002-12-22  Bruno Haible  <bruno@clisp.org>
1875
1876         * utime.c (utime_null): No need to call ftruncate if the file was
1877         nonempty.
1878
1879 2002-12-23  Bruno Haible  <bruno@clisp.org>
1880
1881         * memcoll.c (STRCOLL): New macro.
1882         (memcoll): Use it.
1883
1884 2002-12-22  Bruno Haible  <bruno@clisp.org>
1885
1886         * getstr.h (getstr): Define, to avoid clash with libcurses.
1887         * linebuffer.h (readline): Define, to avoid clash with libreadline.
1888
1889 2002-12-22  Bruno Haible  <bruno@clisp.org>
1890
1891         * getdate.y (get_date): Test HAVE_STRUCT_TM_TM_ZONE, not HAVE_TM_ZONE.
1892
1893 2002-12-23  Bruno Haible  <bruno@clisp.org>
1894
1895         * getline.h: Include <stddef.h>, for size_t.
1896
1897         * unicodeio.h: Include <stddef.h>, for size_t.
1898         * unicodeio.c: Don't include <stddef.h>.
1899
1900 2002-12-17  Bruno Haible  <bruno@clisp.org>
1901
1902         * canon-host.c (strdup): Remove unused declaration.
1903
1904         * fsusage.c: Include full_read.h.
1905         (get_fs_usage): Use full_read instead of safe_read.
1906
1907         * utime.c (utime_null): Use SAFE_READ_ERROR.
1908
1909 2002-12-11  Bruno Haible  <bruno@clisp.org>
1910
1911         * setenv.h: Rewritten to cope with systems that have setenv() but not
1912         unsetenv().
1913         * setenv.c, unsetenv.c: Taken from glibc-2.2.4 with the following
1914         modifications:
1915
1916         2002-12-11  Bruno Haible  <bruno@clisp.org>
1917
1918                 * setenv.c (alloca): Fall back to malloc.
1919                 (freea): New macro.
1920                 (setenv): Use freea() to free memory allocated with alloca().
1921
1922         2002-11-13  Bruno Haible  <bruno@clisp.org>
1923
1924                 * setenv.c (compar_fn_t, __add_to_environ, setenv): Use ANSI C
1925                 function declarations.
1926                 * unsetenv.c (unsetenv): Likewise.
1927
1928         2002-03-04  Bruno Haible  <bruno@clisp.org>
1929
1930                 Portability to AIX 4.3.3.
1931                 * unsetenv.c: New file, extracted from setenv.c.
1932                 * setenv.c: Move the unsetenv() function to unsetenv.c.
1933
1934         2001-12-20  Bruno Haible  <bruno@clisp.org>
1935
1936                 * setenv.c (__add_to_environ): Don't call realloc(NULL,...),
1937                 use malloc instead. For SunOS 4.
1938
1939         2001-12-11  Bruno Haible  <bruno@clisp.org>
1940
1941                 * setenv.c: Declare alloca.
1942                 (compar_fn_t): New typedef.
1943                 (KNOWN_VALUE, STORE_VALUE): Use it.
1944
1945         * Makefile.am (libfetish_a_SOURCES): Add setenv.c, unsetenv.c,
1946         setenv.h.
1947
1948 2002-12-10  Paul Eggert  <eggert@twinsun.com>
1949
1950         Port exclude.c and exclude.h to more non-GNU systems, e.g. Solaris 7.
1951         * exclude.h (EXCLUDE_ANCHORED, EXCLUDE_INCLUDE, EXCLUDE_WILDCARDS):
1952         Choose values that are less likely to collide with system fnmatch
1953         options.
1954         * exclude.c (FNM_CASEFOLD, FNM_LEADING_DIR): Define to 0 if not
1955         defined (e.g., a pure POSIX system).
1956         (EXCLUDE_macros_do_not_collide_with_FNM_macros): Use FNM_PATHNAME
1957         instead of FNM_FILE_NAME, for compatibility with pure POSIX sytems.
1958
1959 2002-12-06  Jim Meyering  <jim@meyering.net>
1960
1961         * error.c: Be consistent: change `#ifndef _LIBC' to `#if !_LIBC'.
1962
1963         Merge in changes from libc's misc/error.c, in preparation
1964         for the merge of gnulib's changes back into libc.
1965
1966         * error.c (_): Define only if not already defined.
1967         Move definition to follow all #include directives.
1968         Include unlocked-io.h only if !_LIBC.
1969         [_LIBC]: Include <libio/libioP.h>.
1970         [USE_IN_LIBIO]: Include <libio/iolibio.h>
1971         (fflush): Tweak definition to use INTUSE.
1972         (putc): Define.
1973
1974 2002-12-05  Paul Eggert  <eggert@twinsun.com>
1975
1976         * alloca.c [defined emacs]: Include "lisp.h".
1977         (xalloc_die) [defined emacs]: New macro.
1978         (free) [defined emacs && defined EMACS_FREE]: Define to EMACS_FREE.
1979         [! defined emacs]: Include <xalloc.h>.
1980         (POINTER_TYPE) [!defined POINTER_TYPE]: New macro.
1981         (pointer): Typedef to POINTER_TYPE *.
1982         (malloc): Remove decl; we now always use xmalloc.
1983         (alloca): Use old-style definition, since Emacs needs this.
1984         Check for arithmetic overflow when computing combined size.
1985
1986 2002-12-04  Paul Eggert  <eggert@twinsun.com>
1987
1988         Do not generate unlocked-io.h automatically, since it's easier to
1989         maintain it by hand.
1990
1991         * unlocked-io.h: New file, from GNU diffutils,
1992         but with proper copyright notice and attribution.
1993         * gen-uio: Remove.
1994         * Makefile.am: Add copyright notice.
1995         (libfetish_a_SOURCES): Add unlocked-io.h.
1996         (BUILT_SOURCES, all-local): Remove unlocked-io.h.
1997         (DISTCLEANFILES, io_functions): Remove macros.
1998         (EXTRA_DIST): Remove gen_uio.
1999         (unlocked-io.h): Remove rule.
2000
2001 2002-12-04  Jim Meyering  <jim@meyering.net>
2002
2003         Reflect the fact that stat.c and lstat.c are no longer generated.
2004         * Makefile.am (BUILT_SOURCES): Remove stat.c and lstat.c.
2005         (DISTCLEANFILES): Likewise.
2006         (EXTRA_DIST): Likewise.
2007         (all_local): Don't depend on stat.c or lstat.c.
2008         (stat.c, lstat.c): Remove rules.
2009         (EXTRA_DIST): Remove xstat.in.
2010
2011         * xstat.in: Remove file.  Contents moved into stat.c.
2012         * stat.c: New file.  Contents mostly from xstat.in.
2013         * stat.c: Rework so that it may serve to define rpl_lstat, too.
2014         * lstat.c: New file. Simply #define LSTAT and include stat.c.
2015
2016         * safe-read.c: Rework so that it may serve to define safe_write, too.
2017         * safe-write.c: Simply #define SAFE_WRITE and include safe-read.c.
2018
2019 2002-12-03  Jim Meyering  <jim@meyering.net>
2020
2021         * safe-read.c, safe-write.c: Change variable names and comments, but
2022         not semantics, to minimize the differences between these two files.
2023         (safe_read): Change comment to mention SAFE_READ_ERROR.
2024
2025         * safe-read.c (IS_EINTR): Define.
2026         (safe_read): Use IS_EINTR in place of in-function cpp directives.
2027
2028 2002-12-02  Bruno Haible  <bruno@clisp.org>
2029
2030         * safe-write.c (CHAR_BIT, TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM):
2031         Define, taken from safe-read.c.
2032         (INT_MAX): Provide fallback.
2033         (safe_write): Rewrite to iterate IFF the write fails with EINTR.
2034         * safe-write.h (SAFE_WRITE_ERROR): Define.
2035
2036         * safe-read.c (EINTR): Remove definition.
2037         (safe_read): Don't use EINTR if it is absent.
2038
2039 2002-12-02  Jim Meyering  <jim@meyering.net>
2040
2041         * safe-read.c (EINTR): Define.
2042         (CHAR_BIT, TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM): Define.
2043         (INT_MAX): Provide fallback.
2044         (safe_read): Rewrite to iterate IFF the read fails with EINTR.
2045
2046         * safe-read.h (SAFE_READ_ERROR): Define.
2047
2048 2002-12-01  Jim Meyering  <jim@meyering.net>
2049
2050         * safe-read.c: (safe_read): Also exit the loop when read returns zero.
2051         (CHAR_BIT, TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM, INT_MAX): Define.
2052
2053 2002-11-27  Paul Eggert  <eggert@twinsun.com>
2054
2055         * hash.c (hash_lookup, hash_get_first, hash_get_next, hash_find_entry,
2056         hash_rehash): Replace `if (limit <= value) abort ();' with
2057         `if (! (value < limit)) abort ();', for readability.
2058
2059 2002-11-26    <karl@gnu.org>
2060
2061         * strdup.c: copy from libc again, with jim's ok.
2062         * .cppi-disable: re-add strdup.c
2063
2064 2002-11-25    <karl@gnu.org>
2065
2066         * strtoll.c: copy from libc, meaning we now #include <strtol.c>
2067         instead of "strtol.c".
2068
2069 2002-11-25  Jim Meyering  <jim@meyering.net>
2070
2071         * mktime.c: Sync from libc, now that it has the latest fix.
2072
2073 2002-11-24    <karl@gnu.org>
2074
2075         * error.c, getopt.c, getopt.h, getopt1.c, obstack.c, regex.c,
2076         regex.h, strdup.c, strtoll.c, tempname.c: change license to gpl.
2077
2078 2002-11-24  Jim Meyering  <jim@meyering.net>
2079
2080         Update from coreutils:
2081
2082         * mktime.c: Merge in changes from libc.
2083
2084         Avoid a link-time failure on some Linux systems.
2085         * mktime.c (STATIC): Define to be empty (_LIBC) or `static' (otherwise).
2086         (__mon_yday): Declare with the STATIC attribute.
2087         (__mktime_internal): Likewise.
2088         Based on a report from Greg Schafer.
2089
2090 2002-11-23  Jim Meyering  <jim@meyering.net>
2091
2092         * sig2str.c (str2signum, sig2str): Avoid a warning from gcc:
2093         Use `unsigned', not `int', as type of index.
2094
2095         * xstat.in [@BEGIN_LSTAT_ONLY@]: Include <string.h>.
2096
2097         * fsusage.c: Remove unneeded parentheses around operands of `defined'.
2098
2099 2002-11-22  Paul Eggert  <eggert@twinsun.com>
2100
2101         * hash.c: Avoid use of <assert.h>, as the GNU Coding Standards
2102         hint that one should use `if (! x) abort ();' rather than `assert
2103         (x);', and anyway it's one less thing to worry about configuring.
2104         (hash_lookup, hash_get_first, hash_get_next, hash_find_entry,
2105         hash_rehash, hash_insert): Use abort rather than assert.
2106
2107 2002-11-22  Paul Eggert  <eggert@twinsun.com>
2108
2109         * quotearg.h: Allow multiple inclusion by surrounding with
2110         "#ifndef QUOTEARG_H_".  Include <stddef.h>, for size_t,
2111         so that we can be included first.
2112         (PARAMS): Remove; we now assume C89 or later.  All uses removed.
2113         * quotearg.c: Include quotearg.h immediately after config.h.
2114         No need to include stddef.h or sys/types.h any more.
2115         Surround local include files with "", not "<>".
2116         Assume HAVE_LIMITS_H unconditionally, as we assume C89.
2117         Similarly, assume HAVE_C_BACKSLASH_A, CHAR_BIT, UCHAR_MAX, UINT_MAX,
2118         HAVE_STDLIB_H, HAVE_STRING_H, STDC_HEADERS.
2119         (HAVE_MBSINIT): Undef if !HAVE_MBRTOWC.
2120         (mbsinit): Define to 1 if !defined mbsinit && !HAVE_MBSINIT.
2121         (ISPRINT): Remove; no longer needed now that we assume C89.
2122
2123         (clone_quoting_options, quotearg_buffer, quotearg_n_options):
2124         Preserve errno.
2125
2126         (quotearg_buffer_restyled, quotearg_n, quotearg_n_style,
2127         quotearg_char): Use SIZE_MAX rather than
2128         (size_t) -1 when we are talking about "infinity".
2129
2130         (quotearg_buffer_restyled): Fix bug when quoting trigraphs.
2131
2132 2002-11-22  Bruno Haible  <bruno@clisp.org>
2133
2134         * safe-read.h: Assume C89. Add comments.
2135         (safe_read): Change return type to size_t.
2136         * safe-read.c (safe_read): Change return type to size_t. Handle byte
2137         counts > SSIZE_MAX correctly.
2138         * safe-write.h: New file.
2139         * safe-write.c: New file.
2140         * full-read.h: New file.
2141         * full-read.c: New file.
2142         * full-write.h: Assume C89. Add comments.
2143         * full-write.c: Include safe-write.h.
2144         (full_write): Rewritten to use safe_write.
2145         Suggested by Jim Meyering and Paul Eggert.
2146
2147 2002-11-21  Bruno Haible  <bruno@clisp.org>
2148
2149         Remove case insensitive option matching.
2150         * argmatch.h (argcasematch): Remove declaration.
2151         (ARGCASEMATCH): Remove macro.
2152         (__xargmatch_internal): Remove case_sensitive argument.
2153         (XARGMATCH): Update.
2154         (XARGCASEMATCH): Remove macro.
2155         * argmatch.c (argmatch): Renamed from __argmatch_internal. Remove
2156         case_sensitive argument.
2157         (argcasematch): Remove function.
2158         (__xargmatch_internal): Remove case_sensitive argument.
2159         (main): Use XARGMATCH instead of XARGCASEMATCH.
2160
2161         * xmalloc.c: Change compile-time error message. Add comment about
2162         required autoconf version.
2163
2164 2002-11-21  Jim Meyering  <jim@meyering.net>
2165
2166         * strdup.c (strdup): Tweak comment and initial #if/#include.
2167
2168         Merge in changes from the coreutils.
2169
2170         2002-09-25  Paul Eggert  <eggert@twinsun.com>
2171         * fsusage.c [! HAVE_INTTYPES_H && HAVE_STDINT_H] Include <stdint.h>.
2172         (UINTMAX_MAX) [!defined UINTMAX_MAX]: New macro.
2173         (PROPAGATE_ALL_ONES): Work even if X is unsigned and narrower than
2174         int.  Work more efficiently if X is the same width as uintmax_t.
2175         Do not compare X to -1, to avoid bogus compiler warning.
2176         (get_fs_usage): (uintmax_t) -1 -> UINTMAX_MAX to avoid a cast.
2177         Don't assume that f_frsize and f_bsize are the same type.
2178
2179         * mountlist.c: #undef MNT_IGNORE before defining it, to avoid warning
2180         on FreeBSD.
2181
2182         * makepath.c (make_path): Restore umask *before* creating the final
2183         component.
2184         (make_path): Minor reformatting.
2185
2186         * xmalloc.c: Adjust to work with new autoconf macros, AC_FUNC_MALLOC
2187         and AC_FUNC_REALLOC: test #ifndef HAVE_MALLOC/HAVE_REALLOC.
2188
2189         * mountlist.h (ME_DUMMY): Don't count entries of type `auto' as dummy
2190         ones.  At least on GNU/Linux systems, `auto' means something else.
2191         From Michael Stone.
2192
2193 2002-11-20  Paul Eggert  <eggert@twinsun.com>
2194
2195         Merge argmatch cleanups from Bison.  Assume C89.
2196
2197         * argmatch.c: Include config.h here, not in argmatch.h.
2198         Include stdlib.h, for EXIT_FAILURE.
2199         Always include <string.h>, since we assume C89.
2200         (EXIT_FAILURE): Remove pre-C89 bug workaround.
2201         * argmatch.h: Do not include <config.h> or <sys/types.h>.
2202         Include <stddef.h> instead, since it's all we need for size_t.
2203         (PARAMS): Remove.  All uses removed.
2204         (ARRAY_CARDINALITY): Do not bother to #undef.
2205         (ARRAY_CARDINALITY, ARGMATCH, ARGCASEMATCH, invalid_arg,
2206         ARGMATCH_VALID, XARGMATCH, XARGCASEMATCH):
2207         Remove unnecessary parentheses.
2208         (ARGMATCH_VALID, XARGMATCH, XARGCASEMATCH):
2209         Insert necessary parentheses.
2210         (ARGMATCH_CONSTRAINT, ARGMATCH_VERIFY): New macros.
2211         (ARGMATCH_ASSERT): Use ARGMATCH_CONSTRAINT.
2212
2213 2002-11-19  Bruno Haible  <bruno@clisp.org>
2214
2215         * mbswidth.c: Include mbswidth.h right at the beginning.
2216         * mbswidth.h: Include <stddef.h>, for size_t.
2217
2218         * mbswidth.h (PARAMS): Remove macro.
2219         (mbswidth, mbsnwidth): Use ANSI C function declarations.
2220         * mbswidth.c (mbswidth, mbsnwidth): Likewise.
2221
2222         * gcd.h (PARAMS): Remove macro.
2223         (gcd): Use ANSI C function declarations.
2224         * gcd.c (gcd): Likewise.
2225
2226 2002-11-15  Bruno Haible  <bruno@clisp.org>
2227
2228         * strcspn.c: Include <stddef.h>.
2229         (strcspn): Use ANSI C function declaration. Change return type to
2230         size_t. Use NULL.
2231         * strpbrk.c: Minimize diffs to glibc. Include <stddef.h>.
2232         (strpbrk): Use NULL.
2233         * strpbrk.h (PARAMS): Remove macro.
2234         (strpbrk): Use ANSI C function declaration.
2235         * strstr.c: Don't include <sys/types.h>.
2236         * strstr.h (PARAMS): Remove macro.
2237         (strstr): Use ANSI C function declarations.
2238
2239 2002-11-06  Bruno Haible  <bruno@clisp.org>
2240
2241         * gcd.h (gcd): Change argument type to 'unsigned long'.
2242         * gcd.c (gcd): Likewise.
2243
2244 2002-11-05  Bruno Haible  <bruno@clisp.org>
2245
2246         * gcd.h: New file, from gettext-0.11.5.
2247         * gcd.c: New file, from gettext-0.11.5.
2248
2249 2002-11-05  Bruno Haible  <bruno@clisp.org>
2250
2251         * error.c [!_LIBC]: Include gettext.h instead of <libintl.h>.
2252         * getopt.c [!_LIBC]: Include gettext.h instead of <libintl.h>.
2253         * obstack.c [!_LIBC]: Include gettext.h instead of <libintl.h>.
2254         * regex.c [!_LIBC]: Include gettext.h instead of <libintl.h>.
2255
2256         * argmatch.c: Include gettext.h instead of <locale.h> and <libintl.h>.
2257         * makepath.c: Include gettext.h instead of <locale.h> and <libintl.h>.
2258
2259         * closeout.c: Include gettext.h instead of <libintl.h>.
2260         * human.c: Include gettext.h instead of <libintl.h>.
2261         * quotearg.c: Include gettext.h instead of <libintl.h>.
2262         * rpmatch.c: Include gettext.h instead of <libintl.h>.
2263         * unicodeio.c: Include gettext.h instead of <libintl.h>.
2264         * userspec.c: Include gettext.h instead of <libintl.h>.
2265         * version-etc.c: Include gettext.h instead of <libintl.h>.
2266         * xmalloc.c: Include gettext.h instead of <libintl.h>.
2267         (textdomain): Remove definition.
2268         * xmemcoll.c: Include gettext.h instead of <libintl.h>.
2269
2270         * long-options.c: Remove include of <libintl.h> and definition of _.
2271         * same.c: Remove include of <libintl.h> and definition of _.
2272
2273 2002-11-04  Bruno Haible  <bruno@clisp.org>
2274
2275         * stpcpy.h: New file, from GNU gettext-0.11.5.
2276         * strcase.h: New file, from GNU gettext-0.11.5.
2277         * strpbrk.h: New file, from GNU gettext-0.11.5.
2278         * strstr.h: New file, from GNU gettext-0.11.5.
2279         * xgetcwd.h: New file, from GNU gettext-0.11.5.
2280
2281 2002-05-09  Bruno Haible  <bruno@clisp.org>
2282
2283         * config.charset: Update for newest glibc. Add canonical names
2284         ISO-8859-14, KOI8-T, TCVN5712-1, GEORGIAN-PS.
2285
2286 2002-05-09  Bruno Haible  <bruno@clisp.org>
2287
2288         * localcharset.c (get_charset_aliases): Add more Windows specific
2289         aliases.
2290
2291 2002-05-08  Owen Taylor  <otaylor@redhat.com>
2292
2293         * config.charset: A few additions for Solaris.
2294
2295 2001-12-05  Bruno Haible  <bruno@clisp.org>
2296
2297         * localcharset.c (locale_charset): Don't return an empty string.
2298
2299 2001-10-23  Bruno Haible  <haible@clisp.cons.org>
2300
2301         * config.charset: msdos in uk_UA uses CP1125.
2302
2303 2001-08-05  Bruno Haible  <haible@clisp.cons.org>
2304
2305         Make it possible to build libcharset with CC=gcc CFLAGS="-x c++".
2306         * localcharset.c (locale_charset): Declare as extern "C".
2307
2308 2002-02-15  Bruno Haible  <bruno@clisp.org>
2309
2310         * config.charset [msdosdjgpp]: For Russian, use CP866.
2311
2312 2002-02-11  Bruno Haible  <bruno@clisp.org>
2313
2314         * config.charset: Add support for NetBSD.
2315
2316 2002-09-25    <karl@gnu.org>
2317
2318         * strdup.c: copy from libc/string (via ../config/srclist*).
2319         * getopt*: copy from libc/posix.
2320         * gettext.h: copy from gettext.
2321         * .cppi-disable: add strdup.c, gettext.h.
2322
2323 2002-07-01  Jim Meyering  <meyering@lucent.com>
2324
2325         * c-stack.c: Include sys/time.h.
2326         From Volker Borchert.
2327
2328 2002-06-11  Paul Eggert  <eggert@twinsun.com>
2329
2330         * fnmatch.c, fnmatch_loop.c (WIDE_CHAR_SUPPORT):
2331         New macro.  Use it uniformly instead of
2332         (defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H).
2333         It also uses HAVE_BTOWC, to fix a porting bug on Solaris 2.5.1
2334         reported by Vin Shelton.
2335
2336 2002-06-22  Jim Meyering  <meyering@lucent.com>
2337
2338         * fnmatch.c (ISASCII, ISPRINT): Undefine, to avoid warning about
2339         redefinition due to Solaris 2.6's definition in /usr/include/sys/euc.h.
2340
2341 2002-06-22  Paul Eggert  <eggert@twinsun.com>
2342
2343         * c-stack.h (segv_handler, c_stack_action) [! defined SA_SIGINFO]:
2344         Do not assume SA_SIGINFO behavior.
2345         Bug reported by Jim Meyering on NetBSD 1.5.2.
2346
2347 2002-06-22  Jim Meyering  <meyering@lucent.com>
2348
2349         * c-stack.c, c-stack.h: New files, from diffutils-2.8.2.
2350
2351         * exitfail.c, exitfail.h: Likewise.
2352         * Makefile.am (libfetish_a_SOURCES): Add exitfail.c and exitfail.h.
2353
2354         * Makefile.am (libfetish_a_SOURCES): Add fnmatch_.h in place
2355         of fnmatch.h.
2356         (EXTRA_DIST): Add fnmatch_loop.c.
2357         (libfetish_a_SOURCES): Add c-stack.c and c-stack.h.
2358
2359         * fnmatch_loop.c: New file, from diffutils-2.8.2.
2360         * fnmatch.c: Update from diffutils-2.8.2.
2361         * fnmatch_.h: New file.  From diffutils-2.8.2.
2362         * fnmatch.h: Remove file.
2363
2364 2002-06-18  Paul Eggert  <eggert@twinsun.com>
2365
2366         * file-type.h: Report an error if neither S_ISREG nor
2367         S_IFREG is defined, instead of using a test specific to glibc
2368         2.2.  This should be safe, since POSIX requires S_ISREG and
2369         Unix Version 7 had S_IFREG.  We don't need to check for
2370         <sys/types.h> since we don't use any symbols that it defines.
2371
2372 2002-06-15  Jim Meyering  <meyering@lucent.com>
2373
2374         * file-type.h (FILE_TYPE_H): Guard entire contents with #ifndef.
2375         For GNU libc 2.2 and newer, ensure that <sys/types.h> and <sys/stat.h>
2376         have been included before this file.
2377
2378 2002-06-13  Richard Dawe  <richdawe@bigfoot.com>
2379
2380         * Makefile.am (lstat.c, stat.c, .sin.sed): Use t-$@, rather than $@-t,
2381         so that each temporary file name is unique and valid in the first
2382         8 characters, for operation under DOS.
2383
2384 2002-06-15  Jim Meyering  <meyering@lucent.com>
2385
2386         Work even with DJGPP 2.03, which lacks support for symlinks.
2387         From Richard Dawe.
2388         * xstat.in (S_ISLNK): Define to 0 if neither S_ISLNK nor S_IFLNK
2389         is defined.
2390         * lchown.c (S_ISLNK): Likewise.
2391
2392 2002-06-14  Jim Meyering  <meyering@lucent.com>
2393
2394         * file-type.h: Use the version from diffutils-2.8.2.
2395         * file-type.c: Likewise.
2396
2397 2002-05-27  Jim Meyering  <meyering@lucent.com>
2398
2399         Fix a problem seen only on nonconforming systems whereby ls.c's
2400         use of localtime, and then of gettimeofday would cause trouble:
2401         the localtime call used to initialize rpl_gettimeofday's save
2402         mechanism would clobber ls's current local time information so
2403         that in any long listing the first file would always be listed
2404         with date 1970-01-01.  Analysis by Volker Borchert.
2405
2406         * gettimeofday.c (localtime): Undefine.
2407         (rpl_localtime): New function.
2408
2409 2002-05-22  Jim Meyering  <meyering@lucent.com>
2410
2411         * Makefile.am (libfetish_a_SOURCES): Add file-type.c and file-type.h.
2412         * file-type.h: New file.
2413         * file-type.c (file_type): New file/function.  Extracted from diffutils.
2414
2415 2002-04-29  Paul Eggert  <eggert@twinsun.com>
2416
2417         * hard-locale.c: Upgrade to version used in GNU Diffutils 2.8.1.
2418
2419 2002-04-28  Paul Eggert  <eggert@twinsun.com>
2420
2421         * sig2str.h (SIGNUM_BOUND): Do not use WTERMSIG, to avoid
2422         depending on <sys/wait.h> and WTERMSIG.  Default to 64 instead
2423         of 127, since 64 is the largest conceivable number for ancient
2424         nonstandard hosts.
2425         * sig2str.c: Do not include <sys/wait.h>; no longer needed.
2426
2427 2002-04-28  Jim Meyering  <meyering@lucent.com>
2428
2429         * sig2str.c (WTERMSIG): Remove definition (unused).
2430
2431 2002-04-28  Paul Eggert  <eggert@twinsun.com>
2432
2433         * sig2str.h, sig2str.c: New files.
2434         * Makefile.am (libfetish_a_SOURCES): Add sig2str.h.
2435
2436 2002-04-24  Jim Meyering  <meyering@lucent.com>
2437
2438         * gettext.h: New file, from Gettext.
2439         * Makefile.am (INCLUDES): Remove -I../intl.
2440         (libfetish_a_SOURCES): Add gettext.h.
2441
2442 2002-04-16  Jim Meyering  <meyering@lucent.com>
2443
2444         * readutmp.h (UT_TYPE): Remove definition (now in who.c).
2445         (HAVE_STRUCT_XTMP_UT_EXIT, HAVE_STRUCT_XTMP_UT_ID): Define.
2446         (HAVE_STRUCT_XTMP_UT_PID, HAVE_STRUCT_XTMP_UT_TYPE): Define.
2447
2448 2002-04-12  Jim Meyering  <meyering@lucent.com>
2449
2450         * dirfd.h (dirfd): Elide prototype if dirfd is a macro.
2451
2452 2002-03-10  Jim Meyering  <meyering@lucent.com>
2453
2454         * makepath.c (make_path): Remove a comma from a diagnostic.
2455         Suggestion from Santiago Vila.
2456
2457 2002-03-08  Jim Meyering  <meyering@lucent.com>
2458
2459         * rename.c: Mention that this wrapper is needed also on
2460         mips-dec-ultrix4.4 systems.
2461
2462 2002-03-02  Jim Meyering  <meyering@lucent.com>
2463
2464         * gettime.c (gettime): Test HAVE_CLOCK_GETTIME,
2465         not HAVE_CLOCK_SETTIME.
2466
2467 2002-02-27  Paul Eggert  <eggert@twinsun.com>
2468
2469         * nanosleep.h: Rename to....
2470         * timespec.h: New name for nanosleep.h.  All uses changed.
2471
2472         * gettime.c: New file.
2473         * settime.c: New file.
2474         * stime.c: Remove.
2475
2476         * Makefile.am (libfetish_a_SOURCES): Add gettime.c, settime.c,
2477         timespec.h.  Remove nanosleep.h.
2478
2479 2002-02-25  Paul Eggert  <eggert@twinsun.com>
2480
2481         * acl.c, acl.h: New files.
2482         * Makefile.am (libfetish_a_SOURCES): Add acl.h, acl.c.
2483
2484 2002-02-24  Jim Meyering  <meyering@lucent.com>
2485
2486         * strnlen.c (strnlen): Define-away/undef so that an inconsistent
2487         prototype in string.h (on at least AIX4.3.2.0 w/gcc-2.95.3) doesn't
2488         cause trouble.  Reported by Nelson Beebe.
2489
2490 2002-02-23  Paul Eggert  <eggert@twinsun.com>
2491
2492         * path-concat.c (xpath_concat): Reorder code to pacify
2493         compilers that don't know that xalloc_die never returns.
2494
2495 2002-02-20  Jim Meyering  <meyering@lucent.com>
2496
2497         * getdate.c: Regenerate using bison-1.33.
2498
2499 2002-02-15  Paul Eggert  <eggert@twinsun.com>
2500
2501         * posixver.c, posixver.h: New files.
2502         * Makefile.am (libfetish_a_SOURCES): Add them.
2503
2504 2002-02-02  Paul Eggert  <eggert@twinsun.com>
2505             Bruno Haible  <bruno@clisp.org>
2506
2507         * unicodeio.h (print_unicode_char): Add exit_on_error argument.
2508         (fwrite_success_callback): New declaration.
2509         * unicodeio.c (unicode_to_mb): New function, extracted from
2510         print_unicode_char. Call failure callback instead of error.
2511         (fwrite_success_callback): New function.
2512         (exit_failure_callback): New function.
2513         (fallback_failure_callback): New function.
2514         (print_unicode_char): Call unicode_to_mb.
2515
2516 2002-01-26  Jim Meyering  <meyering@lucent.com>
2517
2518         * Makefile.am (getdate$U.o): Depend on unlocked-io.h.
2519
2520 2002-01-22  Jim Meyering  <meyering@lucent.com>
2521
2522         * Makefile.am (Makefile): Don't depend on $(BUILT_SOURCES).
2523         Otherwise, some versions of automake would omit the rule that makes
2524         Makefile from Makefile.in.
2525
2526 2001-01-21  Paul Eggert  <eggert@twinsun.com>
2527
2528         * xmemcoll.h, xmemcoll.c: New files.
2529         * Makefile.am (libfetish_a_SOURCES): Add them.
2530         * memcoll.c: Include errno.h, and declare errno if not defined.
2531         (memcoll): Set errno to zero if there is no error.
2532
2533         * quotearg.c (quotearg_buffer_restyled):
2534         Fix bug with quoting buffers containing NUL when backslashing escapes.
2535         This bug was exposed by the other changes in this patch.
2536         (quotearg_n_options): New arg ARGSIZE.
2537         All callers changed.
2538         (quoting_options_from_style): New function.
2539         (quotearg_n_style): Use it.
2540         (quotearg_n_style_mem): New function.
2541
2542         * quotearg.h (quotearg_n_style_mem): New function.
2543
2544 2002-01-16  Jim Meyering  <meyering@lucent.com>
2545
2546         * getdate.y: Add three semicolons, each just before a closing brace.
2547         Bison (as of version 1.31) no longer papers over that mistake.
2548
2549 2002-02-14  Paul Eggert  <eggert@twinsun.com>
2550
2551         * backupfile.c (ISDIGIT): Comment fix.
2552         * getdate.y (ISDIGIT): Likewise.
2553         * posixtm.c (ISDIGIT, year): Likewise.
2554         * strverscmp.c (ISDIGIT): Likewise.
2555         * userspec.c (ISDIGIT): Likewise.
2556
2557 2002-01-05  Jim Meyering  <meyering@lucent.com>
2558
2559         * version-etc.c (version_etc_copyright): Update copyright year.
2560
2561 2001-01-19  Paul Eggert  <eggert@twinsun.com>
2562
2563         * closeout.c (close_stdout_status): If ferror (stdout), do
2564         not silently exit merely because the output buffer happens to
2565         have nothing pending.
2566
2567 2001-12-18  Paul Eggert  <eggert@twinsun.com>
2568
2569         See the big note in ../ChangeLog.
2570         * human.c (suffixes): Prefer K to k for 1024.
2571         (generate_suffix_backwards): New function.
2572         (human_readable_inexact): Use it.
2573         * xstrtol.c (__xstrtol): If there is no number but there
2574         is a valid suffix, assume 1.  "MB" now means decimal, "MiB" binary.
2575         Accept 'K' as well as 'k'.
2576
2577 2001-12-15  Jim Meyering  <meyering@lucent.com>
2578
2579         * regex.h (__restrict_arr): Update from libc.
2580
2581         * mountlist.h (ME_REMOTE): Recognize file systems of type smbfs
2582         as `remote' if the name starts with `//'.  Suggested by Michael Stone.
2583         (STREQ): Define.
2584
2585 2001-12-10  Jim Meyering  <meyering@lucent.com>
2586
2587         * linebuffer.c: Remove explicit declarations of xmalloc and xrealloc,
2588         Instead, include "xalloc.h".
2589         (initbuffer): Don't cast xmalloc return value to char*.
2590         (readline): Reword comment.
2591         Don't cast xrealloc return value to char*
2592         Return NULL, not 0.
2593
2594 2001-12-09  Jim Meyering  <meyering@lucent.com>
2595
2596         * modechange.c (mode_compile): Add cast to avoid pedantic warning about
2597         `signed and unsigned type in conditional expression'.
2598         * posixtm.c (posix_time_parse): Likewise.
2599
2600         * xreadlink.c (xreadlink): Add cast to avoid a pedantic warning.
2601
2602         * readtokens.c (readtoken): Declare an index to be of type unsigned
2603         to avoid a pedantic warning.
2604
2605         * getstr.c: Don't include assert.h.
2606         (getstr): Remove warning-evoking assertions.
2607         Return -1 if offset parameter is out of bounds.
2608         Change the type of a local from int to size_t.
2609
2610         * strftime.c (my_strftime_localtime_r): Include this function
2611         definition in the `#if ! HAVE_TM_GMTOFF' block.
2612
2613         * xgethostname.c: Remove declarations of xmalloc and xrealloc.
2614         Include xalloc.h instead.
2615
2616 2001-12-02  Jim Meyering  <meyering@lucent.com>
2617
2618         * tempname.c: Don't declare getenv, thus reverting the change of
2619         2001-11-18.  It's no longer necessary, now that stdlib.h is always
2620         included.
2621
2622         * regex.c [!__BOUNDED_POINTERS__]: Define away __bounded,
2623         __unbounded, and __ptrvalue.  Reported by Uwe H. Steinfeld.
2624
2625 2001-11-30  Akim Demaille  <akim@epita.fr>
2626
2627         * xstrdup.c: Include xalloc.h, so that xstrdup is declared
2628         before being defined.
2629
2630 2001-11-27  Paul Eggert  <eggert@twinsun.com>
2631
2632         * quotearg.h (quotearg_n, quotearg_n_style):
2633         First arg is int, not unsigned.
2634         * quotearg.c (quotearg_n, quotearg_n_style): Likewise.
2635         (SIZE_MAX, UINT_MAX): New macros.
2636         (quotearg_n_options): Abort if N is negative.
2637         Avoid overflow check on hosts where size_t is 64 bits and int
2638         is 32 bits, as overflow is impossible there.
2639         Fix off-by-one typo that caused unnecessary reallocation.
2640
2641 2001-11-27  Jim Meyering  <meyering@lucent.com>
2642
2643         * tempname.c: Merge with version from libc.
2644         * regex.c: Likewise.
2645
2646         * tempname.c: Include stdlib.h unconditionally.  On some old systems
2647         for which STDC_HEADERS is 0, it was not included, resulting in a
2648         warning about an integer-to-pointer conversion problem with getenv.
2649         Reported by Volker Borchert.
2650
2651 2001-11-26  Jim Meyering  <meyering@lucent.com>
2652
2653         * gtod.h: Remove file.
2654         * Makefile.am (libfetish_a_SOURCES): Remove gtod.h.
2655         * gettimeofday.c: Don't include gtod.h.
2656         (GTOD_init): Remove function.
2657         (rpl_gettimeofday): Do its job here instead, rather than aborting.
2658         Suggestion from Volker Borchert.
2659
2660 2001-11-23  Jim Meyering  <meyering@lucent.com>
2661
2662         * hash.h (struct hash_table): Don't define here.  Merely declare it.
2663         * hash.c (struct hash_table): Define it here instead.
2664
2665 2001-11-22  Jim Meyering  <meyering@lucent.com>
2666
2667         * hash.h: Bracket contents of file with #ifndef HASH_H_ ... #endif.
2668
2669 2001-11-18  Paul Eggert  <eggert@twinsun.com>
2670
2671         * tempname.c (TMP_MAX): Remove; no longer needed.
2672         (TEMPORARIES): New macro.
2673         (__gen_tempname): Use TEMPORARIES rather than TMP_MAX.  This
2674         removes an artificial limitation (e.g. HP-UX 10.20, where
2675         TMP_MAX is 17576).
2676
2677 2001-11-18  Jim Meyering  <meyering@lucent.com>
2678
2679         * tempname.c [!HAVE_DECL_GETENV]: Declare getenv to avoid warning
2680         on SunOS 4.
2681
2682         * Makefile.am (Makefile): Depend on $(BUILT_SOURCES), so those
2683         files will be created before anything else.
2684
2685 2001-11-17  Jim Meyering  <meyering@lucent.com>
2686
2687         * modechange.c (mode_adjust): Fix error introduced on 1999-04-26
2688         that made e.g., `chmod a=,o=w,g=o F' cause F to be group readable
2689         rather than group writable.  Patch by Juan F. Codagnone.
2690
2691         * readtokens.c: Remove explicit declarations of xmalloc and xrealloc,
2692         Instead, include "xalloc.h".
2693
2694         * mountlist.c: Include unlocked-io.h after all system headers.
2695         Remove explicit declarations of xmalloc, xrealloc,
2696         and xstrdup.  Instead, include "xalloc.h".
2697
2698         * argmatch.c, closeout.c, error.c, exclude.c: Include unlocked-io.h.
2699         * fatal.c, getdate.y, getpass.c, getstr.c, getusershell.c: Likewise.
2700         * mountlist.c, posixtm.c, readtokens.c, readutmp.c: Likewise.
2701
2702         * regex.c, sha.c, version-etc.c, yesno.c: Likewise.
2703         Reported by Padraig Brady.
2704
2705         * mkstemp.c: #undef mkstemp.
2706         Include config.h.
2707         (rpl_mkstemp): Rename from mkstemp.
2708         Protoize.
2709
2710 2001-11-16  Jim Meyering  <meyering@lucent.com>
2711
2712         * physmem.c [HAVE_SYS_PSTAT_H]: Include <sys/pstat.h>.
2713         (physmem_total) [HAVE_PSTAT_GETSTATIC]: If sysconf couldn't be used to
2714         determine the amount of total physical memory, use pstat_getstatic.
2715         HPUX-11 doesn't define _SC_PHYS_PAGES.
2716         (physmem_available) [HAVE_PSTAT_GETSTATIC && HAVE_PSTAT_GETDYNAMIC]:
2717         If sysconf couldn't be used to determine the amount of available
2718         physical memory, use both pstat_getstatic and pstat_getdynamic.
2719         Based on a patch from Bob Proulx.
2720
2721 2001-11-05  Jim Meyering  <meyering@lucent.com>
2722
2723         * xstat.in (slash_aware_lstat): Correct a misleading comment.
2724
2725 2001-11-03  Jim Meyering  <meyering@lucent.com>
2726
2727         * argmatch.h (ARGMATCH_TO_ARGUMENT): Remove casts of first two args
2728         in argmatch_to_argument call.
2729
2730         * dirfd.c (dirfd): Reflect the fact that DIR_TO_FD now takes an
2731         argument.
2732
2733         * hash.c (hash_clear): Fix a bug that could lead to an infloop or
2734         e.g., a fault due to an attempt to free a NULL pointer.
2735
2736 2001-11-01  Jim Meyering  <meyering@lucent.com>
2737
2738         * dirfd.c, dirfd.h: New files.
2739         * Makefile.am (libfetish_a_SOURCES): Add dirfd.h.
2740
2741         * hash.c (hash_print) [TESTING]: Clean up.
2742
2743 2001-10-22  Paul Eggert  <eggert@twinsun.com>
2744
2745         * hard-locale.c (alloca): Define to __builtin_alloca if __GNUC__,
2746         to avoid a warning if -Wall.
2747
2748 2001-10-21  Paul Eggert  <eggert@twinsun.com>
2749
2750         * regex.c (uintptr_t): Remove macro and decl; it's config.h's job.
2751
2752 2001-10-21  Jim Meyering  <meyering@lucent.com>
2753
2754         * obstack.c (_): Honor the setting of ENABLE_NLS.  Otherwise,
2755         this code would end up calling gettext even in packages built
2756         with --disable-nls.
2757         * getopt.c (_): Likewise.
2758         * regex.c (_): Likewise.
2759
2760 2001-10-20  Paul Eggert  <eggert@twinsun.com>
2761
2762         * error.c (strerror_r): Do not declare unless !_LIBC.
2763         Do not check for HAVE_DECL_STRERROR_R missing unless STRERROR_R_CHAR_P.
2764         Use strerror_r that is only a macro, even if it is not a function.
2765         (strerror): Check for HAVE_DECL_STRERROR before declaring.
2766         (private_strerror): Use prototypes, not old-style function definition.
2767         (print_errno_message): New function.
2768         Support the POSIX 'int'-flavored strerror_r, as well as the traditional
2769         char*-flavored one.
2770         (error_tail, error, error_at_line): Use it.
2771
2772 2001-10-11  Jim Meyering  <meyering@lucent.com>
2773
2774         * argmatch.c (argmatch_invalid): Use quotearg_n_style (0, ...
2775         and quote_n (1, ... to avoid clobbering a buffer.
2776
2777 2001-10-05  Jim Meyering  <meyering@lucent.com>
2778
2779         * Makefile.am: (libfetish_a_SOURCES): Add hash-pjw.c and hash-pjw.h.
2780         * hash-pjw.c: New file (factored out of fileutils' remove.c).
2781         * hash-pjw.h: New file.
2782
2783 2001-09-30  Jim Meyering  <meyering@lucent.com>
2784
2785         * mountlist.c [MOUNTED_GETFSSTAT]:
2786         Include <sys/ucred.h>, for Apple Darwin.
2787         Include sys/mount.h and sys/fs_types.h only if available.
2788         (FS_TYPE): Define.
2789         (read_filesystem_list): Use FS_TYPE.
2790
2791 2001-09-29  Paul Eggert  <eggert@twinsun.com>
2792
2793         * exclude.c (excluded_filename): 0 -> false, since it's
2794         a boolean context.
2795
2796 2001-09-28  Paul Eggert  <eggert@twinsun.com>
2797
2798         Fix bug reported by Petter Reinholdtsen for HP-UX 10.20, which
2799         #defines strtoimax.  Also treat the other strto* functions
2800         like strtoimax.
2801
2802         * xstrtol.c (strtol): Do not declare if HAVE_DECL_STRTOL.
2803         (strtoul): Do not declare if HAVE_DECL_STRTOUL.
2804         (strtoimax, strtoumax): Do not declare if already defined as a macro.
2805
2806 2001-09-26  Jim Meyering  <meyering@lucent.com>
2807
2808         Most macros in unlocked-io.h had the wrong number of arguments.
2809         * gen-uio: New script.
2810         (USE_UNLOCKED_IO): Define to 1 if not already defined.
2811         * unlocked-io.hin: Remove file.
2812         * Makefile.am (unlocked-io.h): Rewrite to use a separate script,
2813         rather than trying to embed it here.
2814         (EXTRA_DIST): Add gen-uio.  Remove unlocked-io.hin
2815         Reported by Padraig Brady.
2816
2817 2001-09-25  Volker Borchert  <bt@teknon.de>
2818
2819         * gettimeofday.c (rpl_gettimeofday): Declare local variable `result'.
2820
2821 2001-09-23  Jim Meyering  <meyering@lucent.com>
2822
2823         * mountlist.c: Remove useless parentheses in #if directives.
2824         (MOUNTED) [!defined MOUNTED]: Define to _PATH_MOUNTED, for when
2825         the deprecated MOUNTED symbol is no longer defined in mntent.h.
2826
2827 2001-09-22  Jim Meyering  <meyering@lucent.com>
2828
2829         * localcharset.c: Update from latest gettext.
2830         * config.charset: Likewise.
2831
2832 2001-09-20  Jim Meyering  <meyering@lucent.com>
2833
2834         * xstrtol.c (strtoimax): Guard declaration with
2835         `#if !HAVE_DECL_STRTOIMAX', rather than just `#ifndef strtoimax'.
2836         The latter fails because some systems (at least rs6000-ibm-aix4.3.3.0)
2837         have their own, conflicting declaration of strtoimax in sys/inttypes.h.
2838         (strtoumax): Likewise, for completeness (it wasn't necessary).
2839
2840 2001-09-06  Paul Eggert  <eggert@twinsun.com>
2841
2842         * strtoimax.c (HAVE_LONG_LONG):
2843         Redefine to HAVE_UNSIGNED_LONG_LONG if unsigned.
2844         (strtoimax): Use sizeof (long), not sizeof strtol (ptr, endptr, base),
2845         to work around bug in IBM C compiler.
2846
2847 2001-09-16  Jim Meyering  <meyering@lucent.com>
2848
2849         * mkdir.c: New file.
2850
2851 2001-09-04  Paul Eggert  <eggert@twinsun.com>
2852
2853         * xgetcwd.c: Revert some of the previous change; intead,
2854         fix the HAVE_GETCWD_NULL code to behave more like the
2855         !HAVE_GETCWD_NULL code used to.
2856
2857         Include "xalloc.h".
2858         (xgetcwd): Do not return NULL when memory is exhausted; instead,
2859         invoke xalloc_die.
2860
2861 2001-09-04  Paul Eggert  <eggert@twinsun.com>
2862
2863         * xreadlink.c (xreadlink): Omit size_t* arg.  All uses changed.
2864         Use ssize_t, not int, to store result of readlink.
2865         Check for ssize_t overflow as well as size_t overflow,
2866         as POSIX says the result of readlink is implementation-defined
2867         when ssize_t overflows.
2868         Remove unnecessary cast to char*.
2869         Use free+malloc instead of realloc, as the storage doesn't need
2870         to be preserved and it's clearer and can be more efficient that way.
2871         (SIZE_MAX, SSIZE_MAX): New macros, if <limits.h> doesn't declare.
2872         * xreadlink.h (xreadlink): Update prototype.
2873
2874 2001-09-03  Paul Eggert  <eggert@twinsun.com>
2875
2876         * exclude.c (fnmatch_no_wildcards): Fix confusion between
2877         usage of FNM_CASEFOLD and FNM_LEADING_DIR.  The bug was
2878         spotted by Jim Meyering.
2879
2880 2001-09-03  Jim Meyering  <meyering@lucent.com>
2881
2882         * xreadlink.c (xreadlink): Preserve errno around `free' during failure.
2883
2884 2001-09-03  Paul Eggert  <eggert@twinsun.com>
2885
2886         * xgetcwd.c: Fix the !HAVE_GETCWD_NULL code to behave more
2887         like the HAVE_GETCWD_NULL code.
2888         Include pathmax.h if not HAVE_GETCWD.
2889         Do not include xalloc.h.
2890         (INITIAL_BUFFER_SIZE): New symbol.
2891         Do not use xmalloc / xrealloc, since the caller is responsible for
2892         handling errors.  Preserve errno around `free' during failure.
2893         Do not overrun buffer when using getwd.
2894
2895 2001-09-03  Paul Eggert  <eggert@twinsun.com>
2896
2897         * xgetcwd.c (xgetcwd): Use HAVE_GETCWD_NULL, not (defined
2898         __GLIBC__ && __GLIBC__ >= 2), to decide whether to use getcwd (NULL, 0).
2899
2900 2001-09-02  Jim Meyering  <meyering@lucent.com>
2901
2902         * error.c: Update from GNU libc.
2903
2904 2001-09-01  Jim Meyering  <meyering@lucent.com>
2905
2906         * xreadlink.c: New file.
2907         * xreadlink.h: New file.
2908         * Makefile.am (libfetish_a_SOURCES): Add xreadlink.c and xreadlink.h.
2909
2910         * regex.c (uintptr_t) [!_LIBC]: Define to private_uintptr_t, so it
2911         doesn't conflict with sparc Solaris 7's definition in
2912         /usr/include/sys/int_types.h.
2913
2914         * exclude.c: Use `""', not `<>' to #include non-system header files.
2915         (fnmatch_no_wildcards): Rewrite not to use function names, strcasecmp
2916         and strncasecmp as r-values.  Unixware didn't have declarations.
2917
2918 2001-08-31  Jim Meyering  <meyering@lucent.com>
2919
2920         * xgetcwd.c (xgetcwd): Reorganize to avoid some duplication.
2921         Use an initial, malloc'd, buffer of length 128 rather than
2922         a statically allocated one of length 1024.
2923
2924 2001-08-30  Paul Eggert  <eggert@twinsun.com>
2925
2926         * xgetcwd.c: Don't include pathmax.h.
2927         Include stdlib.h and unistd.h if available.
2928         Include xalloc.h.
2929         (xmalloc, xstrdup, free): Remove decls.
2930         (xgetcwd): Don't assume sizes fit in unsigned.
2931         Check for overflow when computing sizes.
2932         Simplify reallocation code.
2933
2934 2001-08-28  Paul Eggert  <eggert@twinsun.com>
2935
2936         * Makefile.am (libfetish_a_SOURCES): Remove strtoxmax.c.
2937
2938         * strtoimax.c: Renamed from strtoxmax.c, removing the
2939         old strtoimax.c.
2940
2941         Also, make the following further changes to make this file's
2942         configuration more similar to that of strtol.c:
2943         (UNSIGNED): Renamed from STRTOUXMAX_UNSIGNED.  All uses changed.
2944         (strtoumax, uintmax_t, strtoull, strtol): Remove.
2945         (intmax_t, strtoimax, strtol, strtoll): New macros, if UNSIGNED.
2946         (strtoimax): Renamed from strtoumax.  All uses of unsigned values
2947         changed to signed values.
2948
2949         And make the following changes as well:
2950         Fix copyright notice, as 1999 was missing.
2951         (verify): New macro.
2952         (strtoimax): Check sizes at compile-time, not run-time.
2953         Prefer strtol to strtoll if both work.
2954         (main): Remove; it was not that useful and was a pain to maintain.
2955
2956         * strtoumax.c: Include strtoimax.c, not strtouxmax.c.
2957
2958 2001-08-30  Paul Eggert  <eggert@twinsun.com>
2959
2960         * savedir.c (savedir): Remove size parameter, as POSIX says that
2961         a directory's st_size can have an arbitrary value, so the old
2962         usage could waste an arbitrary amount of memory.  All uses
2963         changed.
2964         * savedir.h: Update prototype.
2965
2966 2001-08-30  Paul Eggert  <eggert@twinsun.com>
2967
2968         * xstrtol.c (strtoimax): New decl.
2969
2970 2001-08-28  Paul Eggert  <eggert@twinsun.com>
2971
2972         * xstrtol.h: Add copyright notice.
2973         (_DECLARE_XSTRTOL): Improve quality of diagnostic for
2974         LONGINT_INVALID_SUFFIX_CHAR.
2975
2976 2001-08-30  Paul Eggert  <eggert@twinsun.com>
2977
2978         * quotearg.c: BSD/OS 4.1 wchar.h requires FILE and struct
2979         tm to be declared.
2980
2981 2001-08-30  Paul Eggert  <eggert@twinsun.com>
2982
2983         * hash.c: Remove '2001' from copyright notice.
2984
2985 2001-08-30  Paul Eggert  <eggert@twinsun.com>
2986
2987         * full-write.h: New file.
2988         * Makefile.am (libfetish_a_SOURCES): Add full-write.h.
2989         * full-write.c: Correct credits, as cccp.c no longer
2990         exists and anyway it was so heavily changed from the old cccp
2991         code as to be unrecognizable.  Include full-write.h.
2992         (full_write) Return size_t, with short writes meaning failure.
2993         All callers changed.  This fixes a bug with large buffers
2994         on 64-bit hosts.
2995         * utime.c: Include full-write.h.
2996
2997 2001-08-30  Paul Eggert  <eggert@twinsun.com>
2998
2999         Merge 'exclude' changes from tar 1.13.22.
3000         This fixes one or two unlikely storage allocation overflow bugs,
3001         but doesn't change user-visible behavior otherwise.
3002
3003 2001-08-30  Paul Eggert  <eggert@twinsun.com>
3004
3005         * exclude.c (bool): Declare, perhaps by including stdbool.h.
3006         (<sys/types.h>): Include only if HAVE_SYS_TYPES_H.
3007         (<stdlib.h>, <string.h>, <strings.h>, <inttypes.h>, <stdint.h>):
3008         Include if available.
3009         (<xalloc.h>): Include
3010         (SIZE_MAX): Define if <stdint.h> or <inttypes.h> doesn't.
3011         (verify): New macro.  Use it to verify that EXCLUDE macros do not
3012         collide with FNM macros.
3013         (struct patopts): New struct.
3014         (struct exclude): Use it, as exclude patterns now come with options.
3015         (new_exclude): Support above changes.
3016         (new_exclude, add_exclude_file):
3017         Initial size must now be a power of two to simplify overflow checking.
3018         (free_exclude, fnmatch_no_wildcards): New function.
3019         (excluded_filename): No longer requires options arg, as the options
3020         are determined by add_exclude.  Now returns bool, not int.
3021         (excluded_filename, add_exclude):
3022         Add support for the fancy new exclusion options.
3023         (add_exclude, add_exclude_file): Now takes int options arg.
3024         Check for arithmetic overflow when computing sizes.
3025         (add_exclude_file): xrealloc might modify errno, so don't
3026         realloc until after errno might be used.
3027
3028         * exclude.h (EXCLUDE_ANCHORED, EXCLUDE_INCLUDE,EXCLUDE_WILDCARDS):
3029         New macros.
3030         (free_exclude): New decl.
3031         (add_exclude, add_exclude_file): Now takes int options arg.
3032         (excluded_filename): No longer requires options arg, as the options
3033         are determined by add_exclude.  Now returns bool, not int.
3034
3035 2001-08-30  Paul Eggert  <eggert@twinsun.com>
3036
3037         * alloca.c (alloca): Arg is of type size_t, not unsigned.
3038
3039 2001-08-27  Jim Meyering  <meyering@lucent.com>
3040
3041         * Makefile.am (libfetish_a_SOURCES): Add strtoxmax.c
3042
3043         * version-etc.c (N_): Remove definition.
3044         Revert most of last change.
3045         Instead, simply don't mark the `Copyright...' string for translation.
3046         Based on advice from Paul Eggert.
3047
3048         * strtoxmax.c: Tweak comment.
3049
3050 2001-08-26  Jim Meyering  <meyering@lucent.com>
3051
3052         * version-etc.c (version_etc_copyright_fmt): Replace literal year
3053         of copyright with `%s' so translators don't get an untranslated
3054         message in 2002.
3055         (COPYRIGHT_YEAR): Define.
3056         (version_etc): Use fprintf rather than fputs.
3057         Suggestion from Ulrich Drepper.
3058
3059         * Makefile.am (libfetish_a_SOURCES): Add xstrtoimax.c.
3060
3061         * strtoll.c: New file, from GNU libc.
3062         * xstrtoimax.c: New file.
3063
3064         * xstrtol.h: Add xstrtoimax.
3065         * strtoumax.c: New file.  Simply include "strtoumax.c".
3066         * strtoimax.c: New file.  Likewise, but first define STRTOUXMAX_SIGNED.
3067
3068         * strtoumax.c: Factor to work both for unsigned and signed types, ...
3069         * strtoxmax.c: ... then renamed to this.
3070
3071 2001-08-13  Paul Eggert  <eggert@twinsun.com>
3072
3073         * Makefile.am (unlocked-io.h): Do not append "_unlocked" twice.
3074         Port to Solaris 8, where 'sed' requires a space after the 'r'
3075         command, and where sh dislikes "$/".  Clean up the spacing a bit.
3076         Redirect output to $tmp just once.
3077
3078 2001-08-12  Paul Eggert  <eggert@sic.twinsun.com>
3079
3080         * addext.c (<errno.h>): Include.
3081         (errno): Declare if not defined.
3082         (addext): Work correctly when pathconf returns -1 and leaves
3083         errno alone because there is no limit.  Also, work even if
3084         pathconf returns a value greater than SIZE_MAX.
3085
3086 2001-08-12  Jim Meyering  <meyering@lucent.com>
3087
3088         * xgetcwd.c (xgetcwd) [defined __GLIBC__ && __GLIBC__ >= 2]:
3089         Simply `return getcwd (NULL, 0);'.
3090         [! (defined __GLIBC__ && __GLIBC__ >= 2)]:
3091         Use 1300 as initial value for length, not PATH_MAX.
3092
3093         * pathmax.h: Clean up cpp syntax.
3094
3095 2001-08-12  Jim Meyering  <meyering@lucent.com>
3096
3097         * gettimeofday.c: New file.
3098         * gtod.h: New file.
3099         * Makefile.am (libfetish_a_SOURCES): Add gtod.h.
3100
3101 2001-08-04  Jim Meyering  <meyering@lucent.com>
3102
3103         * error.h (__attribute__): Remove `|| __STRICT_ANSI__' from #if stmt,
3104         to get in sync with glibc.
3105
3106 2001-08-03  Paul Eggert  <eggert@twinsun.com>
3107
3108         The following changes are from gettext 0.10.39 as maintained by
3109         Bruno Haible.
3110
3111         * mbswidth.h (MBSW_REJECT_UNPRINTABLE, MBSW_REJECT_INVALID):
3112         Renamed from MBSW_ACCEPT_UNPRINTABLE and MBSW_ACCEPT_INVALID
3113         with inverted sense.  All uses changed.
3114
3115         * mbswidth.c: Don't include <limits.h>.
3116         Include <stdlib.h> and <string.h> unconditionally.
3117         (iswcntrl, mbsinit, ISCNTRL): New macros.
3118         (mbsnwidth): Use K&R style function declarations.
3119         Don't bother checking for MB_LEN_MAX == 1, since the compiler
3120         can optimize it when MB_CUR_MAX == 1.
3121         The width of control characters is zero, not 1.
3122
3123 2001-07-15  Jim Meyering  <meyering@lucent.com>
3124
3125         * Makefile.am (EXTRA_DIST): Add unlocked-io.hin.
3126         (BUILT_SOURCES): Add unlocked-io.h.
3127         (io_functions): Define.
3128         (unlocked-io.h): New rule.
3129         (DISTCLEANFILES): Add unlocked-io.h.
3130         (all-local): Depend on unlocked-io.h, to ensure it is created.
3131
3132         * unlocked-io.hin: New file
3133
3134         * regex.c: Update from glibc.
3135
3136 2001-07-05  Jim Meyering  <meyering@lucent.com>
3137
3138         * Makefile.am (noinst_HEADERS): Remove definition, per new automake
3139         recommendation.
3140         (libfetish_a_SOURCES): Put all .h files here instead.
3141         Remove a thus-exposed (better checks in automake) duplicate and
3142         two unnecessary .h files.
3143
3144 2001-06-11  Jim Meyering  <meyering@lucent.com>
3145
3146         * regex.c: Update from GNU libc.
3147
3148 2001-05-27  Jim Meyering  <meyering@lucent.com>
3149
3150         * readutmp.h (UT_TYPE): Define.
3151
3152 2001-05-24  Jim Meyering  <meyering@lucent.com>
3153
3154         * argmatch.c: Include "quote.h".
3155         (argmatch_invalid): Remove explicit `' quotes.  Instead, use the
3156         quote function.  Reported by Göran Uddeborg.
3157
3158 2001-05-20  Alexandre Duret-Lutz  <duret_g@epita.fr>
3159
3160         * dirname.c (dir_name): Compute append_dot using path, not newpath
3161         which is not yet declared.
3162
3163 2001-05-11  Paul Eggert  <eggert@twinsun.com>
3164
3165         * Makefile.am (libfetish_a_SOURCES):
3166         Add strftime.c, since we now compile it on all hosts.
3167
3168         * strftime.c (my_strftime):
3169         Define to nstrftime if emacs, but only if my_strftime is not defined.
3170         (extra_args, extra_args_spec, extra_args_spec_iso): Rename from
3171         ut_argument, ut_argument_spec, ut_argument_spec_iso, respectively.
3172         Add one more extra argument: a nanoseconds value.
3173         All uses changed.
3174         (ns): New macro.
3175         (my_strftime function): Add %N format.
3176         (emacs_strftimeu): Renamed from emacs_strftime,
3177         with extra ut argument.
3178
3179 2001-05-11  Paul Eggert  <eggert@twinsun.com>
3180
3181         dirname code cleanup.  base_name now behaves more compatibly
3182         with POSIX basename when given file names that have trailing
3183         slashes, and similarly for dir_name.  Add new primitives
3184         base_len and dir_len.  Put the directory-name-related decls
3185         into dirname.h.
3186
3187         * addext.c (ISSLASH, base_name): Remove; now in dirname.h.
3188         * backupfile.c (base_name): Likewise.
3189         * basename.c (FILESYSTEM_PREFIX_LEN, PARAMS, ISSLASH): Likewise.
3190         * dirname.c (FILESYSTEM_PREFIX_LEN, ISSLASH): Likewise.
3191         * makepath.c (strip_trailing_slashes): Likewise.
3192         * path-concat.c (DIRECTORY_SEPARATOR, FILESYSTEM_PREFIX_LEN, ISSLASH):
3193         Likewise.
3194         * rename.c (strip_trailing_slashes): Likewise.
3195         * same.c (base_name): Likewise.
3196         * stripslash.c (ISSLASH): Likewise.
3197
3198         * addext.c: Include <dirname.h> after size_t is defined.
3199         * backupfile.c: Likewise.
3200
3201         * addext.c (addext): Use base_len to trim redundant
3202         trailing slashes instead of doing it ourselves.
3203         But do not trim the last slash if it is not redundant.
3204
3205         * backupfile.c (find_backup_file_name,
3206         max_backup_version): Use base_len instead of rolling it ourselves.
3207         Handle the case of "" and (on DOS) "C:" correctly.
3208
3209         * basename.c: Do not include <stdio.h>, <assert.h>; no longer needed.
3210         Include <string.h>, <dirname.h>.
3211         (base_name): Allow file names ending in slashes, other than names
3212         that are all slashes.  In this case, return the basename followed
3213         by the slashes.  This is more general, and can be used in places
3214         where the original base_name purposely had an assertion failure.
3215         (base_len): New function.
3216
3217         * dirname.c: Include <string.h> instead of <stdlib.h>.
3218         Do not include <assert.h>; no longer needed.
3219         Include xalloc.h.
3220         (memrchr): Remove decl.
3221         (dir_name_r): Remove.
3222         (dir_len): Renamed from dirlen.  All callers changed.
3223         Rewrite in terms of base_name, for simplicity and consistency.
3224         (dir_name): Never return NULL.  All callers changed.
3225         Do not include <stdlib.h> in test program; no longer needed.
3226         return 0; is fine for test program.
3227
3228         * dirname.h (DIRECTORY_SEPARATOR, ISSLASH, FILESYSTEM_PREFIX_LEN):
3229         New macros.
3230         (base_name, base_len, dir_len, strip_trailing_slashes): New decls.
3231
3232         * path-concat.c (path_concat): Use base_len to compute
3233         base length, not strlen; this means we cannot rely on memcpy
3234         to null-terminate.
3235
3236         * same.c (STREQ): Remove.
3237         (same_name): Handle the case where the basename ends in trailing '/'.
3238
3239         * stripslash.c (strip_trailing_slashes): Return nonzero if
3240         a slash was stripped.  Do not strip the last slash after a
3241         file system prefix.
3242
3243 2001-04-08  Jim Meyering  <meyering@lucent.com>
3244
3245         * getdate.y (get_date): Set tm_isdst to -1 to ensure that it is
3246         recomputed; that's necessary when the offset spans a DST transition.
3247         Patch by David J. MacKenzie.  Reported by Hon-Yin Kok.
3248
3249 2001-04-02  Jim Meyering  <meyering@lucent.com>
3250
3251         * regex.h, regex.c: Update from GNU libc.
3252
3253 2001-03-19  Paul Eggert  <eggert@twinsun.com>
3254
3255         * version-etc.c (version_etc_copyright): Update to 2001.
3256
3257 2001-03-16  Paul Eggert  <eggert@twinsun.com>
3258
3259         * tempname.c (uint64_t): Define to uintmax_t if
3260         not defined, and if UINT64_MAX is not defined.
3261         Required at least for Vax Ultrix4.3, which doesn't define uint64_t.
3262         Reported by John David Anglin.
3263
3264 2001-03-10  Bruno Haible  <haible@clisp.cons.org>
3265
3266         * localcharset.c (locale_charset): Allow wildcard syntax. Also resolve
3267         alias if codeset is empty.
3268         * config.charset (BeOS): Use wildcard syntax.
3269
3270 2001-03-13  Jim Meyering  <meyering@lucent.com>
3271
3272         * path-concat.c (path_concat) [FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX]:
3273         Don't insert a backslash when concatenating e.g., `C:' and `foo'.
3274         From Bruno Haible.
3275
3276 2001-03-06  Bruno Haible  <haible@clisp.cons.org>
3277
3278         * localcharset.c (locale_charset): Don't use setlocale(LC_CTYPE,NULL).
3279         Don't return NULL.
3280         * unicodeio.c (print_unicode_char): Simplify accordingly.
3281
3282 2001-03-06  Bruno Haible  <haible@clisp.cons.org>
3283
3284         * config.charset: Update for FreeBSD 4.2 and OSF/1 5.1. Add
3285         support for DOS/DJGPP.
3286
3287 2001-02-28  Paul Eggert  <eggert@twinsun.com>
3288
3289         * Makefile.am (libfetish_a_SOURCES):
3290         Add dup-safer.c, fopen-safer.c.
3291         (noinst_HEADERS): Add stdio-safer.h, unistd-safer.h.
3292
3293         * dup-safer.c, fopen-safer.c, stdio-safer.h, unistd-safer.h: New files.
3294
3295 2001-02-25  Paul Eggert  <eggert@twinsun.com>
3296
3297         The mkstemp replacement is taken from glibc 2.2.2, with some
3298         portability fixes for use outside glibc, as follows:
3299
3300         * tempname.c (struct_stat64): New macro.
3301         (direxists, __gen_tempname): Use it.
3302         This avoids a portability problem with Solaris 8.
3303
3304         * tempname.c (<config.h>): Include if HAVE_CONFIG_H.
3305         (<stddef.h>, <stdint.h>, <string.h>):
3306         Include only if STDC_HEADERS || _LIBC.
3307         (<fcntl.h>): Include only if HAVE_FCNTL_H || _LIBC.
3308         (<unistd.h>): Include only if HAVE_UNISTD_H || _LIBC.
3309         (<sys/time.h>): Include only if HAVE_SYS_TIME_H || _LIBC.
3310         (__set_errno): Define this macro if <errno.h> doesn't.
3311         (P_tmpdir, TMP_MAX, __GT_FILE, __GT_BIGFILE, __GT_DIR, __GT_NOCREATE):
3312         Define these macros if <stdio.h> doesn't.
3313         (S_ISDIR, S_IRUSR, S_IWUSR, S_IXUSR):
3314         Define these macros if <sys/stat.h>
3315         doesn't.  Ignore <sys/stat.h> S_ISDIR if STAT_MACROS_BROKEN.
3316         (stat64, __getpid, __gettimeofday, __mkdir, __open, __open64, lxstat64,
3317         __xstat64): Define if not _LIBC.
3318         (__secure_getenv): Define if ! (HAVE___SECURE_GETENV || _LIBC).
3319         (__gen_tempname): Invoke gettimeofday only if
3320         HAVE_GETTIMEOFDAY || _LIBC;
3321         otherwise, fall back on plain "time".
3322         Use macros like S_IRUSR | S_IWUSR rather than octal values like 0600.
3323
3324         * mkstemp.c (__GT_FILE): Define to zero if not defined.
3325
3326         * mkstemp.c, tempname.c: New files, taken from glibc 2.2.2.
3327
3328 2001-02-17  Jim Meyering  <meyering@lucent.com>
3329
3330         * strtoul.c: Sync from GNU libc.  Use double quotes, not <...>
3331         around included file name.
3332
3333         * strnlen.c (__strnlen): Merge in a change from GNU libc.
3334
3335         * strftime.c: Update from GNU libc (the only changes were to comments).
3336
3337 2001-02-13  Bruno Haible  <haible@clisp.cons.org>
3338
3339         * mbswidth.h (mbswidth): Also define as macro, to avoid prototype clash.
3340
3341 2001-02-17  Paul Eggert  <eggert@twinsun.com>
3342
3343         * mbswidth.c, quotearg.c (mbrtowc, mbsinit):
3344         Remove workaround macros for hosts that have mbrtowc but not
3345         mbstate_t, as we now insist on proper declarations for both
3346         before using mbrtowc.
3347
3348 2001-02-17  Jim Meyering  <meyering@lucent.com>
3349
3350         * regex.c: Update from libc.
3351
3352 2001-02-16  Paul Eggert  <eggert@twinsun.com>
3353
3354         * alloca.c (malloc): Undef before defining, since stdlib.h
3355         may have defined it.  Needed for Encore Umax-3.0.9.16b systems.
3356         Reported by Mark Hounschell via Paul Eggert.
3357
3358 2001-01-30  Bruno Haible  <haible@clisp.cons.org>
3359
3360         * config.charset: Update for FreeBSD 4.2.
3361
3362 2001-01-26  Jim Meyering  <meyering@lucent.com>
3363
3364         * quotearg.c: Include stddef.h.
3365         * quote.c: Include stddef.h.
3366         Reported by Axel Kittenberger.
3367
3368         * xmalloc.c [HAVE_DONE_WORKING_MALLOC_CHECK]: Enclose error-evoking
3369         line in double quotes so that it evokes a better diagnostic.
3370         [HAVE_DONE_WORKING_REALLOC_CHECK]: Likewise.
3371         Reported by Axel Kittenberger.
3372
3373 2001-01-15  Bruno Haible  <haible@clisp.cons.org>
3374
3375         * unicodeio.c (print_unicode_char): Cast the second iconv() arg,
3376         to avoid a warning.  Add back 'const' to inptr.
3377
3378 2001-01-16  Jim Meyering  <meyering@lucent.com>
3379
3380         * basename.c: Include <stdio.h>, needed by assert on SunOS 4.
3381         From Bruno Haible.
3382
3383 2001-01-14  Jim Meyering  <meyering@lucent.com>
3384
3385         * rename.c: New file.  From Volker Borchert.
3386         Include stdlib.h, string.h or strings.h, and xalloc.h.
3387         Use strip_trailing_slashes rather than open-coding it.
3388
3389 2001-01-03  Paul Eggert  <eggert@twinsun.com>
3390
3391         * strftime.c: Sync with glibc time/strftime.c 1.81.
3392
3393 2001-01-03  Jim Meyering  <meyering@lucent.com>
3394
3395         * unicodeio.c (print_unicode_char): Remove `const' from declaration of
3396         local `inptr' to avoid warning with some system declarations of iconv.
3397
3398 2000-12-29  Paul Eggert  <eggert@twinsun.com>
3399
3400         * modechange.c: Do not assume that mode_t uses the
3401         traditional octal encoding.  E.g. "chmod 1 FOO" should set
3402         the other-execute bit of FOO even if S_IXOTH != 1.
3403
3404         (SUID, SGID, SVTX, RUSR, WUSR, XUSR, RGRP, WGRP, XGRP, ROTH,
3405         WOTH, XOTH, ALLM): New macros.
3406         (S_ISUID, S_ISGID, S_ISVTX, S_IRUSR, S_IWUSR, S_IXUSR,
3407          S_IRGRP, S_IWGRP, S_IXGRP, S_IROTH, S_IWOTH, S_IXOTH):
3408         Use them.
3409         (S_ISGID): Fix typo; it was defaulting to the same value as S_ISUID.
3410         (S_IRWXU, S_IRWXG, S_IRWXO): Specify defaults in terms of the above.
3411         (mode_compile):
3412         No need to use uintmax_t; unsigned long is long enough.
3413         Don't bother to get suffix since we don't use it.
3414
3415 2000-12-24  Jim Meyering  <meyering@lucent.com>
3416
3417         * hash.c (is_prime): Return explicit boolean values.
3418         (hash_get_first): Return NULL to appease Irix5.6's 89.
3419         Reported by Nelson Beebe.
3420
3421 2000-10-31  Bruno Haible  <haible@clisp.cons.org>
3422
3423         * localcharset.c (locale_charset): Add support for Win32.
3424
3425 2000-12-18  Paul Eggert  <eggert@twinsun.com>
3426
3427         * physmem.h, physmem.c: New files.
3428
3429         * Makefile.am (libfetish_a_SOURCES): Add physmem.c.
3430         (noinst_HEADERS): Add physmem.h.
3431
3432         * xstrtol.c (__xstrtol): Add undocumented suffixes 'g' and
3433         't' for compatibility with Solaris 8 sort.
3434
3435 2000-12-18  Bruno Haible  <haible@clisp.cons.org>
3436
3437         * config.charset: Add support for BeOS.
3438
3439 2000-12-16  Jim Meyering  <meyering@lucent.com>
3440
3441         * getusershell.c [!SHELLS_FILE && __DJGPP__]: Define
3442         SHELLS_FILE to a file name that's useful on djgpp systems.
3443         Include stdlib.h.
3444         (ADDITIONAL_DEFAULT_SHELLS): Define.
3445         (default_shells): Prepend ADDITIONAL_DEFAULT_SHELLS.
3446         Based mostly on a patch from Prashant TR.
3447
3448 2000-12-16  Jim Meyering  <meyering@lucent.com>
3449
3450         This bug had a serious impact on chown: `chown N:M FILE' (for integer
3451         N and M) would have treated it like `chown N:N FILE'.
3452
3453         * userspec.c (parse_user_spec): Fix typo: s/u/g/.
3454
3455 2000-10-31  Bruno Haible  <haible@clisp.cons.org>
3456
3457         * config.charset: Add ISO-8859-3, BIG5HKSCS, GB18030, JOHAB, VISCII,
3458         CP874, CP949, CP950, CP1250, CP1253, CP1254, CP1255, CP1256, CP1257
3459         to the list of canonical encodings. Rename EUC-CN to GB2312.
3460
3461 2000-12-08  Andreas Schwab  <schwab@suse.de>
3462
3463         * mbswidth.c (mbsnwidth): Don't loop endlessly when called with an
3464         invalid mulitbyte sequence and with the MBSW_ACCEPT_INVALID flag set.
3465
3466 2000-12-07  Jim Meyering  <meyering@lucent.com>
3467
3468         * stripslash.c (ISSLASH): Define.
3469         (strip_trailing_slashes): Use ISSLASH rather than comparing against `/'.
3470         From Prashant TR.
3471
3472         * dirname.c (FILESYSTEM_PREFIX_LEN): Define.
3473         (dir_name_r): Declare this function as static.
3474         [BACKSLASH_IS_PATH_SEPARATOR]: Fix a bug that'd
3475         manifest itself on a name containing a mix of slashes and
3476         backslashes.
3477         Make this function work with names starting with a DOS-style
3478         drive letter and colon prefix.
3479         (dir_name): Append `.' if necessary.
3480         Based mostly on patches from Prashant TR and Eli Zaretskii.
3481
3482         * dirname.h (dir_name_r): Remove prototype.
3483
3484 2000-12-05  Jim Meyering  <meyering@lucent.com>
3485
3486         * dirname.c (dir_name_r): Add `const' in a few local declarations.
3487
3488 2000-12-04  Jim Meyering  <meyering@lucent.com>
3489
3490         * path-concat.c: [!HAVE_DECL_MALLOC]: Declare malloc.
3491         Also include memory.h, stdlib.h, unistd.h if appropriate.
3492         Reported by Andreas Jaeger (conflicting declaration of malloc).
3493
3494 2000-12-02  Jim Meyering  <meyering@lucent.com>
3495
3496         * closeout.h: Make idempotent, to avoid some obscure warnings.
3497
3498 2000-12-01  Paul Eggert  <eggert@twinsun.com>
3499
3500         * memrchr.c: Include <config.h> before any system include file.
3501
3502 2000-11-29  Paul Eggert  <eggert@twinsun.com>
3503
3504         * dirname.c (dir_name_r): Fix typo: int -> size_t.
3505
3506 2000-11-26  Jim Meyering  <meyering@lucent.com>
3507
3508         * memcoll.c: Include sys/types.h.  From Werner Almesberger.
3509
3510 2000-11-22  Paul Eggert  <eggert@twinsun.com>
3511
3512         * strftime.c (my_strftime): Do not invoke mbrlen with a
3513         size of (size_t) -1; it's not portable.
3514
3515 2000-11-17  Akim Demaille  <akim@epita.fr>
3516
3517         * obstack.h: Formatting changes.
3518         (obstack_grow, obstack_grow0): Don't cast WHERE at all: that would
3519         prevent type checking.
3520         (obstack_ptr_grow, obstack_ptr_grow_fast): When assigning, don't
3521         cast the value to (void *): assigning a `foo *' to a `void *'
3522         variable is valid.
3523         (obstack_int_grow, obstack_int_grow_fast): Don't cast AINT to int.
3524
3525 2000-11-17  Jim Meyering  <meyering@lucent.com>
3526
3527         * strstr.c: Update from GNU libc.
3528
3529 2000-11-16  Jim Meyering  <meyering@lucent.com>
3530
3531         * strverscmp.c: Incorporate weak-alias-related changes from glibc.
3532
3533 2000-11-11  Jim Meyering  <meyering@lucent.com>
3534
3535         * error.c: Add a couple #includes, merging from GNU libc version.
3536
3537 2000-11-10  Jim Meyering  <meyering@lucent.com>
3538
3539         * obstack.h: Update from GNU libc.
3540         * obstack.c: Likewise.
3541
3542 2000-11-06  Paul Eggert  <eggert@twinsun.com>
3543
3544         * getusershell.c (setusershell): Use rewind rather than
3545         fseek/fseeko, to avoid configuration hassles with fseeko.
3546         Don't bother opening SHELLS_FILE if shellstream is NULL;
3547         it's not necessary.
3548
3549 2000-11-05  Jim Meyering  <meyering@lucent.com>
3550
3551         * makepath.h (make_dir): Declare.
3552         * makepath.c (make_dir): Remove `static' attribute.
3553         Tweak a comment.
3554
3555 2000-11-04  Alexandre Duret-Lutz  <duret_g@epita.fr>
3556
3557         * hash.c (hash_get_next): Fix a thinko:  when ENTRY is the
3558         last one in a bucket, advance to the next bucket.
3559
3560 2000-11-02  Vesselin Atanasov  <vesselin@bgnet.bg>
3561
3562         * fnmatch.c: Do not comment out all the code if we are using
3563         the GNU C library, because in some cases we are replacing buggy
3564         code in the GNU C library itself.
3565
3566 2000-10-30  Paul Eggert  <eggert@twinsun.com>
3567
3568         * error.h, getline.h, modechange.h:
3569         Remove "2000" from Copyright line, as the file hasn't been
3570         changed this year other than in the copyright notice.
3571
3572         * xalloc.h: Add "2000" to Copyright line, as this file
3573         was changed this year.
3574
3575 2000-10-30  Paul Eggert  <eggert@twinsun.com>
3576
3577         * fnmatch.c (FOLD): Do not assume that characters are unsigned.
3578         (fnmatch): Fix some FNM_FILE_NAME and FNM_LEADING_DIR bugs,
3579         e.g. fnmatch("d*/*1", "d/s/1", FNM_FILE_NAME) incorrectly yielded zero.
3580
3581 2000-10-29  Greg Louis  <glouis@dynamicro.on.ca>
3582
3583         * regex.h (__restrict_arr): Move definition out of #ifndef block.
3584         Required because egcs-2.91.66 (aka 1.1.2) defines __restrict, but
3585         doesn't define __restrict_arr.
3586
3587 2000-10-29  Jim Meyering  <meyering@lucent.com>
3588
3589         * xstat.in: Fix grammar in comment.
3590
3591 2000-10-28  Jim Meyering  <meyering@lucent.com>
3592
3593         * memchr.c: Update from libc.
3594         Adjust for portability:
3595         [HAVE_STDLIB_H]: Include stdlib.h.
3596         [HAVE_BP_SYM_H || _LIBC]: Guard inclusion of bp-sym.h.
3597         Undef __memchr, too.
3598         [!weak_alias]: Define __memchr to memchr.
3599
3600         * regex.c: Update from libc.
3601         * regex.h: Likewise.
3602         * getopt1.c: Likewise.
3603         * memcmp.c: Likewise.
3604
3605         * getusershell.c (setusershell) [HAVE_FSEEKO]: Use fseeko.
3606         Avoid using fseek, when possible -- it's broken by design.
3607         Patch by Ulrich Drepper.
3608
3609 2000-10-26  Jim Meyering  <meyering@lucent.com>
3610
3611         * strftime.c: Update from libc.
3612
3613 2000-10-25  Jim Meyering  <meyering@lucent.com>
3614
3615         * obstack.c: Update from libc.
3616
3617 2000-10-23  Jim Meyering  <meyering@lucent.com>
3618
3619         * hard-locale.c (hard_locale): Revert last change -- it was simply
3620         wrong.  That set_locale call must not have any side effects.
3621         From Paul Eggert.
3622
3623 2000-10-22  Jim Meyering  <meyering@lucent.com>
3624
3625         * md5.c (md5_process_block) [OP]: Use `rol', not CYCLIC.
3626         [CYCLIC]: Remove now-unused definition.
3627
3628         * save-cwd.c (O_DIRECTORY): Define, if needed.
3629         (save_cwd) [HAVE_FCHDIR]: Use O_DIRECTORY when opening ".".
3630         Suggestion from Ulrich Drepper.
3631
3632 2000-10-21  Jim Meyering  <meyering@lucent.com>
3633
3634         * dirname.c (dir_name_r): New function, factored out of dir_name.
3635         (dir_name): Use dir_name_r.
3636         * dirname.h (dir_name_r): Declare it.
3637
3638 2000-10-21  Jim Meyering  <meyering@lucent.com>
3639
3640         * dirname.c (memrchr): Declare if necessary.
3641         (dir_name): Remove the restriction that there be no
3642         trailing slashes.  Now, this code skips past them, effectively
3643         ignoring them.
3644         [TEST_DIRNAME] (main): New unit tests.
3645
3646         * memrchr.c: New file from GNU libc.
3647         Undef __memrchr, too.
3648         [!weak_alias]: Define __memrchr to memrchr.
3649         Guard weak_alias use with `#ifdef weak_alias'.
3650
3651 2000-10-17  Jim Meyering  <meyering@lucent.com>
3652
3653         * quote.h (PARAMS): Define and use.
3654         Reported by Akim Demaille.
3655
3656         * getopt.c: Update from libc.
3657
3658 2000-10-16  Jim Meyering  <meyering@lucent.com>
3659
3660         * hard-locale.c (hard_locale): Use "", not 0 as 2nd arg to setlocale.
3661         From Jan Fedak.
3662
3663 2000-09-25  Jim Meyering  <meyering@lucent.com>
3664
3665         * md5.h (rol): Define (from GnuPG).
3666
3667         * sha.c: Give credit (GnuPG) where due.
3668         (M): Use rol rather than open-coding it.
3669         Add a FIXME comment.
3670
3671 2000-09-21  Jim Meyering  <meyering@lucent.com>
3672
3673         * userspec.c (parse_user_spec): Remove debugging printf I'd added.
3674         Reported by Michael Stone.
3675
3676 2000-09-20  Jim Meyering  <meyering@lucent.com>
3677
3678         * Makefile.am (libfetish_a_SOURCES): Add sha.c.
3679         (noinst_HEADERS): Add sha.h.
3680         Based on code from Scott G. Miller and from GnuPG.
3681
3682 2000-09-15  Jim Meyering  <meyering@lucent.com>
3683
3684         * regex.c: Update from libc.
3685
3686 2000-09-10  Jim Meyering  <meyering@lucent.com>
3687
3688         * getopt.c (_getopt_internal): Update from glibc.
3689
3690 2000-09-09  Jim Meyering  <meyering@lucent.com>
3691
3692         * quotearg.c: Rename ISASCII to IN_CTYPE_DOMAIN, so people don't
3693         think it should be used as a general replacement for isascii.
3694         * fnmatch.c: Likewise.
3695         * mbswidth.c: Likewise
3696         * regex.c: Likewise.
3697
3698         Don't use atoi.
3699         * userspec.c: Include sys/param.h and limits.h.
3700         Include xstrtol.h.
3701         (CHAR_BIT, TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM): Define.
3702         (UID_T_MAX, GID_T_MAX, MAXUID, MAXGID): Define.
3703         (parse_user_spec): Use xstrtoul, not atoi when converting numeric
3704         UID, GID.  Check range.
3705
3706 2000-09-06  Jim Meyering  <meyering@lucent.com>
3707
3708         * getopt.c (_getopt_internal): Update from glibc.
3709
3710 2000-08-30  Jim Meyering  <meyering@lucent.com>
3711
3712         * strftime.c: Merge in changes from GNU libc.
3713
3714 2000-08-26  Jim Meyering  <meyering@lucent.com>
3715
3716         * closeout.c: Include "__fpending.h".
3717         (close_stdout_status): Return right away if there's nothing to flush.
3718
3719         * Makefile.am (noinst_HEADERS): Add __fpending.h.
3720         * __fpending.c: New file.
3721         * __fpending.h: New file.
3722
3723 2000-08-07  Paul Eggert  <eggert@twinsun.com>
3724
3725         Standardize on "memory exhausted" instead of "Memory exhausted"
3726         or "virtual memory exhausted".
3727         * obstack.c (print_and_abort): Use "memory exhausted", not
3728         "virtual memory exhausted".
3729         * same.c (same_name): Invoke xalloc_die instead of printing
3730         our own message.
3731         * userspec.c (parse_user_spec): Likewise.
3732         * bumpalloc.h: comment fix
3733         * same.c, userspec.c: Include xalloc.h.
3734
3735         * xalloc.h (xalloc_msg_memory_exhausted): Now char const[],
3736         not char *const and pointing to a constant array.
3737         * xmalloc.c (xalloc_msg_memory_exhausted): Likewise.
3738         (xrealloc): Comment fix.
3739
3740         * userspec.c (parse_user_spec):
3741         Don't translate a message until just before returning,
3742         to avoid unnecessary translation.
3743
3744 2000-08-07  Jim Meyering  <meyering@lucent.com>
3745
3746         * addext.c, argmatch.c, argmatch.h, backupfile.h, bumpalloc.h,
3747         chown.c, diacrit.h, dirname.h, dup2.c, exclude.h, fileblocks.c,
3748         fnmatch.c, fnmatch.h, fsusage.c, fsusage.h, getdate.h,
3749         getgroups.c, gethostname.c, getopt.h, group-member.c,
3750         hard-locale.c, hash.h, isdir.c, lchown.c, linebuffer.c,
3751         linebuffer.h, long-options.h, malloc.c, md5.c, md5.h, memchr.c,
3752         memcmp.c, memcoll.c, memset.c, mktime.c, modechange.h, obstack.h,
3753         pathmax.h, realloc.c, rmdir.c, safe-read.c, save-cwd.c, stime.c,
3754         stpcpy.c, strcasecmp.c, strcspn.c, strdup.c, stripslash.c,
3755         strstr.c, strtod.c, strtol.c, strtoul.c, strtoull.c, strtoumax.c,
3756         utime.c, version-etc.h, xalloc.h, xstrdup.c, xstrtoumax.c,
3757         yesno.c: Back out Copyright date changes for each file with no change
3758         this year.  This eases coordination with other programs using the same
3759         source code modules.  From Paul Eggert.
3760
3761 2000-08-03  Greg McGary  <greg@mcgary.org>
3762
3763         * regex.c (SET_HIGH_BOUND, MOVE_BUFFER_POINTER,
3764         ELSE_EXTEND_BUFFER_HIGH_BOUND): New macros.
3765         (EXTEND_BUFFER): Use them.
3766
3767 2000-08-01  Jim Meyering  <meyering@lucent.com>
3768
3769         * dirname.c (ISSLASH): Define.
3770         (BACKSLASH_IS_PATH_SEPARATOR): Define.
3771         (dir_name) [BACKSLASH_IS_PATH_SEPARATOR]: Handle the case in which
3772         both `\' and `/' may be use as path separators.
3773         Based on a patch from Prashant TR.
3774
3775 2000-07-31  Paul Eggert  <eggert@twinsun.com>
3776
3777         * quotearg.c (quotearg_n_options): Don't make the initial
3778         slot vector a constant, since it might get modified.
3779
3780 2000-07-31  Jim Meyering  <meyering@lucent.com>
3781
3782         * xmalloc.c: Use `virtual memory exhausted', not `Memory exhausted'.
3783         * obstack.c (print_and_abort): Likewise.
3784
3785 2000-07-30  Paul Eggert  <eggert@twinsun.com>
3786
3787         * quotearg.c (quotearg_n_options): Preallocate a slot 0
3788         buffer, so that the caller can always quote one small
3789         component of a "memory exhausted" message in slot 0.
3790         From a suggestion by Jim Meyering.
3791
3792 2000-07-30  Jim Meyering  <meyering@lucent.com>
3793
3794         * makepath.c (make_path): Quote the other instance, too.
3795
3796         * quotearg.c (N_STATIC_SLOTVECS): Define.
3797         (STATIC_BUF_SIZE): Define.
3798         (quotearg_n_options): Use only statically allocated storage when
3799         N < N_STATIC_SLOTVECS and the length of the quoted result is smaller
3800         than STATIC_BUF_SIZE.
3801
3802 2000-07-29  Jim Meyering  <meyering@lucent.com>
3803
3804         * diacrit.c (diacrit_diac): Use __MSDOS__ in favor of MSDOS.
3805         * dirname.c (dir_name): Likewise.
3806
3807         * basename.c (base_name): Use ISSLASH rather than comparing against `/'.
3808
3809         * dirname.c (dir_name) [MSDOS]: Declare `lim' to be const.
3810         (dir_name): Assert that there are no trailing slashes.
3811
3812 2000-07-18  Bruno Haible  <haible@clisp.cons.org>
3813
3814         * mbswidth.h (mbswidth): Add a flags argument.
3815         (mbswidth): New declaration.
3816         (MBSW_ACCEPT_INVALID, MBSW_ACCEPT_UNPRINTABLE): New macros.
3817         * mbswidth.c (mbswidth): Add a flags argument.
3818         (mbsnwidth): New function.
3819
3820 2000-07-24  Jim Meyering  <meyering@lucent.com>
3821
3822         * mbswidth.c: Remove useless #else.  From Bruno Haible.
3823
3824 2000-07-23  Paul Eggert  <eggert@twinsun.com>
3825
3826         * mbswidth.c (_XOPEN_SOURCE):
3827         Don't define; this causes problems on Solaris 7.
3828         (wcwidth) [!HAVE_DECL_WCWIDTH]: Declare.
3829
3830 2000-07-23  Paul Eggert  <eggert@twinsun.com>
3831
3832         * quotearg.c:
3833         Include <wchar.h> even if ! (HAVE_MBRTOWC && 1 < MB_LEN_MAX),
3834         so that mbstate_t is always defined.
3835
3836         Do not inspect MB_LEN_MAX, since it's incorrectly defined to
3837         be 1 in at least one GCC installation, and this configuration
3838         error is likely to be common.  Ignoring MB_LEN_MAX hurts
3839         performance on hosts that have mbrtowc but have only unibyte
3840         locales, but I assume these hosts are rare.
3841
3842 2000-07-23  Paul Eggert  <eggert@twinsun.com>
3843
3844         * quotearg.c: Streamline by invoking multibyte code only if needed.
3845         <wchar.h>: Include only if HAVE_MBRTOWC && 1 < MB_LEN_MAX.
3846         (MB_CUR_MAX): Redefine to 1 if ! (HAVE_MBRTOWC && 1 < MB_LEN_MAX).
3847         (quotearg_buffer_restyled): If a unibyte locale, don't bother to
3848         invoke multibyte primitives.
3849
3850 2000-07-23  Jim Meyering  <meyering@lucent.com>
3851
3852         * basename.c (base_name): Add an assertion.
3853
3854 2000-07-15  Bruno Haible  <clisp.cons.org>
3855
3856         * quotearg.c: When the system forces us to redefine mbstate_t,
3857         shadow its mbsinit function.
3858
3859 2000-07-16  Bruno Haible  <haible@clisp.cons.org>
3860
3861         * mbswidth.h: New file.
3862         * mbswidth.c: New file.
3863         * Makefile.am (libfetish_a_SOURCES): Add mbswidth.c.
3864         (noinst_HEADERS): Add mbswidth.h.
3865
3866 2000-07-17  Bruno Haible  <haible@clisp.cons.org>
3867
3868         * config.charset: Add support for FreeBSD. Improve support for HP-UX
3869         and IRIX 6.
3870
3871 2000-07-15  Jim Meyering  <meyering@lucent.com>
3872
3873         * makepath.c: Include quote.h.
3874         (make_path): Convert "`%s'" in format strings to "%s", and wrap each
3875         corresponding argument in a `quote (...)' call.
3876         Give better diagnostics.
3877
3878         * Makefile.am (libfetish_a_SOURCES): Add quote.c.
3879         (noinst_HEADERS): Add quote.h.
3880
3881         * quote.c (quote, quote_n): New file.  Two functions taken verbatim
3882         from tar's src/misc.c.
3883         * quote.h: New file.  Prototypes for same.
3884
3885 2000-07-10  Paul Eggert  <eggert@twinsun.com>
3886
3887         From a suggestion by Bruno Haible.
3888         * quotearg.c (mbrtowc): Do not use HAVE_WCHAR_H in the definition.
3889         Use defined mbstate_t, not HAVE_MBSTATE_T_OBJECT,
3890         to decide whether to define the BeOS workaround macro;
3891         this adjusts to the change to AC_MBSTATE_T.
3892
3893 2000-07-13  Paul Eggert  <eggert@twinsun.com>
3894
3895         * quotearg.h (enum quoting style): New enum clocale_quoting_style.
3896
3897         * quotearg.c (quoting_style_args, quoting_style_vals,
3898         quotearg_buffer_restyled): Add support for
3899         clocale_quoting_style.  Undo previous change to
3900         locale_quoting_style behavior, and undo the "{LEFT QUOTATION MARK}"
3901         and "{RIGHT QUOTATION MARK}" msgids.
3902
3903 2000-07-05  Paul Eggert  <eggert@twinsun.com>
3904
3905         The old behavior of quoting `like this' doesn't look good with
3906         newer, ISO-style fonts.  See:
3907         http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
3908
3909         Instead, quote "like this" by default.  Let the translator
3910         tailor the locale-specific quoting behavior by providing
3911         translations for {LEFT QUOTATION MARK} and {RIGHT QUOTATION MARK}.
3912
3913         * quotearg.c (N_): New macro.
3914         (gettext_default): New function.
3915         (quotearg_buffer_restyled): Use
3916         gettext_default ("{LEFT QUOTATION MARK}", "\"") for left quote, and
3917         gettext_default ("{RIGHT QUOTATION MARK}", "\"") for right quote.
3918
3919 2000-07-09  Jim Meyering  <meyering@lucent.com>
3920
3921         * Most files: Update copyright dates to include 2000.
3922
3923 2000-07-08  Jim Meyering  <meyering@lucent.com>
3924
3925         * xgethostname.c (ENAMETOOLONG): Define to an unlikely value
3926         if not defined.
3927         (xgethostname): Remove now-unnecessary #ifdef.
3928         Move declaration of `err' into loop where it's used.
3929
3930 2000-07-05  Bruno Haible  <haible@clisp.cons.org>
3931
3932         * xgethostname.c (xgethostname): Protect against the SunOS 5.5 bug
3933         by allocating a larger buffer. Test the gethostname return value for
3934         being >= 0, not == 0, for BeOS.  Don't exhaust memory if gethostname
3935         returns an error and ENAMETOOLONG isn't defined.
3936
3937 2000-07-05  Paul Eggert  <eggert@twinsun.com>
3938         and Bruno Haible  <haible@clisp.cons.org>
3939
3940         * quotearg.c (mbrtowc): Declare returned type, since BeOS doesn't.
3941
3942 2000-07-05  Bruno Haible  <haible@clisp.cons.org>
3943
3944         * quotearg.c (struct quoting_options): Simplify quote_these_too
3945         dimension.
3946
3947 2000-07-03  Jim Meyering  <meyering@lucent.com>
3948
3949         * strndup.c: [!HAVE_DECL_STRNLEN]: Declare strnlen.
3950         Reported by Bruno Haible.
3951
3952 2000-07-04  Jim Meyering  <meyering@lucent.com>
3953
3954         * quotearg.c: Make inclusion of <wchar.h> independent of whether
3955         HAVE_MBRTOWC is set.  Required at least for irix-5.6, which
3956         lacks mbrtowc.
3957
3958 2000-07-03  Paul Eggert  <eggert@twinsun.com>
3959         and Bruno Haible  <haible@clisp.cons.org>
3960
3961         * quotearg.c (mbrtowc):
3962         Assign to *pwc, and return 1 only if result is nonzero.
3963         (iswprint): Use ISPRINT when substituting our own mbrtowc.
3964
3965 2000-07-03  Jim Meyering  <meyering@lucent.com>
3966
3967         * readutmp.h: [HAVE_UTMPX_H]: Include <utmp.h> if HAVE_UTMP_H.
3968         This is necessary to get a definition of e.g., UTMP_FILE on HP-UX 10.20.
3969         From Bob Proulx.
3970
3971 2000-07-02  Jim Meyering  <meyering@lucent.com>
3972
3973         * quotearg.c (mbstate_t): Don't define here.
3974
3975 2000-07-02  Jim Meyering  <meyering@lucent.com>
3976
3977         * nanosleep.c (SIGCONT): Define if not already defined.
3978
3979 2000-06-17  Bruno Haible  <haible@clisp.cons.org>
3980
3981         * mountlist.c: Use MOUNTED_FS_STAT_DEV instead of MOUNTED_NEXT_DEV,
3982         per change in ../m4/ls-mntd-fs.m4.
3983         (read_filesystem_list): Ignore symbolic links.
3984
3985 2000-06-29  Jim Meyering  <meyering@lucent.com>
3986
3987         * same.c: Include <string.h> or <strings.h>, as appropriate,
3988         for declaration of strcmp.
3989
3990         * long-options.c: Include <stdlib.h>, for declaration of exit.
3991
3992         * mountlist.c (fsp_to_string) [HAVE_F_FSTYPENAME_IN_STATFS]:
3993         Avoid warning by casting result to `char *' to remove `const'.
3994
3995 2000-06-17  Bruno Haible  <haible@clisp.cons.org>
3996
3997         * Makefile.am (libfetish_a_SOURCES): Remove readutmp.c.
3998
3999 2000-06-26  Paul Eggert  <eggert@twinsun.com>
4000
4001         savedir now sets errno on failure and invokes xmalloc to get memory.
4002         Fix a couple of other minor bugs while we're at it.
4003
4004         * savedir.c (<unistd.h>): Do not include; there's no need.
4005         (NAMLEN): Remove macro.
4006         (malloc, realloc): Remove decls.
4007         (stpcpy): Likewise.
4008         ("xalloc.h"): Include.
4009         (NAME_SIZE_DEFAULT): New macro.
4010         (savedir): Use xmalloc / xrealloc to allocate memory.
4011         Use NAME_SIZE_DEFAULT if name_size is negative or overflows to zero.
4012         Skip "" directory entries.
4013         Use strlen to calculate directory entry length, since the old method
4014         is rarely used these days and isn't worth supporting.
4015         Don't use a pointer after freeing it.
4016         Check for integer overflow when calculating allocation size.
4017         Use memcpy to copy entries, instead of stpcpy.
4018         Set errno properly when returning NULL.
4019         Check for readdir error.
4020
4021 2000-06-26  Jim Meyering  <meyering@lucent.com>
4022
4023         * posixtm.c [HAVE_STDLIB_H]: Include stdlib.h, for decl of abort.
4024
4025 2000-06-17  Bruno Haible  <haible@clisp.cons.org>
4026
4027         * getusershell.c (xmalloc, xrealloc): Remove functions.
4028         Include xalloc.h.
4029         Don't include <stdlib.h>.  Don't declare malloc, realloc.
4030
4031 2000-06-23  Bruno Haible  <haible@clisp.cons.org>
4032
4033         * unicodeio.c (print_unicode_char): Work around ansi2knr deficiency.
4034
4035 2000-06-24  Jim Meyering  <meyering@lucent.com>
4036
4037         * error.c [!HAVE_DECL_STRERROR_R]: Declare strerror_r.
4038
4039 2000-06-21  Jim Meyering  <meyering@lucent.com>
4040
4041         * getpass.c: New file, from Bruno Haible.  Required for BeOS.
4042
4043 2000-06-19  Paul Eggert  <eggert@twinsun.com>
4044
4045         * quotearg.c: Include <wctype.h> after <wchar.h>, for Solaris 2.5.
4046         (mbrtowc, mbstate_t): Define substitutes if
4047         HAVE_MBRTOWC && HAVE_WCHAR_H && !HAVE_MBSTATE_T_OBJECT.
4048         (iswprint): Define to 1 if !defined iswprint && !HAVE_ISWPRINT,
4049         not if ! (HAVE_MBRTOWC && HAVE_WCHAR_H).
4050
4051 2000-06-17  Bruno Haible  <haible@clisp.cons.org>
4052
4053         * xgetcwd.c (xgetcwd): If the required pathname length is smaller
4054         than 1024, return a memory chunk of least possible size, instead
4055         of size PATH_MAX + 2. In the loop, increment the size proportionally.
4056         Use free/xmalloc instead of xrealloc to avoid copying for very long
4057         paths.
4058
4059 2000-06-17  Bruno Haible  <haible@clisp.cons.org>
4060
4061         * canon-host.c (canon_host): Use malloc and memcpy to copy an
4062         address, not strdup.  Include <stdlib.h> and don't declare free().
4063
4064 2000-06-17  Bruno Haible  <haible@clisp.cons.org>
4065
4066         * path-concat.c (path_concat): Don't access dir[-1] if dir is
4067         the empty string.
4068
4069 2000-06-21  Jim Meyering  <meyering@lucent.com>
4070
4071         * Makefile.am (libfetish_a_SOURCES): Add getstr.c.
4072         (noinst_HEADERS): Add getstr.h.
4073
4074         * getline.c (getstr): Move into a separate file.
4075         * getstr.c (getstr): New file, extracted from getline.c, with
4076         the following changes: new parameter, delim2; both delim[12]
4077         parameters have type `int', not `char'.  The latter would lose
4078         with 8-bit delimiters.
4079         * getstr.h: New file.
4080
4081 2000-06-19  Jim Meyering  <meyering@lucent.com>
4082
4083         * getloadavg.c [HAVE_NLIST_H] (NLIST_STRUCT): Define.
4084
4085 2000-06-18  Jim Meyering  <meyering@lucent.com>
4086
4087         * mkdir.c: Remove file, due mainly to copyright incompatibility.
4088         Besides, these days every porting target provides a mkdir function.
4089
4090         * strnlen.c: Include memory.h, string.h, and/or strings.h as needed.
4091         (this snippet comes from src/system.h).
4092
4093 2000-06-15  Paul Eggert  <eggert@twinsun.com>
4094
4095         * human.c (adjust_value): New function.
4096         (human_readable_inexact): Apply rounding style even when
4097         printing approximate values.
4098
4099 2000-06-14  Paul Eggert  <eggert@twinsun.com>
4100
4101         * human.c (human_readable_inexact): Allow an input block
4102         size that is not a multiple of the output block size, and vice versa.
4103         Reported by Piergiorgio Sartor.
4104
4105 2000-06-14  Paul Eggert  <eggert@twinsun.com>
4106
4107         * getdate.y (get_date): Apply relative times after time
4108         zone indicator, not before.  Reported by Todd A. Jacobs.
4109
4110 2000-06-13  Jim Meyering  <meyering@lucent.com>
4111
4112         * Makefile.am (all-local): Depend on lstat.c and stat.c.
4113
4114         * xstat.in [!HAVE_DECL_FREE]: Declare free in lstat.c.
4115
4116 2000-06-12  Paul Eggert  <eggert@twinsun.com>
4117
4118         * xstat.in: Include <stdlib.h> in lstat, to declare "free".
4119
4120 2000-06-04  Paul Eggert  <eggert@twinsun.com>
4121
4122         * strnlen.c: Include <config.h> if HAVE_CONFIG_H.
4123
4124 2000-06-04  Jim Meyering  <meyering@lucent.com>
4125
4126         * getugroups.c (getugroups): Cast -1 to gid_t, for systems like
4127         SunOS 4.1.4 for which gid_t is an unsigned type.
4128
4129 2000-06-03  Jim Meyering  <meyering@lucent.com>
4130
4131         * strnlen.c [!HAVE_DECL_MEMCHR]: Declare memchr.
4132
4133 2000-05-26  Bruno Haible  <haible@clisp.cons.org>
4134
4135         * Makefile.am (install-exec-local): On systems with glibc-2.1 or
4136         newer, don't install charset.alias.
4137         * config.charset: Change the Linux/glibc rules so they become empty
4138         on glibc-2.1 or newer.
4139
4140 2000-06-02  Jim Meyering  <meyering@lucent.com>
4141
4142         * mountlist.c: Back out last change.  Instead, do this...
4143         * mountlist.c (read_filesystem_list) [MOUNTED_VMOUNT]: Set the me_dummy
4144         member using the same `ignore'-testing code.
4145         * mountlist.h (ME_DUMMY): Add `autofs' to the list of ignored
4146         fs_type strings.
4147         From Mark D. Roth.
4148
4149 2000-05-29  Jim Meyering  <meyering@lucent.com>
4150
4151         * mountlist.c (read_filesystem_list) [MOUNTED_VMOUNT]: Ignore mounts
4152         with the `ignore' attribute.  Based on a patch from Mark D. Roth.
4153
4154 2000-05-22  Jim Meyering  <meyering@lucent.com>
4155
4156         * makepath.c: Remove old, now-unnecessary `#ifdef __MSDOS__' block.
4157
4158 2000-05-18  Jim Meyering  <meyering@lucent.com>
4159
4160         * hash.c (hash_rehash): Fix a nasty bug: copy the free entry list
4161         back, too, since it may have been modified by allocate_entry.
4162         (hash_delete): Rewrite to use neither the assignment operator
4163         nor the comma operator in an if-expression.
4164
4165 2000-05-15  Paul Eggert  <eggert@twinsun.com>
4166
4167         * closeout.c:
4168         <sys/stat.h>, <sys/types.h>, <unistd.h>, (STDOUT_FILENO):
4169         Remove; no longer needed.
4170         "quotearg.h": Add include.
4171         (file_name): Do not bother to explicitly initialize to NULL; it's less
4172         efficient on some hosts.
4173         (close_stdout_status): Remove test as to whether stdout was already
4174         closed; it breaks for the case "echo x | sort >&-".
4175         Quote file name colons.
4176         Do not assume that _("write error") lacks format strings.
4177
4178 2000-05-15  Jim Meyering  <meyering@lucent.com>
4179
4180         * version-etc.c (version_etc_copyright): Update the copyright string
4181         used in all --version output.
4182
4183 2000-05-14  Jim Meyering  <meyering@lucent.com>
4184
4185         * closeout.c (close_stdout_set_file_name): New function.
4186         (close_stdout_status): Use new file-scoped global.
4187         Return right away if fstat says the stdout file descriptor is invalid.
4188         * closeout.h (close_stdout_set_file_name): Declare.
4189
4190 2000-05-10  Jim Meyering  <meyering@lucent.com>
4191
4192         * closeout.c [default_exit_status]: New file-scoped variable.
4193         (close_stdout_set_status): New function.
4194         * closeout.h (close_stdout_set_status): Declare.
4195
4196 2000-05-08  Jim Meyering  <meyering@lucent.com>
4197
4198         * long-options.c: Don't include closeout.h.
4199         (parse_long_options): Don't call close_stdout for --version.
4200
4201 2000-05-06  Jim Meyering  <meyering@lucent.com>
4202
4203         * strnlen.c: Undefine __strnlen and strnlen.
4204         [!weak_alias]: Define __strnlen to strnlen.
4205
4206         * atexit.c: New file, from libiberty.
4207
4208 2000-05-06  Jim Meyering  <meyering@lucent.com>
4209
4210         * closeout.c (close_stdout_status): Also check for errors on the
4211         stderr stream.
4212
4213 2000-05-05  Bruno Haible  <haible@clisp.cons.org>
4214
4215         * localcharset.c (get_charset_aliases): Use malloc, realloc and memcpy
4216         instead of xmalloc, xrealloc, path_concat.
4217         (locale_charset): Treat empty environment variables as absent.
4218         (DIRECTORY_SEPARATOR, ISSLASH): New macros.
4219
4220 2000-05-04  Jim Meyering  <meyering@lucent.com>
4221
4222         * getopt.c: Update from glibc.
4223         * obstack.c: Likewise.
4224         * obstack.h: Likewise.
4225         * regex.c: Likewise.  NB: K&R compiler support is dropped for this file
4226
4227         * regex.h: Likewise.
4228         * strndup.c: Likewise.
4229         * strnlen.c: New file, from glibc.
4230
4231 2000-05-01  Jim Meyering  <meyering@lucent.com>
4232
4233         * full-write.c (full_write): Remove `FIXME' part of comment.
4234
4235 2000-04-29  Jim Meyering  <meyering@lucent.com>
4236
4237         * path-concat.c: Declare strdup only if it's not defined.
4238         * canon-host.c: Likewise.
4239
4240 2000-04-28  Jim Meyering  <meyering@lucent.com>
4241
4242         * rpmatch.c [HAVE_LIMITS_H]: Include limits.h before regex.h to avoid
4243         redefinition warning on some systems (HPUX).  Otherwise, regex.h is
4244         included first, then limits.h is included by locale.h by libintl.h.
4245         From John David Anglin.
4246
4247 2000-04-25  Jim Meyering  <meyering@lucent.com>
4248
4249         * makepath.c (S_IRWXUGO): Define.
4250         (make_path): Always perform explicit chmod if MODE specifies any
4251         of the `special' permission bits.  Prompted by a bug report against
4252         install from Mate Wierdl and Joost van Baal.
4253
4254 2000-04-18  Jim Meyering  <meyering@lucent.com>
4255
4256         * README: New file.
4257
4258         * getpagesize.h [!getpagesize && HAVE_OS_H && B_PAGE_SIZE]: Define
4259         getpagesize.  For BeOS.  Based on a patch from Bruno Haible.
4260
4261 2000-04-17  Jim Meyering  <meyering@lucent.com>
4262
4263         * strftime.c (my_strftime) [strftime]: Declare strftime here, since
4264         the definition of it to rpl_strftime also defined-away the system's
4265         declaration.
4266
4267 2000-04-15  Jim Meyering  <meyering@lucent.com>
4268
4269         Use `C' to denote so-called `contiguous' files, the same way
4270         that tar does.
4271         * filemode.c (S_ISCTG) [!S_ISCTG && S_IFCTG]: Define.
4272         (ftypelet): Use S_ISCTG.
4273         From Michael Deutschmann.
4274
4275 2000-04-14  Jim Meyering  <meyering@lucent.com>
4276
4277         * strftime.c (my_strftime) [#ifdef strftime]: Declare strftime.
4278
4279 2000-04-08  Jim Meyering  <meyering@lucent.com>
4280
4281         * Makefile.am (charset.alias): Use t-$@, not $@-t so the DOS 8.3
4282         names don't conflict.  Reported by Eli Zaretskii.
4283
4284 2000-03-28  Bruno Haible  <haible@clisp.cons.org>
4285
4286         * unicodeio.c (print_unicode_char): Avoid triggering Solaris iconv
4287         bug.  Deal with the different error behavior of Irix iconv.
4288
4289 2000-04-07  Jim Meyering  <meyering@lucent.com>
4290
4291         * putenv.c: Move inclusion of errno.h so it follows that of sys/types.h,
4292         to work around system header problems on AIX 3.2.5.  From Bruno Haible.
4293
4294 2000-04-05  Jim Meyering  <meyering@lucent.com>
4295
4296         Portability tweaks required for ultrix4.3.
4297         * readutmp.h [HAVE_UTMPX_H && !HAVE_DECL_GETUTENT]: Declare getutent.
4298         * readutmp.c: Include sys/types.h before sys/stat.h.
4299         * canon-host.c: Declare strdup.
4300         * path-concat.c: Likewise.
4301         From John David Anglin.
4302
4303 2000-04-04  Jim Meyering  <meyering@lucent.com>
4304
4305         Be more DOS 8.3-friendly.
4306         * ref-add.sin: Renamed from ref-add.sed.in.
4307         * ref-del.sin: Renamed from ref-del.sed.in.
4308         * Makefile.am: Reflect renaming.
4309         Reported by Eli Zaretskii.
4310
4311         Use a temporary file name that won't clash with `charset.alias'
4312         in the DOS 8.3 name space.
4313         * Makefile.am (charset_tmp): Define.
4314         (install-exec-local): Use $(charset_tmp) instead of $(charset_alias)-t.
4315         (uninstall-local): Likewise.
4316         Reported by Eli Zaretskii.
4317
4318 2000-03-29  Paul Eggert  <eggert@twinsun.com>
4319
4320         * time/strftime.c (my_strftime): Make sure we call the system
4321         strftime, not ourselves, when invoking the underlying strftime.
4322
4323 2000-03-24  Jim Meyering  <meyering@lucent.com>
4324
4325         * Makefile.am (EXTRA_DIST): Add ref-add.sed.in and ref-del.sed.in.
4326         (charset_alias): Define.
4327         (install-exec-local): Factor out common code.
4328         (uninstall-local): Split lines longer than 80.
4329         (ref-add.sed, ref-del.sed): Remove rules... (do the following instead)
4330         (SUFFIXES): Define.
4331         (.sed.in.sed): New rule.  Don't redirect directly to $@.
4332         (CLEANFILES): Add ref-add.sed and ref-del.sed.
4333
4334 2000-03-19  Bruno Haible  <haible@clisp.cons.org>
4335
4336         * config.charset: Output a line containing "Packages using this file".
4337         * ref-add.sed.in, ref-del.sed.in: New files.
4338         * Makefile.am (install-exec-local, uninstall-local, ref-add.sed,
4339         ref-del.sed): New rules.
4340
4341 2000-03-17  Jim Meyering  <meyering@lucent.com>
4342
4343         * unicodeio.c (<string.h>): Include only #if HAVE_STRING_H.
4344         Otherwise, include <strings.h>
4345
4346 2000-03-17  Bruno Haible  <haible@clisp.cons.org>
4347
4348         * unicodeio.c (utf8_wctomb): New function.
4349         (print_unicode_char): Pass the Unicode character to iconv in UTF-8
4350         format instead of in UCS-4 with platform dependent endianness.
4351
4352 2000-03-07  Paul Eggert  <eggert@twinsun.com>
4353
4354         * savedir.c (savedir): Work even if directory size is
4355         negative; this can happen with some screwy NFS configurations.
4356
4357 2000-03-06  Jim Meyering  <meyering@lucent.com>
4358
4359         * localcharset.c (get_charset_aliases): Don't try to free file_name
4360         if it's NULL (because we ran out of memory).  From Bruno Haible.
4361
4362 2000-03-05  Jim Meyering  <meyering@lucent.com>
4363
4364         * localcharset.c ("path-concat.h"): Include.
4365         (get_charset_aliases): Use path_concat instead of ANSI string
4366         concatenation.
4367
4368         * unicodeio.h (PARAMS): Define.
4369         Use it to guard prototype.
4370
4371 2000-03-04  Jim Meyering  <meyering@lucent.com>
4372
4373         * Makefile.am (install-exec-local): Create $(libdir) before installing
4374         into it.
4375         (uninstall-local): Uncomment this rule so `make distcheck' works
4376         once again.
4377
4378         * unicodeio.c (<errno.h>): Include it.
4379         (errno): Declare if not defined.
4380
4381         * localcharset.c: Add Bruno's comment justifying use of volatile.
4382
4383         * config.charset: New version, incorporating remarks from a linux
4384         i18n mailing list.  From Bruno Haible.
4385
4386 2000-03-02  Jim Meyering  <meyering@lucent.com>
4387
4388         * Makefile.am (EXTRA_DIST): Add config.charset.
4389
4390 2000-03-01  Jim Meyering  <meyering@lucent.com>
4391
4392         * localcharset.c: Guard some #includes with `#if HAVE_...'.
4393         * unicodeio.c: Likewise.
4394
4395 2000-02-02  Bruno Haible  <haible@clisp.cons.org>
4396
4397         * config.charset: New file.
4398         * localcharset.c: New file.
4399         * unicodeio.h, unicodeio.c: New files.
4400         * Makefile.am (DEFS): Add -DLIBDIR=...
4401         (libfetish_a_SOURCES): Add localcharset.c and unicodeio.c.
4402         (noinst_HEADERS): Add unicodeio.h.
4403         (all-local, install-exec-local, charset.alias): New targets.
4404
4405 2000-02-28  Paul Eggert  <eggert@twinsun.com>
4406
4407         * quotearg.c (ALERT_CHAR): New macro.
4408         (quotearg_buffer_restyled): Use it.
4409
4410 2000-02-27  Jim Meyering  <meyering@lucent.com>
4411
4412         * strtoumax.c: Fix typo in decl of strtoul: s/long long/long/.
4413         Guard declaration of strtoull also with `&& HAVE_UNSIGNED_LONG_LONG'.
4414
4415         * backupfile.c: Guard inclusion of stdlib.h with `#if HAVE_STDLIB_H',
4416         not `#if STDC_HEADERS'.
4417         Declare malloc if needed.
4418
4419         * backupfile.c: Use `#if !HAVE_DECL...' instead of `#ifndef HAVE_DECL..'
4420         now that autoconf always defines the HAVE_DECL_ symbols.
4421         * human.c: Likewise.
4422         * same.c: Likewise.
4423         * strtoumax.c: Likewise.
4424
4425         * backupfile.c: Arrange for cpp to fail if the configure-time
4426         declaration check was not run.
4427         * hash.c: Likewise.
4428         * human.c: Likewise.
4429         * same.c: Likewise.
4430         * strtoumax.c: Likewise.
4431
4432         * userspec.c (parse_user_spec): If there is no `:' but there is a `.',
4433         then first look up the entire `.'-containing string as a login name.
4434
4435 2000-02-18  Paul Eggert  <eggert@twinsun.com>
4436
4437         * getdate.y: Handle two-digit years with leading zeros correctly.
4438         (textint): New typedef.
4439         (parser_control): Member year changed from int to textint.
4440         All uses changed.
4441         (YYSTYPE): Removed; replaced by %union with int and textint members.
4442         (tDAY, tDAY_UNIT, tDAYZONE, tHOUR_UNIT, tID, tLOCAL_ZONE, tMERIDIAN,
4443         tMINUTE_UNIT, tMONTH, tMONTH_UNIT tSEC_UNIT, tSNUMBER, tUNUMBER,
4444         tYEAR_UNIT, tZONE, o_merid): Now of type <intval>.
4445         (tSNUMBER, tUNUMBER): Now of type <textintval>.
4446         (date, number, to_year): Use width of number in digits, not its value,
4447         to determine whether it's a 2-digit year, or a 2-digit time.
4448         (yylex): Store number of digits of numeric tokens.
4449         Reported by John Kendall.
4450
4451         (parser_control): Changed from struct parser_control to typedef (for
4452         consistency).  All uses changed.
4453
4454         (tID): Removed; not used.
4455         (yylex): Return '?' for unknown identifiers, rather than (unused) tID.
4456
4457 2000-02-14  Paul Eggert  <eggert@twinsun.com>
4458
4459         * getpagesize.h (getpagesize): Port to VMS for Alpha;
4460         adapted from changes to grep getpagesize.h by Martin P.J. Zinser.
4461
4462 2000-02-12  Jim Meyering  <meyering@lucent.com>
4463
4464         * userspec.c (ISDIGIT): Define it.
4465         (isdigit): Remove definition.
4466         (is_number): Use ISDIGIT, not isdigit.
4467         <libintl.h>: Include.
4468         (_ and N_): Define.
4469         (parse_user_spec): Mark translatable strings.
4470
4471 2000-02-10  Jim Meyering  <meyering@lucent.com>
4472
4473         With these changes, nanosleep.[ch] are finally enough like the other
4474         lib/* replacement files to compile on a few more losing systems.
4475
4476         * nanosleep.h: Don't include config.h.
4477         Remove prototype from declaration of nanosleep.
4478         (PARAMS): Remove now-unneeded definition.
4479         * nanosleep.c: #undef nanosleep.
4480         (rpl_nanosleep): Rename from nanosleep.
4481
4482 2000-02-03  Jim Meyering  <meyering@lucent.com>
4483
4484         * readutmp.c (read_utmp): Guard with `#ifdef UTMP_NAME_FUNCTION',
4485         rather than with `#if HAVE_UTMPNAME'.
4486
4487 2000-02-01  Jim Meyering  <meyering@lucent.com>
4488
4489         * readutmp.h (UT_USER): Add parens.  From Andreas Schwab.
4490
4491 2000-01-31  Jim Meyering  <meyering@lucent.com>
4492
4493         * nanosleep.h (nanosleep): Guard declaration with
4494         `#if ! HAVE_DECL_NANOSLEEP'.
4495         Without this, OFS gets a redeclaration error for rpl_nanosleep, due to
4496         the declaration in that vendor's sys/timers.h.
4497         Reported by Christian Krackowizer.
4498
4499         * quotearg.c (ISASCII): Add #undef and move definition to follow
4500         inclusion of wctype.h to work around Solaris 2.6 namespace pollution.
4501         (ISPRINT): Likewise.
4502         Reported by Tom Tromey.
4503
4504 2000-01-30  Jim Meyering  <meyering@lucent.com>
4505
4506         * readutmp.c (extract_trimmed_name): Use UT_USER instead of hard-coding
4507         uses of ->ut_name.  The latter doesn't work with new Linux header files
4508         where only utmpx.ut_user is declared.
4509
4510         * readutmp.h (UT_USER): Define.
4511
4512 2000-01-23  Jim Meyering  <meyering@lucent.com>
4513
4514         * Makefile.am (libfetish_a_SOURCES): Remove explicit mention of
4515         obstack.c.
4516
4517 2000-01-22  Jim Meyering  <meyering@lucent.com>
4518
4519         * strtoumax.c: [! HAVE_DECL_STRTOUL]: Declare strtoul.
4520         [! HAVE_DECL_STRTOULL]: Declare strtoull.
4521         Required for some AIX systems.  Reported by Christian Krackowizer.
4522         [TESTING] (main): New function.
4523
4524         1997-10-17  Eli Zaretskii  <eliz@is.elta.co.il>
4525         * dirname.c (dir_name): Support for DOS-style file names with drive
4526         letters.
4527
4528         * quotearg.c [HAVE_WCTYPE_H]: Include <wctype.h> for decl of iswprint.
4529
4530         * strverscmp.c (ISDIGIT): Define.
4531         (strverscmp): Use ISDIGIT, not isdigit.
4532
4533 2000-01-17  Paul Eggert  <eggert@twinsun.com>
4534
4535         * nanosleep.c (nanosleep):
4536         Don't use SA_INTERRUPT to decide whether to call sigaction, as
4537         POSIX.1 doesn't require SA_INTERRUPT and some systems
4538         (e.g. Solaris 7) don't define it.  Use SA_NOCLDSTOP instead;
4539         it's been part of POSIX.1 since day 1 (in 1988).
4540
4541 2000-01-17  Jim Meyering  <meyering@lucent.com>
4542
4543         * interlock: Remove unused file.  Reported by François Pinard.
4544
4545 2000-01-16  Paul Eggert  <eggert@twinsun.com>
4546
4547         * quotearg.c (quotearg_buffer_restyled): Do not quote
4548         alert, backslash, formfeed, and vertical tab unnecessarily in
4549         shell quoting style.
4550
4551 Local Variables:
4552 version-control: never
4553 End: