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