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