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