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