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