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