* lib/argp-pv.c: Remove a doubled word in a comment.
[pspp] / lib / ChangeLog
1 2006-07-09  Jim Meyering  <jim@meyering.net>
2
3         * argp-pv.c: Remove a doubled word in a comment.
4         * check-version.c (check_version): Likewise.
5         * javacomp.c (compile_java_class): Likewise.
6
7 2006-07-08  Jim Meyering  <jim@meyering.net>
8
9         * getndelim2.h (getndelim2): Remove doubled "after" in comment.
10
11 2006-07-06  Jim Hyslop  <jhyslop@dreampossible.ca>  (tiny change)
12
13         * lib/getaddrinfo.c: Changes to compile under MSVC6: changed
14         '#if WIN32_NATIVE' to '#ifdef' & moved WSAAPI macro inside
15         brackets.  Other minor changes to suppress some compiler
16         warnings.
17
18 2006-07-06  Paul Eggert  <eggert@cs.ucla.edu>
19
20         * getloadavg.c: Use __VMS, not VMS.
21         * getopt.c: Likewise.
22         * getpagesize.h: Likewise.
23         * glob.c: Remove most VMS cruft; it hasn't been tested for a while and
24         probably does not work.
25
26 2006-07-06  Derek R. Price  <derek@ximbiot.com>
27         and Paul Eggert  <eggert@cs.ucla.edu>
28
29         * backupfile.c [HAVE_DIRENT_H && ! HAVE_NDIR_H]:
30         Don't worry about this obsolete case any more.
31         (HAVE_DIR): Remove.  All uses removed; we now assume you can read
32         directories.
33         * dirfd.h [HAVE_DIRENT_H && ! HAVE_NDIR_H]: Don't
34         worry about this obsolete case any more.
35         * fts.c: Likewise.
36         * getcwd.c: Likewise.
37         * glob.h: Likewise.
38         * savedir.c: Likewise.
39
40 2006-07-06  Paul Eggert  <eggert@cs.ucla.edu>
41
42         * .cppi-disable: Add wcwidth.
43         * fnmatch.c (ISBLANK): Remove.  All uses changed to isblank.
44         (isblank) [! (defined isblank || HAVE_DECL_ISBLANK)]: New macro.
45         (ISGRAPH): Remove.  All uses changed to isgraph.
46         (FOLD) [!defined _LIBC]: Remove special case.
47         * getdate.y (lookup_word): Remove no-longer-needed call to islower.
48         * regext_internal.h (isblank): Depend on HAVE_DECL_ISBLANK, not
49         HAVE_ISBLANK.
50         * strftime.c (TOLOWER, TOUPPER) [!defined _LIBC]: Remove special case.
51
52 2006-07-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
53
54         * strtod.c (strtod): cast the argument of tolower to unsigned char.
55
56 2006-07-05  Paul Eggert  <eggert@cs.ucla.edu>
57
58         * memcasecmp.c: Include <limits.h>.
59         (memcasecmp): Don't assume UCHAR_MAX <= INT_MAX.
60         * strtod.c (strtod): Don't assume isspace works on negative chars.
61         Don't assume isdigit succeeds only on '0' through '9'.
62
63 2006-07-05  Derek R. Price  <derek@ximbiot.com>
64
65         * exclude.c (IN_CTYPE_DOMAIN, is_space): Remove; no longer needed.
66         All uses of is_space replaced by isspace.
67         * exit.h: Don't talk about STDC_HEADERS.
68         * fnmatch.c (ISASCII): Remove; no longer needed.  All uses removed.
69         (ISPRINT, ISDIGIT, ISALNUM, ISALPHA, ISCNTRL, ISLOWER, ISPUNCT):
70         (ISSPACE, ISUPPER, ISXDIGIT): Remove; no longer needed.  All uses
71         replaced by isprint etc.
72         * getdate.y (IN_CTYPE_DOMAIN, ISSPACE, ISALPHA, ISLOWER): Likewise.
73         * getusershell.c (IN_CTYPE_DOMAIN, ISSPACE): Likewise.
74         * memcasecmp.c (IN_CTYPE_DOMAIN, ISLOWER, TOUPPER): Likewise.
75         * strtod.c (IN_CTYPE_DOMAIN, ISSPACE, ISDIGIT, TOLOWER): Likewise.
76         * strtol.c (IN_CTYPE_DOMAIN): Likewise.
77         * xstrtol.c (IN_CTYPE_DOMAIN, ISSPACE): Likewise.
78
79 2006-07-05  Eric Blake  <ebb9@byu.net>
80
81         * getaddrinfo.h (NI_NUMERICHOST, NI_NUMERICSERV): Define if
82         missing from netdb.h.
83         * getaddrinfo.c (includes): Include inet_ntop and snprintf.
84
85 2006-06-27  Bruno Haible  <bruno@clisp.org>
86
87         Assume ANSI C header files and <ctype.h> functions.
88         * mbswidth.c (IN_CTYPE_DOMAIN, ISPRINT, ISCNTRL): Remove macros.
89         (mbsnwidth): Use isprint, iscntrl instead.
90
91 2006-07-03  Jim Meyering  <jim@meyering.net>
92
93         * cycle-check.h (CYCLE_CHECK_REFLECT_CHDIR_UP): Abort if this
94         macro is used before the first cycle_check call.
95
96 2006-07-03  Paul Eggert  <eggert@cs.ucla.edu>
97
98         * stdint_.h: Include <sys/types.h> after @FULL_PATH_STDINT_H@, for
99         MacOS X 10.4.6.  Don't mention <sys/int_types.h>.  Problems
100         reported by Mark D. Baushke, one in
101         <http://lists.gnu.org/archive/html/bug-gnulib/2006-07/msg00015.html>.
102
103         Merge from coreutils.
104
105         * .cppi-disable: Add stdint_.h.
106         * .cvsignore: Add stdint.h.
107
108         2006-06-30  Paul Eggert  <eggert@cs.ucla.edu>
109
110         * xstrtod.c (XSTRTOD, DOUBLE): New macros, so that we can support
111         both double and long double versions.
112         (XSTRTOD): Renamed from xstrtod.  Use DOUBLE internally.
113         * xstrtold.c: New file.
114         * xstrtod.h (xstrtold): New decl.
115
116         2006-05-22  Paul Eggert  <eggert@cs.ucla.edu>
117
118         * filemode.c (setst): Remove.
119         (strmode): Rewrite to avoid setst.  This makes the code shorter,
120         (arguably) clearer, and the generated code is a bit smaller on my
121         Debian GNU/Linux stable x86 host.
122
123         2006-04-17  Paul Eggert  <eggert@cs.ucla.edu>
124
125         * filemode.c: Include "filemode.h" first, to test the interface.
126         Assume that filemode.h includes sys/types.h and sys/stat.h.
127         (HAVE_ST_DM_MODE): New macro, moved here from ls.c.
128         (ftypelet): Reorder to put common cases first, for efficiency.
129         Add 'P', 'w'.  Remove 'M', since it's now the caller's responsibility
130         to do 'M'.
131         (strmode): Renamed from mode_string, and now stores 12 bytes instead
132         of 10, for compatibility with FreeBSD.  All callers changed.
133         (filemodestring): Now stores 12 bytes instead of 10, and sets file types
134         that can't be deduced solely from st_mode.  First arg is now a const
135         pointer.
136         * filemode.h (HAVE_DECL_STRMODE): Include <string.h> for strmode.
137         (strmode): Renamed from mode_string.
138         (filemodestring): New decl.
139         * stat-macros.h: Don't undef S_ISDOOR, since it's never buggy.
140         (S_ISDOOR): Don't bother with S_IFDOOR, since that code is never needed.
141         (S_ISPORT, S_ISWHT): New macros, if not already defined.
142
143         2006-04-12  Paul Eggert  <eggert@cs.ucla.edu>
144
145         * fsusage.c: Don't include <inttypes.h> or <stdint.h>, since
146         fsusage.h now does that.  Include fsusage.h first, to test interface.
147         Prefer statvfs if it works, since it's blessed by POSIX.  Attempt
148         at most one method (the old code could have generated decls that
149         didn't conform to C89, not that this was ever exercised).
150         * fsusage.h: Include <inttypes.h> and <stdint.h> if they exist.
151
152         2006-03-19  Jim Meyering  <jim@meyering.net>
153
154         Work even in a chroot where d_ino values for entries in "/"
155         don't match the stat.st_ino values for the same names.
156         * getcwd.c (__getcwd): When no d_ino value matches the target inode
157         number, iterate through all entries again, using lstat instead.
158         Reported by Kenshi Muto in http://bugs.debian.org/355810, and by
159         Zouhir Hafidi in https://bugzilla.redhat.com/bugzilla/190656.
160
161         * getcwd.c (__getcwd): Clarify a comment.
162         Use memcpy in place of a call to strcpy.
163
164         2006-03-12  Jim Meyering  <jim@meyering.net>
165
166         * fts-cycle.c (leave_dir): If cycle-check's saved dev-ino pair matches
167         that of the current directory (which we're about to chdir ".." out of),
168         then save the dev-ino of the parent, instead.
169
170         * same-inode.h (SAME_INODE): New file/macro.
171         * chdir-safer.c (SAME_INODE): Remove definition.
172         Include "same-inode.h", instead.
173         * same.c: Likewise.
174         * cycle-check.h: Include "same-inode.h".
175         (CYCLE_CHECK_REFLECT_CHDIR_UP): Define.
176         * cycle-check.c (SAME_INODE): Remove definition.
177         * root-dev-ino.h: Include "same-inode.h".
178
179         2006-03-11  Eric Blake  <ebb9@byu.net>
180
181         * same.c (same_name): s/base_name/last_component/
182         * backupfile.c (check_extension, numbered_backup): Likewise.
183         * filenamecat.c (file_name_concat): Likewise.
184
185         2006-03-11  Eric Blake  <ebb9@byu.net>,
186                     Paul Eggert  <eggert@cs.ucla.edu>
187
188         * dirname.h (FILE_SYSTEM_PREFIX_LEN): Move here from dos.m4.
189         [FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX]: Don't treat 1: as a
190         drive prefix.
191         (IS_ABSOLUTE_FILE_NAME): Treat all drive letters as absolute on
192         platforms like cygwin with FILE_SYSTEM_DRIVE_PREFIX_IS_ABSOLUTE.
193         (last_component): New method.
194         * dirname.c (dir_len): Determine when drive letters need a
195         subsequent slash.  Preserve // when it is special.
196         (dir_name): Don't append dot when drive letter is absolute.
197         [TEST_DIRNAME]: Move into a full-blown gnulib test.
198         * basename.c (base_name): New semantics - malloc the result.
199         Preserve // when it is special.  Preserve relative files that look
200         like drive letters.
201         (base_len): Preserve // when it is special.
202         (last_component): New method, similar to old base_name semantics.
203         * stripslash.c (strip_trailing_slashes): Use last_component, not
204         base_name.  Strip redundant slashes from ///.
205
206 2006-07-02  Paul Eggert  <eggert@cs.ucla.edu>
207
208         * stdint_.h (intmax_t, uintmax_t): Prefer long to long long if
209         both are 64 bits, since this seems to be the tradition, and this
210         prevents gcc -Wformat from warning about usages with PRIuMAX.  If
211         we ever run into a host that prefers long long to long in this
212         case, we'll need another configure-time test.  Problem reported by
213         Jim Meyering.
214
215 2006-07-01  Paul Eggert  <eggert@cs.ucla.edu>
216
217         * stdint_.h (_GL_STDINT_H): Renamed from _STDINT_H, to avoid
218         possible collision with system files.
219         (<stdio.h>, <time.h>, <wchar.h>) [defined __cplusplus && ! defined
220         __STDC_CONSTANT_MACROS)]: Do not include, since we don't need
221         WCHAR_MIN and WCHAR_MAX in this case.
222         (<stddef.h>): Do not include; no longer needed.
223         (<sys/types.h>): Include if @HAVE_SYS_TYPES_H@, not if
224         (defined(__OpenBSD__) || defined(__bsdi__) || defined(__sgi)).
225         (<sys/inttypes.h>): Include if @HAVE_SYS_INTTYPES_H@ &&
226         !@HAVE_INTTYPES_H@, not if (defined(__FreeBSD__)
227         && (__FreeBSD__ >= 3) && (__FreeBSD__ <= 4)).
228         (__STDINT_H__) [@HAVE_STDINT_H@ && defined __sgi && ! defined
229         __c99]: Define, to work around IRIX <stdint.h> incompatibility.
230         (@FULL_PATH_STDINT_H@) [!(defined(__sgi) && @HAVE_INTTYPES_H@ &&
231         !defined(__c99))]: Include in this case too, since it's harmless
232         now.
233         (<inttypes.h>) [@HAVE_INTTYPES_H@]: Include, since it's no longer
234         dangerous to do so.
235         (@FULL_PATH_INTTYPES_H@) [(defined(__hpux) || defined(_AIX)) &&
236         @HAVE_INTTYPES_H@]: Do not include, since we now include <inttypes.h>.
237         (_STDINT_MIN, _STDINT_MAX): New macros.
238         (int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t):
239         (uint64_t, int_least8_t, uint_least8_t, int_least16_t):
240         (uint_least16_t, int_least32_t, uint_least32_t, int_least64_t):
241         (uint_least64_t, int_fast8_t, uint_fast8_t, int_fast16_t):
242         (uint_fast16_t, int_fast32_t, uint_fast32_t, int_fast64_t):
243         (uint_fast64_t, intptr_t, uintptr_t, intmax_t, uintmax_t): Now
244         macros, not typedefs; this simplifies things quite a bit.
245         Use long int for all types narrower than int64_t.
246         (intmax_t, uintmax_t, INTMAX_C, UINTMAX_C):
247         Define in terms of long long int or int64_t or long int,
248         not int64_t or int32_t.  This saves some compile-time testing.
249         (INT8_MIN, INT8_MAX, UINT8_MAX, INT16_MIN, INT16_MAX, UINT16_MAX):
250         (INT32_MIN, INT32_MAX, UINT32_MAX, INT64_MIN, INT64_MAX):
251         (UINT64_MAX, INT_LEAST8_MIN, INT_LEAST8_MAX, UINT_LEAST8_MAX):
252         (INT_LEAST16_MIN, INT_LEAST16_MAX, UINT_LEAST16_MAX):
253         (INT_LEAST32_MIN, INT_LEAST32_MAX, UINT_LEAST32_MAX):
254         (INT_LEAST64_MIN, INT_LEAST64_MAX, UINT_LEAST64_MAX, INT_FAST8_MIN):
255         (INT_FAST8_MAX, UINT_FAST8_MAX, INT_FAST16_MIN, INT_FAST16_MAX):
256         (UINT_FAST16_MAX, INT_FAST32_MIN, INT_FAST32_MAX, UINT_FAST32_MAX):
257         (INT_FAST64_MIN, INT_FAST64_MAX, UINT_FAST64_MAX, INTPTR_MIN):
258         (INTPTR_MAX, UINTPTR_MAX, INTMAX_MIN, INTMAX_MAX, UINTMAX_MAX):
259         (PTRDIFF_MIN, PTRDIFF_MAX, SIG_ATOMIC_MIN, SIG_ATOMIC_MAX):
260         (SIZE_MAX, WCHAR_MIN, WCHAR_MAX, WINT_MIN, WINT_MAX):
261         undef any previous version and define our own version, for
262         simplicity and consistency with the new macros for types.
263         (PTRDIFF_MIN, PTRDIFF_MAX, SIG_ATOMIC_MIN, SIG_ATOMIC_MAX):
264         (SIZE_MAX, WCHAR_MIN, WCHAR_MAX, WINT_MIN, WINT_MAX):
265         Simplify definitions by using _STDINT_MIN and _STDINT_MAX
266         where appropriate.  Rely on new symbols @PTRDIFF_T_SUFFIX@,
267         @SIG_ATOMIC_T_SUFFIX@, @SIZE_T_SUFFIX@, @WCHAR_T_SUFFIX@,
268         @WINT_T_SUFFIX@ to keep things simple here.
269         (UINT8_C, UINT16_C, UINT32_C, INT64_C, UINT64_C):
270         Simplify by assuming typical 8/16/32/64 host, since we're
271         already doing that elsewhere anyway.
272         Use (LONG_MAX >> 31 >> 31 == 1) rather than @HAVE_LONG_64BIT@,
273         and assume long long int is 64 bits if available.  This
274         speeds up 'configure'.
275
276 2006-06-30  Jim Hyslop <jhyslop@dreampossible.ca>  (tiny change)
277
278         * getaddrinfo.c: fixed typo
279
280 2006-06-29  Eric Blake  <ebb9@byu.net>
281
282         * stat_.h (rpl_mkdir): Declare inline, to avoid warnings about
283         unused static function.
284
285 2006-06-29  Eric Blake  <ebb9@byu.net>
286
287         * stat_.h: New file.
288
289 2006-06-29  Derek R. Price  <derek@ximbiot.com>
290
291         * strftime.c: Assume strftime() exists.
292
293 2006-06-28  Bruno Haible  <bruno@clisp.org>
294
295         * getaddrinfo.h: Fix POSIX URL.
296         * getaddrinfo.c (WIN32_NATIVE): New macro. Use it instead of _WIN32.
297         (use_win32_p): Make static.
298         (getaddrinfo): Reject service name if it is empty or does not consist
299         solely of decimal digits, or if its value is > 65535.
300         (getnameinfo): Remove useless casts.
301
302 2006-06-28  Derek R. Price  <derek@ximbiot.com>
303
304         * savedir.c (CLOSEDIR): Remove.  All uses changed to closedir.
305         Autoconf 2.60 says this stuff was obsolete.
306
307 2006-05-12  Bruno Haible  <bruno@clisp.org>
308
309         * mkdtemp.c [MINGW]: Include <io.h>.
310         (mkdir): Define using _mkdir.
311
312 2006-06-28  Bruno Haible  <bruno@clisp.org>
313
314         * wcwidth.h: Declare nothing if !HAVE_WCHAR_T. Provide a fallback
315         declaration for wcwidth.
316         * mbswidth.c: Restore the includes of <wchar.h> and <wctypes.h>.
317
318 2006-06-28  Eric Blake  <ebb9@byu.net>
319
320         * xvasprintf.h: Fix comments.
321
322 2006-06-28  Eric Blake  <ebb9@byu.net>
323
324         * mbchar.h (wcwidth): Include wcwidth.h.
325         * mbswidth.c (wcwidth): Move from here...
326         * wcwidth.h: ...to this new file.
327
328 2006-06-28  Simon Josefsson  <jas@extundo.com>
329
330         * getaddrinfo.c: Try to load ws2_32.dll on Windows, to find the
331         functions there.  It will succeed on Windows XP, but on Windows
332         2000 and (presumably) earlier, it will fail, and use the internal
333         re-implementation.
334         (use_win32_p): New function.
335         (getaddrinfo): Use strtoul on servname, to support numeric ports.
336         Support AI_NUMERICSERV to disable getservbyname.
337         (getnameinfo): New function, only supports
338         NI_NUMERICHOST|NI_NUMERICSERV for now.
339
340         * getaddrinfo.h: Test and check for AI_* flags separately, MinGW
341         only have some of them.  Add AI_NUMERICSERV.  Add prototype for
342         getnameinfo.
343
344 2006-06-27  Bruno Haible  <bruno@clisp.org>
345
346         * stdint_.h (intmax_t, uintmax_t): Undefine before typedef.
347
348 2006-06-26  Paul Eggert  <eggert@cs.ucla.edu>
349
350         * base64.c (B64): Use _ as the formal parameter, not x, to avoid
351         bug in IBM C V6 for AIX.  Problem reported by Larry Jones in
352         <http://lists.gnu.org/archive/html/bug-gnulib/2006-06/msg00181.html>.
353
354 2006-06-26  Bruno Haible  <bruno@clisp.org>
355
356         * stdint_.h: Include <wchar.h> if necessary for WCHAR_MIN or
357         WCHAR_MAX.
358         Reported by Mark D. Baushke and Larry Jones.
359
360 2006-06-26  Bruno Haible  <bruno@clisp.org>
361
362         * stdint_.h: Don't include <stdint.h> when using the SGI C compiler
363         in pre-C99 mode.
364         Suggested by Mark D. Baushke and Larry Jones.
365
366 2006-06-23  Mark D. Baushke  <mdb@gnu.org>
367
368         * stdint_.h: Treat BSD/OS like OpenBSD.
369
370 2006-06-23  Bruno Haible  <bruno@clisp.org>
371
372         * stdint_.h: Treat IRIX like OpenBSD.
373
374 2006-06-23  Bruno Haible  <bruno@clisp.org>
375
376         * stdint_.h (UINT8_C, UINT16_C, UINT32_C): Define according to
377         ISO C 99 Technical Corrigendum 1.
378
379 2006-06-22  Paul Eggert  <eggert@cs.ucla.edu>
380
381         * glob.c (collated_compare): Remove 'const' uses that weren't needed.
382         Some compiler complained about some of them.  Problem reported by
383         Larry Jones in
384         <http://lists.gnu.org/archive/html/bug-gnulib/2006-06/msg00172.html>.
385
386 2006-06-21  Simon Josefsson  <jas@extundo.com>
387
388         * getaddrinfo.c (getaddrinfo): Set ai_family in the return
389         variable.
390
391         * socket_.h: Don't define WINVER.
392
393         * inet_pton.h, inet_pton.c: New file, taken from glibc but
394         slightly modified to work in gnulib.
395
396 2006-06-19  Paul Eggert  <eggert@cs.ucla.edu>
397
398         * read-file.c (fread_file): Start with buffer allocation of
399         0 bytes rather than 1 byte; this simplifies the code.
400         Don't invoke feof; it's not needed.  Refactor to avoid duplicate
401         code to free buffer and save/restore errno.
402         (internal_read_file): Remove unused local.
403
404 2006-06-20  Paul Eggert  <eggert@cs.ucla.edu>
405
406         * openat.c (openat): Use ?:, not if, to work around GCC bug 4210
407         <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=4210>.
408         Problem reported by Denis Excoffier in
409         <http://lists.gnu.org/archive/html/bug-tar/2006-06/msg00023.html>.
410
411 2006-06-19  Simon Josefsson  <jas@extundo.com>
412
413         * inet_ntop.c: Always build inet_ntop4, since inet_ntop6 calls it.
414
415 2006-06-19  Paul Eggert  <eggert@cs.ucla.edu>
416
417         * alloca_.h (alloca) [defined alloca]: Don't define or declare.
418
419 2006-06-17  Bruno Haible  <bruno@clisp.org>
420
421         * stdint_.h [FreeBSD >= 5]: Don't include <sys/inttypes.h>.
422
423 2006-06-17  Bruno Haible  <bruno@clisp.org>
424
425         * stdint_.h (_UINT8_T, _UINT32_T, _UINT64_T): New macros. Fixes a
426         problem on Solaris 2.5.1.
427
428 2006-06-16  Eric Blake  <ebb9@byu.net>
429
430         * unsetenv.c [!defined errno]: Assume errno.h declares errno.
431         * unicodeio.c [!defined errno]: Likewise.
432         * strtol.c [!defined errno]: Likewise.
433         * strtod.c [!defined errno]: Likewise.
434
435 2006-06-15  Bruno Haible  <bruno@clisp.org>
436
437         * stdint_.h: Rewritten to be fully auto-configured.
438         Fixes bug on HP-UX/IA64.
439
440 2006-06-11  Paul Eggert  <eggert@cs.ucla.edu>
441
442         * getdate.y (__attribute__): Don't define if already defined.
443         Problem reported by Larry Jones.
444         * utimens.c (__attribute__): Likewise.
445
446 2006-06-04  Paul Eggert  <eggert@cs.ucla.edu>
447
448         * regexec.c (group_nodes_into_DFAstates): Fix a buffer overrun
449         reported by Andreas Schwab.
450
451 2006-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
452             Bruno Haible  <bruno@clisp.org>
453
454         * strndup.c (strndup) [!_LIBC]: Don't undefine macro definition.
455
456 2006-05-26  Martin Lambers  <marlam@marlam.de>
457
458         * getpass.c: Updates the test for the native W32 API, and adds
459         missing includes, thus fixing compilation warnings.
460
461 2006-05-25  Paul Eggert  <eggert@cs.ucla.edu>
462
463         * tempname.c (small_open, large_open): New macros.
464         (__open, __open64) [!_LIBC]: Remove.
465         (__gen_tempname): Use small_open and large_open instead of __open
466         and __open64.  This fixes a portability bug on HP-UX 11.11i
467         reported by Simon Wing-Tang in
468         <http://lists.gnu.org/archive/html/bug-coreutils/2006-05/msg00114.html>.
469
470 2006-05-25  Sergey Poznyakoff  <gray@gnu.org.ua>
471
472         * exclude.c (exclude_fnmatch): New function.
473         (excluded_file_name): Call exclude_fnmatch.
474         * exclude.h (excluded_file_name): New prototype
475
476 2006-05-24  Bruno Haible  <bruno@clisp.org>
477
478         * printf-args.c (printf_fetchargs): Turn NULL pointers for
479         TYPE_STRING and TYPE_WIDE_STRING into a non-NULL replacement.
480         Reported by Thorsten Maerz <torte@netztorte.de> via
481         Aaron Stone <aaron@serendipity.cx>.
482
483 2006-05-19  Paul Eggert  <eggert@cs.ucla.edu>
484
485         * nanosleep.c [HAVE_SYS_SELECT_H]: Include <sys/select.h>.
486         Use the usual Autoconf way to include <time.h> and/or sys/time.h.
487         (my_usleep): Don't mishandle maximum value.
488
489 2006-05-19  Jim Meyering  <jim@meyering.net>
490
491         * getugroups.c: Correct an outdated comment.  From Bruno Haible.
492
493 2006-05-17  Bruno Haible  <bruno@clisp.org>
494
495         Cygwin portability.
496         * classpath.c (PATH_SEPARATOR) [CYGWIN]: Define as ':'.
497
498 2006-05-17  Bruno Haible  <bruno@clisp.org>
499
500         * stdint_.h: Fix recognition of Cygwin.
501
502 2006-05-11  Jim Meyering  <jim@meyering.net>
503
504         * sha1.c (sha1_buffer): Correct comment: s/MD5/SHA1/.  From James Lemley.
505
506 2006-05-10  Paul Eggert  <eggert@cs.ucla.edu>
507
508         * crc.c (crc32_update): Remove unnecessary L suffix.
509         * md4.c (rol): Cast right-shift arg to uint32_t to prevent
510         unwanted sign propagation, e.g., on hosts with 64-bit int.
511         There still are some problems with reeelly weird theoretical hosts
512         (e.g., 33-bit int) but it's not worth worrying about now.
513         * sha1.c (rol): Likewise.
514         (K1, K2, K3, K4): Remove unnecessary L suffix.
515
516 2006-05-10  Bruno Haible  <bruno@clisp.org>
517
518         * des.c: Cast to avoid warnings.
519
520 2006-05-10  Simon Josefsson  <jas@extundo.com>
521
522         * md4.c: Typo fix, update copyright years.
523         (K1, K2): Don't use L because it turn computations into 64-bit on
524         64-bit platforms.
525
526 2006-05-09  Bruno Haible  <bruno@clisp.org>
527
528         * xvasprintf.c: Include limits.h, string.h, xsize.h.
529         (EOVERFLOW): Define fallback value.
530         (xstrcat): New function.
531         (xvasprintf): Recognize the special case of a string concatenation.
532
533 2006-05-01  Bruno Haible  <bruno@clisp.org>
534
535         * stdint_.h: Shorter URL.
536         * inttypes.h: Likewise.
537
538 2006-05-02  Paul Eggert  <eggert@cs.ucla.edu>
539
540         * verify.h: Document the internals better.  Most of this change
541         was written by Bruno Haible.
542
543 2006-04-29  Bruno Haible  <bruno@clisp.org>
544
545         * gcd.c: Use WORD_T and GCD instead of unsigned long and gcd.
546         Suggested by Oskar Liljeblad <oskar@osk.mine.nu>.
547
548 2006-04-25  Paul Eggert  <eggert@cs.ucla.edu>
549
550         * getdate.y (get_date): When adding relative date, start with the
551         initial time, not with the result of the first mktime call.
552
553 2006-04-23  Bruno Haible  <bruno@clisp.org>
554
555         * copy-file.c: Include <unistd.h> unconditionally.
556         * execute.c: Likewise.
557         * fatal-signal.c: Likewise.
558         * findprog.c: Likewise.
559         * mkdtemp.c: Likewise.
560         * pipe.h: Likewise.
561         * pipe.c: Likewise.
562         * wait-process.h: Likewise.
563
564 2006-04-23  Bruno Haible  <bruno@clisp.org>
565
566         * fwriteerror.c (fwriteerror): Call fclose also when an error
567         condition was already detected.
568         Reported by Ben Pfaff <blp@cs.stanford.edu>.
569
570 2006-04-19  Derek Price  <derek@ximbiot.com>
571             Eric Blake  <ebb9@byu.net>
572
573         * inttypes.h: Correct grammar in comment.
574
575 2006-04-18  Derek Price  <derek@ximbiot.com>
576             Paul Eggert  <eggert@cs.ucla.edu>
577
578         * inttypes.h: New file.
579         * strtoimax.c: Assume <inttypes.h>.
580
581 2006-04-15  Paul Eggert  <eggert@cs.ucla.edu>
582
583         * utimens.c (futimens): glibc futimesat messes up if /proc
584         isn't mounted.  Problem reported by Kir Kolyshkin.
585
586 2006-04-13  Paul Eggert  <eggert@cs.ucla.edu>
587
588         * regcomp.c (init_dfa): Don't use wchar_t or wctype_t if RE_ENABLE_I18N
589         is not defined.  Problem reported by Mark D. Baushke via Derek R. Price.
590         * regex.h (RE_DUP_MAX): Update comment to match current implementation.
591
592 2006-04-09  Paul Eggert  <eggert@cs.ucla.edu>
593
594         Merge regex changes from libc, removing some of our
595         POSIX-conformance changes that were rejected and redoing them in a
596         less-intrusive way.
597
598         * regcomp.c (re_compile_internal, init_dfa):
599         Length arg is now size_t, not Idx.  All uses changed.
600         (peek_token): Forward decl now says internal_function.
601         (__re_error_msgid, __re_error_msgid_idx):
602         Now static rather than extern with attribute_hidden.
603         (re_compile_pattern) [!defined _LIBC]: Use K&R-style defn.
604         For some reason libc prefers K&R style defns for external functions.
605         (regerror) [!defined _LIBC]: Likewise.
606         (re_set_syntax, re_compile_fastmap, regcomp, regfree, re_comp):
607         (seek_collating_symbol_entry, lookup_collation_sequence_value):
608         (build_range_exp, build_collating_symbol):
609         Use K&R-style defn.
610         (re_compile_fastmap): Use '\0' to memset, not 0.
611         (utf8_sb_map): Make the calculations more obvious.
612         (init_dfa, parse_bracket_exp, build_charclass_op):
613         Call calloc and cast result, as glibc does.
614         (init_word_char, fetch_token, peek_token, peek_token_bracket):
615         (build_range_exp, build_collating_symbol):
616         Now internal functions.
617
618         * regex.c [!defined _LIBC]: Allow compiling with C++ compilers.
619
620         * regex.h (__USE_GNU_REGEX): New macro.  Don't depend on
621         _REGEX_SOURCE any more; depend on _GNU_SOURCE instead.
622         Don't depend on VMS; depend on __VMS instead, for POSIX
623         namespace cleanness.
624         (regoff_t): Define to ssize_t, not long int.
625
626         Remove the REG_ macros named below.  Instead, make the old names
627         (e.g., RE_BACKSLASH_ESCAPE_IN_LISTS) visible only if
628         __USE_GNU_REGEX.
629         (REG_BACKSLASH_ESCAPE_IN_LISTS):
630         (REG_BK_PLUS_QM, REG_CHAR_CLASSES, REG_CONTEXT_INDEP_ANCHORS):
631         (REG_CONTEXT_INDEP_OPS, REG_CONTEXT_INVALID_OPS):
632         (REG_DOT_NEWLINE, REG_DOT_NOT_NULL, REG_HAT_LISTS_NOT_NEWLINE):
633         (REG_INTERVALS, REG_LIMITED_OPS, REG_NEWLINE_ALT):
634         (REG_NO_BK_BRACES, REG_NO_BK_PARENS, REG_NO_BK_REFS):
635         (REG_NO_BK_VBAR, REG_NO_EMPTY_RANGES):
636         (REG_UNMATCHED_RIGHT_PAREN_ORD, REG_NO_POSIX_BACKTRACKING):
637         (REG_NO_GNU_OPS, REG_DEBUG, REG_INVALID_INTERVAL_ORD):
638         (REG_IGNORE_CASE, REG_CARET_ANCHORS_HERE):
639         (REG_CONTEXT_INVALID_DUP, REG_NO_SUB, REG_SYNTAX_EMACS):
640         (REG_SYNTAX_AWK, REG_SYNTAX_GNU_AWK, REG_SYNTAX_POSIX_AWK):
641         (REG_SYNTAX_GREP, REG_SYNTAX_EGREP, REG_SYNTAX_POSIX_EGREP):
642         (REG_SYNTAX_ED, REG_SYNTAX_SED, _REG_SYNTAX_POSIX_COMMON):
643         (REG_SYNTAX_POSIX_BASIC, REG_SYNTAX_POSIX_MINIMAL_BASIC):
644         (REG_SYNTAX_POSIX_EXTENDED, REG_SYNTAX_POSIX_MINIMAL_EXTENDED):
645         (REG_DUP_MAX, REG_UNALLOCATED, REG_REALLOCATE, REG_FIXED):
646         (REG_NREGS):
647         Remove.  All uses replaced by the old RE_* names.
648         (RE_BACKSLASH_ESCAPE_IN_LISTS):
649         (RE_BK_PLUS_QM, RE_CHAR_CLASSES, RE_CONTEXT_INDEP_ANCHORS):
650         (RE_CONTEXT_INDEP_OPS, RE_CONTEXT_INVALID_OPS):
651         (RE_DOT_NEWLINE, RE_DOT_NOT_NULL, RE_HAT_LISTS_NOT_NEWLINE):
652         (RE_INTERVALS, RE_LIMITED_OPS, RE_NEWLINE_ALT):
653         (RE_NO_BK_BRACES, RE_NO_BK_PARENS, RE_NO_BK_REFS):
654         (RE_NO_BK_VBAR, RE_NO_EMPTY_RANGES):
655         (RE_UNMATCHED_RIGHT_PAREN_ORD, RE_NO_POSIX_BACKTRACKING):
656         (RE_NO_GNU_OPS, RE_DEBUG, RE_INVALID_INTERVAL_ORD):
657         (RE_IGNORE_CASE, RE_CARET_ANCHORS_HERE):
658         (RE_CONTEXT_INVALID_DUP, RE_NO_SUB):
659         Don't bother having these macros be independent of each others'
660         values, since they no longer exist in the POSIX name space.
661
662         Rename the following member names back to their old names,
663         unless !__USE_GNU_REGEX.  All uses changed back.
664         (buffer): Renamed from re_buffer.
665         (allocated): Renamed from re_allocated.
666         (used): Renamed from re_used.
667         (syntax): Renamed from re_syntax.
668         (fastmap): Renamed from re_fastmap.
669         (translate): Renamed from re_translate.
670         (can_be_null): Renamed from re_can_be_null.
671         (regs_allocated): Renamed from re_regs_allocated.
672         (fastmap_accurate): Renamed from re_fastmap_accurate.
673         (no_sub): Renamed from re_no_sub.
674         (not_bol): Renamed from re_not_bol.
675         (not_eol): Renamed from re_not_eol.
676         (newline_anchor): Renamed from re_newline_anchor.
677         (num_regs): Renamed from rm_num_regs.
678         (start): Renamed from rm_start.
679         (end): Renamed from rm_end.
680
681         (free_state): Move up a bit.
682
683         * regex_internal.h (inline) [__GNUC__ < 3 && defined _LIBC]:
684         #define to be empty.
685         (ASCII_CHARS): New macro, replacing all uses of 0x80 and/or SBC_MAX / 2
686         when that is what is intended.
687         (SBC_MAX): Define to UCHAR_MAX + 1, not 256.
688         (__re_error_msgid, __re_error_msgid_idx): Remove decls; not needed.
689         (MAX): New macro.
690         (re_xmalloc, re_calloc, re_xrealloc, re_x2realloc): Remove.
691         All uses changed back to re_malloc, etc.  It's now the caller's
692         responsibility to check for overflow; all callers changed.
693         (re_alloc_oversized, re_x2alloc_oversized, re_xnmalloc, re_xnrealloc):
694         (re_x2nrealloc): Remove.
695         (free_state): Remove decl.
696
697         * regexc.c (regexec, re_match, re_search, re_match_2, re_search_2):
698         (re_set_registers, re_exec):
699         Use K&R-style defn.
700
701         2006-01-31  Roland McGrath  <roland@redhat.com>
702
703         * regcomp.c (calc_eclosure_iter): Remove dead variables.
704         Reported by Mike Frysinger <vapier@gentoo.org>.
705
706         2006-01-15  Andreas Jaeger  <aj@suse.de>
707
708         [BZ #1950]
709         * regex_internal.c (re_string_reconstruct): Adjust for
710         build_wcs_upper_buffer change.
711         (build_wcs_upper_buffer): Change return type.
712
713         2005-12-10  Ulrich Drepper  <drepper@redhat.com>
714
715         * regex_internal.h: Include <stdint.h> if available.
716
717         2005-12-06  Paolo Bonzini  <bonzini@gnu.org>
718
719         * regex_internal.h (SIZE_MAX): Provide a default definition.
720
721         2005-10-14  Ulrich Drepper  <drepper@redhat.com>
722
723         * regcomp.c: Adjust for changed secondary hash function.
724
725         2005-09-30  Ulrich Drepper  <drepper@redhat.com>
726
727         * regex.h: Pretty printing.
728         Clean up namespace a bit.
729
730         2005-09-30  Jakub Jelinek  <jakub@redhat.com>
731
732         * regexec.c (update_cur_sifted_state, check_arrival,
733         check_arrival_add_next_nodes): Avoid using uninitialized variable.
734
735         2005-09-06  Paul Eggert  <eggert@cs.ucla.edu>
736                     Ulrich Drepper  <drepper@redhat.com>
737
738         [BZ #1302]
739         * regex_internal.h (bitset_t): Renamed from bitset.  All uses changed.
740         (bitset_word_t): Renamed from bitset_word.  All uses changed.
741
742         2005-09-22  Ulrich Drepper  <drepper@redhat.com>
743
744         [BZ #281]
745         * regex.h: Define RE_TRANSLATE_TYPE as unsigned char *.
746         * regcomp.c: Remove unnecessary uses of
747         unsigned RE_TRANSLATE_TYPE.
748         * regex_internal.h: Likewise.
749         * regex_internal.c: Likewise.
750         * regexec.c: Likewise.
751         Based on a patch by Stepan Kasal <kasal@ucw.cz>.
752
753         2005-09-07  Ulrich Drepper  <drepper@redhat.com>
754
755         * regexec.c (find_recover_state): Remove unnecessary
756         initialization.
757         (transit_state_bkref): Make DFA a const pointer.
758         (get_subexp): Likewise.
759         (check_arrival): Likewise.
760         (update_cur_sifted_state): Likewise.
761         (re_search_internal): Likewise.
762         (prune_impossible_nodes): Likewise.
763         (acquire_init_state_context): Likewise.
764         (proceed_next_node): Likewise.
765         (set_regs): Likewise.
766         (free_fail_stack_return): Likewise.
767         (check_arrival_expand_ecl): Mark DFA parameter as const.
768         (check_arrival_expand_ecl_sub): Likewise.
769         (check_subexp_limits): Likewise.
770         (sub_epsilon_src_nodes):  Likewise.
771         (add_epsilon_src_nodes):  Likewise.
772         (merge_state_array): Likewise.
773         (update_regs): Likewise.
774         (build_trtable): Likewise.
775         (sift_states_backward): Mark MCTX parameter as const.
776         (build_sifted_states): Likewise.
777         (update_cur_sifted_state): Likewise.
778         (sift_states_mkref): Likewise.
779         (check_arrival_expand_ecl): Mark eclosure as const.
780         (check_dst_limits_calc_pos_1): Likewise.
781         * regex_internal.h (re_match_context_t): Make dfa a const
782         pointer.
783
784         2005-09-06  Ulrich Drepper  <drepper@redhat.com>
785
786         * regexec.c (merge_state_with_log): Define dfa as const pointer.
787         (transit_state_sb): Likewise.
788         (transit_state_mb): Likewise.
789         (sift_states_iter_mb): Likewise.
790         (check_arrival_add_next_nodes): Likewise.
791         (check_node_accept_bytes): Change first parameter to pointer-to-const.
792         [_LIBC] (re_search_2_stub): Use mempcpy.
793
794         * regex_internal.c (re_string_reconstruct): Avoid calling
795         mbrtowc for very simple UTF-8 case.
796
797         * regex_internal.c (re_acquire_state): Make DFA pointer arg
798         a pointer-to-const.
799         (re_acquire_state_context): Likewise.
800         * regex_internal.h: Adjust prototypes.
801
802         * regex.c: Prevent using C++ compilers.
803
804         * regex_internal.c (re_acquire_state): Minor code rearrangement.
805         (re_acquire_state_context): Likewise.
806
807 2006-03-29  Mark D. Baushke  <mdb@gnu.org>
808             Bruno Haible  <bruno@clisp.org>
809
810         * stdint_.h: On OpenBSD, don't redefine types already included in
811         <sys/types.h> and <inttypes.h>.
812
813 2006-03-24  Eric Blake  <ebb9@byu.net>
814
815         * time_r.c (copy_string_result): Remove, as it is no longer used.
816
817 2006-03-24  Simon Josefsson  <jas@extundo.com>
818
819         * base64.c: Fix problems reported by Eric Blake <ebb9@byu.net>,
820         including some doc fixes.
821         (base64_encode_alloc): Fix +1 bug on allocation failures.
822
823 2006-03-24  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
824
825         * base64.c (base64_encode): Do not read past end of array with
826         unsanitized input on systems with CHAR_BIT > 8.
827
828 2006-03-16  Paul Eggert  <eggert@cs.ucla.edu>
829
830         * regex.h (regoff_t) [defined _REGEX_LARGE_OFFSETS]:
831         Typedef to long int, not to off_, as POSIX will likely change
832         in that direction.
833
834 2006-03-13  Sergey Poznyakoff  <gray@gnu.org.ua>
835
836         * argp-help.c (validate_uparams): Fix typo
837         * argp-parse.c (argp_default_options): Consistently begin help
838         messages with a lowercase letter.
839
840 2006-03-11  Paul Eggert  <eggert@cs.ucla.edu>
841
842         * time_r.h (asctime_r, ctime_r): Remove.  These functions can
843         overrun buffers and shouldn't be used (much as gets shouldn't be
844         used).
845         * time_r.c (asctime_r, ctime_r): Likewise.
846
847 2006-03-08  Simon Josefsson  <jas@extundo.com>
848
849         * gc-gnulib.c (randomize): Don't open files called 'no', they
850         signal that configure disabled the device.
851
852 2006-03-07  Paul Eggert  <eggert@cs.ucla.edu>
853
854         * c-stack.c: Include unistd.h unconditionally, since we now assume
855         the unistd module.
856         * getlogin_r.c: Likewise.
857         * getlogin_r.h: Likewise.
858         * glob.c: Likewise.
859         * pagealign_alloc.c: Likewise.
860         * unistd_.h: Remove; no longer needed.
861
862 2006-03-07  Simon Josefsson  <jas@extundo.com>
863
864         * unistd_.h: New file.
865
866 2006-03-07  Simon Josefsson  <jas@extundo.com>
867
868         * gc-libgcrypt.c, gc-gnulib.c: Use GC_USE_RANDOM.
869
870 2006-03-01  Simon Josefsson  <jas@extundo.com>
871
872         * readline.c: Fix typo, tiny patch from Stepan Kasal
873         <kasal@ucw.cz>.
874
875 2006-02-28  Simon Josefsson  <jas@extundo.com>
876
877         * getopt.c: Protect #include of unistd.h, for MSVS.
878
879 2006-02-27  Simon Josefsson  <jas@extundo.com>
880
881         * base64.h: Indent #define's.  From Jim Meyering
882         <jim@meyering.net>.
883
884 2006-02-27  Jim Meyering  <jim@meyering.net>
885
886         Revert the change of 2006-02-24, so these files can continue
887         to be sync'd from gettext.
888         * mkdtemp.c, setenv.c, unsetenv.c: *Un*-normalize inclusion
889         of `config.h'.
890
891 2006-02-24  Paul Eggert  <eggert@cs.ucla.edu>
892
893         * glob.c: Say "invalid" rather than "illegal" in comments.
894
895 2006-02-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
896
897         * mkdtemp.c, setenv.c, unsetenv.c: Normalize inclusion of `config.h'.
898
899 2006-02-20  Paul Eggert  <eggert@cs.ucla.edu>
900
901         * getcwd.c (AT_FDCWD): Work around a bug in Solaris 9 and 10, where
902         AT_FDCWD exceeds INT_MAX.
903         * openat.h (AT_FDCWD): Likewise.
904
905 2006-02-14  Jim Meyering  <jim@meyering.net>
906
907         Sync from coreutils.
908
909         Eliminate the unwelcome (albeit unlikely) possibility of xmalloc
910         failure on deficient systems, and simplify gnulib lgpl dependencies.
911         * lstat.c (rpl_lstat): Rewrite to use stat() in place of the
912         xmalloc/lstat combination.  Based on a patch from Bruno Haible.
913
914         * xalloc-die.c: Remove unused definition of N_.
915
916 2006-02-13  Sergey Poznyakoff  <gray@gnu.org.ua>
917
918         * argp-fmtstream.c: Restore another bugfix lost on 2005-12-12
919
920 2006-02-07  Paul Eggert  <eggert@cs.ucla.edu>
921
922         * closeout.c (close_stdout): Don't assume 'bool' converts nonzero
923         ints to 0 or 1, as this isn't true for the stdbool.h substitute.
924
925 2006-02-07  Sergey Poznyakoff  <gray@gnu.org.ua>
926
927         * argp-namefrob.h: Restore changes accidentally lost during the
928         "autoupdate" on 2005-12-12.
929
930 2006-01-27  Paul Eggert  <eggert@cs.ucla.edu>
931
932         * fnmatch.c (L_): Renamed from L, to work around a bug in
933         Mac OS X 10.3.9 with GCC 3 reported by Claudio Fontana in
934         <http://lists.gnu.org/archive/html/bug-gnulib/2006-01/msg00074.html>.
935         All uses changed.
936
937 2006-01-26  Simon Josefsson  <jas@extundo.com>
938
939         * socket_.h: Set WINVER to 0x0501, to make sure getaddrinfo
940         prototype is visible on mingw32.
941
942         * getaddrinfo.h: Define EAI_ADDRFAMILY and EAI_SYSTEM if not set,
943         for mingw32.
944
945         * gai_strerror.c, getaddrinfo.h: Protect netdb.h #include (for
946         mingw32).
947
948 2006-01-26  Paul Eggert  <eggert@cs.ucla.edu>
949
950         * fts.c (diropen): Open with O_NOCTTY | O_NONBLOCK too.  Don't
951         attempt to open for write; this always fails, at least on POSIX
952         hosts.  This reinstates the 2006-01-09 change, which was
953         inadvertently removed.
954
955 2006-01-26  Bruno Haible  <bruno@clisp.org>
956             Paul Eggert  <eggert@cs.ucla.edu>
957
958         * stdbool_.h (_Bool)
959         [(! (defined __cplusplus || defined __BEOS__)
960           && !defined __GNUC__
961           && !(defined __HP_cc || defined __xlc__
962                || (defined __SUNPRO_C && (__SUNPRO_C < 0x550 || __STDC__ == 1))
963                || defined __sgi))]:
964         #define to signed char in these cases too; this simplifies
965         the code (so that we don't have to worry about HP-UX, AIX, SunPRO,
966         etc., separately) and makes it more conservative.
967
968 2006-01-21  Jim Meyering  <jim@meyering.net>
969
970         Sync from the stable (b5) branch of coreutils:
971
972         * fts.c (fts_children): Don't let close() clobber errno from
973         failed fchdir().
974
975         * fts.c (fts_stat): When following a symlink-to-directory,
976         don't necessarily interpret stat-fails+lstat-succeeds as indicating
977         a dangling symlink.  That can also happen at least for ELOOP.
978         The fix: return FTS_SLNONE only when the stat errno is ENOENT.
979         FYI, this bug predates the inclusion of fts.c in coreutils.
980
981         * fts.c (fts_open): Put new maxarglen declaration and uses
982         in their own block, so pre-c99 compilers don't object.
983
984         Avoid the double-free (first in fts_read, second in fts_close) that
985         would occur when an `active' directory is made inaccessible (e.g.,
986         via chmod a-x) during a traversal.
987         * fts.c (fts_read): After a failed fchdir, update sp->fts_cur
988         before returning.  Reproduce this failure by
989         mkdir -p a/b; cd a; chmod a-x . b
990         Reported by Stavros Passas.
991
992 2006-01-25  Sergey Poznyakoff  <gray@gnu.org.ua>
993
994         * argp-namefrob.h: Bugfix. Remove stray #
995
996 2006-01-25  Bruno Haible  <bruno@clisp.org>
997
998         * stdbool_.h (_Bool) [IRIX cc]: Define as 'signed char', to avoid
999         warnings.
1000         Reported by Paul Eggert.
1001
1002 2006-01-25  Jim Meyering  <jim@meyering.net>
1003
1004         * fileblocks.c: Remove more useless parentheses.
1005         * readutmp.h: Likewise.
1006
1007 2006-01-24  Bruno Haible  <bruno@clisp.org>
1008
1009         * stdbool_.h (_Bool) [__cplusplus]: Don't define if the compiler already
1010         has it.
1011         Report and patch by Albert Chin-A-Young  <china@thewrittenword.com> on
1012         2005-11-26.
1013
1014         * stdbool_.h (_Bool) [HP-UX cc, AIX cc,xlc]: Define as 'signed char'
1015         to avoid problems with the built-in _Bool type.
1016         Reported by Paul Eggert on 2005-11-26.
1017
1018 2006-01-24  Jim Meyering  <jim@meyering.net>
1019
1020         * socket_.h: Remove useless parentheses in uses of cpp `defined'.
1021
1022 2006-01-24  Simon Josefsson  <jas@extundo.com>
1023
1024         * socket_.h (SHUT_WR, SHUT_RDWR): Don't hardcode, suggested by
1025         Bruno.
1026
1027 2006-01-23  Paul Eggert  <eggert@cs.ucla.edu>
1028
1029         Work around porting bugs reported by Dieter in
1030         <http://lists.gnu.org/archive/html/bug-bison/2006-01/msg00049.html>.
1031         * getopt.c (_NOPROTO): Remove; no longer needed.
1032         Include <stdlib.h> and <unistd.h> in all environments; it's safe now.
1033         Include "getopt.h" first, to check interface.
1034         (getenv): Declare only if defined HAVE_DECL_GETENV &&
1035         !HAVE_DECL_GETENV.
1036         * strndup.c [!_LIBC]: Include "strndup.h" to get prototype.
1037         (__strndup): Revert to K&R-style function dfns, the glibc style.
1038         * strnlen.c: Don't claim it's taken from glibc; it's not.
1039         (strnlen, __strnlen): Remove #defines and #undefs; not needed.
1040         Include strnlen.h first, to get prototype properly.
1041         (strnlen): Renamed from __strnlen.
1042         Remove weak alias.
1043
1044 2006-01-23  Ulrich Drepper  <drepper@redhat.com>
1045
1046         These changes imported from libc.
1047         * getopt.c: Use __fxprintf instead of inline stream orientation
1048         test and two separate function calls.
1049         * strndup.c (__strndup): Add libc_hidden_def.
1050
1051 2006-01-22  Bruno Haible  <bruno@clisp.org>
1052
1053         * vasnprintf.c (VASNPRINTF): In the computation of the size of the
1054         temporary buffer for sprintf, take into account the precision also
1055         for 'd', 'i', 'u', 'o', 'x', 'X'.
1056
1057 2006-01-22  Paul Eggert  <eggert@cs.ucla.edu>
1058
1059         * quotearg.c (quotearg_buffer_restyled): Add "default: break;"
1060         to pacify gcc -Wswitch-default.
1061
1062 2006-01-21  Sergey Poznyakoff  <gray@gnu.org.ua>
1063
1064         * argp-help.c (usage_long_opt): Do not print DOC options.
1065         (__argp_base_name): Removed
1066         * argp-namefrob.h (__argp_basename): Removed definition. Was a
1067         typo.
1068         (__argp_base_name): Provide macro definition or extern declaration
1069         depending on the configuration
1070
1071 2006-01-20  Simon Josefsson  <jas@extundo.com>
1072
1073         * inet_ntop.h: Unconditionally include sys/socket.h.
1074
1075 2006-01-19  Simon Josefsson  <jas@extundo.com>
1076
1077         * socket_.h: Map SHUT_RD, SHUT_WR, SHUT_RDWR correctly.
1078
1079 2006-01-12  Simon Josefsson  <jas@extundo.com>
1080
1081         * base64.c: Fix warning, reported by Bruno Haible
1082         <bruno@clisp.org> and patch by Paul Eggert <eggert@CS.UCLA.EDU>.
1083
1084 2006-01-11  Paul Eggert  <eggert@cs.ucla.edu>
1085
1086         Sync from coreutils.
1087         * md5.c: Fix commentary typos.
1088         (alignof, UNALIGNED_P): No need for a GCC-specific version.
1089         * md5.h (__attribute__): Remove; unused.
1090         * sha1.c: Fix commentary to match md5 better.
1091         * sha1.h (struct sha1_ctx): Use a word buffer, not a byte buffer,
1092         so that we don't need to worry about alignment.  All uses changed.
1093         This merges the 2005-10-28 md5 change into sha1.
1094
1095 2006-01-11  Jim Meyering  <jim@meyering.net>
1096
1097         Sync from coreutils.
1098         * md5.c (OP): Fix spacing.
1099
1100 2006-01-11  Simon Josefsson  <jas@extundo.com>
1101
1102         * stdint_.h (SIZE_MAX): Add missing (.
1103
1104 2006-01-10  Bruno Haible  <bruno@clisp.org>
1105
1106         * argp.h (__const): Remove macro. Use const instead.
1107         * argp-fmtstream.h (__const): Likewise.
1108         * glob_.h (__const): Remove macro.
1109         * glob-libc.h: Use const instead of __const.
1110
1111 2006-01-10  Jim Meyering  <jim@meyering.net>
1112
1113         Avoid the double-free (first in fts_read, second in fts_close) that
1114         would occur when an `active' directory is made inaccessible (e.g.,
1115         via chmod a-x) during a traversal.
1116         * fts.c (fts_read): After a failed fchdir, update sp->fts_cur
1117         before returning.  Reproduce this failure by
1118         mkdir -p a/b; cd a; chmod a-x . b
1119         Reported by Stavros Passas.
1120
1121         Sync from coreutils.
1122         * sha1.c: Tweak grammar in a comment.
1123
1124 2006-01-10  Paul Eggert  <eggert@cs.ucla.edu>
1125
1126         * regex_internal.h (BITSET_WORD_BITS):
1127         Work around a bug in 64-bit PGC (before version 6.1-2), where the
1128         preprocessor mishandles large unsigned values as if they were signed.
1129         Problem reported by Claudio Fontana in
1130         <http://lists.gnu.org/archive/html/bug-gnulib/2005-12/msg00061.html>.
1131
1132 2006-01-10  Simon Josefsson  <jas@extundo.com>
1133
1134         * socket_.h: New file.
1135
1136 2006-01-10  Bruno Haible  <bruno@clisp.org>
1137
1138         * localcharset.c: Update from GNU gettext.
1139
1140 2006-01-09  Paul Eggert  <eggert@cs.ucla.edu>
1141
1142         Sync from coreutils.
1143         * chdir-long.c (cdb_free): Don't bother trying to open directory
1144         for write access: POSIX says that must fail.
1145         * fts.c (diropen): Likewise.
1146         * save-cwd.c (save_cwd): Likewise.
1147         * chdir-long.c (cdb_free): Open with O_NOCTTY | O_NONBLOCK as
1148         well, for minor improvements on hosts that lack O_DIRECTORY.
1149         * chown.c (rpl_chown) [CHOWN_MODIFIES_SYMLINK]:
1150         Don't try O_WRONLY unless O_RDONLY failed wth EACCES.
1151         Fall back on chown if open failed with EACCES.
1152
1153         * gettime.c (gettime) [!defined OK_TO_USE_1S_CLOCK]:
1154         Report an error at compile-time if only a 1-second nominal clock
1155         resolution is found.
1156
1157         * lchmod.h: New file.
1158         * mkdir-p.c: Include lchmod.h, lchown.h.
1159         (make_dir_parents): Use lchown rather than chown, and
1160         lchmod rather than chmod.
1161
1162         * mountlist.c (ME_DUMMY): "none" and "proc" file systems are dummies
1163         too.  Problem with "none" reported by Bob Proulx.  Problem with
1164         "proc" reported by n0dalus.
1165
1166         * mountlist.c: Include <limits.h>.
1167         (dev_from_mount_options)
1168         [defined MOUNTED_GETMNTENT1 || defined MOUNTED_GETMNTENT2]:
1169         New function.  It no longer assumes "dev=" has the System V meaning
1170         on Linux (since it doesn't).  It also parses "dev=" more carefully.
1171         (read_file_system_list)
1172         [defined MOUNTED_GETMNTENT1 || defined MOUNTED_GETMNTENT2]: Use it.
1173         MOUNTED_GETMNTENT2 is new here; the code didn't used to look for
1174         dev= in that case.
1175
1176         * posixtm.h (PDS_PRE_2000): New macro.
1177         * posixtm.c (year): Arg is now syntax_bits rather than allow_century.
1178         All usages changed.  Reject dates outside the range 1969-1999 if
1179         PDS_PRE_2000 is used.
1180
1181 2006-01-09  Jim Meyering  <jim@meyering.net>
1182
1183         Sync from coreutils.
1184
1185         * version-etc.c (COPYRIGHT_YEAR): Update to 2006.
1186
1187         * chdir-safer.h, chdir-safer.c: New files.
1188
1189         * modechange.c (mode_compile): Reject an invalid mode string
1190         that starts with an octal digit.  From Andreas Gruenbacher.
1191
1192         * openat.c: Include "fcntl--.h" and "unistd--.h", to map open
1193         and dup to open_safer and dup_safer, respectively.
1194         (openat_permissive): Fix typo in comment.
1195
1196         * openat.c: Don't include <stdlib.h>, <unistd.h>, <fcntl.h>,
1197         "gettext.h"; either no longer needed or are guaranteed by openat.h.
1198         (_): Remove; no longer needed.
1199         (openat): Renamed from rpl_openat; no need for rpl_openat
1200         since openat.h renames openat for us.
1201         Replace most of the body with a call to openat_permissive,
1202         to avoid duplicate code.
1203         Port to (probably hypothetical) environments were mode_t is
1204         wider than int.
1205         (openat_permissive): Require mode arg, so that we can check
1206         types better.  Put it just after flags.  Change cwd failure
1207         indicator from pointer-to-bool to pointer-to-errno-value.
1208         All callers changed.
1209         Invoke openat_save_fail and/or openat_restore_fail if
1210         cwd_errno is null, so that openat can call us.
1211         (openat_permissive, fdopendir, fstatat, unlinkat):
1212         Simplify errno handling to avoid some duplicate code,
1213         as it's OK to set errno on success.
1214         * openat.h: Revamp code so that function macros depend on
1215         __OPENAT_PREFIX only, not also on AT_FDCWD.
1216         (openat_ro): Remove.  Caller changed to use openat_permissive.
1217         (openat_permissive): Now a macro, if not a function.
1218         (openat_restore_fail, openat_save_fail): Now always functions,
1219         since mkdirat needs them even if __OPENAT_PREFIX is defined.
1220
1221         * openat-priv.h: New file, defining macros used by mkdirat.c
1222         and openat.c.
1223         * mkdirat.c: Include openat-priv.h.
1224         Remove definitions of macros defined therein.
1225         * openat.c: Likewise.
1226
1227         * mkdirat.c (mkdirat): New file and function.
1228         * openat.h (mkdirat): Declare.
1229
1230         * openat.c (fdopendir): Don't change errno when returning non-NULL.
1231
1232         * openat.h (openat_permissive): Declare.
1233         (openat_ro): Define.
1234
1235         * openat.c (EXPECTED_ERRNO): New macro.
1236         (openat_permissive): New function -- used in remove.c rewrite.
1237         (all functions): Set errno just before returning, only if there
1238         was an actual failure.
1239         Use EXPECTED_ERRNO rather than comparing against only ENOTDIR.
1240
1241         Emulate openat-family functions using Linux's procfs, if possible.
1242         Idea and some code based on Ulrich Drepper's glibc changes.
1243
1244         * openat.c: (BUILD_PROC_NAME): New macro.
1245         Include <stdio.h>, <string.h>, "alloca.h" and "intprops.h".
1246         (rpl_openat): Emulate by trying to open /proc/self/fd/%d/%s,
1247         before falling back on save_cwd and restore_cwd.
1248         (fdopendir, fstatat, unlinkat): Likewise.
1249
1250         * openat.c (fstatat, unlinkat): Perform the syscall directly,
1251         skipping the save_cwd...restore_cwd overhead, if FILE is absolute.
1252
1253         * openat.c (rpl_openat): Use the promoted type (int), not mode_t,
1254         as second argument to va_arg.  Otherwise, some versions of gcc
1255         warn that `if this code is reached, the program will abort'.
1256
1257 2006-01-09  Andreas Gruenbacher  <agruen@suse.de>
1258
1259         Sync from coreutils.
1260
1261         Add POSIX ACL support
1262         * acl.h (copy_acl, set_acl): Add declarations.
1263         * acl.c (acl_entries): Add fallback implementation for POSIX ACL
1264         systems other than Linux.
1265         (chmod_or_fchmod): New function: use fchmod when possible,
1266         and chmod otherwise.
1267         (file_has_acl): Add a POSIX ACL implementation, with a
1268         Linux-specific subcase.
1269         (copy_acl): Add: copy an acl and S_ISUID, S_ISGID, and
1270         S_ISVTX from one file to another.  Fall back to fchmod/chmod when
1271         acls are unsupported.
1272         (set_acl): Add: set a file's acl and S_ISUID, S_ISGID, and
1273         S_ISVTX to a defined value.  Fall back to fchmod/chmod when acls
1274         are unsupported.
1275
1276 2006-01-09  Bruno Haible  <bruno@clisp.org>
1277
1278         * sysexit_.h (EX_OK): New macro.
1279         Suggested by Martin Lambers <marlam@marlam.de>.
1280
1281 2006-01-09  Bruno Haible  <bruno@clisp.org>
1282
1283         * javacomp.sh.in: Move to ../build-aux/javacomp.sh.in.
1284         * javaexec.sh.in: Move to ../build-aux/javaexec.sh.in.
1285         * csharpcomp.sh.in: Move to ../build-aux/csharpcomp.sh.in.
1286         * csharpexec.sh.in: Move to ../build-aux/csharpexec.sh.in.
1287
1288 2006-01-09  Bruno Haible  <bruno@clisp.org>
1289
1290         * stdint_.h (SIZE_MAX): Write the value without involving negative
1291         numbers.
1292
1293 2005-10-16  Bruno Haible  <bruno@clisp.org>
1294
1295         * stdint_.h: On Linux libc4 and libc5, include <sys/bitypes.h> and
1296         don't define _STDINT_H_NEED_SIGNED_INT_TYPES.
1297
1298 2006-01-04  Paul Eggert  <eggert@cs.ucla.edu>
1299
1300         * strftime.c (tzname): Don't declare if it is already #defined.
1301         Problem reported for Mingw by Mark Junker.
1302
1303 2006-01-03  Paul Eggert  <eggert@cs.ucla.edu>
1304
1305         * xtime.h (xtime_make, xtime_nonnegative_nsec, xtime_nsec): Use
1306         long int, not int, for nanosecond counts, so that people who are
1307         used to POSIX struct timespec won't be surprised.  Reported by Jim
1308         Meyering.
1309
1310 2005-12-16  Jim Meyering  <jim@meyering.net>
1311
1312         * fprintftime.c, fprintftime.h: New files.
1313
1314 2005-12-10  Sergey Poznyakoff  <gray@gnu.org.ua>
1315
1316         * argp-fmtstream.c (__argp_fmtstream_update): Fix coredump
1317         * argp-help.c (fill_in_uparams): Check if the constructed
1318         struct uparams is valid. Fall back to the default values if it is
1319         not.
1320
1321 2005-12-09  Sergey Poznyakoff  <gray@gnu.org.ua>
1322
1323         * argp-help.c (__argp_base_name): New function
1324         (__argp_short_program_name): Rewrite using __argp_base_name
1325         * argp-namefrob.h: Define program_invocation_name and
1326         program_invocation_short_name if requested
1327         (__argp_base_name): Add prototype
1328         * argp-parse.c (argp_def): Use gettext wrappers
1329         (argp_default_parser): Use __argp_base_name
1330         * argp-pin.c: New file. Defines program_invocation_name and
1331         program_invocation_short_name on systems that lack them.
1332
1333 2005-12-07  Paul Eggert  <eggert@cs.ucla.edu>
1334
1335         * stat-time.h (STATE_TIMESPEC, STAT_TIMESPEC_NS): Add check for
1336         TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC, to fix IRIX 5.3
1337         porting problem reported by Georg Schwarz in
1338         <http://lists.gnu.org/archive/html/bug-coreutils/2005-12/msg00083.html>.
1339
1340 2005-07-09  Bruno Haible  <bruno@clisp.org>
1341
1342         * csharpcomp.sh.in (options_csc): For -l option, add a .dll suffix.
1343         * csharpcomp.c (compile_csharp_using_sscli): Likewise.
1344         Reported by Mark Junker <mjscod@gmx.de>.
1345
1346 2005-11-29  Paul Eggert  <eggert@cs.ucla.edu>
1347
1348         * stdint_.h (intmax_t) [defined intmax_t]: Do not declare.
1349         (uintmax_t) [defined uintmax_t]: Do not declare.
1350         (SIZE_MAX) [defined SIZE_MAX]: Do not define.
1351         This works around a problem if intmax_t.m4 and/or uintmax_t.m4
1352         and/or size_max.m4 are also used.  Problem reported by Mark D. Baushke.
1353         (SIZE_MAX): Define to ((size_t) -1), not (~(size_t)0), for the
1354         sake of portability to weird hosts that C allows (though we don't
1355         know of any practical examples).
1356
1357         * savedir.h (fdsavedir): New decl.
1358         * savedir.c (fdsavedir, savedirstream): New functions; the latter
1359         contains most of the former guts of savedir.
1360         (savedir): Use savedirstream.
1361         Include "openat.h".
1362
1363 2005-11-15  Paul Eggert  <eggert@cs.ucla.edu>
1364
1365         * xstrtod.c: Don't bother with #pragma STDC FENV_ACCESS ON, as
1366         coreutils no longer futzes with rounding modes.
1367
1368 2005-11-14  Jim Meyering  <jim@meyering.net>
1369
1370         * mkstemp-safer.c: Include <config.h>, required for possible
1371         replacement of mkstemp.
1372
1373 2005-11-10  Paul Eggert  <eggert@cs.ucla.edu>
1374
1375         * gethrxtime.c: Include "timespec.h" rather than the sys/time / time
1376         business.
1377         (gethrxtime) [! (HAVE_NANOUPTIME
1378         || (defined CLOCK_MONOTONIC && HAVE_CLOCK_GETTIME)
1379         || HAVE_MICROUPTIME)]: Fall back on gettime rather than rolling
1380         our own approximation.
1381
1382 2005-11-10  Simon Josefsson  <jas@extundo.com>
1383
1384         * readline.c: Remove EOL.
1385
1386 2005-11-08  Eric Blake  <ebb9@byu.net>
1387
1388         * inet_ntop.h: Use #if !, not #ifndef, for AC_CHECK_DECLS.
1389
1390 2005-11-08  Eric Blake  <ebb9@byu.net>
1391
1392         * getaddrinfo.h: Use #if !, not #ifndef, for AC_CHECK_DECLS.
1393
1394 2005-10-30  Paul Eggert  <eggert@cs.ucla.edu>
1395
1396         Fix porting problem reported by Theodoros V. Kalamatianos.
1397         * utimens.c (futimens) [HAVE_WORKING_UTIMES && HAVE_FUTIMES]:
1398         Don't assume that futimes failing means we must fail.
1399
1400 2005-10-29  Paul Eggert  <eggert@cs.ucla.edu>
1401
1402         * getcwd.c (__getcwd): Don't assume that system calls after readdir
1403         leave errno alone.  Problem reported by Dmitry V. Levin.
1404
1405 2005-10-28  Paul Eggert  <eggert@cs.ucla.edu>
1406
1407         * savedir.c (savedir): Don't assume that xrealloc etc. leave
1408         errno alone.  Problem reported by Frederic Jolliton.
1409
1410 2005-10-28  Simon Josefsson  <jas@extundo.com>
1411
1412         * inet_ntop.h, inet_ntop.c: Make it work under mingw32: Add
1413         "restrict" keywords, as per POSIX.  Protect the function
1414         declaration around HAVE_DECL_INET_NTOP rather than HAVE_INET_NTOP.
1415         Don't use K&R prototypes.  Check the sprintf return values.
1416         Re-define EAFNOSUPPORT if not present.  Indent.
1417
1418         * md5.h, md5.c: Simplify buffer handling visavi alignment,
1419         suggested by Bruno Haible <bruno@clisp.org>.
1420
1421         * gc-gnulib.c, gc-libgcrypt.c: Check calloc return value.
1422
1423         * gc.h: Add MD2 and RMD160 length defines.  Add prototypes.
1424
1425         * gc-libgcrypt.c: Add MD2 (which is not available through
1426         libgcrypt).
1427
1428         * gc-gnulib.c: Add MD2.  Implement gc_hash_* API.
1429
1430         * md2.h, md2.c: New files.
1431
1432 2005-10-24  Simon Josefsson  <jas@extundo.com>
1433
1434         * md4.h: Shrink buffer size, now that we changed the type.
1435
1436 2005-10-22  Simon Josefsson  <jas@extundo.com>
1437
1438         * arcfour.h, arcfour.c: Use fixed size indices in the
1439         arcfour_context struct (simplify test vector testing in GNU
1440         Shishi).
1441
1442 2005-10-22  Simon Josefsson  <jas@extundo.com>
1443
1444         * md4.h, md4.c: Simplify buffer handling visavi alignment,
1445         suggested by Bruno Haible <bruno@clisp.org>.
1446
1447 2005-10-22  Simon Josefsson  <jas@extundo.com>
1448
1449         * crc.h: Include stddef.h, for size_t.
1450
1451 2005-10-21  Simon Josefsson  <jas@extundo.com>
1452
1453         * arctwo.h (arctwo_setkey): Protect variable in CPP macro,
1454         suggested by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>.
1455
1456 2005-10-21  Simon Josefsson  <jas@extundo.com>
1457
1458         * rijndael-api-fst.c: Fix bugs in CBC mode for more than one
1459         block.
1460
1461 2005-10-21  Simon Josefsson  <jas@extundo.com>
1462
1463         * gc-gnulib.c: Support ARCTWO in CBC mode.
1464
1465 2005-10-21  Simon Josefsson  <jas@extundo.com>
1466
1467         * hmac-md5.c (hmac_md5): Add comments, suggested by Bruno Haible
1468         <bruno@clisp.org>.
1469
1470         * hmac-sha1.c (hmac_sha1): Likewise.
1471
1472         * crc.c (crc32_update): Actually use crc parameter, suggested by
1473         Bruno Haible <bruno@clisp.org>.
1474
1475         * crc.h: Include stdint.h directly, suggested by Bruno Haible
1476         <bruno@clisp.org>.
1477
1478 2005-10-21  Simon Josefsson  <jas@extundo.com>
1479
1480         * des.h, des.c: New files.
1481
1482         * gc-gnulib.c: Support DES.c
1483
1484 2005-10-21  Simon Josefsson  <jas@extundo.com>
1485
1486         * arctwo.h, arctwo.c: New files.
1487
1488         * gc-gnulib.c: Support ARCTWO.
1489
1490 2005-10-21  Simon Josefsson  <jas@extundo.com>
1491
1492         * gc-libgcrypt.c (gc_cipher_open): Handle ECB.
1493
1494 2005-10-19  Simon Josefsson  <jas@extundo.com>
1495
1496         * gc-gnulib.c: Support ARCFOUR.
1497
1498 2005-10-19  Simon Josefsson  <jas@extundo.com>
1499
1500         * gc-gnulib.c: Implement gc_cipher_* API, currently only with AES
1501         support.
1502
1503         * gc.h: Add ECB enum type.
1504
1505         * hmac-md5.c, hmac-sha1.c: Include memxor.h.
1506
1507 2005-10-19  Simon Josefsson  <jas@extundo.com>
1508
1509         * gc.h, gc-gnulib.c, gc-libgcrypt.c: Support MD4.
1510
1511 2005-10-18  Simon Josefsson  <jas@extundo.com>
1512
1513         * md4.h, md4.c: New files, based on md5.?.
1514
1515 2005-10-17  Simon Josefsson  <jas@extundo.com>
1516
1517         * gc-libgcrypt.c (gc_hmac_sha1): Fix assert.
1518
1519         * gc.h (gc_nonce, gc_pseudo_random, gc_random): Add prototypes.
1520
1521 2005-10-17  Simon Josefsson  <jas@extundo.com>
1522
1523         * gc.h, gc-libgcrypt.c: Add more hash types/functions.
1524
1525 2005-10-17  Simon Josefsson  <jas@extundo.com>
1526
1527         * gc.h, gc-libgcrypt.c: Add ciphers.
1528
1529 2005-10-17  Simon Josefsson  <jas@extundo.com>
1530
1531         * sha1.c: Use uint32_t instead of md5_uint32.t
1532
1533         * sha1.h: Use stdint.h and uint32_t instead of md5_uint32 from
1534         md5.h.
1535
1536         * md5.c: Use uin32_t.  Fix non-gcc UNALIGNED_P macro.
1537
1538         * md5.h: Use stdint.h and uint32_t.  Doc fix.
1539
1540 2005-10-15  Simon Josefsson  <jas@extundo.com>
1541
1542         * rijndael-api-fst.h, rijndael-api-fst.c: New files.
1543
1544         * rijndael-alg-fst.h, rijndael-alg-fst.c: New files.
1545
1546 2005-10-14  Simon Josefsson  <jas@extundo.com>
1547
1548         * arcfour.h, arcfour.c: New files.
1549
1550 2005-10-14  Paul Eggert  <eggert@cs.ucla.edu>
1551
1552         * obstack.c [defined _LIBC && defined USE_IN_LIBIO]: Don't
1553         include <wchar.h>; no longer needed.
1554
1555 2005-10-14  Jakub Jelinek  <jakub@redhat.com>
1556         and  Ulrich Drepper  <drepper@redhat.com>
1557
1558         Import from libc.
1559         * obstack.c (print_and_abort) [defined _LIBC]: Use __fxprintf
1560         instead of inline stream orientation test and two separate
1561         function calls.  Pay no attention to USE_IN_LIBIO.
1562
1563 2005-10-14  Roland McGrath  <roland@redhat.com>
1564
1565         Import from libc.  [BZ #1331]
1566         * obstack.h [!__STDC__] (obstack_int_grow_fast): Fix misnamed
1567         macro argument.
1568         Reported by Matej Vela <vela@debian.org>.
1569
1570 2005-10-13  Paul Eggert  <eggert@cs.ucla.edu>
1571
1572         * mkdir-p.c (make_dir_parents): Don't report an error if an
1573         intermediate directory is in a read-only file system.  Problem
1574         reported by Eric Blake.
1575
1576 2005-10-13  Simon Josefsson  <jas@extundo.com>
1577
1578         * gc-pbkdf2-sha1.c (gc_pbkdf2_sha1): Optimize CEIL computation.
1579         Move memory allocation outside of loop.
1580
1581 2005-10-12  Simon Josefsson  <jas@extundo.com>
1582
1583         * gc-pbkdf2-sha1.c: New file.
1584
1585         * gc.h: Add gc_pbkdf2_sha1 prototype.
1586
1587 2005-10-12  Simon Josefsson  <jas@extundo.com>
1588
1589         * gc.h, gc-gnulib.c, gc-libgcrypt.c: Use Gc_rc for return types,
1590         suggested by Bruno Haible <bruno@clisp.org>.
1591
1592 2005-10-12  Simon Josefsson  <jas@extundo.com>
1593
1594         * gc-libgcrypt.c (gc_hmac_sha1): New function.
1595
1596         * gc-gnulib.c (gc_hmac_sha1): New function.
1597
1598 2005-10-12  Simon Josefsson  <jas@extundo.com>
1599
1600         * gc.h, gc-gnulib.c, gc-libgcrypt.c: Support SHA-1.
1601
1602 2005-10-12  Simon Josefsson  <jas@extundo.com>
1603
1604         * gc-gnulib.c: Condition MD5 and HMAC-MD5 use on GC_USE_MD5 and
1605         GC_USE_HMAC_MD5, respectively.
1606
1607         * gc-libgcrypt.c (gc_md5): Fix assert call.
1608         (gc_md5): Fix typo.
1609
1610         * gc.h (gc_hash_buffer): Use gc_hash in prototype.
1611
1612         * gc-libgcrypt.c (gc_hash_buffer): Ditto.
1613
1614         * gc-gnulib.c (gc_hash_buffer): Ditto.
1615
1616 2005-10-11  Bruno Haible  <bruno@clisp.org>
1617
1618         * c-strcasestr.h: New file, from GNU gettext.
1619         * c-strcasestr.c: New file, from GNU gettext.
1620
1621 2005-10-11  Bruno Haible  <bruno@clisp.org>
1622
1623         * c-strcase.h: New file, from GNU gettext.
1624         * c-strcasecmp.c: New file, from GNU gettext.
1625         * c-strncasecmp.c: New file, from GNU gettext.
1626
1627 2005-10-11  Simon Josefsson  <jas@extundo.com>
1628
1629         * crc.h, crc.c: New files.
1630
1631         * gc.h (gc_hash_buffer): Add doc.
1632
1633 2005-10-08  Simon Josefsson  <jas@extundo.com>
1634
1635         * gc.h: Add gc_hash and gc_hash_buffer.
1636
1637         * gc-gnulib.c (gc_hash_buffer): Add.  Reorder #include's.
1638
1639         * gc-libgcrypt.c (gc_hash_buffer): Add.
1640
1641 2005-10-11  Bruno Haible  <bruno@clisp.org>
1642
1643         * strcasecmp.c: Include limits.h.
1644         (strcasecmp): Avoid integer overflow on exotic platforms.
1645         * strncasecmp.c: Include limits.h.
1646         (strncasecmp): Avoid integer overflow on exotic platforms.
1647         Reported by Paul Eggert.
1648
1649 2005-10-06  Simon Josefsson  <jas@extundo.com>
1650
1651         * hmac-md5.c: New file.
1652
1653         * hmac.h: New file.
1654
1655 2005-10-06  Simon Josefsson  <jas@extundo.com>
1656
1657         * memxor.c (memxor): Avoid casts and warnings.
1658
1659 2005-10-05  Derek Price  <derek@ximbiot.com>
1660
1661         * getdelim.c (SIZE_MAX): New macro, if not already defined.
1662
1663 2005-10-05  Simon Josefsson  <jas@extundo.com>
1664
1665         * memxor.c (memxor): Fix compiler error.
1666
1667         * md5.h (MD5_DIGEST_SIZE, MD5_BLOCK_SIZE): Add, see also
1668         <http://sourceware.org/bugzilla/show_bug.cgi?id=1423>.
1669
1670         * memxor.h, memxor.c: New files.
1671
1672         * getaddrinfo.h: Don't protect sys/types.h with HAVE_SYS_TYPES_H,
1673         we assume all systems have it, suggested by Jim Meyering
1674         <jim@meyering.net>.  Remove HAVE_SYS_SOCKET_H test too, to see if
1675         any systems lack sys/socket.h; mingw32 is known to lack it, but we
1676         don't support it yet anyway.  Also remove HAVE_NETDB_H test, for
1677         same reasons.
1678
1679 2005-10-04  Bruno Haible  <bruno@clisp.org>
1680
1681         * verify.h (verify_true): Provide alternative definition for C++.
1682
1683 2005-10-04  Simon Josefsson  <jas@extundo.com>
1684
1685         * getaddrinfo.h: Move sys/types.h include first, reported by "Mark
1686         D. Baushke" <mdb@gnu.org>.
1687
1688 2005-10-03  Paul Eggert  <eggert@cs.ucla.edu>
1689
1690         * getdelim.c: Include getdelim.h first.  Include <limits.h>.
1691         (SSIZE_MAX): New macro, if not already defined.
1692         (getdelim): Fix buffer overrun on 64-bit hosts with lines longer
1693         than 2 GiB.
1694
1695 2005-10-02  Paul Eggert  <eggert@cs.ucla.edu>
1696
1697         * exclude.c: Include verify.h.
1698         (verify): Remove.  All callers changed to use verify.h's version.
1699         * strtoimax.c: Likewise.
1700         * utimecmp.c: Likewis.e
1701
1702         Sync from coreutils.
1703         * .cppi-disable: Add getaddrinfo.h, getdelim.h, getline.h, getpass.c
1704         mbchar.h, mbuiter.h, strcase.h, strnlen.h, strnlen1.h.
1705         * .cvsignore: Add fts.h, search.h, t-fpending.
1706         * settime.c (settime): Fix { typo in previous patch.  Also, don't
1707         bother returning ENOSYS if settimeofday or stime fails; just let
1708         them return whatever errno they want to return.
1709         * utimens.c: Include unistd.h, for dup2.
1710         (futimens): Fix typo: HAVE_FUTIMESAT was misspelled in an #if.
1711         (futimens) [! HAVE_FUTIMESAT]: If !file, set errno before returning -1.
1712
1713 2005-10-02  Jim Meyering  <jim@meyering.net>
1714
1715         Sync from coreutils.
1716         * fts-cycle.c [HAVE_CONFIG_H]: Include <config.h>.
1717         * openat-die.c: Use `#ifdef HAVE_CONFIG_H', not `#if HAVE_CONFIG_H'.
1718         * openat.c (fdopendir): Do not define if HAVE_FDOPENDIR.
1719         Remove AT_FDCWD test.
1720         Do not consume the fd unless successful.
1721         * openat.h (fdopendir): Do not define if HAVE_FDOPENDIR.
1722         * settime.c (settime): Move the HAVE_STIME block `up' into an #elif
1723         block, so that we don't even try to compile it if settimeofday is
1724         available.  This works around a compilation failure on OSF1 V5.1,
1725         due to stime requiring a `long int*' while tv_sec is `int'.
1726
1727 2005-09-30  Eric Blake  <ebb9@byu.net>  (tiny change)
1728
1729         * getdelim.c (getdelim): Remove unused variables.
1730
1731 2005-10-01  Simon Josefsson  <jas@extundo.com>
1732
1733         * getaddrinfo.h: Protect #include's of sys/socket.h and netdb.h.
1734         Only define struct addrinfo if !HAVE_STRUCT_ADDRINFO.  Protect
1735         AI_* and EAI_* definitions.  Protect function declarations.
1736
1737 2005-09-29  Paul Eggert  <eggert@cs.ucla.edu>
1738
1739         * xtime.h (XTIME_PRECISION): Now of type int, not long long int,
1740         so that the code works even with ancient cpp.  Portability problem
1741         with GCC 2.7.2.1 reported by Thomas M.Ott.
1742
1743 2005-09-27  Jim Meyering  <jim@meyering.net>
1744
1745         * getcwd.c: Change #ifdef<TAB>HAVE_CONFIG_H to #ifdef HAVE_CONFIG_H.
1746
1747         * intprops.h (signed_type_or_expr__): Define.
1748         (INT_STRLEN_BOUND) [__GNUC__]: Use a slightly tighter bound
1749         for unsigned types.
1750
1751 2005-09-26  Paul Eggert  <eggert@cs.ucla.edu>
1752
1753         * verify.h (verify_expr): Remove, replacing with:
1754         (verify_true): New macro that returns true instead of void.
1755         (verify_type__): Remove.
1756         (verify): Use verify_true rather than verify_type__.
1757
1758 2005-09-24  Paul Eggert  <eggert@cs.ucla.edu>
1759
1760         * utimens.c (ENOSYS): Define if not already defined.
1761         (futimens): Support having a null PATH if the file descriptor
1762         is nonnegative.
1763
1764         * regex_internal.h (__GNUC_PREREQ, always_inline, inline, pure):
1765         Remove.
1766         (__attribute): Define to empty unless GCC 3.1 or later.
1767         This works around a core dump on OpenBSD 3.4, which has GCC
1768         2.95.3, which dumps core when given __attribute__(()).  It also
1769         simplifies other tests, since we really don't want to bother with
1770         worrying about which ancient version of GCC supported what.
1771         Original problem reported by Yoann Vandoorselaere, with part of
1772         the fix suggested by Derek Price.
1773
1774 2005-09-24  Jim Meyering  <jim@meyering.net>
1775
1776         * verify.h (verify_type__): Use `unsigned int' as the bitfield type
1777         so we can once again use a positive bitfield width of 1 -- now we
1778         don't have to explain why we were using a bitfield width of 2.
1779
1780 2005-09-23  Paul Eggert  <eggert@cs.ucla.edu>
1781
1782         * getaddrinfo.c [HAVE_NETINET_IN_H]: Include <netinet/in.h>.
1783         Problem reported by Eric Blake.
1784         (getaddrinfo): Initialize se so that it's not garbage.
1785         Redo internal storage allocation so that it doesn't make unportable
1786         assumptions about alignment.
1787         Fix a memory leak.
1788
1789         * utimens.c (futimens): Use futimesat if available.
1790         Prefer it to futimes since it doesn't have the futimes bug.
1791
1792         * verify.h (GL_CONCAT0, GL_CONCAT): Remove.
1793         (verify): Don't use the __LINE__ trick, as it doesn't work in general.
1794         Instead, declare a function that returns a pointer to an array,
1795         and use verify_type__ to declare the size of the array.
1796         Problem and germ of a solution reported by Bruno Haible.
1797         (verify_type__): Use 2, not 1, for bitfield size, to avoid
1798         a warning with Irix 6.5 cc.  Problem reported by Bruno Haible.
1799
1800 2005-09-22  Paul Eggert  <eggert@cs.ucla.edu>
1801
1802         Sync from coreutils.
1803
1804         * .cppi-disable: Add regcomp.c, regex_internal.c, regex_internal.h,
1805         stat-time.h.
1806         * argmatch.h: Include verify.h
1807         (ARGMATCH_VERIFY): Use verify rather than rolling our own.
1808         (ARGMATCH_ASSERT): Remove; unused.
1809         * canonicalize.c: Assume STDC_HEADERS.
1810         * exclude.c: Include "strcase.h".
1811         * regex_internal.h [!defined _LIBC]: Likewise.
1812         * getusershell.c: Include stdio--.h rather than stdio.h
1813         and stdio-safer.h.
1814         (getusershell): Call fopen, not fopen_safer.
1815         * save-cwd.c: Include fcntl--.h rather than fcntl.h.
1816         Do not include unistd-safer.h.
1817         (save_cwd): Don't call fd_safer; no longer needed
1818         now that we include fcntl--.h.
1819
1820         * getdate.y (relative_time): New type.
1821         (RELATIVE_TIME_0): New constant.
1822         (parser_control): Use relative_time instead of doing it ourselves.
1823         (%union): Add new relative_time rel member.
1824         (tYEAR_UNIT, tMONTH_UNIT, tHOUR_UNIT, tMINUTE_UNIT, tSEC_UNIT):
1825         Now typeless.
1826         (relunit, relunit_snumber): Now of type rel.
1827         (zone, rel, relunit, get_date): Adjust to above changes.
1828
1829         * getloadavg.c: Include fcntl--.h rather than fcntl.h.
1830         Do not include unistd-safer.h.
1831         (getloadavg): Don't call fd_safer; no longer needed
1832         now that we include fcntl--.h.
1833
1834         * mkdir-p.c (ENOSYS): Define to EEXIST if not defined.
1835         (make_dir_parents): Treat ENOSYS like EEXIST.
1836
1837         Improve quality of diagnostics on restore_cwd failure.
1838         * mkdir-p.h (make_dir): Remove.  All uses replaced by mkdir.
1839         (make_dir_parents): Last arg is now int * (for errno), not bool *.
1840         * mkdir-p.c (make_dir, make_dir_parents): Likewise.
1841         Rewrite "mkdir -p" algorithm to avoid the need for "stat"
1842         each time through the loop.  Do not diagnose restore_cwd failure;
1843         that is the caller's job (and perhaps the caller does not care).
1844
1845         * mkdir-p.c (CLEANUP_CWD, CLEANUP): Remove.
1846         (make_dir_parents): Revamp to avoid need for CLEANUP_CWD, CLEANUP.
1847         If the file already exists but is not a directory, don't bother
1848         to try to make its parents.
1849         Close potential file descriptor leak if we can't chdir("/") (!).
1850         Don't always return true if chdir($PWD) fails; return true only
1851         if the requested action was done successfully (except for the
1852         chdir($PWD)).
1853         Don't log final directory unless we actually made it.
1854         Refactor to avoid duplicate code to fix up permissions.
1855         Don't attempt to fix up parent permissions if chdir($PWD) fails.
1856
1857         * strftime.c (my_strftime): Rewrite the previous change slightly,
1858         to make it a bit faster and (I hope) clearer.
1859         * strftime.c (my_strftime): Add support for %:z, %::z, %:::z.
1860         Fix bug in formats like %2N.
1861
1862         * verify.h: New file.
1863
1864 2005-09-22  Jim Meyering  <jim@meyering.net>
1865
1866         Sync from coreutils.
1867
1868         * backupfile.c: Use ARGMATCH_VERIFY, just in case.
1869
1870         * posixtm.c (posixtime) [lint]: Initialize *all* of tm0, not just
1871         the .tm_year member, since otherwise gcc-4.0 would now warn about
1872         tm_zone, tm_gmtoff, tm_isdst, tm_yday, tm_wday.
1873
1874         * quotearg.c (quotearg_n_options): Change code to be suboptimal, in
1875         order to avoid an unsuppressible warning from gcc on 64-bit systems.
1876
1877         * getdate.y (get_date): Undo part of the 2005-04-04 change, so that
1878         the command "date -d'2005-03-27 +1 day'" succeeds once again, even
1879         when run in a time zone for which daylight savings time is in effect
1880         for the starting date.
1881
1882         * mkdir-p.c (make_dir_parents): Don't let a failed chdir($PWD)
1883         stop us from restricting permissions of just-created absolute-named
1884         directories.
1885         * mkdir-p.c (CLEANUP_CWD): Return *true*, not false when failing
1886         to restore initial working directory.
1887         * mkdir-p.c (make_dir_parents): New parameter: different_working_dir,
1888         to tell caller if/when we change the working directory and are
1889         unable to return to the initial one.
1890         * mkdir-p.h (make_dir_parents): Update prototype.
1891         * mkdir-p.c (CLEANUP_CWD): Change one more `return 1' to
1892         `return false'.  This fixes a bug introduced on 2004-07-30.
1893
1894         * openat.c (fdopendir): Be sure to close the supplied
1895         file descriptor before returning.  This makes our replacement
1896         implementation a little closer to Solaris's, where fdopendir
1897         ties the file descriptor to the returned DIR* pointer.
1898         * openat.c (unlinkat): New function.
1899         * openat.h (unlinkat): Add prototype.
1900         * openat-die.c (openat_save_fail): Rename from openat_save_die.
1901         (openat_restore_fail): Rename from openat_restore_die.
1902         * openat.c, openat.h: Reflect s/_die/_fail/ renaming.
1903
1904         Provide an alternative to exiting immediately upon save_cwd or
1905         restore_cwd failure.  Now, an application can arrange e.g.,
1906         to perform a longjump in that case.
1907         * openat.c: Include dirname.h.
1908         Use IS_ABSOLUTE_FILE_NAME rather than testing for leading slash.
1909         (rpl_openat, fdopendir, fstatat): Call openat_save_die
1910         and openat_restore_die rather than calling error directly.
1911         Don't include "error.h" or "exitfail.h"; they're no longer needed.
1912
1913         * openat-die.c (openat_save_die, openat_restore_die): New file.
1914         * openat.h (openat_save_die, openat_restore_die): Declare and define.
1915
1916         * strftime.c [FPRINTFTIME] (fprintftime): Provide a new interface:
1917         size_t fprintftime (FILE *fp, char const *fmt, struct tm const *tm,
1918                             int utc, int nanoseconds);
1919         Background:
1920         date should not have to allocate a megabyte of virtual memory to
1921         handle a format argument like +%1048575T.  When implemented with
1922         strftime, it must allocate such a buffer, use strftime to fill it
1923         in, print it, then free it.
1924         With fprintftime, it simply prints everything and exits.
1925         With no need for memory allocation, that's one fewer way to fail.
1926         * strftime.c (my_strftime): Parse the colons of %:::z *after* the
1927         optional field width, not before, so we accept %9:z, not %:9z.
1928         (my_strftime): Be sure to use L_('x') for literals.
1929
1930         * backupfile.c, canon-host.c, canonicalize.c, chown.c, cloexec.c:
1931         * dup-safer.c, dup2.c, euidaccess.c, fd-safer.c, fileblocks.c:
1932         * fopen-safer.c, fsusage.c, ftruncate.c, getcwd.c, getcwd.h:
1933         * getloadavg.c, getopt_.h, getpagesize.h, getugroups.c, group-member.c:
1934         * human.h, idcache.c, mkdir-p.c, mountlist.c, nanosleep.c, pathmax.h:
1935         * physmem.c, posixver.c, putenv.c, raise.c, safe-read.c, same.c:
1936         * save-cwd.c, setenv.c, settime.c, tempname.c, unlinkdir.c:
1937         * unsetenv.c, userspec.c, xgethostname.c, xreadlink.c:
1938         Assume HAVE_UNISTD_H, i.e., include <unistd.h> unconditionally.
1939
1940         * chown.c, cloexec.c, dup-safer.c, dup2.c, fsusage.c, getcwd.c:
1941         * getloadavg.c, mountlist.c, openat.h, save-cwd.c, tempname.c:
1942         Assume HAVE_FCNTL_H (i.e., include <fcntl.h> unconditionally,
1943         and don't include <sys/file.h>).
1944
1945 2005-09-22  Eric Blake  <ebb9@byu.net>  (tiny change)
1946
1947         Sync from coreutils.
1948
1949         * getloadavg.c (getloadavg) [__CYGWIN__]: Port to cygwin.
1950         [__linux__]: Allocate a big enough buffer for /proc/loadavg.
1951         [!LDAV_DONE]: Avoid unused variable warning.
1952
1953 2005-09-21  Bruno Haible  <bruno@clisp.org>
1954
1955         * unicodeio.h (unicode_to_mb): New declaration.
1956
1957 2005-09-20  Derek Price  <derek@ximbiot.com>
1958
1959         * getaddrinfo.c: Don't include <netdb.h> included from getaddrinfo.h.
1960
1961 2005-09-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1962
1963         Use a consistent style for including <config.h>.
1964         * __fpending.c, acl.c, argmatch.c,
1965         argp-help.c, argp-parse.c,
1966         argp-pvh.c, backupfile.c, basename.c, c-stack.c,
1967         calloc.c, check-version.c, cloexec.c, closeout.c, copy-file.c,
1968         creat-safer.c, cycle-check.c, dirfd.c, dirname.c, dup-safer.c,
1969         dup2.c, euidaccess.c, exclude.c, exitfail.c, fatal-signal.c,
1970         fd-safer.c, file-type.c, fileblocks.c, filemode.c,
1971         filenamecat.c, findprog.c, fnmatch.c, fopen-safer.c, free.c,
1972         fsusage.c, ftruncate.c, full-write.c, fwriteerror.c,
1973         getaddrinfo.c, getcwd.c, getdelim.c, getline.c, getlogin_r.c,
1974         getndelim2.c, getnline.c, getopt1.c, getpass.c, group-member.c,
1975         hard-locale.c, hash-pjw.c, hash.c, human.c, idcache.c,
1976         inet_ntop.c, isdir.c, long-options.c, malloc.c, memcasecmp.c,
1977         memcmp.c, memcoll.c, memcpy.c, memmove.c, mkdir-p.c,
1978         modechange.c, mountlist.c, open-safer.c, physmem.c,
1979         pipe-safer.c, pipe.c, poll.c, posixver.c, progname.c,
1980         progreloc.c, putenv.c, quote.c, quotearg.c, readline.c,
1981         readlink.c, realloc.c, regex.c, rename.c, rmdir.c, rpmatch.c,
1982         safe-read.c, same.c, save-cwd.c, savedir.c, sig2str.c,
1983         strcspn.c, strerror.c, stripslash.c, strncasecmp.c, strndup.c,
1984         strnlen.c, strnlen1.c, strsep.c, strstr.c, strtod.c,
1985         strtoimax.c, strtol.c, strverscmp.c, tempname.c, time_r.c,
1986         userspec.c, utimecmp.c, version-etc-fsf.c,
1987         version-etc.c, wait-process.c, xalloc-die.c, xgetcwd.c,
1988         xmalloc.c, xmemcoll.c, xnanosleep.c, xreadlink.c, xsetenv.c,
1989         xstrndup.c, xstrtoimax.c, xstrtol.c, xstrtoumax.c, yesno.c:
1990         Standardize inclusion of config.h.
1991         * __fpending.h, dirfd.h, getdate.h, human.h,
1992         inttostr.h:  Removed inclusion of config.h from header files.
1993         * inttostr.c:  Adjusted in-tree users.
1994         * timespec.h: Remove superfluous warning to include config.h.
1995         * atexit.c, chdir-long.c chown.c, fchown-stub.c, getgroups.c,
1996         gettimeofday.c, lchown.c, lstat.c, mkdir.c, mkstemp.c,
1997         nanosleep.c, openat.c, raise.c, readtokens0.c, readutmp.c,
1998         unlinkdir.c: Guard inclusion of config.h with HAVE_CONFIG_H.
1999
2000 2005-09-16  Paul Eggert  <eggert@cs.ucla.edu>
2001
2002         * stat-time.h: New file.
2003         * timespec.h (ST_TIME_CMP_NS, ST_TIME_CMP, ATIME_CMP, CTIME_CMP):
2004         (MTIME_CMP, TIMESPEC_NS): Remove.  Now done by stat-time.h,
2005         in a different way.
2006         (timespec_cmp): New function.
2007         * utimecmp.c: Include stat-time.h.
2008         (SYSCALL_RESOLUTION): Depend on whether various struct stat
2009         members exist, not on the obsolescent ST_MTIM_NSEC.
2010         (utimecmp): Use the new stat-time functions rater than TIMESPEC_NS.
2011
2012 2005-09-15  Derek Price  <derek@ximbiot.com>
2013             Paul Eggert  <eggert@cs.ucla.edu>
2014
2015         * regcomp.c, regexec.c, regex_internal.c: Back out previous
2016         changes, consolidating in...
2017         * regex_internal.h: ...this file.
2018
2019 2005-09-15  Derek Price  <derek@ximbiot.com>
2020
2021         * regex_internal.h: Blank `pure' for GNUC < 3.
2022         * regex_internal.c: Ditto, using this...
2023         (__GNUC_PREREQ): ...new macro.
2024         * regcomp.c, regexec.c: Blank `always_inline' for GNUC < 3.1 using...
2025         (__GNUC_PREREQ): ...this new macro.
2026
2027         * strstr.h: Include string.h. Define strstr as a macro here.
2028
2029 2005-09-13  Derek Price  <derek@ximbiot.com>
2030
2031         * canon-host.c (canon_host_r): Set *cherror on memory allocation
2032         failure.
2033         Reported by Jim Meyering  <jim@meyering.net>.
2034
2035 2005-09-13  Jim Meyering  <jim@meyering.net>
2036
2037         * canon-host.c: Filter through gnu indent and reword comments slightly.
2038         * canon-host.h (ch_strerror_r): Tweak cpp indentation and spacing.
2039
2040 2005-09-12  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>  (tiny change)
2041
2042         * lib/base64.c: Typo.
2043         (base64_encode): Put b64str in initialized data section.
2044
2045 2005-09-12  Derek Price  <derek@ximbiot.com>
2046
2047         Return usable errors from canon-host.
2048         * canon-host.h: New file.
2049         * canon-host.c (canon_host): Wrap...
2050         (canon_host_r): ...this new function, which now relies exclusively on
2051         getaddrinfo.
2052         (ch_strerror): New function.
2053         (last_cherror): New global.
2054         * getaddrinfo.c: Move include of getaddrinfo.h first to test interface.
2055         (getaddrinfo): Add AI_CANONNAME functionality.  Don't do arithmetic on
2056         void *.
2057         (freeaddrinfo): Free ai->ai_canonname when set.
2058
2059 2005-09-12  Derek Price  <derek@ximbiot.com>
2060             Paul Eggert  <eggert@cs.ucla.edu>
2061
2062         * glob-libc.h: Renamed from glob_.h.  The new version is
2063         taken from libc's glob.h, except with '#ifdef __GLOB_GNULIB'
2064         protecting things that should be done only in gnulib contexts.
2065         * glob_.h: New file, containing only the glob things needed for
2066         gnulib.
2067         (GLOB_PREFIX): Remove.  All uses changed to look for __GLOB_GNULIB.
2068         (__GLOB_CONCAT, __GLOB_XCONCAT, __GLOB_ID): Remove; no longer needed.
2069         (glob, globfree, glob_pattern_p): Now defined simply in terms of
2070         rpl_glob, rpl_globfree, rpl_glob_pattern_p.
2071         (__GLOB_GNULIB): New macro, to keep the glob.h changes clearer
2072         and to respect the namespace rules better.
2073
2074 2005-09-12  Paul Eggert  <eggert@cs.ucla.edu>
2075
2076         Merge glibc and coreutils changes into gnulib, plus a few
2077         extra fixes.
2078         * md5.c: Use #error rather than a string.
2079         (CYCLIC): New macro, from glibc source.  Use it instead of rol.
2080         * md5.h (__GNUC_PREREQ, __THROW): Define if not defined already.
2081         (__attribute__): Define to empty for non recent-GCC.
2082         (__md5_buffer, __md5_finish_ctx, __md5_init_ctx, __md5_process_block):
2083         (__md5_process_bytes, __md5_read_ctx, __md5_stream):
2084         Renamed from their non-__ counterparts, with new macros replacing
2085         them if not _LIBC.  Add __THROW attribute.
2086         (rol): Remove.
2087         (struct md5_ctx): Align buffer if using GCC.
2088         * sha1.h (struct sha1_ctx): Likewise.
2089         * sha1.c (SWAP): Renamed from the NOTSWAP.  All uses changed.
2090         The old name was backwards.
2091         (NOTSWAP): Remove; not used.
2092         (rol): New macro, moved here from md5.h.
2093         (sha1_process_block): Remove a FIXME that doesn't make sense.
2094
2095 2005-09-12  Derek Price  <derek@ximbiot.com>
2096
2097         * gai_strerror.c: Include config.h when available.  Include
2098         getaddrinfo.h before other headers to test interface.
2099         Reported by Larry Jones <lawrence.jones@ugs.com>.
2100
2101 2005-09-08  Paul Eggert  <eggert@cs.ucla.edu>
2102
2103         * glob.c (glob, globfree, __glob_pattern_p): Use old-style function
2104         definitions, since that's the preferred style in glibc.
2105         Fix a minor spacing issue, and update copyright notice to match glibc's.
2106
2107 2005-09-06  Paul Eggert  <eggert@cs.ucla.edu>
2108
2109         * regex_internal.h (bitset_not): Add parens to avoid gcc -Wall warning.
2110
2111 2005-09-06  Simon Josefsson  <jas@extundo.com>
2112
2113         * getpass.c (getpass): Fix typo, test for HAVE_TCSETATTR and not
2114         TCSETATTR.  Reported by Derek Price <derek@ximbiot.com>.
2115
2116 2005-09-05  Paul Eggert  <eggert@cs.ucla.edu>
2117
2118         Change bitset word type from unsigned int to unsigned long int,
2119         as this has better performance on typical 64-bit hosts.
2120         Port bitset code to hosts with unusual word sizes.
2121         * regcomp.c (build_equiv_class, build_charclass, build_range_exp):
2122         (build_collating_symbol):
2123         Prefer bitset to re_bitset_ptr_t in prototypes, when the actual
2124         argument is a bitset.  This is merely a style issue, but it makes
2125         it clearer that an entire array is expected.
2126         (re_compile_fastmap_iter, init_dfa, init_word_char, optimize_subexps):
2127         * regcomp.c (lower_subexp, parse_bracket_exp, built_charclass_op):
2128         Port to the case where bitset_word is not the same as unsigned int.
2129         * regex_internal.h (bitset_set, bitset_clear, bitset_contain):
2130         (bitset_not, bitset_merge, bitset_set_all, bitset_mask):
2131         Likewise.
2132         * regexec.c (check_dst_limits_calc_pos_1, check_subexp_matching_top):
2133         (build_trtable, group_nodes_into_DFAstates):
2134         Likewise.
2135         * regcomp.c (re_compile_fastmap_iter, utf8_sb_map, optimize_utf8):
2136         Don't assume that SBC_MAX is a multiple of BITSET_WORD_BITS.
2137         * regex_internal.h (bitset_set_all, bitset_not): Likewise.
2138         * regexec.c (group_nodes_into_DFAstates): Likewise.
2139         * regcomp.c (utf8_sb_map): Don't assume UINT_MAX == 0xffffffff.
2140         * regcomp.c (optimize_subexps, lower_subexp):
2141         Work even if bitset_word has holes in its bitwise representation.
2142         * regex_internal.h (BITSET_WORD_BITS): Likewise.
2143         * regexec.c (check_dst_limits_calc_pos_1, check_subexp_matching_top):
2144         Likewise.
2145         * regex_internal.c (re_string_reconstruct):
2146         Don't assume UCHAR_MAX == 255.
2147         * regex_internal.h (bitset_set_all): Likewise.
2148         * regex_internal.h (BITSET_WORD_BITS): Renamed from UINT_BITS.
2149         All uses changed.
2150         (BITSET_WORDS): Renamed from BITSET_UINTS.  All uses changed.
2151         (bitset_word): New type, replacing 'unsigned int' for bitset uses.
2152         All uses changed.
2153         (BITSET_WORD_MAX): New macro.
2154         (bitset_set, bitset_clear, bitset_contain, bitset_empty):
2155         (bitset_set_all, bitset_copy):  Now inline functions, not macros.
2156         (bitset_empty, bitset_copy):
2157         Prefer sizeof (bitset) to multiplying it out ourselves.
2158         (bitset_not_merge): Remove; unused.
2159         (bitset_contain): Return bool, not unsigned int with one bit on.
2160         All callers changed.
2161         * regexec.c (build_trtable): Don't assume bitset has no stricter
2162         alignment than re_node_set; do this by defining a new internal
2163         type struct dests_alloc and using it to allocate memory.
2164
2165 2005-09-02  Paul Eggert  <eggert@cs.ucla.edu>
2166
2167         Check for arithmetic overflow when calculating sizes, to prevent
2168         some buffer-overflow issues.  These patches are conservative, in the
2169         sense that when I couldn't determine whether an overflow was possible,
2170         I inserted a run-time check.
2171         * regex_internal.h (re_xmalloc, re_xrealloc, re_x2realloc): New macros.
2172         (SIZE_MAX) [!defined SIZE_MAX]: New macro.
2173         (re_alloc_oversized, re_x2alloc_oversized, re_xnmalloc):
2174         (re_xnrealloc, re_x2nrealloc): New inline functions.
2175         * lib/regcomp.c (init_dfa, analyze, build_range_exp, parse_bracket_exp):
2176         (build_equiv_class, build_charclass): Check for arithmetic overflow
2177         in size expression calculations.
2178         * lib/regex_internal.c (re_string_realloc_buffers):
2179         (build_wcs_upper_buffer, re_node_set_add_intersect):
2180         (re_node_set_init_union, re_node_set_insert, re_node_set_insert_last):
2181         (re_dfa_add_node, register_state): Likewise.
2182         * lib/regexec.c (re_search_stub, re_copy_regs, re_search_internal):
2183         (prune_impossible_nodes, push_fail_stack, set_regs, check_arrival):
2184         (build_trtable, extend_buffers, match_ctx_init, match_ctx_add_entry):
2185         (match_ctx_add_subtop, match_ctx_add_sublast): Likewise.
2186
2187 2005-09-01  Paul Eggert  <eggert@cs.ucla.edu>
2188
2189         * glob.c (GET_LOGIN_NAME_MAX): Renamed from LOGIN_NAME_MAX,
2190         to avoid a collision with bits/local_lim.h in glibc.
2191         All uses changed.  Problem reported by Dmitry V. Levin in
2192         <http://sources.redhat.com/bugzilla/show_bug.cgi?id=1060>.
2193
2194         * regex_internal.c (build_wcs_upper_buffer): Fix portability
2195         bugs in int versus size_t comparisons.
2196         (re_string_context_at): Fix bug where the code assumed that
2197         Idx is signed.
2198
2199         Use bool where appropriate.
2200         * regcomp.c (re_set_fastmap): ICASE arg is bool, not int.
2201         All callers changed.
2202         (calc_eclosure_iter): Likewise, for ROOT arg.
2203         (parse_bracket_element): Likewise, for ACCEPT_HYPHEN arg.
2204         (build_charclass_op): Likewise, for NON_MATCH arg.
2205         * regex_internal.c (re_string_allocate, re_string_construct):
2206         (re_string_construct_common): Likewise, for ICASE arg.
2207         * regexec.c (re_search_2_stub, re_search_stub):
2208         Likewise, for RET_LEN arg.
2209         (check_matching): Likewise, for FL_LONGEST_MATCH arg.
2210         (set_regs): Likewise, for FL_BACKTRACK arg.
2211         * regcomp.c (re_compile_fastmap_iter, optimize_utf8):
2212         (duplicate_node_closure, calc_inveclosure, calc_eclosure):
2213         (calc_eclosure_iter, parse_bracket_exp):
2214         Use bool for internal variables that are booleans.
2215         * regexec.c (re_search_internal, check_matching, proceed_next_node):
2216         (set_regs, build_sifted_states, sift_states_bkref):
2217         (check_arrival_add_next_nodes, check_arrival_expand_ecl_sub):
2218         (expand_bkref_cache, build_trtable, group_nodes_into_DFAstates):
2219         (find_collation_sequence_value):
2220         Likewise.
2221         * regex_internal.c (re_node_set_insert, re_node_set_insert_last):
2222         (re_node_set_compare):
2223         Return bool, not int. All callers changed.
2224         * regexec.c (check_halt_node_context, check_dst_limits):
2225         (build_trtable, check_node_accept): Likewise.
2226         * regex_internal.h: Include stdbool.h.
2227
2228         Fix bugs uncovered when converting to bool.
2229         * regcomp.c (calc_eclosure_iter): Check for storage allocation
2230         failure instead of charging ahead blindly.
2231         * regex_internal.c (register_state): Likewise.
2232         * regexec.c (re_search_2_stub): Use simpler method than boolean
2233         for freeing internal storage.
2234         (group_nodes_into_DFA_states): Use unsigned int, not int, for
2235         bitset pieces used as boolean, to avoid undefined behavior
2236         on hosts that do int overflow checking.
2237
2238 2005-08-31  Derek Price  <derek@ximbiot.com>
2239
2240         * getdelim.c (getdelim): Return EOF on EOF.
2241         Reported by Larry Jones <lawrence.jones@ugs.com>.
2242
2243 2005-08-31  Paul Eggert  <eggert@cs.ucla.edu>
2244
2245         * regex_internal.c (re_string_reconstruct): Don't assume buffer
2246         lengths fit in regoff_t; this isn't true if regoff_t is the same
2247         width as size_t.
2248         * regex.c (re_search_internal): 5th arg is LAST_START
2249         (= START + RANGE) instead of RANGE.  This avoids overflow
2250         problems when regoff_t is the same width as size_t.
2251         All callers changed.
2252         (re_search_2_stub): Check for overflow when adding the
2253         sizes of the two strings.
2254         (re_search_stub): Check for overflow when adding START
2255         to RANGE; if it occurs, substitute the extreme value.
2256
2257 2005-08-31  Jim Meyering  <jim@meyering.net>
2258
2259         * regcomp.c (search_duplicated_node): Make first pointer arg
2260         a pointer-to-const.
2261         * regex_internal.c (create_ci_newstate, create_cd_newstate):
2262         (register_state): Likewise.
2263         * regexec.c (search_cur_bkref_entry, check_dst_limits):
2264         (check_dst_limits_calc_pos_1, check_dst_limits_calc_pos):
2265         (group_nodes_into_DFAstates): Likewise.
2266
2267 2005-08-31  Paul Eggert  <eggert@cs.ucla.edu>
2268
2269         On 64-bit hosts (where size_t is 64 bits and int is 32 bits), the
2270         old glibc regex code mishandles strings longer than 2**31 bytes.
2271         This patch fixes this when the regex code is used in gnulib
2272         (i.e., outside glibc).
2273
2274         This patch should not affect the use of the regex code inside
2275         glibc.  No doubt this problem also needs to be handled for glibc
2276         as well, but the result will be an incompatible change to the
2277         glibc ABI, and the old ABI will have to be supported too.  That
2278         can be the the subject for another patch.
2279
2280         * regex.h (_REGEX_LARGE_OFFSETS): New feature-test macro,
2281         governing whether the rest of this patch is active.  By default,
2282         the macro is disabled and the patch has no effect.
2283         (regoff_t) [defined _REGEX_LARGE_OFFSETS]: Define to off_t, not int.
2284         (__re_idx_t, __re_size_t, __re_long_size_t): New types.
2285         (struct re_pattern_buffer, re_search, re_search_2, re_match):
2286         (re_match_2, re_set_registers): Use the new types.
2287         * regex_internal.h (Idx, re_hashval_t): New types.
2288         (REG_MISSING, REG_ERROR, REG_VALID_INDEX, REG_VALID_NONZERO_INDEX):
2289         New macros.
2290         (re_node_set, re_charset_t, re_token_t, re_string_realloc_buffers):
2291         (re_string_context_at, bin_tree_t, re_dfastate_t):
2292         (struct re_state_table_entry, state_array_t, re_sub_match_last_t):
2293         (re_sub_match_top_t, re_match_context_t, re_sift_context_t):
2294         (struct re_fail_stack_ent_t, struct re_fail_stack_t, struct re_dfa_t):
2295         (re_string_char_size_at, re_string_wchar_at):
2296         (re_string_elem_size_at):
2297         Use the new types and macros to port to 64-bit hosts.
2298         Use unsigned types for internal values, so that the code
2299         mostly works even for arrays larger than SSIZE_MAX.
2300         * regcomp.c (re_compile_internal, init_dfa, duplicate_node):
2301         (search_duplicated_node, calc_eclosure_iter, fetch_number):
2302         (parse_reg_exp, parse_branch, parse_expression, parse_sub_exp):
2303         (build_equiv_class, build_charclass, re_compile_fastmap_iter):
2304         (free_dfa_content, create_initial_state, optimize_utf8, analyze):
2305         (optimize_subexps, calc_first, link_nfa_nodes, duplicate_node_closure):
2306         (calc_inveclosure, parse_dup_op, build_range_exp):
2307         (build_collating_symbol, parse_bracket_exp, build_charclass_op):
2308         (fetch_number, create_token_tree, mark_opt_subexp):
2309         Likewise.
2310         * regex_internal.c (re_string_construct_common, create_ci_newstate):
2311         (create_cd_newstate, re_string_allocate, re_string_construct):
2312         (re_string_realloc_buffers, build_wcs_upper_buffer):
2313         (re_string_skip_chars, build_upper_buffer, re_string_translate_buffer):
2314         (re_string_reconstruct, re_string_peek_byte_case):
2315         (re_string_fetch_byte_case, re_string_context_at):
2316         (re_node_set_alloc, re_node_set_init_1, re_node_set_init_2):
2317         (re_node_set_init_copy, re_node_set_add_intersect):
2318         (re_node_set_init_union, re_node_set_merge, re_node_set_insert):
2319         (re_node_set_insert_last, re_node_set_compare, re_node_set_contains):
2320         (re_node_set_remove_at, re_dfa_add_node, calc_state_hash):
2321         (re_acquire_state, re_acquire_state_context, register_state):
2322         Likewise.
2323         * regex.c (match_ctx_init, match_ctx_add_entry, search_cur_bkref_entry):
2324         (match_ctx_add_subtop, match_ctx_add_sublast, sift_ctx_init):
2325         (re_search_internal, re_search_2_stub, re_search_stub)
2326         (re_copy_regs, check_matching, check_halt_state_context, update_regs):
2327         (push_fail_stack, sift_states_iter_mb, build_sifted_states):
2328         (update_cur_sifted_state, check_dst_limits):
2329         (check_dst_limits_calc_pos_1, check_dst_limits_calc_pos):
2330         (check_subexp_limits, sift_states_bkref, merge_state_array):
2331         (check_subexp_matching_top, get_subexp, get_subexp_sub):
2332         (find_subexp_node, check_arrival, check_arrival_add_next_nodes):
2333         (check_arrival_expand_ecl, check_arrival_expand_ecl_sub):
2334         (expand_bkref_cache, check_node_accept_bytes):
2335         (group_nodes_into_DFAstates, check_node_accept, regexec, re_match):
2336         (re_search, re_match_2, re_search_2, prune_impossible_nodes):
2337         (acquire_init_state_context, check_halt_node_context):
2338         (proceed_next_node, pop_fail_stack, set_regs, free_fail_stack_return):
2339         (sift_states_backward, clean_state_log_if_needed):
2340         (sub_epsilon_src_nodes, add_epsilone_src_nodes, merge_state_with_log):
2341         (find_recover_state, transit_state_sb, transit_state_mb):
2342         (transit_state_bkref, build_trtable, match_ctx_clean):
2343         Likewise.
2344         * regcomp.c (parse_dup_op): Add an extra test if Idx is unsigned,
2345         to work around an assumption that REG_MISSING is negative.
2346
2347         * regcomp.c (re_comp) [defined _REGEX_RE_COMP || defined _LIBC]:
2348         (seek_collating_symbol_entry) [defined _LIBC]:
2349         (lookup_collation_sequence_value) [defined _LIBC]:
2350         (build_range_exp, build_collating_symbol) [defined _LIBC]:
2351         Use prototypes rather than old-style function definitions.
2352         * regexec.c (re_exec) [defined _REGEX_RE_COMP || defined _LIBC]:
2353         (transit_state_sb) [0]:
2354         (find_collation_sequence_value) [defined _LIBC]: Likewise.
2355
2356         * regexec.c (re_search_internal): Simplify update of rm_so and
2357         rm_eo.
2358
2359         * regcomp.c (re_compile_fastmap_iter, init_dfa, init_word_char):
2360         (optimize_subexps, lower_subexp):
2361         Don't assume 1<<31 has defined behavior on hosts with 32-bit int,
2362         since the signed shift might overflow.  Use 1u<<31 instead.
2363         * regex_internal.h (bitset_set, bitset_clear, bitset_contain): Likewise.
2364         * regexec.c (check_dst_limits_calc_pos_1, check_subexp_matching_top):
2365         Likewise.
2366
2367         * regcomp.c (optimize_subexps, lower_subexp):
2368         Use CHAR_BIT rather than 8, for clarity.
2369         * regexec.c (check_dst_limits_calc_pos_1):
2370         (check_subexp_matching_top): Likewise.
2371         * regcomp.c (init_dfa): Make table_size unsigned, so that we don't
2372         have to worry about portability issues when shifting it left.
2373         Remove no-longer-needed test for table_size > 0.
2374         * regcomp.c (parse_sub_exp): Do not shift more bits than there are
2375         in a word, as the resulting behavior is undefined.
2376         * regexec.c (check_dst_limits_calc_pos_1): Likewise;
2377         in one case, a <= should have been an <, and in another case the
2378         whole test was missing.
2379         * regex_internal.h (BYTE_BITS): Remove.  All uses changed to
2380         the standard name CHAR_BIT.
2381         * regexec.c (match_ctx_add_entry): Don't assume that ~0 == -1;
2382         this is not true on one's complement and signed-magnitude hosts.
2383
2384         * regex_internal.h (re_sub_match_top_t): Remove unused member
2385         next_last_offset.
2386         (struct re_dfa_t): Remove unused member states_alloc.
2387         * regcomp.c (init_dfa): Don't initialize unused members.
2388
2389 2005-08-31  Bruno Haible  <bruno@clisp.org>
2390
2391         * strstr.c: Include <stddef.h>, for NULL.
2392         * strcasestr.c: Likewise.
2393         Reported by Yoann Vandoorselaere <yoann.v@prelude-ids.com>.
2394
2395 2005-08-30  "Oskar Liljeblad" <oskar@osk.mine.nu>
2396
2397         * iconvme.h: Add prototype for iconv_alloc.
2398
2399 2005-08-29  Simon Josefsson  <jas@extundo.com>
2400
2401         * iconvme.c: Fix errno.
2402
2403 2005-08-29  "Oskar Liljeblad" <oskar@osk.mine.nu>
2404
2405         * iconvme.c: Split iconv_string into iconv_alloc.
2406
2407 2005-08-27  Jim Meyering  <jim@meyering.net>
2408
2409         * fopen-safer.c: Merge minor changes from coreutils.
2410         * dup-safer.c: Likewise.
2411         * fd-safer.c: Likewise.
2412
2413         Merge from coreutils.
2414         * stdio--.h: New file.
2415         * stdlib--.h: New file.
2416         * mkstemp-safer.c: New file.
2417
2418         GNU tar needs these.
2419         * pipe-safer.c: New file.
2420         * creat-safer.c: New file.
2421         * fcntl--.h (creat): Define to creat_safer.
2422         * fcntl-safer.h: Include <sys/types.h> and declare creat_safer.
2423         * unistd--.h (pipe): Define to pipe_safer.
2424         * unistd-safer.h: Declare pipe_safer.
2425
2426 2005-08-26  Paul Eggert  <eggert@cs.ucla.edu>
2427
2428         * regex_internal.h: Remove all references to
2429         RE_NO_INTERNAL_PROTOTYPES; no longer neeeded now that we assume C89
2430         or better.
2431         (bitset_not, bitset_merge, bitset_not_merge):
2432         (bitset_mask, re_string_allocate, re_string_construct):
2433         (re_string_reconstruct, re_string_destruct, re_string_elem_size_at):
2434         (re_string_char_size_at, re_string_wchar_at, re_string_peek_byte_case):
2435         (re_string_fetch_byte_case, re_node_set_alloc, re_node_set_init_1):
2436         (re_node_set_init_2, re_node_set_init_copy, re_node_set_add_intersect):
2437         (re_node_set_init_union, re_node_set_merge, re_node_set_insert):
2438         (re_node_set_insert_last, re_node_set_compare, re_node_set_contains):
2439         (re_node_set_remove_at, re_dfa_add_node, re_acquire_state):
2440         (re_acquire_state_context):
2441         Remove unnecessary forward decls.
2442         (re_string_char_size_at, re_string_wchar_at, re_string_elem_size_at):
2443         Put __attribute at function definition,
2444         now that the function decl has been removed.
2445         * lib/regex_internal.c (re_string_peek_byte_case):
2446         (re_string_fetch_byte_case, re_node_set_compare, re_node_set_contains):
2447         Likewise.
2448
2449 2005-08-26  Simon Josefsson  <jas@extundo.com>
2450
2451         * getpass.c: Use _WIN32 instead of WIN32, suggested by Bruno
2452         Haible <bruno@clisp.org>.
2453
2454 2005-08-25  Paul Eggert  <eggert@cs.ucla.edu>
2455
2456         * regexec.c (set_regs): Don't alloca with an unbounded size.
2457
2458         alloca modernization/simplification for regex.
2459         * regex.c: Remove portability cruft for alloca.  This no longer
2460         needs to be at the start of the file, and can be moved into
2461         regex_internal.h and simplified.
2462         * regex_internal.h: Include <alloca.h>.
2463         (__libc_use_alloca) [!defined _LIBC]: New macro.
2464         * regexec.c (build_trtable): Remove "#ifdef _LIBC", since the code
2465         now works outside glibc.
2466
2467 2005-08-24  Simon Josefsson  <jas@extundo.com>
2468
2469         * getpass.c: Add WIN32 implementation.  Conditionalize use of
2470         termios.h, tcgetattr, tcsetattr and __fsetlocking.  Remove some
2471         GLIBC specific code.
2472
2473 2005-08-25  Paul Eggert  <eggert@cs.ucla.edu>
2474
2475         Make regex safe for g++.  This fixes one real bug (an "err"
2476         that should have been "*err").  g++ problem reported by
2477         Sam Steingold.
2478         * regex_internal.h (re_calloc): New macro, consistent with
2479         re_malloc etc.  All callers of calloc changed to use re_calloc.
2480         * regex_internal.c (build_wcs_upper_buffer): Return reg_errcode_t,
2481         not int.  All callers changed.
2482         * regcomp.c (re_compile_fastmap_iter): Don't use alloca (mb_cur_max);
2483         just use an array of size MB_LEN_MAX.
2484         * regexec.c (push_fail_stack): Use re_realloc, not realloc.
2485         (find_recover_state): Change "err" to "*err"; this fixes what
2486         appears to be a real bug.
2487         (check_arrival_expand_ecl_sub): Be consistent about reg_errcode_t
2488         versus int.
2489
2490 2005-08-25  Jim Meyering  <jim@meyering.net>
2491
2492         * open-safer.c: Include <config.h>.
2493         Otherwise, we'd lose LARGEFILE support in any file using
2494         e.g. "fcntl--.h"
2495
2496 2005-08-24  Paul Eggert  <eggert@cs.ucla.edu>
2497
2498         * regcomp.c (regerror): 2nd arg is 'restrict', as per POSIX.
2499         * regex.h (regerror): Likewise.
2500
2501         * regex.c: Do not include <sys/types.h>, as POSIX no longer
2502         requires this.  (The code never needed it.)
2503
2504         * regcomp.c, regex_internal.c, regex_internal.h, regexec.c:
2505         All uses of recently-renamed identifiers changed to use the new,
2506         POSIX-compliant names.  The code will build and run just fine
2507         without these changes, but it's better to eat our own dog food
2508         and use the standard-conforming names.
2509
2510         * regex.h: Fix a multitude of POSIX name space violations.
2511         These changes have an effect only for programs that define
2512         _POSIX_C_SOURCE, _POSIX_SOURCE, or _XOPEN_SOURCE; they
2513         do not change anything for programs compiled in the normal way.
2514         Also, there is no effect on the ABI.
2515
2516         (_REGEX_SOURCE): New macro.
2517         Do not include <stddef.h> if _XOPEN_SOURCE and VMS are both
2518         defined and _GNU_SOURCE is not; this fixes a name space violation.
2519
2520         Rename the following macros to obey POSIX requirements.
2521         The old names are still visible as macros if _REGEX_SOURCE is defined.
2522         (REG_BACKSLASH_ESCAPE_IN_LISTS): renamed from
2523         RE_BACKSLASH_ESCAPE_IN_LISTS.
2524         (REG_BK_PLUS_QM): renamed from RE_BK_PLUS_QM.
2525         (REG_CHAR_CLASSES): renamed from RE_CHAR_CLASSES.
2526         (REG_CONTEXT_INDEP_ANCHORS): renamed from RE_CONTEXT_INDEP_ANCHORS.
2527         (REG_CONTEXT_INDEP_OPS): renamed from RE_CONTEXT_INDEP_OPS.
2528         (REG_CONTEXT_INVALID_OPS): renamed from RE_CONTEXT_INVALID_OPS.
2529         (REG_DOT_NEWLINE): renamed from RE_DOT_NEWLINE.
2530         (REG_DOT_NOT_NULL): renamed from RE_DOT_NOT_NULL.
2531         (REG_HAT_LISTS_NOT_NEWLINE): renamed from RE_HAT_LISTS_NOT_NEWLINE.
2532         (REG_INTERVALS): renamed from RE_INTERVALS.
2533         (REG_LIMITED_OPS): renamed from RE_LIMITED_OPS.
2534         (REG_NEWLINE_ALT): renamed from RE_NEWLINE_ALT.
2535         (REG_NO_BK_BRACES): renamed from RE_NO_BK_BRACES.
2536         (REG_NO_BK_PARENS): renamed from RE_NO_BK_PARENS.
2537         (REG_NO_BK_REFS): renamed from RE_NO_BK_REFS.
2538         (REG_NO_BK_VBAR): renamed from RE_NO_BK_VBAR.
2539         (REG_NO_EMPTY_RANGES): renamed from RE_NO_EMPTY_RANGES.
2540         (REG_UNMATCHED_RIGHT_PAREN_ORD): renamed from
2541         RE_UNMATCHED_RIGHT_PAREN_ORD.
2542         (REG_NO_POSIX_BACKTRACKING): renamed from RE_NO_POSIX_BACKTRACKING.
2543         (REG_NO_GNU_OPS): renamed from RE_NO_GNU_OPS.
2544         (REG_DEBUG): renamed from RE_DEBUG.
2545         (REG_INVALID_INTERVAL_ORD): renamed from RE_INVALID_INTERVAL_ORD.
2546         (REG_IGNORE_CASE): renamed from RE_ICASE.  This renaming is a bit
2547         unusual, since we can't clash with the POSIX REG_ICASE.
2548         (REG_CARET_ANCHORS_HERE): renamed from RE_CARET_ANCHORS_HERE.
2549         (REG_CONTEXT_INVALID_DUP): renamed from RE_CONTEXT_INVALID_DUP.
2550         (REG_NO_SUB): renamed from RE_NO_SUB.
2551         (REG_SYNTAX_EMACS): renamed from RE_SYNTAX_EMACS.
2552         (REG_SYNTAX_AWK): renamed from RE_SYNTAX_AWK.
2553         (REG_SYNTAX_GNU_AWK): renamed from RE_SYNTAX_GNU_AWK.
2554         (REG_SYNTAX_POSIX_AWK): renamed from RE_SYNTAX_POSIX_AWK.
2555         (REG_SYNTAX_GREP): renamed from RE_SYNTAX_GREP.
2556         (REG_SYNTAX_EGREP): renamed from RE_SYNTAX_EGREP.
2557         (REG_SYNTAX_POSIX_EGREP): renamed from RE_SYNTAX_POSIX_EGREP.
2558         (REG_SYNTAX_ED): renamed from RE_SYNTAX_ED.
2559         (REG_SYNTAX_SED): renamed from RE_SYNTAX_SED.
2560         (_REG_SYNTAX_POSIX_COMMON): renamed from _RE_SYNTAX_POSIX_COMMON.
2561         (REG_SYNTAX_POSIX_BASIC): renamed from RE_SYNTAX_POSIX_BASIC.
2562         (REG_SYNTAX_POSIX_MINIMAL_BASIC): renamed from
2563         RE_SYNTAX_POSIX_MINIMAL_BASIC.
2564         (REG_SYNTAX_POSIX_EXTENDED): renamed from RE_SYNTAX_POSIX_EXTENDED.
2565         (REG_SYNTAX_POSIX_MINIMAL_EXTENDED): renamed from
2566         RE_SYNTAX_POSIX_MINIMAL_EXTENDED.
2567         (REG_DUP_MAX): renamed from RE_DUP_MAX.  No need to undef it.
2568         (REG_UNALLOCATED): Renamed from REGS_UNALLOCATED.
2569         (REG_REALLOCATE): Renamed from REGS_REALLOCATE.
2570         (REG_FIXED): Renamed from REGS_FIXED.
2571         (REG_NREGS): Renamed from RE_NREGS.
2572
2573         (REG_ICASE, REG_NEWLINE, REG_NOSUB): Do not depend on the values
2574         of other REG_* macros, since POSIX says the user is allowed to
2575         #undef these macros selectively.
2576
2577         (reg_errcode_t): Update comment stating what other tables need
2578         to be consistent.
2579
2580         Rename the following enum values to obey POSIX requirements.
2581         The old names are still visible as macros.
2582         (_REG_ENOSYS): Renamed from REG_ENOSYS.  Define even if _XOPEN_SOURCE
2583         is not defined, since GNU is supposed to be a superset of POSIX as
2584         much as possible, and since we want reg_errcode_t to be a signed
2585         type for implementation consistency.
2586         (_REG_NOERROR): Renamed from REG_NOERROR.
2587         (_REG_NOMATCH): Renamed from REG_NOMATCH.
2588         (_REG_BADPAT): Renamed from REG_BADPAT.
2589         (_REG_ECOLLATE): Renamed from REG_ECOLLATE.
2590         (_REG_ECTYPE): Renamed from REG_ECTYPE.
2591         (_REG_EESCAPE): Renamed from REG_EESCAPE.
2592         (_REG_ESUBREG): Renamed from REG_ESUBREG.
2593         (_REG_EBRACK): Renamed from REG_EBRACK.
2594         (_REG_EPAREN): Renamed from REG_EPAREN.
2595         (_REG_EBRACE): Renamed from REG_EBRACE.
2596         (_REG_BADBR): Renamed from REG_BADBR.
2597         (_REG_ERANGE): Renamed from REG_ERANGE.
2598         (_REG_ESPACE): Renamed from REG_ESPACE.
2599         (_REG_BADRPT): Renamed from REG_BADRPT.
2600         (_REG_EEND): Renamed from REG_EEND.
2601         (_REG_ESIZE): Renamed from REG_ESIZE.
2602         (_REG_ERPAREN): Renamed from REG_ERPAREN.
2603         (REG_ENOSYS, REG_NOERROR, REG_NOMATCH, REG_BADPAT, REG_ECOLLATE):
2604         (REG_ECTYPE, REG_EESCAPE, REG_ESUBREG, REG_EBRACK, REG_EPAREN):
2605         (REG_EBRACE, REG_BADBR, REG_ERANGE, REG_ESPACE, REG_BADRPT, REG_EEND):
2606         (REG_ESIZE, REG_ERPAREN): Now macros, not enum constants.
2607
2608         (_REG_RE_NAME, _REG_RM_NAME): New macros.
2609         (REG_TRANSLATE_TYPE): Renamed from RE_TRANSLATE_TYPE.  All uses
2610         changed.  But support the old name if the new one is not defined
2611         and if _REGEX_SOURCE.
2612
2613         Change the following member names in struct re_pattern_buffer.
2614         The old names are still supported if !_REGEX_SOURCE.
2615         The new names are always supported, regardless of _REGEX_SOURCE.
2616         (re_buffer): Renamed from buffer.
2617         (re_allocated): Renamed from allocated.
2618         (re_used): Renamed from used.
2619         (re_syntax): Renamed from syntax.
2620         (re_fastmap): Renamed from fastmap.
2621         (re_translate): Renamed from translate.
2622         (re_can_be_null): Renamed from can_be_null.
2623         (re_regs_allocated): Renamed from regs_allocated.
2624         (re_fastmap_accurate): Renamed from fastmap_accurate.
2625         (re_no_sub): Renamed from no_sub.
2626         (re_not_bol): Renamed from not_bol.
2627         (re_not_eol): Renamed from not_eol.
2628         (re_newline_anchor): Renamed from newline_anchor.
2629
2630         Change the following member names in struct re_registers.
2631         The old names are still supported if !_REGEX_SOURCE.
2632         The new names are always supported, regardless of _REGEX_SOURCE.
2633         (rm_num_regs): Renamed from num_regs.
2634         (rm_start): Renamed from start.
2635         (rm_end): Renamed from end.
2636
2637         (re_set_syntax, re_compile_pattern, re_compile_fastmap):
2638         (re_search, re_search_2, re_match, re_match_2, re_set_registers):
2639         Prepend __ to parameter names.
2640
2641         Undo yesterday's changes.
2642
2643 2005-08-24  Jim Meyering  <jim@meyering.net>
2644
2645         Sync from coreutils.
2646         * fcntl--.h, fcntl-safer.h, open-safer.c: New files.
2647
2648 2005-08-21  Bruno Haible  <bruno@clisp.org>
2649
2650         * lock.h: Add multiple inclusion guard.
2651         * tls.h: Add multiple inclusion guard.
2652
2653 2005-08-23  Paul Eggert  <eggert@cs.ucla.edu>
2654
2655         * regex.h (REG_NOSYS)
2656         [!defined _XOPEN_SOURCE && 200112L <= _POSIX_C_SOURCE]:
2657         Define, since POSIX requires it as of 2001.
2658         (_REG_ENOSYS) [! (defined _XOPEN_SOURCE || 200112L <= _POSIX_C_SOURCE)]:
2659         New private symbol, used to keep the enum signed in all cases.
2660         * regex.h (RE_NO_EMPTY_RANGES): Fix doc bug reported by James Youngman
2661         in <http://lists.gnu.org/archive/html/bug-gnulib/2005-07/msg00132.html>.
2662
2663         * regex_internal.c (re_string_skip_chars, register_state):
2664         (calc_state_hash):
2665         Remove forward decls; no longer needed now that we use prototypes.
2666         * regexec.c (acquire_init_state_context, check_halt_node_context):
2667         (proceed_next_node, pop_fail_stack, sub_epsilon_src_nodes):
2668         (clean_state_log_if_needed): Likewise.
2669
2670 2005-08-20  Paul Eggert  <eggert@cs.ucla.edu>
2671
2672         Fix problems reported by Sam Steingold in
2673         <http://lists.gnu.org/archive/html/bug-gnulib/2005-08/msg00007.html>.
2674         * regexec.c (sift_states_bkref): Fix portability bug: the code
2675         assumed that reg_errcode_t is a signed type, which is not
2676         necessarily true if _XOPEN_SOURCE is not defined.
2677         * regex_internal.c (calc_state_hash): Put 'inline' before type, since
2678         some compilers warn about it otherwise.
2679
2680 2005-08-20  Jim Meyering  <jim@meyering.net>
2681
2682         * regexec.c (regexec, re_search_stub) [!_LIBC]: Omit declaration
2683         of unused local, dfa.
2684
2685 2005-08-20  Paul Eggert  <eggert@cs.ucla.edu>
2686
2687         * regcomp.c (create_initial_state): Remove duplicate decl.
2688         (init_word_char, create_initial_state, duplicate_node_closure):
2689         (fetch_token, peek_token_bracket, build_range_exp):
2690         (build_collating_symbol): Remove forward decls; no longer needed
2691         now that we use prototypes.
2692
2693         * regcomp.c:
2694         (re_compile_pattern, re_set_syntax, re_compile_fastmap):
2695         (re_compile_fastmap_iter, regcomp, regerror, regfree):
2696         (re_compile_internal, init_dfa, init_word_char, free_workarea_compile):
2697         (create_initial_state, optimize_utf8, analyze, postorder, preorder):
2698         (optimize_subexps, lower_subexps, lower_subexp, calc_first, calc_next):
2699         (link_nfa_nodes, duplicate_node_closure, search_duplicated_node):
2700         (duplicate_node, calc_inveclosure, calc_eclosure, calc_eclosure_iter):
2701         (fetch_token, peek_token, peek_token_bracket, parse, parse_reg_exp):
2702         (parse_branch, parse_expression, parse_sub_exp, parse_dup_op):
2703         (build_range_exp, build_collating_symbol, parse_bracket_exp):
2704         (parse_bracket_element, parse_bracket_symbol, build_equiv_class):
2705         (build_charclass, build_charclass_op, fetch_number, create_tree):
2706         (create_token_tree, mark_opt_subexp, duplicate_tree):
2707         Use prototypes rather than old-style definitions.
2708
2709         * regex_internal.c:
2710         (re_string_allocate, re_string_construct, re_string_realloc_buffers):
2711         (re_string_construct_common, build_wcs_buffer, build_wcs_upper_buffer):
2712         (re_string_skip_chars, build_upper_buffer, re_string_translate_buffer):
2713         (re_string_reconstruct, re_string_peek_byte_case):
2714         (re_string_fetch_byte_case, re_string_destruct, re_string_context_at):
2715         (re_node_set_alloc, re_node_set_init_1, re_node_set_init_2):
2716         (re_node_set_init_copy, re_node_set_add_intersect):
2717         (re_node_set_init_union, re_node_set_merge, re_node_set_insert):
2718         (re_node_set_insert_last, re_node_set_compare, re_node_set_contains):
2719         (re_node_set_remove_at, re_dfa_add_node, calc_state_hash):
2720         (re_acquire_state, re_acquire_state_context, register_state):
2721         (create_ci_newstate, create_cd_newstate, free_state):
2722         Likewise.
2723         * regexec.c (regexec, re_match, re_search, re_match_2, re_search_2):
2724         (re_search_2_stub, re_search_stub, re_copy_regs, re_set_registers):
2725         (re_search_internal, prune_impossible_nodes):
2726         (acquire_init_state_context, check_matching, static):
2727         (check_halt_node_context, check_halt_state_context, proceed_next_node):
2728         (push_fail_stack, pop_fail_stack, set_regs, free_fail_stack_return):
2729         (update_regs, sift_states_backward, build_sifted_states):
2730         (clean_state_log_if_needed, merge_state_array):
2731         (update_cur_sifted_state, add_epsilon_src_nodes):
2732         (sub_epsilon_src_nodes, check_dst_limits, check_dst_limits_calc_pos_1):
2733         (check_dst_limits_calc_pos, check_subexp_limits, sift_states_bkref):
2734         (sift_states_iter_mb, transit_state, merge_state_with_log, static):
2735         (find_recover_state, check_subexp_matching_top, transit_state_mb):
2736         (transit_state_bkref, get_subexp, get_subexp_sub, find_subexp_node):
2737         (check_arrival, check_arrival_add_next_nodes):
2738         (check_arrival_expand_ecl, check_arrival_expand_ecl_sub):
2739         (expand_bkref_cache, build_trtable, group_nodes_into_DFAstates):
2740         (check_node_accept_bytes, check_node_accept, extend_buffers):
2741         (match_ctx_init, match_ctx_clean, match_ctx_free, match_ctx_add_entry):
2742         (search_cur_bkref_entry, match_ctx_add_subtop, match_ctx_add_sublast):
2743         (sift_ctx_init):
2744         Likewise.
2745
2746         * regex_internal.h:
2747         (re_string_allocate, re_string_construct, re_string_reconstruct):
2748         (re_string_realloc_buffers, build_wcs_buffer, build_wcs_upper_buffer):
2749         (build_upper_buffer, re_string_translate_buffer, re_string_destruct):
2750         (re_string_elem_size_at, re_string_char_size_at, re_string_wchar_at):
2751         (re_string_context_at, re_string_peek_byte_case):
2752         (re_string_fetch_byte_case): Declare even if RE_NO_INTERNAL_PROTOTYPES
2753         is defined, since we now use prototypes always.
2754
2755         * regex.h (_RE_ARGS): Remove.  No longer needed, since we assume
2756         C89 or better.  All uses removed.
2757
2758 2005-08-19  Paul Eggert  <eggert@cs.ucla.edu>
2759
2760         * regex_internal.c (re_acquire_state, re_acquire_state_context)
2761         [defined lint]: Suppress bogus uninitialized-variable warnings.
2762
2763         * regcomp.c (duplicate_node): Return new index, not an error code,
2764         and let the caller return REG_ESPACE if out of space.  This
2765         removes an uninitialied-variable warning with GCC 4.0.1, and also
2766         avoids taking the address of a local variable.  All callers
2767         changed.
2768
2769 2005-08-19  Jim Meyering  <jim@meyering.net>
2770
2771         * regexec.c (proceed_next_node): Redo local variables to
2772         avoid GCC shadowing warnings.
2773
2774 2005-08-19  Paul Eggert  <eggert@cs.ucla.edu>
2775
2776         * regex_internal.c (re_string_realloc_buffers, re_node_set_insert):
2777         (re_node_set_insert_last, re_dfa_add_node):
2778         Rename local variables to avoid GCC shadowing warnings.
2779
2780 2005-08-18  Bruno Haible  <bruno@clisp.org>
2781
2782         * strstr.c (strstr): Fix return value in multibyte case.
2783         * strcasestr.c (strcasestr): Likewise.
2784
2785 2005-08-17  Jim Meyering  <jim@meyering.net>
2786
2787         Make the %s format (seconds since the epoch) work for a negative
2788         number and when used with a zero-padded field width, e.g. %015s.
2789
2790         * strftime.c (my_strftime): Move the `do_number_sign_and_padding'
2791         label so that it precedes the code to set `digits'.  Otherwise,
2792         %0Ns wouldn't work.  Before this change, `date -d @-22 +%05s' would
2793         print `00-22'.  Now, it prints `-0022', as it should.
2794
2795 2005-08-17  Paul Eggert  <eggert@cs.ucla.edu>
2796
2797         * regex.h: Remove useless space-before-tab.  From coreutils.
2798
2799 2005-08-17  Bruno Haible  <bruno@clisp.org>
2800
2801         * strcasestr.h: New file.
2802         * strcasestr.c: New file.
2803
2804 2005-08-17  Bruno Haible  <bruno@clisp.org>
2805
2806         * strstr.h: Ignore HAVE_STRSTR, always declare the gnulib function.
2807         * strstr.c: Completely rewritten, with multibyte locale support.
2808
2809 2005-08-17  Bruno Haible  <bruno@clisp.org>
2810
2811         * strcasecmp.c: Use mbuiter.h.
2812
2813 2005-08-17  Bruno Haible  <bruno@clisp.org>
2814
2815         * mbuiter.h: New file.
2816
2817 2005-08-16  Bruno Haible  <bruno@clisp.org>
2818
2819         * strcasecmp.c (struct mbiter_multi): Remove at_end field.
2820         (mbi_init): Update.
2821         (mbi_avail, mbi_advance): Let the iteration end before the terminating
2822         NUL byte, not after it.
2823
2824 2005-08-16  Bruno Haible  <bruno@clisp.org>
2825
2826         * mbchar.h (mb_cmp, mb_casecmp): Order the invalid characters after
2827         the valid ones. Makes the comparison operations transitive:
2828         cmp (a, b) < 0 && cmp (b, c) < 0 ==> cmp (a, c) < 0.
2829         * strcasecmp.c (strcasecmp): Use mb_casecmp.
2830
2831 2005-08-16  Bruno Haible  <bruno@clisp.org>
2832
2833         * strcase.h (strcasecmp): Add note in comments.
2834         * strncasecmp.c: Use code from strcasecmp.c.
2835         * strcasecmp.c: Use mbchar module. Define private mbiter variant.
2836         (strcasecmp): Work correctly in multibyte locales.
2837
2838 2005-08-16  Bruno Haible  <bruno@clisp.org>
2839
2840         * strnlen1.h: New file.
2841         * strnlen1.c: New file.
2842
2843 2005-08-16  Bruno Haible  <bruno@clisp.org>
2844
2845         * mbfile.h: New file.
2846
2847 2005-08-16  Bruno Haible  <bruno@clisp.org>
2848
2849         * mbiter.h: New file.
2850
2851 2005-08-16  Bruno Haible  <bruno@clisp.org>
2852
2853         * mbchar.h: New file.
2854         * mbchar.c: New file.
2855
2856 2005-08-16  Bruno Haible  <bruno@clisp.org>
2857
2858         * tls.h: New file, from GNU gettext.
2859         * tls.c: New file, from GNU gettext.
2860
2861 2005-08-15  Bruno Haible  <bruno@clisp.org>
2862
2863         * regex.h (__restrict_arr): Don't define to __restrict if __cplusplus
2864         is defined.
2865
2866 2005-08-14  Jim Meyering  <jim@meyering.net>
2867
2868         Sync from coreutils.
2869
2870         * fts-cycle.c (setup_dir, enter_dir, leave_dir, free_dir):
2871         Use the hash-table-based cycle-detection code not just when
2872         FTS_TIGHT_CYCLE_CHECK if specified, but also with FTS_LOGICAL.
2873         Reported by James Youngman in
2874         <http://lists.gnu.org/archive/html/bug-gnulib/2005-08/msg00011.html>.
2875         * fts_.h: Mention that with FTS_LOGICAL, we use FTS_TIGHT_CYCLE_CHECK.
2876         * fts.c (fts_cross_check) [FTS_DEBUG]: s/active_dir_ht/fts_cycle.ht/.
2877         This lets us compile with -DFTS_DEBUG, once again.
2878         * fts.c [! _LIBC]: Include "lstat.h" rather than rolling our own.
2879         * fts.c (fd_safer): Remove decl.
2880         Include fcntl--.h rather than unistd-safer.h
2881         (fts_safe_changedir): Don't call fd_safer; no longer needed
2882         now that we include fcntl--.h.
2883
2884 2005-08-11  Simon Josefsson  <jas@extundo.com>
2885
2886         * readline.h, readline.c: New file.
2887
2888 2005-08-11  Bruno Haible  <bruno@clisp.org>
2889
2890         * strnlen.h (strnlen): Change parameter name to match comment.
2891
2892 2005-08-10  Simon Josefsson  <jas@extundo.com>
2893
2894         * strndup.c: Use strnlen.h.
2895
2896         * strnlen.h: New file.
2897
2898 2005-08-02  Simon Josefsson  <jas@extundo.com>
2899
2900         * getline.h, getline.c: Rewrite.
2901
2902         * getdelim.h, getdelim.c: New files, ported from glibc.
2903
2904 2005-07-31  Bruno Haible  <bruno@clisp.org>
2905
2906         * lock.h (gl_lock_initializer): New macro.
2907         (gl_lock_define_initialized): Use it.
2908         (gl_rwlock_initializer): New macro.
2909         (gl_rwlock_define_initialized): Use it.
2910         (gl_recursive_lock_initializer): New macro.
2911         (gl_recursive_lock_define_initialized): Use it.
2912
2913 2005-07-26  Bruno Haible  <bruno@clisp.org>
2914
2915         * lock.h: Update from GNU gettext.
2916         * lock.c: Update from GNU gettext.
2917
2918 2005-07-18  Bruno Haible  <bruno@clisp.org>
2919
2920         * lock.h (gl_once_t): New type.
2921         (gl_once_define, gl_once): New macros.
2922         * lock.c (fresh_once): New variable.
2923         (glthread_once, glthread_once_call, glthread_once_singlethreaded): New
2924         functions.
2925
2926 2005-07-18  Simon Josefsson  <jas@extundo.com>
2927
2928         * check-version.c (check_version): Accept identical versions too.
2929
2930 2005-07-18  Bruno Haible  <bruno@clisp.org>
2931
2932         * lock.h: New file, from GNU gettext.
2933         * lock.c: New file, from GNU gettext.
2934
2935 2005-07-15  Paul Eggert  <eggert@cs.ucla.edu>
2936
2937         * quotearg.c: Add translator comment suggested by Bruno Haible,
2938         with a minor change.
2939
2940 2005-07-11  Paul Eggert  <eggert@cs.ucla.edu>
2941
2942         * version-etc-fsf.c (version_etc_copyright): Parameterize the
2943         copyright symbol and the year.
2944         * version-etc.c (COPYRIGHT_YEAR): New constant.
2945         (version_etc_va): Use parameterized copyright notice.
2946         Reword to conform to the current GNU coding standards.
2947
2948 2005-07-11  Simon Josefsson  <jas@extundo.com>
2949
2950         * size_max.h: New file.
2951
2952 2005-07-09  Sergey Poznyakoff  <gray@gnu.org.ua>
2953
2954         * argp-namefrob.h: Include unlocked-io.h. Removed unnecessary
2955         block of defines.
2956
2957 2005-07-08  Eric Blake  <ebb9@byu.net>  (tiny change)
2958        and  Paul Eggert  <eggert@cs.ucla.edu>
2959
2960         * regcomp.c (init_dfa, build_range_exp): Store __btowc value
2961         in wint_t, not wchar_t.  Remove now-unnecessary cast.
2962
2963 2005-07-07  Paul Eggert  <eggert@cs.ucla.edu>
2964
2965         * regex.c, regex.h: Sync from libc.
2966         * regcomp.c, regexec_internal.c, regex_internal.h, regexec.c:
2967         New files, synced from libc, except that regex_internal.h
2968         currently has a small porting fix.
2969
2970 2005-07-03  Paul Eggert  <eggert@cs.ucla.edu>
2971
2972         Remove the dependency of the strftime module on the tzset module.
2973         * strftime.c (my_strftime) [! defined _LIBC && ! HAVE_RUN_TZSET_TEST]:
2974         Copy the input structure, to work around some of the bug with
2975         Solaris 2.5.1 and Solaris 2.6.  If you still care about these old
2976         Solaris releases, you should also use the tzset module, but we won't
2977         require it as a dependency any more since we don't want LGPLed code
2978         to depend on GPLed code.
2979
2980 2005-07-02  Jim Meyering  <jim@meyering.net>
2981
2982         * backupfile.c (backup_args): Change a `0' to NULL.
2983
2984 2005-07-01  Jim Meyering  <jim@meyering.net>
2985
2986         * chown.c, cloexec.c, dup-safer.c, dup2.c, fsusage.c, getcwd.c:
2987         * getloadavg.c, mountlist.c, openat.h, pagealign_alloc.c:
2988         * save-cwd.c, tempname.c:
2989         Assume HAVE_FCNTL_H (i.e., include <fcntl.h> unconditionally,
2990         and don't include <sys/file.h>).
2991
2992 2005-07-01  Paul Eggert  <eggert@cs.ucla.edu>
2993
2994         * xnanosleep.c: Include timespec.h, since OpenBSD 3.4 <time.h>
2995         declares only 'struct timespec;' (!).
2996
2997 2005-06-29  Jim Meyering  <jim@meyering.net>
2998
2999         * mkdir-p.c (make_dir_parents): Don't apply sizeof to a hard-coded
3000         type name.  Use the variable name instead.
3001         * idcache.c (getuser, getuidbyname, getgroup, getgidbyname): Likewise.
3002
3003 2005-06-28  Simon Josefsson  <jas@extundo.com>
3004
3005         * check-version.h, check-version.c: New files.
3006
3007 2005-06-28  Simon Josefsson  <jas@extundo.com>
3008
3009         * base64.c (base64_encode): Indent.  Rename 'b64' to avoid
3010         collision with global variable.  Better indentation.  Don't
3011         increment buffer pointer beyond buffer end.  Based on comments
3012         from Paul Eggert <eggert@cs.ucla.edu>.
3013
3014         * base64.h: Indent.
3015
3016 2005-06-24  Paul Eggert  <eggert@cs.ucla.edu>
3017
3018         * canon-host.c (canon-host): Append trailing "," to 0 in
3019         initializer of struct addrinfo, as an indication that we don't
3020         care how many members the structure has.
3021
3022 2005-06-24  Derek Price  <derek@ximbiot.com>
3023         and Bruno Haible  <bruno@clisp.org>
3024
3025         Remove stat module & update lstat.
3026         * stat.c: Remove this file...
3027         (slash_aware_lstat): ...moving this content and its support...
3028         * lstat.c (rpl_lstat): ...into here.
3029         * lstat.h: New file.
3030
3031 2005-06-23  Paul Eggert  <eggert@cs.ucla.edu>
3032
3033         * mktime.c: Include <string.h> even if !DEBUG.  (From glibc.)
3034         (ranged_convert): Don't save conversion in a temporary struct.
3035         This causes a warning with GCC 4.0.0, and anyway in the typical
3036         case it's not worth the extra 100 bytes or so of code.
3037         (ranged_convert, __mktime_internal): When calling a function via a
3038         pointer P, use P () rather than (*P) (), as we now assume C89 or
3039         better.
3040
3041 2005-06-22  Paul Eggert  <eggert@cs.ucla.edu>
3042
3043         * readutmp.c (desirable_utmp_entry): Fix bug where "who -b" and
3044         "who -r" failed to give output.  Problem reported by Tim Waugh.
3045
3046         * xmalloc.c (HAVE_GNU_CALLOC): New constant.
3047         (xcalloc): Use it to avoid needless tests.
3048         Problem reported by Jim Meyering.
3049
3050 2005-06-16  Jim Meyering  <jim@meyering.net>
3051
3052         * calloc.c (rpl_calloc): Allocate a 1-byte buffer (not 1xS or Nx1)
3053         when either N or S is zero.
3054
3055 2005-06-16  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3056
3057         * argp.h (__option_is_short): Check upper limit of
3058         __key. Isprint() requires its argument to have the value
3059         of an unsigned char or EOF.
3060
3061 2005-06-10  Paul Eggert  <eggert@cs.ucla.edu>
3062
3063         * fnmatch.c (fnmatch): If there is an encoding error in a
3064         multibyte string or pattern, fall back on unibyte matching.
3065         Problem reported by James Youngman.
3066
3067 2005-06-08  Bruno Haible  <bruno@clisp.org>
3068
3069         * binary-io.h (fileno): Undefine before defining it. Avoids a gcc
3070         warning on mingw.
3071
3072 2005-06-08  Bruno Haible  <bruno@clisp.org>
3073
3074         * csharpcomp.h: New file, from GNU gettext.
3075         * csharpcomp.c: New file, from GNU gettext.
3076         * csharpcomp.sh.in: New file, from GNU gettext.
3077
3078 2005-06-07  Derek Price  <derek@ximbiot.com>
3079
3080         Sync from CVS.
3081         * glob_.h: Indent nested #ifdef.
3082
3083 2005-06-02  Paul Eggert  <eggert@cs.ucla.edu>
3084
3085         Sync from coreutils.
3086         Use "file name" when talking about file names, instead of "filename"
3087         or "path", as per the GNU coding standards.
3088         * mkdir-p.c: Renamed from makepath.c.
3089         (make_dir_parents): Renamed from make_path.  All callers changed.
3090         * mkdir-p.h: Likewise.  All includers changed.
3091         * filenamecat.c: Renamed from path-concat.c.
3092         (file_name_concat): Renamed from path_concat.  All callers changed.
3093         [TEST_FILE_NAME_CONCAT]: Renamed from TEST_PATH_CONCAT.
3094         * filenamecat.h: Likewise.  All includers changed.
3095         * acl.c: Don't use "path" or "filename" to mean "file name"
3096         in comments or local variable names.
3097         * basename.c: Likewise.
3098         * canonicalize.c, canonicalize.h: Likewise.
3099         * dirname.c, dirname.h: Likewise.
3100         * euidaccess.c: Likewise.
3101         * exclude.c: Likewise
3102         * fnmatch_.h, fnmatch_loop.c: Likewise.
3103         * fsusage.c, fsuage.h: Likewise.
3104         * fts.c, fts_.h: Likewise.
3105         * getcwd.c: Likewise.
3106         * getloadavg.c: Likewise.
3107         * mkstemp.c: Likewise.
3108         * mountlist.c, mountlist.h: Likewise.
3109         * openat.c, openat.h: Likewise.
3110         * readlink-stub.c: Likewise.
3111         * readutmp.c, readutmp.h: Likewise.
3112         * rename.c: Likewise.
3113         * rmdir.c: Likewise.
3114         * same.c: Likewise.
3115         * savedir.c: Likewise.
3116         * stripslash.c: Likewise.
3117         * tempname.c: Likewise.
3118         * xreadlink.c: Likewise.
3119         * exclude.c (excluded_file_name): Renamed from excluded_filename.
3120         All uses changed.
3121         * exclude.h: Likewise.
3122
3123         * euidaccess.c (getuid, getgid, getuid, getegid)
3124         [!defined _POSIX_VERSION]: Remove decls; not needed these days.
3125         * idcache.c (getpwuid, getpwnam, getgrgid, getgrnam)
3126         [!defined _POSIX_VERSION]: Remove decls; not needed these days.
3127         * pathmax.h: Include <limits.h> unconditionally, since other
3128         files have been getting away with it for years (MORE/BSD 4.3
3129         is extinct now).
3130         * userspec.c (getpwnam, getgrnam, getgrgid)
3131         [!defined _POSIX_VERSION]: Remove decls; not needed these days.
3132
3133         * pathmax.h (_POSIX_PATH_MAX) [!defined _POSIX_PATH_MAX]:
3134         Define to 256, not 255, as per modern POSIX.
3135
3136 2005-06-01  Bruno Haible  <bruno@clisp.org>
3137
3138         * csharpexec.h: New file, from GNU gettext.
3139         * csharpexec.c: New file, from GNU gettext.
3140         * csharpexec.sh.in: New file, from GNU gettext.
3141
3142 2005-05-31  Derek Price  <derek@ximbiot.com>
3143             Paul Eggert  <eggert@cs.ucla.edu>
3144
3145         Sync from cvs.
3146         * glob_.h: s/MISSING_SYS_CDEFS_H/_SYS_CDEFS_H/ and comment.
3147
3148 2005-05-29  Derek Price  <derek@ximbiot.com>
3149             Paul Eggert  <eggert@cs.ucla.edu>
3150
3151         * glob_.h, glob.c: New files.
3152
3153 2005-05-27  Paul Eggert  <eggert@cs.ucla.edu>
3154
3155         * getlogin_r.c (getlogin_r): Don't set errno to 0 on return.
3156
3157         * fts.c: Don't worry about debugging on pre-C99-compatible hosts;
3158         the configuration hassle isn't worth it.
3159         Include inttypes.h and stdint.h unconditionally if FTS_DEBUG.
3160         (LONGEST_MODIFIER, PRIuMAX): Remove.
3161
3162 2005-05-27  Bruno Haible  <bruno@clisp.org>
3163
3164         * getlogin_r.h: Remove second include of <stddef.h>.
3165
3166 2005-05-25  Bruno Haible  <bruno@clisp.org>
3167             Derek Price  <derek@ximbiot.com>
3168
3169         * getlogin_r.h: Simplify API documentation.
3170
3171 2005-05-25  Derek Price  <derek@ximbiot.com>
3172             Paul Eggert  <eggert@cs.ucla.edu>
3173
3174         * getlogin_r.c, getlogin_r.h: New files.
3175
3176 2005-05-22  Bruno Haible  <bruno@clisp.org>
3177
3178         * minmax.h: Include <limits.h> only when it defines MIN, MAX.
3179         Also include <sys/param.h> if it defines MIN, MAX.
3180         Based on a patch by Derek Price <derek@ximbiot.com>.
3181
3182 2005-05-22  Bruno Haible  <bruno@clisp.org>
3183
3184         * stdint_.h (_STDINT_H_HAVE_INT64): New macro. Use it in #ifdefs.
3185         (INT64_MIN): Fix definition.
3186         Suggested by Paul Eggert <eggert@cs.ucla.edu>.
3187
3188         * stdint_.h (_STDINT_H_NEED_SIGNED_INT_TYPES): Renamed from
3189         NEED_SIGNED_INT_TYPES.
3190
3191         * stdint_.h (_STDINT_H_HAVE_SYSTEM_INTTYPES): Renamed from
3192         HAVE_SYSTEM_INTTYPES.
3193
3194 2005-05-22  Paul Eggert  <eggert@cs.ucla.edu>
3195
3196         * fts.c (fd_safer) [_LGPL_PACKAGE]: New static function,
3197         so that unistd-safer.h (GPL'ed code) need not be included.
3198
3199 2005-05-20  Paul Eggert  <eggert@cs.ucla.edu>
3200
3201         New fts module.
3202         * fts.c: Don't include "cycle-check.h" or "hash.h".
3203         (setup_dir, free_dir): New functions.
3204         (enter_dir, leave_dir): Define trivial
3205         alternatives of _LGPL_PACKAGE.  Move to fts-cycle.c if !_LGPL_PACKAGE.
3206         (HT_INITIAL_SIZE, ENTER_DIR): Remove.  All uses removed.
3207         (LEAVE_DIR): Fix typo: pass Fts and Ent to leave_dir.
3208         (struct Active_dir, AD_compare, AD_hash, enter_dir, leave_dir):
3209         Move to fts-cycle.c.
3210         (fts_open): Use setup_dir.
3211         (fts_close): Use free_dir.
3212         (fts_read): Have just one copy of the ENTER_DIR code rather than three.
3213         This adds a label and some gotos, but the alternatives were messier.
3214         Check for memory allocation failure when entering a dir.
3215         (fts_stat) [_LGPL_PACKAGE]: Bring back glibc cycle detection code.
3216         * fts_.h (_LGPL_PACKAGE) [defined _LIBC]: New macro.
3217         (FTS): New member fts_cycle, that is a union that contains the
3218         old active_dir_ht and cycle_state.  All uses changed to mention
3219         fts_cycle.ht and fts_cycle.state.
3220         * fts-cycle.c: New file, containing GPL'ed code migrated out of
3221         fts.c, with the following changes:
3222         (setup_dir, free_dir): New functions.
3223         (enter_dir): Now returns bool.  Return true if successful, false
3224         if memory exhausted.  All callers changed.
3225         Do not bother partly cleaning up on
3226         memory allocation failure; that is free_dir's job.
3227         However, free ad if hash_insert fails, to avoid memory leak.
3228         (enter_dir, leave_dir): Accommodate change to FTS by inspecting
3229         fts->fts_options to see which union member to use.
3230
3231 2005-05-20  Jim Meyering  <jim@meyering.net>
3232
3233         * unlinkdir.h (cannot_unlink_dir) [UNLINK_CANNOT_UNLINK_DIR]:
3234         Now a macro, to pacify GCC.
3235
3236 2005-05-20  Eric Blake  <ebb9@byu.net>  (tiny change)
3237
3238         * chown.c (rpl_chown): Return -1 on failure.
3239
3240 2005-05-18  Paul Eggert  <eggert@cs.ucla.edu>
3241
3242         * canonicalize.c: Include canonicalize.h first, to test interface.
3243         Include <stddef.h> unconditionally, since we assume C89 now.
3244         All uses of PTR_INT_TYPE replaced by ptrdiff_t.
3245         * fts.c: Include fts_.h first, to check interface.
3246         Do not include intprops.h; no longer needed.
3247         Include cycle-check.h and hash.h, since fts_.h no longer does.
3248         Remove unnecessary casts of closedir to void.
3249         (fts_build): Use a simpler method (not involving TYPE_SIGNED) to
3250         decide whether to decrement nlinks.
3251         * fts_.h: Do not include hash.h or cycle-check.h; no longer needed.
3252         (FTS): Use struct hash_table * instead of Hash_table, so that
3253         we no longer need to include hash.h here.
3254
3255 2005-05-17  Jim Meyering  <jim@meyering.net>
3256
3257         * fts.c, fts_.h: New files, from coreutils.
3258
3259 2005-05-14  Paul Eggert  <eggert@cs.ucla.edu>
3260
3261         Sync from coreutils.
3262         * unlinkdir.c, unlinkdir.h: New files.
3263         * gethrxtime.c, gethrxtime.h, getpass.h, mountlist.h, path-concat.c,
3264         regex.h, unlocked-io.h, xtime.h:
3265         White space changes only.
3266         * makepath.c (make_path): Port to hosts where leading "//" is special.
3267         * yesno.c: Include getline.h, not ctype.h.
3268         (yesno): Don't remove leading white space; POSIX doesn't allow it.
3269         Use getline to remove arbitrary restriction on response length.
3270
3271 2005-05-13  Bruno Haible  <bruno@clisp.org>
3272
3273         * stdint_.h (int64_t, uint64_t, int_least64_t, uint_least64_t,
3274         int_fast64_t, uint_fast64_t, intmax_t, uintmax_t, INT64_MIN, INT64_MAX,
3275         UINT64_MAX, INT_LEAST64_MIN, INT_LEAST64_MAX, UINT_LEAST64_MAX,
3276         INT_FAST64_MIN, INT_FAST64_MAX, UINT_FAST64_MAX, INTMAX_MIN,
3277         INTMAX_MAX, UINTMAX_MAX, INT64_C, UINT64_C, INTMAX_C, UINTMAX_C):
3278         Add support for 64-bit integers in the MSVC compiler.
3279
3280 2005-05-13  Paul Eggert  <eggert@cs.ucla.edu>
3281
3282         * byteswap_.h, getsubopt.h, iconvme.h, strsep.c, strsep.h:
3283         Change the initial comment to refer to GPL, not LGPL.
3284         gnulib-tool will change it to LGPL as needed.
3285
3286         * __fpending.c, acl.c, acl.h, alloca_.h, allocsa.c, allocsa.h,
3287         argmatch.c, argmatch.h, argp-ba.c, argp-eexst.c, argp-fmtstream.c,
3288         argp-fmtstream.h, argp-fs-xinl.c, argp-help.c, argp-namefrob.h,
3289         argp-parse.c, argp-pv.c, argp-pvh.c, argp-xinl.c, argp.h, argz.c,
3290         argz_.h, asnprintf.c, asprintf.c, atanl.c, backupfile.c,
3291         backupfile.h, base64.c, base64.h, basename.c, binary-io.h,
3292         byteswap_.h, c-ctype.c, c-ctype.h, c-stack.c, c-stack.h,
3293         c-strtod.c, calloc.c, canon-host.c, canonicalize.c,
3294         canonicalize.h, ceill.c, chdir-long.c, chdir-long.h, chown.c,
3295         classpath.c, classpath.h, cloexec.c, closeout.c, closeout.h,
3296         concatpath.c, config.charset, copy-file.c, copy-file.h,
3297         cycle-check.c, cycle-check.h, diacrit.c, diacrit.h, dirfd.c,
3298         dirfd.h, dirname.c, dirname.h, dummy.c, dup-safer.c, dup2.c,
3299         eealloc.h, error.c, error.h, euidaccess.c, exclude.c, exclude.h,
3300         execute.c, execute.h, exit.h, exitfail.c, exitfail.h, expl.c,
3301         fatal-signal.c, fatal-signal.h, fd-safer.c, file-type.c,
3302         file-type.h, fileblocks.c, filemode.c, filemode.h, findprog.c,
3303         findprog.h, floorl.c, fnmatch.c, fnmatch_.h, fnmatch_loop.c,
3304         fopen-safer.c, free.c, frexpl.c, fsusage.c, fsusage.h,
3305         full-read.c, full-read.h, full-write.c, full-write.h,
3306         fwriteerror.c, fwriteerror.h, gai_strerror.c, gcd.c, gcd.h,
3307         getaddrinfo.c, getaddrinfo.h, getcwd.c, getcwd.h, getdate.h,
3308         getdate.y, getdomainname.c, getdomainname.h, getgroups.c,
3309         gethostname.c, gethrxtime.c, gethrxtime.h, getline.c, getline.h,
3310         getloadavg.c, getndelim2.c, getndelim2.h, getnline.c, getnline.h,
3311         getopt.c, getopt1.c, getopt_.h, getopt_int.h, getpagesize.h,
3312         getpass.c, getpass.h, getsubopt.c, getsubopt.h, gettext.h,
3313         gettime.c, gettimeofday.c, getugroups.c, getusershell.c,
3314         group-member.c, group-member.h, hard-locale.c, hard-locale.h,
3315         hash-pjw.c, hash-pjw.h, hash.c, hash.h, human.c, human.h,
3316         iconvme.c, iconvme.h, idcache.c, inet_ntop.h, intprops.h,
3317         inttostr.c, inttostr.h, isdir.c, javacomp.c, javacomp.h,
3318         javacomp.sh.in, javaexec.c, javaexec.h, javaexec.sh.in,
3319         lbrkprop.h, lchown.c, ldexpl.c, linebreak.c, linebreak.h,
3320         linebuffer.c, linebuffer.h, localcharset.c, localcharset.h,
3321         logl.c, long-options.c, long-options.h, lstat.c, makepath.c,
3322         makepath.h, malloc.c, mathl.h, mbswidth.c, mbswidth.h, md5.c,
3323         md5.h, memcasecmp.c, memcasecmp.h, memchr.c, memcmp.c, memcoll.c,
3324         memcoll.h, memcpy.c, memmem.c, memmem.h, mempcpy.c, mempcpy.h,
3325         memrchr.c, memrchr.h, memset.c, minmax.h, mkdir.c, mkdtemp.c,
3326         mkdtemp.h, mkstemp.c, mktime.c, modechange.c, modechange.h,
3327         mountlist.c, mountlist.h, nanosleep.c, obstack.c, obstack.h,
3328         openat.c, openat.h, pagealign_alloc.c, pagealign_alloc.h,
3329         path-concat.c, path-concat.h, pathmax.h, pathname.h, physmem.c,
3330         physmem.h, pipe.c, pipe.h, poll.c, poll_.h, posixtm.c, posixtm.h,
3331         posixver.c, printf-args.c, printf-args.h, printf-parse.c,
3332         printf-parse.h, progname.c, progname.h, progreloc.c, putenv.c,
3333         quote.c, quote.h, quotearg.c, quotearg.h, raise.c, readlink.c,
3334         readtokens.c, readtokens.h, readtokens0.c, readtokens0.h,
3335         readutmp.c, readutmp.h, realloc.c, ref-add.sin, ref-del.sin,
3336         regex.c, regex.h, rename.c, rmdir.c, rpmatch.c, safe-read.c,
3337         safe-read.h, safe-write.c, safe-write.h, same.c, same.h,
3338         save-cwd.c, save-cwd.h, savedir.c, savedir.h, setenv.c, setenv.h,
3339         settime.c, sh-quote.c, sh-quote.h, sha1.c, sha1.h, sig2str.c,
3340         sig2str.h, sincosl.c, snprintf.c, snprintf.h, sqrtl.c,
3341         stat-macros.h, stat.c, stdbool_.h, stdint_.h, stdio-safer.h,
3342         stpcpy.c, stpcpy.h, stpncpy.c, stpncpy.h, strcase.h, strcasecmp.c,
3343         strchrnul.c, strchrnul.h, strcspn.c, strdup.c, strdup.h,
3344         strerror.c, strftime.c, strftime.h, stripslash.c, strndup.c,
3345         strndup.h, strnlen.c, strpbrk.c, strpbrk.h, strsep.c, strsep.h,
3346         strstr.c, strstr.h, strtod.c, strtoimax.c, strtok_r.c, strtok_r.h,
3347         strtol.c, strtoll.c, strtoul.c, strtoull.c, strverscmp.c,
3348         strverscmp.h, sysexit_.h, tempname.c, time_r.c, time_r.h,
3349         timegm.c, timegm.h, timespec.h, trigl.c, trigl.h, ucs4-utf16.h,
3350         ucs4-utf8.h, unicodeio.c, unicodeio.h, unistd-safer.h,
3351         unlocked-io.h, unsetenv.c, userspec.c, utf16-ucs4.h, utf8-ucs4.h,
3352         utime.c, utimecmp.c, utimecmp.h, utimens.c, vasnprintf.c,
3353         vasnprintf.h, vasprintf.c, vasprintf.h, version-etc-fsf.c,
3354         version-etc.c, version-etc.h, vsnprintf.c, vsnprintf.h,
3355         w32spawn.h, wait-process.c, wait-process.h, xalloc-die.c,
3356         xalloc.h, xallocsa.c, xallocsa.h, xasprintf.c, xgetcwd.c,
3357         xgetcwd.h, xgetdomainname.c, xgetdomainname.h, xgethostname.c,
3358         xmalloc.c, xmemcoll.c, xnanosleep.c, xreadlink.c, xreadlink.h,
3359         xsetenv.c, xsetenv.h, xsize.h, xstrndup.c, xstrndup.h, xstrtod.c,
3360         xstrtod.h, xstrtoimax.c, xstrtol.c, xstrtol.h, xstrtoumax.c,
3361         xtime.h, xvasprintf.c, xvasprintf.h, yesno.c, yesno.h:
3362         Update FSF postal mail address.
3363
3364 2005-05-10  Yoann Vandoorselaere <yoann.v@prelude-ids.com>
3365
3366         * getaddrinfo.c: Don't fail when SOCK_STREAM or SOCK_DGRAM are
3367         specified in ai_socktype. Fix invalid ai_protocol
3368         check. ai_protocol is usually set to 0 or depending on
3369         ai_family/ai_socktype to IPPROTO_TCP / IPPROTO_UDP.  Checking for
3370         SOCK_STREAM / SOCK_DGRAM in ai_protocol was invalid.  Set
3371         ai_socktype / ai_protocol in the returned addrinfo structure.
3372
3373 2005-05-09  Yoann Vandoorselaere <yoann.v@prelude-ids.com>
3374             Bruno Haible  <bruno@clisp.org>
3375
3376         * inet_ntop.h: New file.
3377         * inet_ntop.c: New file, from glibc with modifications.
3378
3379 2005-05-08  Jim Meyering  <jim@meyering.net>
3380
3381         * classpath.c (PATH_SEPARATOR): Remove insignificant trailing blank.
3382
3383 2005-05-01  Paul Eggert  <eggert@cs.ucla.edu>
3384
3385         Merge from coreutils.  Among other things,
3386         add bulletproofing for cases where stdin, stdout, or stderr are closed.
3387         * fd-safer.c: New file.
3388         * fcntl-safer.h, open-safer.c: Remove.
3389         * chdir-long.c: Fix comment "fetish" -> "coreutils".
3390         * dup-safer.c: Include unistd-safer.h first.
3391         Don't include errno.h.
3392         (dup_safer) [!defined F_DUPFD]: Let fd_safer do the real work.
3393         * file-type.h: Don't assume invoker included sys/stat.h first.
3394         * file-type.c: Rely on file-type.h change.
3395         * getloadavg.c: Include unistd-safer.h.
3396         (getloadavg): Use safer open.
3397         * getusershell.c: Include "stdio-safer.h".
3398         (getusershell): Use safer fopen.
3399         * long-options.c (long_options): Use NULL rather than 0.
3400         * modechange.h (mode_free): Remove; all callers changed to invoke
3401         'free'.
3402         * modechange.c: Likewise.
3403         xstrtol.h, stdbool.h, stddef.h: Don't include; no longer needed.
3404         (MODE_DONE): New constant.
3405         (struct mode_change): Remove 'next' member.
3406         (make_node_op_equals): New function; like the old one of the
3407         same name, except it allocates an array.
3408         (mode_compile, mode_create_from_ref): Use it.
3409         (mode_compile): Allocate result as an array, not a linked list.
3410         Parse octal string ourself, so that we catch mistakes like "+0".
3411         (mode_adjust): Arg is an array, not a linked list.
3412         * modechange.c: Include stat-macros.h, xalloc.h.
3413         (S_ISDIR, S_ISUID, S_ISGID, S_ISVTX, S_IRUSR, S_IWUSR, S_IXUSR):
3414         (S_IRGRP, S_IWGRP, S_IXGRP, S_IROTH, S_IWOTH, S_IXOTH, S_IRXWU):
3415         (S_IRWXG, S_IRWXO, CHMOD_MODE_BITS):
3416         Remove.  This is now stat-macros.h's job.
3417         (talloc): Remove.  All callers replaced by xalloc, so that
3418         our invokers don't have to worry about reporting memory failures.
3419         (make_node_op_equals): Remove.
3420         (MODE_ORDINARY_CHAGE, MODE_X_IF_ANY_X, MODE_COPY_EXISTING):
3421         New constants.
3422         (struct mode_change): Moved here from modechange.h.
3423         (mode_append_entry): Remove.
3424         (mode_compile): Remove MASKED_OPS arg, since it encouraged
3425         apps to have incorrect behavior.  Use simpler algorithm for head
3426         and tail.  Don't futz with umask; that's now the job of mode_adjust.
3427         Detect more invalid usages rather than having somewhat-random behavior.
3428         Don't insert an "a=" action, as that leads to incorrect behavior.
3429         (mode_compile, mode_create_from_ref): Return NULL on error instead
3430         of an enum, since now there's only one way to have an error.  All
3431         callers changed.
3432         (mode_adjust): Accept new arg UMASK_VALUE, and interpret it
3433         at the correct time.  Simplify calculation of "+u" and its ilk.
3434         Don't mishandle "+X".
3435         (mode_free): Remove "register" and localize decls.
3436         * modechange.h (MODE_X_IF_ANY_X, MODE_COPY_EXISTING):
3437         (struct mode_change): Move to modechange.c; callers don't
3438         need to see this stuff.
3439         (MODE_MASK_EQUALS, MODE_MASK_PLUS, MODE_MASK_MINUS, MODE_MASK_ALL):
3440         (MODE_INVALID, MODE_MEMORY_EXHAUSTED, MODE_BAD_REFERENCE): Remove.
3441         (mode_change, mode_adjust): Reflect the new signatures noted above.
3442         * nanosleep.c (rpl_nanosleep): Include "timespec.h" before macros
3443         that might redefine system include files.
3444         (siginterrupt) [!HAVE_SIGINTERRUPT]: New macro.
3445         (my_usleep): Use NULL rather than (void *) 0.
3446         (rpl_nanosleep) [!defined SA_NOCLDSTOP]:
3447         Use siginterrupt to specify that system calls should be interrupted.
3448         (rpl_nanosleep): Move initialization of suspended closer to call of
3449         my_usleep.
3450         * readutmp.h (read_utmp): New arg OPTIONS.  All uses changed.
3451         * readutmp.c: Likewise.  Include signal.h, stdbool.h.
3452         (desirable_utmp_entry): New function.
3453         (read_utmp) [defined UTMP_NAME_FUNCTION]: Redo memory allocation
3454         using x2nrealloc, to simplify logic.
3455         (read_utmp) [!defined UTMP_NAME_FUNCTION]: Check for overflow in
3456         size calculation.  Do not assume utmp file is a regular file.
3457         * readutmp.h (UT_PID): Moved here from ../src/who.c.
3458         (READ_UTMP_CHECK_PIDS): New constant.
3459         * save-cwd.c: Include unistd-safer.h.
3460         (save_cwd): Use fd_safer.
3461         * tempname.c (S_ISDIR, S_IRUSR, S_IRUSR, S_IWUSR, S_IXUSR): Remove.
3462         [!_LIBC] Include "stat-macros.h" instead.
3463         * unistd-safer.h (fd_safer): New decl.
3464
3465 2005-05-01  Oskar Liljeblad  <oskar@osk.mine.nu>
3466
3467         * byteswap_.h: New file.
3468
3469 2005-04-25  Albert Chin  <china@thewrittenword.com>
3470
3471         * regex.c: Include <stdio.h>, as a workaround to a Compaq Desktop
3472         Toolkit C bug.
3473
3474 2005-04-13  Paul Eggert  <eggert@cs.ucla.edu>
3475
3476         * getdate.y (zone): Allow relunit_snumber after tZONE, so
3477         that "UTC +1 second" continues to work.  Problem reported
3478         by Dmitry V. Levin.
3479         (relunit_snumber): New rule.
3480         (relunit): Use it.
3481
3482 2005-04-12  Paul Eggert  <eggert@cs.ucla.edu>
3483
3484         * getdate.y (universal_time_zone_table): New constant.
3485         (time_zone_table): Remove GMT, UT, UTC entries; they're now in
3486         universal_time_zone_table.
3487         (lookup_zone): Prefer universal_time_zone_table to
3488         local_time_zone_table, so that "GMT" time stamps are allowed in
3489         London during the summer.  Problem reported by Ian Abbott.
3490
3491 2005-04-12  Jim Meyering  <jim@meyering.net>
3492
3493         * human.c (humblock): Set *options even when returning due to
3494         xstrtoumax conversion failure.  Thanks to a used-uninitialized
3495         warning from gcc-4.
3496
3497 2005-04-09  Jim Meyering  <jim@meyering.net>
3498
3499         * posixtm.c (posixtime) [lint]: Avoid spurious warning from gcc-4's
3500         -Wuninitialized: initialize tm0.tm_year.
3501
3502 2005-04-04  Paul Eggert  <eggert@cs.ucla.edu>
3503
3504         * getdate.y (parser_control): rels_seen is now a boolean, not a
3505         count, since there's no maximum.  All uses changed.
3506         Add member dsts_seen.
3507         (local_zone): Accumulate dsts_seen rather than relying on tm_isdst
3508         not being INT_MAX.
3509         (get_date): Initialize dsts_seen, and check that it doesn't go over 1.
3510         Use pc_rels_seen to decide whther a date is absolute.
3511
3512         * getdate.y (number): Don't overwrite year.
3513         (get_date): Initialize pc.year.digits to 0, not 4, to enable above
3514         check.
3515
3516 2005-04-02  Simon Josefsson  <jas@extundo.com>
3517
3518         * getaddrinfo.h: Fix OpenBSD compilation failure, inspired by tiny
3519         patch from Yoann Vandoorselaere <yoann@prelude-ids.org>.
3520
3521 2005-03-27  Jim Meyering  <jim@meyering.net>
3522
3523         * argmatch.c: Clarify comment: null-terminated -> NULL-terminated.
3524
3525 2005-03-26  Paul Eggert  <eggert@cs.ucla.edu>
3526
3527         * intprops.h (INT_STRLEN_BOUND, INT_BUFSIZE_BOUND):
3528         "one's complement" -> "ones' complement" in comment, as per Knuth.
3529         "value of type" -> "type or expression" in comment.
3530         * mktime.c, strftime.c: Propagate intprops.h comment nits.
3531
3532 2005-03-26  Jim Meyering  <jim@meyering.net>
3533
3534         Comment nits.
3535         * intprops.h: Add the apostrophe in `(one|two)'s complement'.
3536         Correct typos: s/or/of/.
3537
3538 2005-03-23  Jim Meyering  <jim@meyering.net>
3539
3540         * canonicalize.c: Remove duplicate `#include "stat-macros.h"'.
3541
3542 2005-03-21  Jim Meyering  <jim@meyering.net>
3543
3544         Changes imported from coreutils.
3545
3546         * cycle-check.c: Don't include xalloc.h.
3547
3548         * path-concat.c: Don't include assert.h.
3549         (path_concat): Remove assertion that would have triggered
3550         for ABASE starting with more than one slash.
3551         Reported by Andreas Schwab.
3552
3553         * path-concat.c (path_concat): Set *BASE_IN_RESULT
3554         properly when ABASE is an absolute file name.
3555         Correct the description of this function.
3556         Include <assert.h>.
3557         Add an assertion and a test driver.
3558         This fixes a bug introduced on 2004-07-02.
3559         Andreas Schwab reported the resulting failure of cp --parents:
3560         http://lists.gnu.org/archive/html/bug-coreutils/2005-01/msg00130.html
3561
3562 2005-03-18  Paul Eggert  <eggert@cs.ucla.edu>
3563
3564         * strftime.c (my_strftime): If the underlying strftime returns 0
3565         (which shouldn't happen), generate nothing instead of returning 0
3566         immediately, so that nstrftime (NULL, ...) doesn't return 0.
3567
3568 2005-03-16  Bruno Haible  <bruno@clisp.org>
3569
3570         * stdint_.h: Use HAVE_LONG_LONG_64BIT instead of HAVE_LONGLONG_64BIT.
3571
3572 2005-03-15  Paul Eggert  <eggert@cs.ucla.edu>
3573
3574         * strftime.c (my_strftime): Prepend space to format so that we can
3575         reliably distinguish strftime failure from empty output on POSIX
3576         hosts.
3577
3578 2005-03-08  Paul Eggert  <eggert@cs.ucla.edu>
3579
3580         * iconvme.c (SIZE_MAX): New macro, if not already defined.
3581         (iconv_string): Don't guess a size-zero buffer, as that might cause
3582         buffer overrun.  Instead, avoid multiplying by MB_LEN_MAX if the
3583         result would be 'too large', where 'too large' is (heuristically)
3584         the square root of SIZE_MAX, divided by MB_LEN_MAX to allay
3585         overflow concerns.  This will prevent some unwanted malloc failures
3586         when the inputs are very large.
3587
3588 2005-03-15  Bruno Haible  <bruno@clisp.org>
3589
3590         * regex.c (byte_re_match_2_internal): Rename local variable 'not' to
3591         'negate'.
3592
3593         * regex.c (byte_re_match_2_internal): Reduce scope of same_str_p
3594         variable.
3595
3596         * regex.c (EXTEND_BUFFER, regcomp): Cast the realloc/malloc results.
3597
3598 2005-03-14  Paul Eggert  <eggert@cs.ucla.edu>
3599
3600         * mktime.c (TYPE_TWOS_COMPLEMENT, TYPE_ONES_COMPLEMENT,
3601         TYPE_SIGNED_MAGNITUDE, TYPE_MINIMUM, TYPE_MAXIMUM): Sync from
3602         intprops.h.
3603         * strtol.c: Likewise.
3604
3605 2005-03-14  Simon Josefsson  <jas@extundo.com>
3606
3607         * timegm.h: Use proper prototype CPP guards, reported by Dave Love
3608         <fx@gnu.org>.
3609
3610 2005-03-14  Jim Meyering  <jim@meyering.net>
3611
3612         * strftime.c (my_strftime) [HAVE_STRFTIME && ! (_NL_CURRENT
3613         && HAVE_STRUCT_ERA_ENTRY)]: Initialize the first byte of ubuf[]
3614         to be nonzero so that we (and caller) can detect the difference
3615         between a valid zero-length expansion and an error return, even
3616         when the underlying strftime fails before writing anything into
3617         that location.
3618
3619 2005-03-10  Jim Meyering  <jim@meyering.net>
3620
3621         * save-cwd.c [!HAVE_FCHDIR]: Define open, fchdir, and chdir_long
3622         so that this module works on systems without fchdir.
3623
3624 2005-03-09  Paul Eggert  <eggert@cs.ucla.edu>
3625
3626         Factor int-properties macros into a single file, except for
3627         glibc-related files.
3628         * intprops.h: New file.
3629         * getloadavg.c: Include it instead of limits.h.
3630         (INT_STRLEN_BOUND): Remove.
3631         * human.c: Include intprops.h.
3632         (group_number): Use INT_STRLEN_BOUND instead of rolling it ourself.
3633         * human.h (LONGEST_HUMAN_READABLE): Use 146/485 rather than 302/1000.
3634         * inttostr.h: Include intprops.h instead of limits.h.
3635         (INT_STRLEN_BOUND, INT_BUFSIZE_BOUND): Remove.
3636         * mktime.c (TYPE_IS_INTEGER, TYPE_TWOS_COMPLEMENT): New macros,
3637         for consistency with intprops.h.
3638         (time_t_is_integer, twos_complement_arithmetic): Use them.
3639         * sig2str.h: Include <signal.h>, intprops.h.
3640         (INT_STRLEN_BOUND): Remove.
3641         * strftime.c (TYPE_SIGNED): Remove.
3642         (INT_STRLEN_BOUND): Switch to same implementation as intprops.h.
3643         * strtol.c: Adjust comments to match intprops.h.
3644         * userspec.c: Include intprops.h.
3645         (TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM): Remove.
3646         * utimecmp.c, xnanosleep.c, xstrtol.c: Likewise.
3647         * utimecmp.c (utimecmp): Use TYPE_IS_INTEGER, TYPE_TWOS_COMPLEMENT
3648         instead of rolling our own expressions.
3649         * xstrtol.c: Include xstrtol.h first, to test interface.
3650
3651         * strftime.c: Include <stdbool.h>.  Use bool where appropriate,
3652         instead of int.
3653         (my_strftime): Do not mishandle years close to INT_MAX, by doing
3654         the right thing even if adding 1900 would overflow.  Similarly
3655         for tm_mon + 1 and tm_yday + 1.
3656         Make %Y always equivalent to %C%y, and similarly for %G and %g.
3657         (DO_NUMBER, DO_NUMBER_SPACEPAD): Set digits to d, not a conditional.
3658         (DO_SIGNED_NUMBER): New macro.
3659         (my_strftime) [HAVE_TZNAME]: Don't dump core if tp->tm_dst > 1.
3660
3661 2005-03-07  Bruno Haible  <bruno@clisp.org>
3662
3663         * pagealign_alloc.c (MAP_FILE, MAP_FAILED): Define fallbacks.
3664
3665 2005-03-03  Derek R. Price  <derek@ximbiot.com>
3666             Bruno Haible  <bruno@clisp.org>
3667
3668         * pagealign_alloc.h: New file.
3669         * pagealign_alloc.c: New file.
3670
3671 2005-01-28  Bruno Haible  <bruno@clisp.org>
3672
3673         * stpncpy.h (stpncpy): Define as a macro without arguments, so that
3674         stpncpy.c uses it.
3675
3676 2005-03-01  Paul Eggert  <eggert@cs.ucla.edu>
3677
3678         Remove workaround for bug in Linux kernel 2.6.8 or thereabouts.
3679         The workaround isn't strictly needed for POSIX conformance, and
3680         it's too much of a pain to configure and maintain.  We'll ask
3681         people to fix their kernels instead.
3682         * xnanosleep.c: Don't include gethrxtime.h or xtime.h.
3683         (NANOSLEEP_BUG_WORKAROUND): Remove.
3684         (xnanosleep): Remove the workaround.
3685
3686 2005-02-12  Bruno Haible  <bruno@clisp.org>
3687
3688         * vasnprintf.c (EOVERFLOW): Define to a fallback if needed.
3689
3690 2005-02-25  Paul Eggert  <eggert@cs.ucla.edu>
3691
3692         * gethrxtime.h, gethrxtime.c, xtime.h: New files.
3693         * timespec.h (gettime): Return void, since it always
3694         succeeds now.  All uses changed.
3695         * gettime.c (gettime) Likewise.
3696         [HAVE_NANOTIME]: Prefer nanotime.
3697         Assume gettimeofday succeeds, as POSIX requires.
3698         Assime time () succeeds, since other code already does.
3699         * xnanosleep.c: Include xtime.h and gethrxtime.h, not xalloc.h.
3700         (timespec_subtract): Remove.
3701         (NANOSLEEP_BUG_WORKAROUND): New constant.
3702         (xnanosleep): Use gethrxtime rather than gettime; this simplifies
3703         things considerably.  Use it only on GNU/Linux hosts, since the
3704         workaround shouldn't be needed elsewhere.
3705
3706 2005-02-24  Bruno Haible  <bruno@clisp.org>
3707
3708         * gettext.h: Update from GNU gettext 0.14.2.
3709
3710 2005-02-24  Bruno Haible  <bruno@clisp.org>
3711
3712         * localcharset.c: Update from GNU gettext 0.14.2.
3713         * config.charset: Update from GNU gettext 0.14.2.
3714
3715 2005-02-22  Simon Josefsson  <jas@extundo.com>
3716
3717         * iconvme.h, iconvme.c: New files, from libc.
3718
3719 2005-02-20  Neil Conway  <neilc@samurai.com>
3720
3721         * xgethostname.c (xgethostname): Check for ENOMEM, which is
3722         returned by OSX/Darwin if the specified buffer is not large
3723         enough for the hostname.
3724
3725 2005-02-03  Paul Eggert  <eggert@cs.ucla.edu>
3726
3727         * memrchr.h: New file.
3728         * chdir-long.c: Include it.
3729         * memrchr.c [!defined _LIBC]: Include it rather than <string.h>
3730         Don't bother including stddef.h.
3731
3732 2005-02-03  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3733
3734         * argp-help.c (__argp_help): Create a fake struct argp_state and
3735         pass it to _help, otherwise the latter coredumps trying to
3736         dereference state.root_argp.
3737
3738 2005-02-01  Paul Eggert  <eggert@cs.ucla.edu>
3739
3740         * mountlist.h (MOUNTLIST_H_): New macro, to protect against double
3741         inclusion.
3742         Include <sys/types.h>, for dev_t.
3743         (ME_DUMMY, ME_REMOTE): Move from here....
3744         * mountlist.c (ME_DUMMY, ME_REMOTE): To here.
3745         (ME_DUMMY): Count "subfs" as a dummy.  Problem reported by
3746         Dmitry V. Levin.
3747         Include mountlist.h first, to test the interface.
3748
3749 2005-01-29  Bruno Haible  <bruno@clisp.org>
3750
3751         * progname.c (program_name): Initialize.
3752         Needed when linking statically on MacOS X.
3753
3754 2005-01-28  Bruno Haible  <bruno@clisp.org>
3755
3756         * javacomp.sh.in: New file, from GNU gettext.
3757         * javacomp.h: New file, from GNU gettext.
3758         * javacomp.c: New file, from GNU gettext.
3759
3760 2005-01-26  Bruno Haible  <bruno@clisp.org>
3761
3762         * javaexec.sh.in: New file, from GNU gettext.
3763         * javaexec.h: New file, from GNU gettext.
3764         * javaexec.c: New file, from GNU gettext.
3765
3766 2005-01-26  Simon Josefsson  <jas@extundo.com>
3767
3768         * gai_strerror.c: Use GPL in header.
3769
3770 2005-01-24  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3771
3772         * argp-help.c (hol_entry_help): Avoid using non-constant
3773         initializers for struct pentry_state.
3774         (__argp_error): Check return value of __asprintf
3775         (__argp_failure): Translate error message
3776
3777         * argp-parse.c: Removed braces around the expansion of N_()
3778
3779 2005-01-21  Jim Meyering  <jim@meyering.net>
3780
3781         * openat.h (AT_SYMLINK_NOFOLLOW): Define to 4096, so it's the
3782         same value as for Solaris 9.
3783
3784         * chdir-long.c (chdir_long): Rewrite to remove limitation on
3785         component length.  This included changing the parameter to be
3786         of type `char *' rather than `char const *'.
3787         * chdir-long.h (chdir_long): Update prototype.
3788
3789         * openat.c (fdopendir, fstatat): New functions.
3790         * openat.h: Include headers required for use of DIR and struct stat.
3791         [AT_SYMLINK_NOFOLLOW]: Define.
3792         (fdopendir, fstatat): Add prototypes.
3793
3794 2005-01-21  Bruno Haible  <bruno@clisp.org>
3795
3796         * classpath.h: New file, from GNU gettext.
3797         * classpath.c: New file, from GNU gettext.
3798
3799 2005-01-20  Simon Josefsson  <jas@extundo.com>
3800
3801         * version-etc-fsf.c: New file, with version_etc_copyright.
3802         * version-etc.c: Remove version_etc_copyright.
3803         * version-etc.h (version_etc_copyright): Use [] instead of * in
3804         prototype, suggested by Paul Eggert <eggert@CS.UCLA.EDU>.
3805
3806 2005-01-20  Paul Eggert  <eggert@cs.ucla.edu>
3807
3808         * save-cwd.c (save_cwd): Remove code to support the case
3809         where fchdir is missing or flaky.
3810
3811 2005-01-20  Simon Josefsson  <jas@extundo.com>
3812
3813         * base64.h (isbase64): Add.
3814
3815         * base64.c (isb64): Rename to isbase64, use to_uchar instead of
3816         using a unsigned prototype, don't inline.
3817         (base64_decode): Use it.
3818
3819 2005-01-19  Bruno Haible  <bruno@clisp.org>
3820
3821         * sh-quote.h: New file, from GNU gettext.
3822         * sh-quote.c: New file, from GNU gettext.
3823
3824 2005-01-18  Paul Eggert  <eggert@cs.ucla.edu>
3825
3826         Merge changes from coreutils, as described below in several
3827         changelogs dated today.
3828
3829         * save-cwd.c: Include "save-cwd.h" before other include files.
3830         (O_DIRECTORY): Remove; not needed here, since "." must be
3831         a directory.  All uses removed.
3832         (save_cwd): Use __sgi || __sun, not sun || __sun.  __sun is
3833         universal on Suns, and we also need to test for IRIX.
3834         Revamp code to use 'if' rather than '#if'.
3835         Avoid unnecessary comparison of cwd->desc to 0.
3836
3837         * utimens.c (futimens): Robustify the previous patch, by checking
3838         for known valid error numbers rather than observed invalid ones.
3839
3840 2005-01-18  Jim Meyering  <jim@meyering.net>
3841
3842         * version-etc.c (version_etc_copyright): Update copyright date.
3843
3844         * utimens.c (futimens): Account for the fact that futimes
3845         can also fail with errno == ENOSYS or errno == ENOENT.
3846         Patch from Dmitry V. Levin.
3847
3848         Change the name of the robust chdir function from chdir to chdir_long.
3849         * save-cwd.c: Include chdir-long.h rather than chdir.h.
3850         (restore_cwd): Use chdir_long, not chdir.
3851         * chdir-long.c: Renamed from chdir.c.
3852         * chdir-long.h: Renamed from chdir.h.
3853         [!defined PATH_MAX]: Define chdir_long to chdir on systems like the
3854         Hurd.
3855
3856 2005-01-18  Bob Proulx  <bob@proulx.com>
3857
3858         * obstack.c [DEFAULT_ALIGNMENT]: Use an intermediate type to simplify
3859         offsetof() macro construct to avoid compile failure with native HP-UX
3860         11.0 ANSI C compiler.
3861
3862 2005-01-06  Bruno Haible  <bruno@clisp.org>
3863
3864         * stpncpy.c: Remove HAVE_STPNCPY and gnu_stpncpy renaming, redundant
3865         because stpncpy.m4 takes care of it.
3866
3867 2004-01-24  Bruno Haible  <bruno@clisp.org>
3868
3869         * progreloc.c (xstrdup): Define as strdup if no xmalloc should be used.
3870
3871 2003-10-09  Bruno Haible  <bruno@clisp.org>
3872
3873         * progreloc.c: Include xalloc.h instead of xmalloc.h.
3874
3875 2005-01-06  Bruno Haible  <bruno@clisp.org>
3876
3877         * fwriteerror.h (fwriteerror): Change specification to include fclose.
3878         * fwriteerror.c: Include <stdbool.h>.
3879         (fwriteerror): At the end, close the file stream. Record whether
3880         stdout was already closed.
3881
3882 2004-05-27  Bruno Haible  <bruno@clisp.org>
3883
3884         * execute.c (environ): Declare if needed.
3885         * pipe.c (environ): Likewise.
3886         Reported by Michael Schloh von Bennewitz <michael.schloh@cw.com>.
3887
3888 2005-01-04  Paul Eggert  <eggert@cs.ucla.edu>
3889
3890         * human.c (SIZE_MAX, UINTMAX_MAX): Move these conditional
3891         definitions to be after all include files, to avoid collisions.
3892         Problem reported by Bob Proulx.
3893
3894 2004-12-28  Paul Eggert  <eggert@cs.ucla.edu>
3895
3896         * error.c [!_LIBC && !ENABLE_NLS]: Do not include "gettext.h";
3897         not needed.  This removes a dependency on the gettext module.
3898         [defined _LIBC]: Do not include <libintl.h>; not needed.
3899
3900 2004-12-24  Paul Eggert  <eggert@cs.ucla.edu>
3901
3902         * c-strtod.c (STRTOD): Depend on HAVE_C99_STRTOLD, not
3903         HAVE_DECL_STRTOLD.
3904
3905 2004-12-23  Paul Eggert  <eggert@cs.ucla.edu>
3906
3907         * argp-parse.c: Include <stddef.h>.
3908         (alignof, alignto): New macros.
3909         (parser_init): Don't assume that void * is aligned sufficiently
3910         for struct option.
3911
3912         * getdate.y (YYSTACK_USE_ALLOCA): Define to 0, since there's no
3913         need to extend the stack.
3914         (YYINITDEPTH): New macro, so that the initial stack isn't overly
3915         large.
3916
3917 2004-12-22  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
3918
3919         * argp-parse.c (parser_init): Avoid arithmetics on void pointers.
3920
3921 2004-12-19  Paul Eggert  <eggert@cs.ucla.edu>
3922
3923         * alloca_.h: Conditionalize on _GNULIB_ALLOCA_H, not _ALLOCA_H.
3924         Remove now-obsolete comment about AIX.
3925         * getdate.y: Include <alloca.h> only if HAVE_ALLOCA.
3926         (YYSTACK_USE_ALLOCA): Define to 0 if !HAVE_ALLOCA.
3927         (YYMAXDEPTH): New macro.
3928
3929 2004-12-18  Bruno Haible  <bruno@clisp.org>
3930
3931         * fatal-signal.c (fatal_signals): Make non-const.
3932         (init_fatal_signals): New function.
3933         (uninstall_handlers, install_handlers): Ignore signals that were set to
3934         SIG_IGN.
3935         (at_fatal_signal): Call init_fatal_signals.
3936         (init_fatal_signal_set): Likewise. Ignore signals that were set to
3937         SIG_IGN.
3938         Reported by Paul Eggert.
3939
3940 2004-12-08  Paul Eggert  <eggert@cs.ucla.edu>
3941
3942         * getdate.y (textint): New member "negative".
3943         (time_zone_hhmm): New function.
3944         Expect 14 shift-reduce conflicts, not 13.
3945         (o_colon_minutes): New rule.
3946         (time, zone): Use it to add support for +HH:MM, UTC+HH:MM.
3947         (yylex): Set the "negative" member of signed numbers.
3948
3949 2004-12-04  Paul Eggert  <eggert@cs.ucla.edu>
3950
3951         Changes imported from coreutils.
3952         * hard-locale.c: Assume <locale.h> exists.
3953         Include "strdup.h".
3954         (GLIBC_VERSION): New macro.
3955         (hard_locale): Assume setlocale exists.
3956         Rewrite to avoid #ifdef.
3957         Use strdup rather than malloc + strcpy.
3958         * human.c: Assume <locale.h> exists.
3959         (human_readable): Assume localeconv exists.
3960
3961 2004-12-01  Jakub Jelinek  <jakub@redhat.com>
3962
3963         * mktime.c (__mktime_internal): If SEC_REQUESTED != SEC,
3964         convert T2, not T.  (Imported from libc.)
3965
3966 2004-11-30  Paul Eggert  <eggert@cs.ucla.edu>
3967
3968         * getcwd.c (is_ENAMETOOLONG): New macro.
3969         (__getcwd.c): Don't restore errno; glibc doesn't.
3970         [HAVE_PARTLY_WORKING_GETCWD && !defined AT_FDCWD]: Try system getcwd
3971         first, falling back to our code only if its results look suspicious.
3972         Ensure that the resulting buffer is only as large as necessary.
3973
3974         * readutmp.c: Include readutmp.h first.
3975         Include <errno.h>, since readutmp.h no longer does that.
3976         * readutmp.h: Don't include <errno.h>,
3977         <sys/param.h>, <time.h>; not needed to establish interface.
3978         (errno): Remove decl.
3979         (HAVE_STRUCT_XTMP_UT_TYPE): Remove; no longer needed.
3980         (UT_TYPE_EQ, UT_TYPE_NOT_DEFINED, UT_TYPE_BOOT_TIME,
3981         UT_TYPE_USER_PROCESS, IS_USER_PROCESS): New macros.
3982
3983 2004-11-28  Simon Josefsson  <jas@extundo.com>
3984
3985         * base64.h, base64.c: New file.
3986
3987 2004-11-27  Paul Eggert  <eggert@cs.ucla.edu>
3988
3989         * getcwd.h: New file, which I forgot to check in on 2004-11-25.
3990
3991 2004-11-25  Paul Eggert  <eggert@cs.ucla.edu>
3992
3993         Fix problems reported by Scott S. Tinsley for HP-UX 11.11 using
3994         HP's ANSI C compiler.
3995         * fsusage.c (statvfs) [HAVE_SYS_STATVFS_H]: Remove decl.
3996         Declaring int functions causes warnings on some modern systems and
3997         shouldn't be needed to compile on ancient ones.
3998         * same.c (MIN) [defined MIN]: Don't define, since it's already
3999         defined.
4000
4001         * getcwd.c: Replace by a copy of glibc/sysdeps/posix/getcwd.c, but
4002         with the following changes.
4003         (__set_errno): Parenthesize properly.
4004         Include <stdbool.h>.
4005         (MIN, MAX, MATCHING_INO): New macros.
4006         (__getcwd): Define with prototype, not K&R form.
4007         Use heuristics to allocate default buffer on stack if possible.
4008         If AT_FDCWD is defined, use openat and fstatat to avoid O(N**2)
4009         behavior, and to avoid the PATH_MAX limit when computing
4010         ../../../../...
4011         Use MATCHING_INO to compare inode number to file.
4012         Check for arithmetic overflow in size calculations.
4013         Fix bug in reallocation of dot array that caused getcwd to fail
4014         on directories nested deeper than 75.
4015         Be more careful about saving errno on error.
4016         Do not use realloc; use only free+malloc, as this is a bit
4017         more flexible and avoids a needless copy operation.
4018         Do not inspect st_dev and st_ino for symbolic links; POSIX
4019         doesn't specify the latter.
4020         Check for closedir errors.
4021         Avoid needless casts.
4022         Use "#ifdef weak_alias" around weak_alias, to be like other
4023         glibc code.
4024         The following changes to getcwd.c have effect only when used in
4025         gnulib; they have no effect inside glibc proper.
4026         (#pragma alloca) [defined _AIX && !defined __GNUC__]: Remove,
4027         as alloca isn't used.
4028         (alloca, __alloca): Likewise.
4029         [!_LIBC]: Include "getcwd.h", "mempcpy.h".
4030         Include <stddef.h>, <stdlib.h>, <string.h>, <limits.h>
4031         unconditionally, as gnulib assumes C89 or better.
4032         Do not include <sys/param.h>.
4033         (errno) [!defined __GNU_LIBRARY__ && !defined STDC_HEADERS]: Remove
4034         no-longer-necessary 'extern int errno' decl; gnulib assumes C89 or
4035         better.
4036         (NULL) [!defined NULL]: Remove; we assume C89 or better.
4037         Include <dirent.h> in a way that is compatible with modern Autoconf.
4038         (_D_ALLOC_NAMELEN, _D_EXACT_NAMLEN):
4039         New macros, if not already defined.
4040         Include <unistd.h> if _LIBC, not if __GNU_LIBRARY__.
4041         Use "_LIBC", not "defined _LIBC", for consistency.
4042         (HAVE_MEMPCPY): Remove; no longer needed now that gnulib has
4043         a mempcpy module.
4044         (__lstat, __closedir, __opendir, __readdir) [!_LIBC]: New macros.
4045         (GETCWD_RETURN_TYPE): Remove.  All uses replaced by char *.
4046         * xgetcwd.c: David MacKenzie's old code was removed, so give
4047         credit only to Jim Meyering and adjust the copyright dates.
4048         Do not include <limits.h>, <stdio.h>, <sys/types.h>,
4049         <stdlib.h>, <unistd.h>, "pathmax.h".
4050         Instead, include "xgetcwd.h" (first) and "getcwd.h".
4051         (INITIAL_BUFFER_SIZE): Remove.
4052         (xgetcwd): Rely on getcwd, since we now depend on a reliable one.
4053
4054 2004-11-23  Jim Meyering  <jim@meyering.net>
4055
4056         * getopt_.h: Remove trailing blanks.
4057
4058 2004-11-23  Paul Eggert  <eggert@cs.ucla.edu>
4059
4060         * utimens.c (__attribute__, ATTRIBUTE_UNUSED): New macros.
4061         (futimens): New function, which uses futimes if available.
4062         (futimens, utimens): Support timespec==NULL, with same semantics
4063         as utime and utimens.
4064         * utimens.h (futimens): New decl.
4065
4066 2004-11-23  Jim Meyering  <jim@meyering.net>
4067
4068         * __fpending.c: Add comment.
4069
4070 2004-11-23  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
4071
4072         * getopt_.h: Re-addition of __getopt_argv_const caused
4073         redefinition warnings. To avoid them, include the defines
4074         in `#if !defined __need_getopt ... #endif'. The only place
4075         where __getopt_argv_const is used is in definitions
4076         of getopt_long and getopt_long_only below, which are as well
4077         protected by `#ifndef __need_getopt'.
4078         [defined __GETOPT_PREFIX && !defined __need_getopt]: Undef
4079         __need_getopt after including <stdio.h> and <unistd.h> These
4080         headers might have defined it.
4081
4082 2004-11-20  Paul Eggert  <eggert@cs.ucla.edu>
4083
4084         * getopt_.h (__GETOPT_CONCAT, __GETOPT_XCONCAT, __GETOPT_ID):
4085         New macros.
4086         (getopt, getopt_long, getopt_long_only, optarg, opterr, optind,
4087         optopt): Use them instead of invoking ## directly; otherwise, the
4088         symbols will be __GETOPT_PREFIXgetopt rather than rpl_getopt.
4089
4090 2004-11-19  Bruno Haible  <bruno@clisp.org>
4091
4092         * strtok_r.c: Move comments from here...
4093         * strtok_r.h: ... to here.
4094
4095 2004-11-17  Paul Eggert  <eggert@cs.ucla.edu>
4096
4097         * realloc.c (rpl_realloc): Call 'free' if n==0, since realloc
4098         might fail.  Problem reported by Yoann Vandoorselaere.
4099         * calloc.c (rpl_calloc): Defend against buggy calloc implementations
4100         that mishandle size_t overflow.
4101
4102 2004-11-16  Paul Eggert  <eggert@cs.ucla.edu>
4103
4104         * canon-host.c: Include "strdup.h".
4105         (canon_host): Use getaddrinfo if available, so that IPv6 works.
4106         Use strdup instead of malloc/strcpy to duplicate strings.
4107
4108         * human.h (LONGEST_HUMAN_READABLE): Add 1 for space before unit.
4109         (human_space_before_unit): New constant.
4110         * human.c (human_readable): Support it.
4111
4112         * xgetcwd.c: Include <limits.h>, for PATH_MAX.
4113         (xgetcwd): Set errno correctly when failing.
4114         Work around Solaris 9 bug: getcwd sets errno==ERANGE even though
4115         the failure is actually due to a PATH_MAX problem.
4116
4117         Further getopt changes to make it more likely that glibc will
4118         buy the changes back.
4119         * getopt.c (POSIXLY_CORRECT): New constant.
4120         (getopt): Use it, so to preserve glibc semantic
4121         * getopt1.c (getopt_long, getopt_long_only): Arg is char * const *
4122         when compiling for libc.
4123         * getopt_.h (__getopt_argv_const): Bring it back.
4124         (getopt_long, getopt_long_only): Use it.
4125
4126         * getopt.c (_getopt_initialize, _getopt_internal_r, _getopt_internal):
4127         New arg POSIXLY_CORRECT.  All callers changed.
4128         (getopt): Argv is now char * const *, as per standard.
4129         (_getopt_internal_r, _getopt_internal): Argv is now char **,
4130         not char *__getopt_argv_const *.
4131         * getopt1.c (getopt_long, _getopt_long_r, getopt_long_only,
4132         _getopt_long_only_r): Likewise.
4133         * getopt_.h (getopt, getopt_long, geopt_long_only): Likewise.
4134         * getopt_int.h (_getopt_internal, _getopt_internal_r,
4135         _getopt_long_r, _getopt_long_only_r): Likewise.
4136         * getopt_.h (__getopt_argv_const): Remove.
4137         (getopt): Argv is now char * const *, as per standard.
4138
4139         * getdate.y (tORDINAL): New token.
4140         (day, relunit): Allow it for relative times.
4141         (relative_time_table): Use tORDINAL for ordinals.
4142
4143 2004-11-15  Jim Meyering  <jim@meyering.net>
4144
4145         * closeout.c: Include "__fpending.h" once again.
4146         Include <stdbool.h>.
4147         (close_stdout): Don't fail just because stdout was closed initially,
4148         since some programs don't write to stdout in the normal course of
4149         operation (other than --version and --help), and we don't want this
4150         function to make e.g. `touch file >&-' fail.
4151         But do fail if it was closed and someone has tried to write to it.
4152         E.g., `printf foo >&-' must fail.
4153
4154 2004-11-11  Simon Josefsson  <jas@extundo.com>
4155
4156         * strtok_r.h, strtok_r.c: New file.
4157
4158 2004-11-11  Paul Eggert  <eggert@cs.ucla.edu>
4159
4160         * getopt_.h (__getopt_argv_const): New macro, to be used so that
4161         we can stop lying to compilers about the constness of argv when we
4162         are compiled outside glibc.
4163         (getopt, getopt_long, getopt_long_only): Use it.
4164         * getopt.c (_getopt_initialize, _getopt_internal_r, _getopt_internal,
4165         getopt): Likewise.
4166         * getopt1.c (getopt_long, _getopt_long_r, getopt_long_only,
4167         _getopt_long_only_r): Likewise.
4168         * getopt_int.h (_getopt_internal, _getopt_internal_r, _getopt_long_r,
4169         _getopt_long_only_r): Likewise.
4170
4171         * getopt_.h [defined __GETOPT_PREFIX && !defined __need_getopt]:
4172         Include <stdlib.h> and <stdio.h>, and <unistd.h> if available.
4173         Then rename getopt to __GETOPT_PREFIX##getopt, and so forth for
4174         the other external symbols.
4175         (getopt) [!defined __GNU_LIBRARY]: Use prototype, not old-style
4176         declaration, since the above renaming now works around collisions.
4177
4178 2004-11-11  Jim Meyering  <jim@meyering.net>
4179
4180         * linebreak.c: Remove trailing blanks.
4181         * alloca_.h: Likewise.
4182         * acosl.c: Likewise.
4183         * euidaccess.c: Likewise.
4184         * allocsa.h: Likewise.
4185
4186 2004-11-10  Paul Eggert  <eggert@cs.ucla.edu>
4187
4188         * mktime.c (SHR): New macro, which is a portable
4189         substitute for >> that should work even on Crays.
4190         (TIME_T_MIDPOINT, ydhms_diff, __mktime_internal): Use it.
4191         Problem reported by Mark D. Baushke in
4192         <http://lists.gnu.org/archive/html/bug-gnulib/2004-11/msg00071.html>.
4193         * getdate.y (SHR): Likewise.
4194         (tm_diff): Use it.
4195         * strftime.c (SHR): Likewise.
4196         (tm_diff): Use it.
4197         * quotearg.c (struct quoting_options): Use unsigned int for
4198         quote_these_too, so that right shifts are well defined.  All uses
4199         changed.
4200
4201 2004-11-10  Simon Josefsson  <jas@extundo.com>
4202
4203         * getaddrinfo.h, getaddrinfo.c: New files.
4204
4205 2004-11-10  Jim Meyering  <jim@meyering.net>
4206
4207         Ensure that no close failure goes unreported.
4208         * closeout.c (close_stdout): Always close stdout.  I.e., don't
4209         return early when it seems there's nothing to flush.
4210         Don't include __fpending.h.
4211
4212 2004-11-09  Paul Eggert  <eggert@cs.ucla.edu>
4213
4214         * strftime.c (DO_MULTIBYTE): Check for wchar.h, too.
4215
4216 2004-11-05  Bruno Haible  <bruno@clisp.org>
4217
4218         * readlink.c: Include stddef.h, needed for size_t on Woe32.
4219         Reported by Mark D. Baushke <mdb@cvshome.org>.
4220
4221 2004-11-04  Bruno Haible  <bruno@clisp.org>
4222
4223         2004-09-11  Bruno Haible  <bruno@clisp.org>
4224                 * allocsa.valgrind: New file.
4225         2004-02-06  Bruno Haible  <bruno@clisp.org>
4226                 * allocsa.h (sa_alignof): Define differently with HP-UX cc, to
4227                 avoid a bug of this cc on HP-UX 10.20 dealing with enums.
4228                 Reported by Christopher Seip <chris.seip@hp.com>.
4229
4230 2004-11-03  Paul Eggert  <eggert@cs.ucla.edu>
4231
4232         * xreadlink.c (xreadlink): AIX and HP-UX readlink return -1
4233         with errno == ERANGE if the buffer is too small.
4234         Problem reported by Mark D. Baushke.
4235
4236 2004-11-02  Paul Eggert  <eggert@cs.ucla.edu>
4237
4238         * xreadlink.c (MAXSIZE): New macro.
4239         (xreadlink): Use it instead of SSIZE_MAX.  Ensure initial buffer
4240         size does not exceed MAXSIZE.  Avoid cast.
4241         As suggested by Mark D. Baushke in
4242         <http://lists.gnu.org/archive/html/bug-gnulib/2004-11/msg00009.html>,
4243         if readlink fails with buffer size just under MAXSIZE, try again
4244         with MAXSIZE.
4245
4246 2004-11-02  Derek R. Price  <derek@ximbiot.com>
4247         and  Paul Eggert  <eggert@cs.ucla.edu>
4248
4249         * getdate.y [!TEST]: Include <stdio.h>, since we use sprintf now.
4250         (get_date): Overparenthesize to avoid GCC warning.
4251
4252 2004-11-02  Bruno Haible  <bruno@clisp.org>
4253
4254         * setenv.h (unsetenv): Define as a macro if the system's unsetenv()
4255         function returns void.
4256
4257 2004-11-01  Paul Eggert  <eggert@cs.ucla.edu>
4258
4259         * getpass.c (fflush_unlocked, flockfile, funlockfile)
4260         (funlockfile, fputs_unlocked, putc_unlocked): Don't define if
4261         already declared.
4262
4263 2004-10-29  Paul Eggert  <eggert@cs.ucla.edu>
4264
4265         * getdate.y: Add support for TZ="foo" within a date string.
4266         Fix some bugs near time_t boundaries.  Reject dates with
4267         out-of-range components, e.g., "Sept 31".
4268         Include <stdlib.h>, "setenv.h", "xalloc.h".
4269         (ISDIGIT_LOCALE): Remove; unused.
4270         Note that the TZ and time functions used here are not reentrant.
4271         (mktime_ok, get_tz): New functions.
4272         (TZBUFSIZE): New constant.
4273         (get_date): Parse leading TZ="foo".  Reject out-of-range components;.
4274         This requires that we sometimes generate our own TZ="XXX..." setting.
4275
4276 2004-10-27  Derek R. Price  <derek@ximbiot.com>
4277
4278         * mktime.c (not_equal_tm): Remove redundant check.
4279
4280 2004-10-24  Paul Eggert  <eggert@cs.ucla.edu>
4281
4282         * getdate.y: Use Bison 1.875 features, and some minor
4283         code cleanups.  This change does not affect semantics.
4284         Don't include <stdlib.h>; no longer needed.
4285         Don't include unlocked-io.h; only the "#if TEST" code uses
4286         stdio, and performance isn't crucial there.
4287         (PC, YYLEX_PARAM, YYPARSE_PARAM): Remove; replaced by
4288         Bison 1.875 features as described below.
4289         All uses of "PC." replaced by "pc->".
4290         (YYSTYPE): Add a forward declaration.
4291         (yylex, yyerror): Use full prototypes in forward decls.
4292         Use "%pure-parser" rather than obsolescent "%pure_parser".
4293         Use %parse-param and %lex-param instead of obsolescent
4294         YYPARSE_PARAM and YYLEX_PARAM.
4295         (meridian_table, month_and_day_table, time_units_table,
4296         relative_time_table, time_zone_table, military_table,
4297         lookup_zone, lookup_word, get_date):
4298         Use NULL instead of 0 where appropriate.
4299         (to_hour): Avoid abort (), to avoid a dependency on
4300         stdlib.h.
4301         (yyerror, yylex): Now accepts parser_control * arg.
4302         (main) [TEST]: Use '\0' rather than 0 for char.
4303
4304 2004-10-22  Paul Eggert  <eggert@cs.ucla.edu>
4305
4306         * getpagesize.c (getpagesize): Don't assume <sys/param.h> exists.
4307         It's now the caller's responsibility to handle the case where
4308         !HAVE_GETPAGESIZE && !defined getpagesize.
4309
4310         * mktime.c (leapyear): Arg is long int, not int.
4311
4312 2004-10-18  Paul Eggert  <eggert@cs.ucla.edu>
4313
4314         * argp-fs-xinl.c, argp-xinl.c: Update from glibc.
4315
4316 2004-10-12  Simon Josefsson  <jas@extundo.com>
4317
4318         * getpass.c (fflush_unlocked, flockfile, funlockfile)
4319         (fputs_unlocked, putc_unlocked) [!_LIBCS && !USE_UNLOCKED_IO]: Map
4320         to real functions.
4321
4322 2004-10-11  Yoann Vandoorselaere  <yoann@prelude-ids.org>
4323
4324         * vsnprintf.h: New file.
4325         * vsnprintf.c: New file.
4326
4327 2004-10-07  Bruno Haible  <bruno@clisp.org>
4328
4329         * snprintf.c (snprintf): Avoid a memory allocation if the result fits
4330         into the provided buffer.
4331
4332 2004-10-06  Paul Eggert  <eggert@cs.ucla.edu>
4333
4334         * diacrit.c, diacrit.h: Add GPL notice.
4335
4336         * atanl.c, logl.c: Add GPL notice, to match glibc's added LGPL notice.
4337         * atanl.c (atanl): Keep the code as similar to glibc as possible.
4338         * logl.c (logl): Keep the code as similar to glibc as possible.
4339         This avoids a potential constant-folding bug.
4340
4341 2004-10-05  Bruno Haible  <bruno@clisp.org>
4342
4343         * strsep.h: Don't declare strsep() if HAVE_STRSEP.
4344
4345 2004-10-04  Paul Eggert  <eggert@cs.ucla.edu>
4346
4347         * xalloc.h (xmemdup): Renamed from xclone.  All uses changed.
4348         * xmalloc.c (xmemdup): Likewise.
4349         * xalloc.h (CCLONE, CLONE, NEW, XCALLOC, XMALLOC, XREALLOC,
4350         XFREE): Remove these long-obsolescent macros.
4351         * xmalloc.c (xstrdup): Implementation moved here from xstrdup.c
4352         * xstrdup.c: Remove.
4353
4354         * regex.c (re_comp): Cast gettext return value to char *,
4355         Problem reported by Martin Neitzel via Mark D. Baushke.
4356
4357 2004-10-04  Simon Josefsson  <jas@extundo.com>
4358
4359         * error.c, md5.c, regex.c: Use '#if USE_UNLOCKED_IO' instead of
4360         '#ifdef USE_UNLOCKED_IO'.
4361
4362 2004-10-04  Paul Eggert  <eggert@cs.ucla.edu>
4363
4364         * argmatch.c, closeout.c, error.c, exclude.c, getdate.y,
4365         getndelim2.c, getpass.c, getusershell.c, linebuffer.c,
4366         md5.c, mountlist.c, posixtm.c, readtokens.c, readutmp.c,
4367         regex.c, sha1.c, version-etc.c, yesno.c:
4368         Include "unlocked-io.h" only if USE_UNLOCKED_IO.
4369         * unlocked-io.h: Don't worry about USE_UNLOCKED_IO; that's now
4370         the includer's responsibility.
4371
4372         Sync from coreutils.
4373
4374         * modechange.c (mode_compile): Don't decrement a pointer that
4375         points to the start of a string, as the C Standard says the
4376         resulting behavior is undefined.
4377
4378         * backupfile.h (enum backuptype): Rename none -> no_backups,
4379         simple -> simple_backups, numbered_existing ->
4380         numbered_existing_backups, numbered -> numbered_backups
4381         to avoid shadowing problems.  All uses changed.
4382         * argmatch.c (enum backuptype) [defined TEST]: Likewise.
4383         * backupfile.c (check_extension, numbered_backup):
4384         Rename locals to avoid shadowing 'basename'.
4385         * backupfile.h (VALID_BACKUP_TYPE): Don't evaluate arg more than
4386         once.
4387
4388         * .cppi-disable: Add getopt_.h, getopt_int.h.
4389         * .cvsignore: Add getopt.h.
4390
4391 2004-10-04  Simon Josefsson  <jas@extundo.com>
4392
4393         * memmem.h: New file.
4394         * memmem.c: New file, taken from glibc.
4395
4396 2004-10-02  Jim Meyering  <jim@meyering.net>
4397
4398         * dirfd.h, getpagesize.h: Add copyright notice.
4399
4400 2004-10-01  Paul Eggert  <eggert@cs.ucla.edu>
4401
4402         * snprintf.c: Remove comments as to why each header is needed.
4403
4404 2004-10-01  Yoann Vandoorselaere <yoann@prelude-ids.org>
4405
4406         * strsep.h: New file.
4407         * strsep.c: New file.
4408
4409 2004-10-01  Simon Josefsson  <jas@extundo.com>
4410
4411         * snprintf.c (snprintf): Handle size==0.
4412
4413 2004-10-01  Simon Josefsson  <jas@extundo.com>
4414             Bruno Haible  <bruno@clisp.org>
4415
4416         * snprintf.c: Include <stdarg.h>, <stdlib.h>, <string.h>.
4417         (snprintf): Declare 'args'.
4418
4419 2004-09-30  Simon Josefsson  <jas@extundo.com>
4420
4421         * snprintf.h, snprintf.c: New files.
4422
4423 2004-09-30  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
4424
4425         * argp-help.c (canon_doc_option): Fixed coredump if *name==NULL
4426         (hol_entry_help): Never translate an empty string.
4427         Do not translate option tag (opt->name) if OPTION_NO_TRANS is set
4428         * argp.h (OPTION_NO_TRANS): New option.
4429
4430 2004-09-29  Oskar Liljeblad  <oskar@osk.mine.nu>
4431
4432         * xvasprintf.c: Include xalloc.h.
4433         (xvasprintf): Use xalloc_die, not xmalloc_die.
4434
4435 2004-09-28  Paul Eggert  <eggert@cs.ucla.edu>
4436
4437         * dummy.c: Change copyright notice to FSF, and license to GPL.
4438
4439 2004-09-13  Paul Eggert  <eggert@cs.ucla.edu>
4440
4441         * argp-pvh.c (argp_program_version_hook): Provide initial value.
4442         Problem reported by Bruno Haible in:
4443         http://lists.gnu.org/archive/html/bug-tar/2004-09/msg00023.html
4444
4445 2004-09-11  Paul Eggert  <eggert@cs.ucla.edu>
4446
4447         * mempcpy.h: Wrap the entire include file inside #ifndef mempcpy,
4448         in case some system header has #define'd it.  Problem reported by
4449         Soeren D. Schulze in
4450         <http://lists.gnu.org/archive/html/bug-gnulib/2004-09/msg00017.html>.
4451
4452 2004-09-08  Bruno Haible  <bruno@clisp.org>
4453
4454         * stdint_.h: New file, taken from GNU clisp.
4455
4456 2004-09-08  Oskar Liljeblad  <oskar@osk.mine.nu>
4457
4458         * xvasprintf.h: New file.
4459         * xvasprintf.c: New file.
4460         * xasprintf.c: New file.
4461
4462 2004-09-08  Bruno Haible  <bruno@clisp.org>
4463
4464         * vasnprintf.c (VASNPRINTF): Signal EOVERFLOW if the resulting length
4465         is > INT_MAX.
4466         * vasprintf.c (vasprintf): Don't test for length > INT_MAX any more.
4467
4468 2004-08-19  Paul Eggert  <eggert@cs.ucla.edu>
4469
4470         Import from coreutils.
4471         * userspec.c: Don't use <alloca.h>, so that we don't use alloca on
4472         strings on unbounded length.  alloca's performance benefits aren't
4473         that important here.
4474         (V_STRDUP): Remove.
4475         (parse_with_separator): New function, with most of the internals
4476         of the old parse_user_spec.  Allow user to omit both user and group,
4477         for compatibility with FreeBSD.
4478         Clone only the user name, not the entire spec.
4479         Do not set *uid, *gid unless entirely successful.
4480         Avoid memory leak in some failing cases.
4481         Fix regression for USER.GROUP reported by Dmitry V. Levin in
4482         <http://lists.gnu.org/archive/html/bug-coreutils/2004-08/msg00102.html>
4483         (parse_user_spec): Rewrite to use parse_with_separator.
4484
4485 2004-08-12  Paul Eggert  <eggert@cs.ucla.edu>
4486
4487         * argp-help.c, argp-parse.c: Use "gettext.h" instead of
4488         its complicated substitute.
4489         * argp-help.c: Include <errno.h>, for program_invocation_short_name
4490         and program_invocation_name.
4491         (__argp_basename) [!_LIBC]: Remove; the only use was
4492         replaced by its body.
4493         (__argp_short_program_name): Change condition from
4494         !defined __argp_short_program_name to
4495         ! (defined _LIBC || HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME),
4496         to match argp-namefrob.h.
4497         (__argp_failure): Don't assume strerror_r returns char *.
4498         * argp-parse.c (N_): Define unconditionally.
4499         (argp_default_options): Fill out initializers with 0 to avoid
4500         gcc warnings.
4501
4502 2004-08-12  Simon Josefsson  <jas@extundo.com>
4503
4504         * getopt.c, getopt1.c: Remove ELIDE_CODE hack.
4505         * getopt_.h: Renamed from getopt.h.
4506
4507 2004-08-11  Paul Eggert  <eggert@cs.ucla.edu>
4508
4509         Merge from coreutils.
4510
4511         * fnmatch.c (WIDE_CHAR_SUPPORT): Don't set to 1 if missing
4512         wmemchr or wmemcpy.  Problem reported by Robert Dahlem
4513         for Reliant Unix 5.43.
4514
4515         * obstack.c: Include <inttypes.h> and <stdint.h> if available.
4516         (union fooround): Use uintmax_t, not long int.
4517         The rest is a merge from libc:
4518         [defined _LIBC]: Include <shlib-compat.h>.
4519         (_obstack) [defined _LIBC]: Remove after 2.3.4.
4520
4521         * settime.c (settime): Recode to avoid warning with Sun Forte C 6U2.
4522
4523         * strverscmp.c: Convert to UTF-8.
4524
4525 2004-08-09  Paul Eggert  <eggert@cs.ucla.edu>
4526
4527         * obstack.h (obstack_empty_p):
4528         Don't assume that chunk->contents is suitably aligned.
4529         * obstack.c (_obstack_begin, _obstack_begin_1, _obstack_newchunk):
4530         Likewise. Problem reported by Benno in
4531         <http://sources.redhat.com/ml/libc-alpha/2004-08/msg00055.html>.
4532
4533         * chown.c (rpl_chown): Work even if the file is writeable but not
4534         readable.  This could be improved further but it'd take some work.
4535
4536 2004-08-08  Simon Josefsson  <jas@extundo.com>
4537
4538         * xgethostname.c: Don't include error.h (not used).
4539
4540         * getpass.h: Add.
4541         * getpass.c: Include getpass.h first.
4542
4543 2004-08-08  Paul Eggert  <eggert@cs.ucla.edu>
4544
4545         * xalloc-die.c: New files.
4546         * xalloc.h (xalloc_fail_func, xalloc_msg_memory_exhausted): Remove.
4547         All uses removed.
4548         * xmalloc.c (xalloc_fail_func, xalloc_msg_memory_exhausted): Likewise.
4549         Move inclusions of gettext.h, error.h, exitfail.h to xalloc-die.c.
4550         (_, N_, xalloc_die): Move to xalloc-die.c.
4551         * userspec.c (parse_user_spaec): Use xstrdup rather than strdup,
4552         so that we needn't mess with xalloc_msg_memory_exhausted.
4553
4554         * sha1.h: Renamed from sha.h.
4555         (SHA1_H): Renamed from _SHA_H.
4556         (sha1_ctx): Renamed from sha_ctx.
4557         (sha1_init_ctx): Renamed from sha_init_ctx.
4558         (sha1_process_block): Renamed from sha_process_block.
4559         (sha1_process_bytes): Renamed from sha_process_bytes.
4560         (sha1_finish_ctx): Renamed from sha_finish_ctx.
4561         (sha1_read_ctx): Renamed from sha_read_ctx.
4562         (sha1_stream): Renamed from sha_stream.
4563         (sha1_buffer): Renamed from sha_buffer.
4564         * sha1.c: Likewise; renamed from sha.c.
4565         Do not include <sys/types.h>.
4566         Include <stddef.h> rather than <stdlib.h>.
4567
4568 2004-08-08  Bruno Haible  <bruno@clisp.org>
4569
4570         * pathname.h (FILE_SYSTEM_PREFIX_LEN): Renamed from
4571         FILESYSTEM_PREFIX_LEN.
4572         * progreloc.c: Likewise.
4573         * concatpath.c (concatenated_pathname): Use FILE_SYSTEM_PREFIX_LEN.
4574
4575 2004-08-06  Paul Eggert  <eggert@cs.ucla.edu>
4576
4577         Merge from tar.
4578         * argp-help.c (make_hol, hol_append): Don't assume that
4579         SIZE_MAX is a valid preprocessor constant.
4580         (__argp_basename): Change from "#ifndef _LIBC"
4581         to "#ifndef __argp_short_program_name", so that
4582         we don't compile these functions for tar.
4583
4584         More merges from coreutils.
4585         * raise.c, readtokens0.h, readtokens0.c, strftime.h, utimens.h,
4586         utimens.c, utimecmp.h, utimecmp.c, xnanosleep.h, xnanosleep.c,
4587         yesno.h: New files.
4588         * addext.c: Remove; no longer needed.
4589         * yesno.c, argmatch.h, argmatch.c, backupfile.h, backupfile.c,
4590         euidaccess.c, filemode.c, closeout.c, dup2.c, exclude.c,
4591         fileblocks.c, filemode.c, fnmatch.c, fnmtahc_loop.c,
4592         fopen-safer.c, fsusage.c, fsusage.h, ftruncate.c, full-write.c,
4593         getdate.y, getloadavg.c, getugroups.c, hard-locale.c, hard-locale.h,
4594         hash.c, human.c, human.h, lchown.c, lchown.h, makepath.c, makepath.h,
4595         md5.c, md5.h, memchr.c, memcoll.c, memrchr.c, modechange.c,
4596         modechange.h, mountlist.c, mountlist.h, nanosleep.c, posixtm.c,
4597         putenv.c, quotearg.c, quotearg.h, readtokens.c, readutmp.c,
4598         readutmp.h, rmdir.c, safe-read.c, save-cwd.c, savedir.c, setenv.c,
4599         sig2str.c, stat.c, strtoimax.c, strverscmp.c, userspec.c, utime.c,
4600         version-etc.c., xgethostname.c, xmemcoll.c, xreadlink.c, xstrtod.c,
4601         xstrtod.h, xstrtoimax.c, xstrtol.c, xstrtol.h, xstrtoumax.c:
4602         Import changes from coreutils.
4603
4604 2004-08-05  Paul Eggert  <eggert@cs.ucla.edu>
4605
4606         Merge from coreutils.
4607
4608         * .gdb-history: Remove; this doesn't belong here.
4609
4610         * c-strtod.c, c-strtod.h, c-strtold.c, cycle-check.c,
4611         cycle-check.h, dev-ino.h, canonicalize.h, canonicalize.c,
4612         fcntl-safer.h, fcntl-safer.c, getcwd.c: New files.
4613
4614         * dirname.h: Include <stdbool.h>.
4615         (FILE_SYSTEM_PREFIX_LEN): Renamed from FILESYSTEM_PREFIX_LEN,
4616         for consistency with POSIX terminology.  All uses changed.
4617         (IS_ABSOLUTE_FILE_NAME, IS_RELATIVE_FILE_NAME): New macros.
4618         (strip_trailing_slashes): Use bool for booleans.
4619         * stripslash.c (strip_trailing_slashes): Likewise.
4620
4621         * error.c: Work around bug in OpenBSD 3.4 sterror_r: it
4622         sometimes returns a positive errno value even when it succeeds.
4623         (print_errno_message) [!LIBC]: Fall back on strerror if
4624         __strerror_r fails.
4625
4626         * path-concat.c (mempcpy): Don't define if a system header defines it.
4627         Don't include stdio.h, stdlib.h, unistd.h, strdup.h.
4628         (longest_relative_suffix): New function.
4629         (path_concat): Use it.  Assume first argument is not NULL.
4630         Port to DOS.  Omit redundant separators.
4631         Report an error instead of returning NULL.
4632         Use mempcpy instead of memcpy.
4633         (xpath_concat): Remove: not declared or used.
4634
4635         * same.h: Include <stdbool.h>
4636         (same_name): Return bool, not int.
4637         * same.c (same_name): Likewise.
4638         (errno): Don't declare; we assume C89 or better now.
4639
4640         * stat-macros (S_ISCTG, S_ISOFD, S_ISOFL): New macros,
4641         if not already defined.
4642
4643         * xgetcwd.c (errno): Don't declare; we assume C89 or better now.
4644         * dup-safer.c (errno): Likewise.
4645
4646 2004-08-03  Paul Eggert  <eggert@cs.ucla.edu>
4647
4648         * fatal.c, fatal.h: Remove as the "fatal" module wasn't used or
4649         working.
4650
4651 2004-08-03  Simon Josefsson  <jas@extundo.com>
4652
4653         * strdup.h: Only use HAVE_DECL_STRDUP if defined.
4654         * progname.h: Don't include stdbool.h.
4655
4656 2004-08-02  Simon Josefsson  <jas@extundo.com>
4657
4658         * getsubopt.h: New file, with comments from Bruno Haible.
4659         * getsubopt.c: New file, from glibc, but slightly modified based on
4660         suggestions from Paul Eggert <eggert@cs.ucla.edu>.
4661
4662 2004-08-01  Simon Josefsson  <jas@extundo.com>
4663
4664         * xgetdomainname.c: Include stdlib.h, for free().
4665
4666 2004-07-16  Simon Josefsson  <jas@extundo.com>
4667
4668         * dummy.c: New file.
4669
4670 2004-07-16  Bruno Haible  <bruno@clisp.org>
4671
4672         * backupfile.h: Add extern "C" for C++.
4673         * closeout.h: Likewise.
4674         * copy-file.h: Likewise.
4675         * findprog.h: Likewise.
4676         * full-write.h: Likewise.
4677         * pathname.h: Likewise.
4678         * progname.h: Likewise.
4679         * stpcpy.h: Likewise.
4680         * stpncpy.h: Likewise.
4681         * strcase.h: Likewise.
4682         * strstr.h: Likewise.
4683         * xalloc.h: Likewise.
4684
4685         * mbswidth.h: Add extern "C" for C++.
4686         Reported by Albert Chin-A-Young <china@thewrittenword.com>.
4687
4688 2004-07-09  Simon Josefsson  <jas@extundo.com>
4689
4690         * getndelim2.c: Include stddef.h, for ptrdiff_t.  (FreeBSD 4.9
4691         failed without this.)
4692
4693 2004-07-09  Paul Eggert  <eggert@cs.ucla.edu>
4694
4695         * fchown-stub.c: New file.
4696
4697 2004-06-24  Jim Meyering  <jim@meyering.net>
4698
4699         * obstack.h (obstack_base): Cast to (void *), per documentation.
4700
4701 2004-06-22  Paul Eggert  <eggert@cs.ucla.edu>
4702
4703         * argz.c, argz_.h: New files, which are autoupdated from libtool.
4704
4705 2004-06-01  Jim Meyering  <jim@meyering.net>
4706
4707         * calloc.c: New file.
4708
4709 2004-06-06  Paul Eggert  <eggert@cs.ucla.edu>
4710
4711         * getdate.y (yylex): Allow space between sign and number.
4712         Problem reported by Dan Jacobson.
4713
4714 2004-06-01  Paul Eggert  <eggert@cs.ucla.edu>
4715         and  Jim Meyering  <jim@meyering.net>
4716
4717         Merge from coreutils CVS.
4718
4719         * stat-macros.h: New file, with contents from file-type.h
4720         and coreutils' system.h.
4721         * file-type.c: Include "stat-macros.h".
4722         * file-type.h (file_type): Move all macro definitions to new file,
4723         stat-macros.h.
4724
4725         * chown.c (rpl_chown) [CHOWN_FAILS_TO_HONOR_ID_OF_NEGATIVE_ONE]:
4726         Wrap old code with this conditional.
4727         [CHOWN_MODIFIES_SYMLINK]: Try to work around a chown
4728         function that does not dereference symlinks.
4729         * lchown.c (lchown) [CHOWN_MODIFIES_SYMLINK]: Just call chown.
4730
4731         * xreadlink.c: Include xreadlink.h first, to catch .h file
4732         dependency problems.
4733         (xreadlink): Accept new arg SIZE, for efficiency.
4734         All decls and uses changed.
4735         * xreadlink.h: Include <stddef.h>, for size_t.
4736
4737         * .cppi-disable: Add alloca_.h, allocsa.h, exit.h, getndelim2.h,
4738         gettext.h, localcharset.h, strdup.h, strndup.h, strtoul.c, time_r.h.
4739
4740         * .cvsignore: Add alloca.h, fnmatch.h, poll.h, stdbool.h, sysexits.h.
4741
4742 2004-05-30  Paul Eggert  <eggert@cs.ucla.edu>
4743
4744         * xmalloc.c (HAVE_MALLOC, HAVE_REALLOC): Do not require these
4745         macros to be defined.
4746         (xnmalloc_inline, xnrealloc_inline, xcalloc): Do not die if
4747         the allocator returns NULL because the requested size is zero.
4748
4749 2004-05-20  Paul Eggert  <eggert@cs.ucla.edu>
4750
4751         * malloc/obstack.c (_obstack) [defined _LIBC]: Bring back this
4752         var.  Add comment explaining why libc still defines it.  This
4753         merges the following patch from glibc:
4754         http://sources.redhat.com/ml/libc-alpha/2004-05/msg00157.html
4755
4756 2004-05-19  Paul Eggert  <eggert@cs.ucla.edu>
4757
4758         * obstack.c (_obstack): Remove unused variable.  It hasn't been
4759         present in glibc since revision 1.1 of this file.
4760         * obstack.h (_obstack_free, obstack_1grow, obstack_1grow_fast,
4761         obstack_alignment_mask, obstack_alloc, obstack_base,
4762         obstack_blank, obstack_blank_fast, obstack_chunk_size,
4763         obstack_copy, obstack_copy0, obstack_finish, obstack_grow,
4764         obstack_grow0, obstack_init, obstack_int_grow,
4765         obstack_int_grow_fast, obstack_make_room, obstack_memory_used,
4766         obstack_next_free, obstack_object_size, obstack_ptr_grow,
4767         obstack_ptr_grow_fast, obstack_room): Remove declarations of
4768         nonexistent functions.
4769
4770 2004-05-17  Derek R. Price  <derek@ximbiot.com>
4771             Paul Eggert  <eggert@cs.ucla.edu>
4772
4773         * argp-help.c, argp-parse.c: Assume <alloca.h> rather than freecoding.
4774
4775 2004-05-14  Bruno Haible  <bruno@clisp.org>
4776
4777         * vasnprintf.c (VASNPRINTF): Correctly handle the case of a precision
4778         that consists of a '.' followed by an empty digit string.
4779         Patch by Tor Lillqvist <tml@iki.fi>.
4780
4781 2004-05-17  Paul Eggert  <eggert@cs.ucla.edu>
4782
4783         Port obstack to the AS/400, where pointers are 16 bytes wide and
4784         you cannot cast an integer to a valid pointer.  This patch is
4785         currently waiting to be integrated into glibc; see
4786         <http://sources.redhat.com/ml/libc-alpha/2004-05/msg00073.html>.
4787
4788         * obstack.h (__PTR_TO_INT, __INT_TO_PTR): Remove.
4789         All uses of __INT_TO_PTR (PTR_TO_INT ...) replaced by __PTR_ALIGN.
4790         (__BPTR_ALIGN, __PTR_ALIGN): New macros.
4791         (struct obstack): temp member is now a union of a pointer and
4792         an integer, instead of an integer.  All integer uses changed.
4793         This does not affect the physical layout of struct obstack,
4794         except on hosts (like the AS/400) where the size or alignment of
4795         void * is greater than that of ptrdiff_t.
4796         (obstack_finish) [! (defined __GNUC__ && defined __STDC__ &&
4797         __STDC__)]: Store temporary in pointer member of union, not
4798         integer member.
4799         * obstack.c: Include <stddef.h>, for offsetof.
4800         (struct fooalign): Remove; it doesn't need a name.
4801         (union fooround): Change double to long double, and add void *.
4802         (DEFAULT_ALIGNMENT): Use offsetof to compute.
4803         (DEFAULT_ALIGNMENT, DEFAULT_ROUNDING): Now an enum constant,
4804         not a macro.  Hence the values are always int; so remove all
4805         casts-to-int in uses.
4806
4807 2004-05-16  Paul Eggert  <eggert@cs.ucla.edu>
4808             Derek Price  <derek@ximbiot.com>
4809
4810         * alloca.c: Include <alloca.h>, to get our interface.
4811         * alloca_.h: Use __alloca on AIX, so that we don't have to
4812         include <alloca.h> first.  Use C89 prototype for alloca; this
4813         requires including <stddef.h> for size_t.  Use extern "C" if C++.
4814         Use #elif for simplicity, since we can assume C89 now.
4815         Don't try to source the system alloca.h since it will not be found
4816         and to prevent recursively including its replacement.
4817         * fnmatch.c: Include <alloca.h> instead of opencoding.
4818         * regex.c: Likewise.
4819
4820 2004-05-16  Derek Price  <derek@ximbiot.com>
4821             Paul Eggert  <eggert@cs.ucla.edu>
4822
4823         getline cleanup.  This changes the getndelim2 API: both order of
4824         arguments, and meaning of delim2 (now uses EOF, not 0, to indicate
4825         no delimiter).
4826
4827         * getline.c: Don't include stddef.h or stdio.h, since our
4828         interface does that.
4829         (getline): Always use getdelim, so that we don't have two
4830         copies of this code.
4831         * getndelim2.c: Include <limits.h>, <inttypes.h>, <stdint.h>
4832         if available.
4833         (PTRDIFF_MAX, SIZE_MAX, SSIZE_MAX): Define if not defined.
4834         (GETNDELIM2_MAXIMUM): New macro.
4835         (getndelim2): Reorder arguments.  delim==EOF now means no delimiter,
4836         instead of the old practice of delim2==0.  All callers changed.
4837         Return -1 on overflow, instead of returning junk.
4838         Do not set *linesize unless allocation succeeds.
4839         * getndelim2.h: Do not include stddef.h; no longer needed, now
4840         that we include sys/types.h.
4841         * getnline.h: Likewise.
4842         * getndelim2.h (GETNLINE_NO_LIMIT): New macro.
4843         (getndelim2): Reorder arguments.
4844         * getnline.c (getnline, getndelim):
4845         Don't discard the NMAX argument.
4846         (getnline): Invoke getndelim, to avoid code duplication.
4847         * getnline.h (GETNLINE_NO_LIMIT): New macro, used instead
4848         of (size_t) -1 by callers of the getnline family.
4849
4850 2004-05-13  Paul Eggert  <eggert@cs.ucla.edu>
4851
4852         * nanosleep.c (suspended): Change its type from int to
4853         sig_atomic_t volatile.
4854         (first_call): Make it private to rpl_nanosleep, and have it
4855         be zero initially as that's a bit faster.
4856         (my_usleep): Round up fractional times instead of truncating them,
4857         as this is the usual meaning for 'sleep'.
4858
4859         * gettime.c (gettime): Fall back on `time' if `gettimeofday'
4860         doesn't work.
4861         * settime.c: Include <unistd.h>, for stime (on Solaris 8, anyway).
4862         (ENOSYS): Define if not defined.
4863         (settime): Fall back on stime if it exists and settimeofday fails.
4864         But don't bother with fallbacks if a method fails with errno == EPERM.
4865
4866 2004-05-11  Jim Meyering  <jim@meyering.net>
4867
4868         Prior to this change, the save_cwd caller required read access to the
4869         current directory on most systems (ones with the fchdir function).
4870
4871         * save-cwd.c (save_cwd) [HAVE_FCHDIR]: If opening `.' read-only
4872         fails, try write-only, and finally, resort to using xgetcwd.
4873
4874 2004-05-06  Paul Eggert  <eggert@cs.ucla.edu>
4875
4876         * obstack.c, obstack.h: Import changes from libc.
4877
4878 2004-04-28  Bruno Haible  <bruno@clisp.org>
4879
4880         * findprog.c (find_in_path): Treat Cygwin like Windows, since it also
4881         implicitly appends .exe to executables.
4882         * localcharset.c (ISSLASH): Treat Cygwin like Windows, since it now
4883         accepts Windows pathnames.
4884         * pathname.h (ISSLASH, IS_PATH_WITH_DIR, FILESYSTEM_PREFIX_LEN): Treat
4885         Cygwin like Windows, since it now accepts Windows pathnames.
4886         * progreloc.c (ISSLASH, IS_PATH_WITH_DIR, FILESYSTEM_PREFIX_LEN): Treat
4887         Cygwin like Windows, since it now accepts Windows pathnames.
4888         Reported by Derek Robert Price <derek@ximbiot.com>.
4889
4890 2004-04-20  Jim Meyering  <jim@meyering.net>
4891
4892         * getndelim2.c (getndelim2): Upon realloc failure, don't leak memory.
4893
4894 2004-04-20  Jim Meyering  <jim@meyering.net>
4895             Bruno Haible  <bruno@clisp.org>
4896
4897         * localcharset.c (get_charset_aliases) [!VMS && !WIN32]: Don't leak
4898         memory when realloc fails.
4899
4900 2004-04-18  Jim Meyering  <jim@meyering.net>
4901
4902         * readutmp.c (read_utmp) [UTMP_NAME_FUNCTION]: Upon realloc failure,
4903         don't leak memory and do call END_UTMP_ENT.
4904
4905 2004-04-11  Paul Eggert  <eggert@twinsun.com>
4906
4907         * inttostr.h: Include <limits.h> unconditionally, since we assume C89.
4908         (CHAR_BIT): Remove, since we assume C89.
4909         Include <stdint.h> if available, as per current Autoconf CVS advice.
4910
4911 2004-03-30  Paul Eggert  <eggert@twinsun.com>
4912
4913         * cloexec.h, cloexec.c (set_cloexec_flag): Return int
4914         not bool, to be more consistent with Unix conventions.
4915         Suggested by Bruno Haible.
4916
4917         Merge from coreutils.
4918
4919         * imaxtostr.c, inttostr.c, inttostr.h, offtostr.c, umaxtostr.c:
4920         New files.
4921
4922         * getdate.h: Include stdbool.h, and timespec.h instead of
4923         the usual <time.h> dance.
4924         (get_date): Change signature to support fractional time stamps.
4925         All callers changed.
4926         * getdate.y: Include "getdate.h" first, as we can now
4927         assume C89 and don't need to worry about 'const'.
4928         Similarly, include "unlocked-io.h" near start, not in middle.
4929         Include <limits.h>.
4930         (textint.value): Use long int rather than int.
4931         (textint.digits): Use size_t rather than int.
4932         (BILLION, LOG10_BILLION): New constants.
4933         (parser_control): New member rel_ns.  Members day_ordinal,
4934         time_zone, month, day, hour, minutes, rel_year, rel_month,
4935         rel_day, rel_hour, rel_minutes, rel_seconds
4936         are now long int, not int.  Member seconds is now struct timespec,
4937         not int.  New member timespec_seen.  Members dates_seen, days_seen,
4938         local_zones_seen, rels_seen, times_seen, zones_seen are now size_t,
4939         not int.
4940         (%union.intval): Now long int, not int.
4941         New member timespec.
4942         (tSDECIMAL_NUMBER, tUDECIMAL_NUMBER): New tokens.
4943         (seconds, signed_seconds, unsigned_seconds): New nonterminals.
4944         (spec): Now is a timespec or an item list.
4945         (timespec, items): New nonterminals.
4946         (time, rel, relunit, number, get_date):
4947         Add support for fractional seconds.
4948         (time): Fix bug: seconds weren't cleared in "00:00 +0000" syntax.
4949         (gmtime, localtime, mktime): Remove decls; not needed with C89.
4950         (to_hour): First arg is now long int, not int.
4951         (to_year): Returns long int, not int.
4952         Don't treat year -70 like 70.
4953         (tm_diff): Returns long int, not int.
4954         (lookup_word): Use bool instead of int when appropriate.
4955         (yylex): Use size_t for count, not int.
4956         Detect overflow when parsing large integer constants.
4957         Add support for fractions.
4958         (get_date): Make pointers 'const' if possible.
4959         Use more-portable code to detect integer overflow.
4960         (main) [TEST]: Adjust to above changes.  Test for localtime failure.
4961         Don't use ctime; it's not reliable if the year has >4 digits.
4962
4963         * human.c (humblock): Inspect BLOCKSIZE if BLOCK_SIZE isn't set.
4964         This is for compatibility with BSD.
4965
4966         * timespec.h (ST_TIME_CMP_NS, ST_TIME_CMP): Define.
4967         (ATIME_CMP, CTIME_CMP, MTIME_CMP, TIMESPEC_NS): Likewise.
4968         From coreutils' system.h.
4969
4970         * userspec.c: Don't include "posixver.h".
4971         (parse_user_spec): Fall back on USER.GROUP parsing, regardless
4972         of POSIX version, as POSIX 1003.1-2001 allows that behavior as a
4973         compatible extension.  Simplify code by removing a boolean int
4974         that was always nonzero if a string was nonnull.
4975
4976 2004-03-30  Jim Meyering  <jim@meyering.net>
4977
4978         Merge from coreutils.
4979
4980         * mountlist.c [HAVE_SYS_UCRED_H]: Include grp.h before sys/ucred.h.
4981
4982         * readtokens.c (readtoken): Don't leak 64 bytes when reading
4983         an empty input stream.
4984
4985         * readtokens.c: Include <stdbool.h>.
4986         (readtoken): Use `size_t' rather than int/long.
4987         All callers adjusted.
4988         Use `bool' rather than `int' where appropriate.
4989         Use memset rather than an explicit loop.
4990         Use x2nrealloc rather than xrealloc.
4991         Allow the use of `\0' as a delimiter.
4992         (readtokens): Likewise.
4993         * readtokens.h (readtoken, readtokens): Update prototypes.
4994
4995 2004-03-30  Bruno Haible  <bruno@clisp.org>
4996
4997         * getloadavg.c (getloadavg): Don't assume setlocale returns
4998         nonnull.
4999
5000 2004-03-29  Paul Eggert  <eggert@twinsun.com>
5001
5002         Merge changes to getloadavg.c from coreutils and Emacs.
5003
5004         * getloadavg.c [!defined HAVE_SETLOCALE] (setlocale):
5005         Define to an expression, not to the empty string.
5006         Include cloexec.h and xalloc.h.
5007         (getloadavg): Restore LC_NUMERIC locale after setting it temporarily.
5008         Use set_cloexec_flag rather than rolling our own.
5009         * cloexec.c, cloexec.h: New files.
5010
5011 2004-03-18  Paul Eggert  <eggert@twinsun.com>
5012
5013         * getopt.h: Sync with libc CVS.
5014
5015 2004-03-18  Paul Eggert  <eggert@twinsun.com>
5016             Bruno Haible  <bruno@clisp.org>
5017
5018         * mbswidth.h: Include <wchar.h> only if HAVE_DECL_MBSWIDTH_IN_WCHAR_H,
5019         not on all platforms that have <wchar.h>.
5020         * mbswidth.c: Include <stdio.h> and <time.h> before <wchar.h>.
5021
5022 2004-03-09  Paul Eggert  <eggert@twinsun.com>
5023
5024         * argp-parse.c, getopt.c, getopt.h, getopt1.c:
5025         Sync with libc CVS.
5026         * getopt_int.h: New file, also synced from libc.
5027
5028 2004-03-07  Paul Eggert  <eggert@twinsun.com>
5029
5030         * c-stack.c (SIGACTION_WORKS): New macro.  Use it instead of long
5031         '#if' expressions.  Unlike the code it replaces, it does not
5032         depend on (defined _SC_PAGESIZE).  However, it does depend on
5033         HAVE_STRUCT_SIGACTION_SA_SIGACTION; this last change fixes a bug
5034         first reported by Jason Andrade in
5035         <http://mail.gnu.org/archive/html/bug-textutils/2003-03/msg00027.html>.
5036
5037 2004-01-18  Simon Josefsson  <jas@extundo.com>
5038
5039         * strdup.h: New file.
5040         * strdup.c: Include it.
5041         * path-concat.c: Include strdup.h. Drop strdup declaration.
5042         * userspec.c: Include strdup.h. Drop strdup declaration.
5043
5044 2004-02-06  Karl Berry  <karl@gnu.org>
5045
5046         * config.charset: update from gettext 0.14.1.
5047
5048 2004-02-05  Paul Eggert  <eggert@twinsun.com>
5049
5050         Add comments and code, prompted by suggestions from Bruno Haible
5051         for sh-quote.
5052         * quotearg.h (quotearg_alloc): New decl.  Improve the comments
5053         describing the enum quoting_style values.
5054         * quotearg.c (quotearg_alloc): New function.
5055         (quotearg_buffer_restyled): Treat lone { and } as special.
5056         Treat = as special.  Work around bug with older shells
5057         that "see" a '\' that is really the 2nd byte of a multibyte char.
5058         Quote empty string with shell_quoting_style.
5059
5060 2004-02-03  Bruno Haible  <bruno@clisp.org>
5061
5062         * pipe.h: New file, from GNU gettext.
5063         * pipe.c: New file, from GNU gettext.
5064
5065 2004-01-27  Bruno Haible  <bruno@clisp.org>
5066
5067         * execute.h: New file, from GNU gettext.
5068         * execute.c: New file, from GNU gettext.
5069         * w32spawn.h: New file, from GNU gettext.
5070
5071 2004-01-23  Paul Eggert  <eggert@twinsun.com>
5072
5073         Exit-status fix from coreutils.
5074
5075         Use exit_failure consistently in place of EXIT_FAILURE,
5076         so that program exit statuses are consistent on failure.
5077
5078         * argmatch.c (ARGMATCH_DIE) [! defined ARGMATCH_DIE]:
5079         Include "exitfail.h", and use exit_failure rather than EXIT_FAILURE.
5080         * argmatch.h: Comment fix to match the above.
5081         * obstack.c (obstack_exit_failure) [!defined _LIBC]:
5082         Now a macro referring to exit_failure, instead of a separate
5083         variable.  Include "exitfail.h" to get it.
5084         * xstrtol.h: Include "exitfail.h".
5085         (STRTOL_FATAL_ERROR): Exit with status exit_failure, not 2.
5086
5087         * long-options.c (parse_long_options): Use prototype
5088         for usage function arg.  Pass it EXIT_SUCCESS rather than 0,
5089         for clarity.
5090
5091 2004-01-21  Jim Meyering  <jim@meyering.net>
5092
5093         * mktime.c (__mktime_internal) [!_LIBC]: Define to mktime_internal
5094         so as not to conflict with a different-sized __mktime_internal
5095         function in GNU libc.
5096         * timegm.c (__mktime_internal) [!_LIBC]: Likewise.
5097         Problem building statically-linked `ls' reported by Michael Brunnbauer.
5098
5099 2004-01-18  Paul Eggert  <eggert@twinsun.com>
5100
5101         Merge from diffutils.
5102
5103         * file-type.c (file_type): Add typed memory objects.
5104         * file-type.h (S_TYPEISTMO): New macro.
5105
5106         * c-stack.h (c_stack_action): Remove argv argument.
5107         * c-stack.c (c_stack_action): Likewise.  All uses changed.
5108         (die): Don't calculate message unless segv_action returns.
5109         (get_stack_location, min_address_from_argv, max_address_from_argv,
5110         volatile stack_base, volatile_stack_size): Remove.
5111         (segv_handler): If ! HAVE_XSI_STACK_OVERFLOW_HEURISTIC, assume
5112         that every segmentation violation is a stack overflow.  (Ouch!)
5113         See Debian bug 136249 (still outstanding) for more info about why
5114         HAVE_XSI_STACK_OVERFLOW_HEURISTIC fails on Linux kernels.
5115
5116 2003-11-30  Bruno Haible  <bruno@clisp.org>
5117
5118         Safer stack allocation.
5119         * setenv.c: Include allocsa.h.
5120         (alloca): Remove fallback definition.
5121         (freea): Remove macro.
5122         (__add_to_environ) [!_LIBC]: Use allocsa instead of alloca. Use freesa
5123         instead of freea.
5124
5125 2003-10-17  Bruno Haible  <bruno@clisp.org>
5126
5127         * binary-io.h: Avoid warnings on Cygwin.
5128
5129 2003-12-28  Bruno Haible  <bruno@clisp.org>
5130
5131         * wait-process.c (wait_subprocess): Add ignore_sigpipe argument.
5132         * wait-process.c (wait_subprocess): Likewise. Handle SIGPIPE specially.
5133
5134 2003-11-28  Bruno Haible  <bruno@clisp.org>
5135
5136         * wait-process.c (cleanup_slaves): Use ANSI C declaration.
5137
5138 2003-11-27  Bruno Haible  <bruno@clisp.org>
5139
5140         * wait-process.c: On Windows, include windows.h. Needed on mingw.
5141
5142 2003-11-17  Bruno Haible  <bruno@clisp.org>
5143
5144         * wait-process.c (wait_process): Disable the 2003-10-31 waitid() patch.
5145
5146 2003-11-24  Bruno Haible  <bruno@clisp.org>
5147
5148         * xallocsa.h: New file, from GNU gettext.
5149         * xallocsa.c: New file, from GNU gettext.
5150
5151 2003-11-24  Bruno Haible  <bruno@clisp.org>
5152
5153         * allocsa.h: New file, from GNU gettext.
5154         * allocsa.c: New file, from GNU gettext.
5155
5156 2003-11-24  Bruno Haible  <bruno@clisp.org>
5157
5158         * eealloc.h: New file.
5159
5160 2004-01-15  Jim Meyering  <jim@meyering.net>
5161
5162         Merge from coreutils.
5163
5164         * md5.h (rol) [__GNUC__ && __i386__]: Don't use `asm' code.  These
5165         days, gcc-3.x does better all by itself.  Patch from Dean Gaudet:
5166         http://mail.gnu.org/archive/html/bug-coreutils/2003-11/msg00144.html
5167
5168         * posixver.c (DEFAULT_POSIX2_VERSION): Use definition of new,
5169         optional configure-time default.
5170
5171         * version-etc.c (version_etc_copyright): Update copyright date.
5172
5173         * xreadlink.c (xreadlink): Correct outdated comment.
5174
5175 2004-01-15  Paul Eggert  <eggert@twinsun.com>
5176
5177         Merge from coreutils.
5178
5179         * posixver.c: Include posixver.h.
5180
5181         * same.c: Include <stdbool.h>, <limits.h>.
5182         (_POSIX_NAME_MAX): Define if not defined.
5183         (MIN): New macro.
5184         (same_name): If file names are silently truncated, report
5185         that the file names are the same if they are the same after
5186         the silent truncation.
5187
5188         * xstrtod.h (xstrtod): Accept an extra arg, specifying the
5189         conversion function.
5190         * xstrtod.c (xstrtod): Likewise.  All callers changed to
5191         include c-strtod.h and use c_strtod.  Don't include stdlib.h; no
5192         longer needed.
5193
5194 2004-01-14  Paul Eggert  <eggert@twinsun.com>
5195
5196         * fnmatch_loop.c (ALLOCA_LIMIT): Remove macro, which collided
5197         with like-named macro in fnmatch.c.
5198         (EXT): Use an internal constant instead.
5199
5200         Merge fnmatch patches from glibc.
5201         * fnmatch.c (mbsinit): Remove define.
5202         Add libc_hidden_ver (__fnmatch, fnmatch).
5203         * fnmatch_loop.c (FCT): Cast to int32_t and UCHAR when appropriate.
5204         Adjust to renaming of collseq_table_lookup to __collseq_table_lookup.
5205
5206 2003-12-14  Karl Berry  <karl@gnu.org>
5207
5208         * config.charset: update from gettext-runtime.
5209
5210 2003-12-03  Paul Eggert  <eggert@twinsun.com>
5211
5212         * getgroups.c (getgroups): xmalloc takes one argument, not two.
5213         Bug reported by Alfred M. Szmidt.
5214
5215 2003-11-29  Karl Berry  <karl@gnu.org>
5216
5217         * argp-{help.c,parse.c,namefrob.h}, argp.h: update from libc.
5218
5219 2003-11-23  Paul Eggert  <eggert@twinsun.com>
5220             Bruno Haible  <bruno@clisp.org>
5221
5222         * printf-parse.h: Don't include sys/types.h.
5223         (ARG_NONE): New macro.
5224         (char_directive): Change type of *arg_index fields to size_t.
5225         * printf-parse.c: Don't include sys/types.h.
5226         (SSIZE_MAX): Remove macro.
5227         (PRINTF_PARSE): Change the type of the arg_index variables to size_t.
5228         Remove unnecessary overflow check.
5229         * vasnprintf.c (VASNPRINTF): Update for type change of *arg_index
5230         fields.
5231
5232 2003-11-24  Paul Eggert  <eggert@twinsun.com>
5233
5234         * alloca.c: Remove dependency on xalloc module.
5235         (xalloc_die): Remove.
5236         (memory_full) [!defined emacs]: New macro.
5237         [!defined emacs]: Don't include xalloc.h.
5238         (alloca): Invoke memory_full, not xalloc_die, if malloc fails or
5239         address arithmetic overflows.  Change datatypes a bit to avoid
5240         unnecessary casts.
5241
5242 2003-11-22  Jim Meyering  <jim@meyering.net>
5243
5244         * xmalloc.c (x2nrealloc_inline): Fix typos in comments: s/size/size_t/.
5245
5246 2003-11-17  Bruno Haible  <bruno@clisp.org>
5247
5248         * vasnprintf.c (alloca): Remove fallback definition.
5249         (freea): Remove definition.
5250         (VASNPRINTF): Use alloca only for small sizes, say <= 4000 bytes.
5251         Reported by Paul Eggert.
5252
5253 2003-11-17  Jim Meyering  <jim@meyering.net>
5254
5255         On systems without utime and without a utimes function capable of
5256         dealing with a NULL struct utimbuf* argument, this utime replacement
5257         could -- in unusual circumstances -- leak a file descriptor.
5258         * utime.c: Include <unistd.h> and <errno.h>.
5259         (utime_null): Be sure to close `fd' and to preserve errno.
5260         Reported by Geoff Collyer via Arnold Robbins.
5261
5262 2003-11-16  Paul Eggert  <eggert@twinsun.com>
5263             Bruno Haible  <bruno@clisp.org>
5264
5265         Protect against address arithmetic overflow.
5266         * printf-args.h: Include stddef.h.
5267         (arguments): Change type of field 'count' to size_t.
5268         * printf-args.c (printf_fetchargs): Use size_t instead of
5269         'unsigned int' where appropriate.
5270         * printf-parse.h: Include sys/types.h.
5271         (char_directive): Change type of *arg_index fields to ssize_t.
5272         (char_directives): Change type of fields 'count', max_*_length to
5273         size_t.
5274         * printf-parse.c: Include sys/types.h and xsize.h.
5275         (SSIZE_MAX): Define fallback value.
5276         (PRINTF_PARSE): Use size_t instead of 'unsigned int' and ssize_t
5277         instead of 'int' where appropriate. Check a_allocated, d_allocated
5278         against overflow. Reject %m$ argument numbers > SSIZE_MAX + 1.
5279         * vasnprintf.c: Include xsize.h.
5280         (VASNPRINTF): Use size_t instead of 'unsigned int' where appropriate.
5281         Check alloca, malloc, realloc, ENSURE_ALLOCATION arguments against
5282         overflow. Avoid wraparound when converting a width or precision from
5283         decimal to binary.
5284
5285 2003-11-16  Bruno Haible  <bruno@clisp.org>
5286
5287         Update from GNU gettext.
5288         * printf-parse.c: Generalize to it can be compiled for wide strings.
5289         (PRINTF_PARSE, CHAR_T, DIRECTIVE, DIRECTIVES): New macros.
5290         * vasnprintf.c: Generalize to it can be compiled for wide strings.
5291         (VASNPRINTF, CHAR_T, DIRECTIVE, DIRECTIVES, PRINTF_PARSE, USE_SNPRINTF,
5292         SNPRINTF): New macros.
5293         Don't include <alloca.h> if the file is used inside libintl.
5294         (local_wcslen): New function, for Solaris 2.5.1.
5295         (VASNPRINTF): Use it instead of wcslen.
5296
5297 2003-11-16  Bruno Haible  <bruno@clisp.org>
5298
5299         * xsize.h (xmax): New function.
5300         (xsum, xsum3, xsum4): Declare as "pure" functions.
5301
5302 2003-11-12  Paul Eggert  <eggert@twinsun.com>
5303
5304         * xalloc.h: Do not include <limits.h> or <stdint.h>.
5305         (xalloc_oversized): Use sizeof (ptrdiff_t) and sizeof (size_t) for
5306         the heuristic, rather than PTRDIFF_MAX and SIZE_MAX.  This
5307         heuristic is just as accurate as far as we know, and it removes a
5308         dependency on size_max.m4 and ptrdiff_max.m4.
5309
5310 2003-11-12  Paul Eggert  <eggert@twinsun.com>
5311
5312         * xstrtol.c (__xstrtol): Remove "break" immediately after
5313         "return", to pacify some unknown compiler.  Problem reported
5314         by Joerg Schilling.
5315
5316 2003-11-11  Bruno Haible  <bruno@clisp.org>
5317
5318         * xsize.h (SIZE_MAX): Remove fallback definition.
5319         * xalloc.h: Include limits.h. Assume SIZE_MAX and PTRDIFF_MAX are
5320         defined.
5321
5322 2003-11-10  Paul Eggert  <eggert@twinsun.com>
5323
5324         * xalloc.h (xalloc_oversized): [! (defined PTRDIFF_MAX &&
5325         PTRDIFF_MAX < SIZE_MAX)]: Fix off-by-one error that would have
5326         rejected some allocations of exactly SIZE_MAX - 2 bytes.
5327         From Bruno Haible.
5328         [defined PTRDIFF_MAX && PTRDIFF_MAX < SIZE_MAX]: Use SIZE_MAX,
5329         not (size_t) -1, since it's defined here.
5330
5331 2003-11-06  Paul Eggert  <eggert@twinsun.com>
5332
5333         * xalloc.h [HAVE_STDINT_H]: Include <stdint.h>.
5334         (xalloc_oversized) [! (PTRDIFF_MAX < SIZE_MAX)]:
5335         Reject sizes of exactly SIZE_MAX bytes.
5336         * xreadlink.c: Include "xalloc.h" before checking whether SIZE_MAX
5337         is defined, since "xalloc.h" now defines SIZE_MAX on modern hosts.
5338
5339 2003-11-05  Bruno Haible  <bruno@clisp.org>
5340
5341         * xsize.h: Include limits.h, to avoid a possible collision with
5342         SIZE_MAX defined in <limits.h> on Solaris.
5343
5344 2003-11-04  Bruno Haible  <bruno@clisp.org>
5345
5346         * xsize.h: New file.
5347         * linebreak.c: Include xsize.h.
5348         (mbs_possible_linebreaks, mbs_width_linebreaks): Check malloc()
5349         argument for overflow.
5350         Suggested by Paul Eggert.
5351
5352 2003-10-31  Bruno Haible  <bruno@clisp.org>
5353
5354         * wait-process.c (wait_process): Use waitid with WNOWAIT if available,
5355         to avoid (extremely rare) race condition.
5356         Suggested by Paul Eggert.
5357
5358 2003-11-03  Jim Meyering  <jim@meyering.net>
5359
5360         * userspec.c: Include "userspec.h".
5361         * userspec.h: New file.
5362
5363 2003-10-31  Paul Eggert  <eggert@twinsun.com>
5364
5365         * mountlist.h (struct mount_entry.me_type_malloced): New member.
5366         * mountlist.c (SIZE_MAX): Define if not defined already.
5367         (read_filesystem_list): Set and use me_type_malloced.
5368         Use "sizeof *me" rather than "sizeof (struct mount_entry)" (or
5369         whatever the type happens to be), for brevity and consistency.
5370         Check for size calculation overflow on Alphas running OSF/1.
5371
5372 2003-10-31  Jim Meyering  <jim@meyering.net>
5373
5374         * hash.c: Include "xalloc.h" for use of xalloc_oversized.
5375
5376         * linebuffer.c: Include <string.h> for declaration of memset.
5377
5378 2003-10-30  Paul Eggert  <eggert@twinsun.com>
5379             Bruno Haible  <bruno@clisp.org>
5380
5381         * vasprintf.c: Include <limits.h>, <stdlib.h>.
5382         (vasprintf): Fail if the resulting length doesn't fit in an 'int'.
5383
5384 2003-10-29  Paul Eggert  <eggert@twinsun.com>
5385
5386         * xalloc.h (xalloc_oversized): Now a macro, not a function,
5387         so that it works even if SIZE_MAX < N.  Do not include <stdbool.h>;
5388         no longer needed.
5389         * quotearg.c (quotearg_n_options): Use it.
5390         * group-member.c: Include <stdbool.h>.
5391         (free_group_info): Arg is now const *; don't free arg.
5392         (get_group_info): Now returns bool and accepts struct group_info *,
5393         rather than returning a malloc'ed struct group_info *.
5394         All uses changed.  Check for overflow in internal size calculation.
5395
5396         * getusershell.c (readname): Simplify the code by using x2nrealloc
5397         rather than xmalloc/xrealloc.
5398         * linebuffer.c (initbuffer, readlinebuffer): Simplify the code by
5399         using x2realloc rather than xmalloc/xrealloc.  Also, fix a C
5400         conformance bug: the old code used a pointer after freeing the
5401         storage that it addressed.
5402         * hash.c (hash_initialize): Simplify the code by using xalloc_oversized
5403         rather than doing it by hand.
5404         * getgroups.c (getgroups): Don't use xrealloc, since we don't need
5405         the buffer preserved.  Use free and xmalloc instead.
5406         * quotearg.c (quotearg_n_options): Likewise.
5407         Use a simpler test for size overflow.  Don't use xalloc_oversized
5408         because unsigned int might be wider than size_t (!); this suggests
5409         that we should switch from unsigned int to size_t for slot numbers.
5410
5411 2003-10-27  Bruno Haible  <bruno@clisp.org>
5412
5413         * stdbool_.h: Better support for BeOS.
5414
5415 2003-10-27  Paul Eggert  <eggert@twinsun.com>
5416
5417         * exclude.c (new_exclude): Use xzalloc rather than xmalloc
5418         to allocate the returned structure.  Do not allocate a subarray,
5419         as x2nrealloc will do that.
5420         (add_exclude): Use x2nrealloc to reallocate ex->exclude,
5421         instead of xnrealloc.
5422         (add_exclude_file): Use x2realloc instead of malloc + xnrealloc.
5423
5424 2003-10-26  Paul Eggert  <eggert@twinsun.com>
5425
5426         * xalloc.h (xalloc_oversized): New static inline function, for
5427         callers that want to do their own size-overflow checking.  Include
5428         <stdbool.h>, since xalloc_oversized returns bool.
5429         * xalloc.c (array_size_overflow): Remove.  All callers changed
5430         to use xalloc_oversized.
5431
5432         Add two functions x2realloc, x2nrealloc, for programs that grow
5433         arrays dynamically by doubling their sizes.
5434         * xalloc.h (x2realloc, x2nrealloc): New decls.
5435         * xmalloc.c (x2nrealloc_inline, x2nrealloc, x2realloc):
5436         New functions.
5437
5438         Port to C99 semantics for 'inline' of external functions.
5439         Bug reported by Bruno Haible.
5440         * xmalloc.c (xnmalloc_inline): New static inline function,
5441         with the old contents of xnmalloc.
5442         (xnmalloc, xmalloc): Use it.
5443         (xnrealloc_inline): New static inline function,
5444         with the old contents of xnrealloc.
5445         (xnrealloc, xrealloc): Use it.
5446
5447         * alloc.c (alloca): xmalloc cannot return NULL, so don't test for that.
5448
5449 2003-10-25  Paul Eggert  <eggert@twinsun.com>
5450
5451         Fix several address-calculation bugs in the hash modules,
5452         plus some minor code cleanup.
5453
5454         * hash.h: Include <stdbool.h>, for bool.
5455         * hash.c: Don't include <stdbool.h>, since hash.h does it now.
5456         * hash.h (Hash_hasher, hash_get_n_buckets, hash_get_n_buckets_used,
5457         hash_get_n_entries, hash_get_max_bucket_length,
5458         hash_get_entries, hash_do_for_each, hash_string, hash_initialize,
5459         hash_rehash): Use size_t rather than unsigned.
5460         * hash.c (struct hash_table, hash_get_n_buckets,
5461         hash_get_n_buckets_used, hash_get_n_entries,
5462         hash_get_max_bucket_length, hash_table_ok, hash_print_statistics,
5463         hash_get_entries, hash_do_for_each, hash_string, is_prime,
5464         next_prime, hash_initialize, hash_rehash, hash_delete, hash_print):
5465         Likewise.
5466         (SIZE_MAX): Define if not defined.
5467         (hash_get_max_bucket_length, hash_table_ok, hash_lookup,
5468         hash_get_first, hash_get_next, hash_get_entries, hash_do_for_each,
5469         hash_print):
5470         Use const * when possible.
5471         (hash_string): Use (unsigned char) *P rather than *(unsigned char *) P.
5472         (check_tuning): Fix bug: if tuning parameters were very close to
5473         0 or 1, rounding errors could have caused subscript violations.
5474         (hash_initialize, allocate_entry, hash_print): Remove unnecessary cast.
5475         (hash_initialize): Add 'fail:' label
5476         to free table and return NULL, and use it to simplify code.
5477         Use calloc rather than clearing the storage ourself.
5478         (hash_initialize, hash_rehash): Check for arithmetic overflow in
5479         buffer size calculations.
5480         * hash-pjw.h (hash_pjw): Use size_t, not unsigned.
5481         Include <stddef.h>, for size_t.
5482         * hash-pjw.c (hash_pjw): Likewise.
5483         Switch to method described by Bruno Haible.
5484         Include <limits.h>, for CHAR_BIT.
5485         (SIZE_BITS): New macro.
5486
5487 2003-10-21  Paul Eggert  <eggert@twinsun.com>
5488
5489         * getndelim2.c (getndelim2): When size calculation overflows,
5490         ceiling the allocation at NMAX bytes rather than silently
5491         discarding input bytes before NMAX is reached.  This makes
5492         a difference only if NMAX exceeds SIZE_MAX / 2.
5493
5494         * obstack.c: Merge from glibc.
5495         [defined _LIBC]: Include <obstack.h>, not "obstack.h".
5496         Add libc_hidden_def (_obstack_newchunk).
5497         (_obstack_free) [! defined _LIBC]: Remove.
5498         [defined _LIBC]: Make a strong alias from obstack_free, rather than
5499         a clone of the function body.
5500         (fputs) [defined _LIBC && defined USE_IN_LIBIO]: Remove.
5501         [defined _LIBC && !defined USE_IN_LIBIO]: Include <libio/iolibio.h>.
5502
5503         * obstack.h: Indenting cleanup, to make it easier to merge with glibc.
5504         (obstack_grow, obstack_grow0): Remove unnecessary parentheses around
5505         arg to memcpy.
5506
5507         * obstack.h (obstack_1grow_fast): Properly parenthesize arg.
5508         (obstack_ptr_grow_fast, obstack_int_grow_fast):
5509         Don't use lvalue casts, as GCC plans to remove support for them
5510         in GCC 3.5.  Reported by Joseph S. Myers.  This bug
5511         was also present in the non-GCC version, indicating that this
5512         code had always been buggy and had never been widely used.
5513         (obstack_1grow, obstack_ptr_grow, obstack_int_grow, obstack_blank):
5514         Use the fast variant of each macro, rather than copying the
5515         definiens of the fast variant; that way, we'll be more likely to
5516         catch future bugs in the fast variants.
5517
5518 2003-10-20  Bruno Haible  <bruno@clisp.org>
5519
5520         * wait-process.h: New file, from GNU gettext.
5521         * wait-process.c: New file, from GNU gettext.
5522
5523 2003-10-19  Jim Meyering  <jim@meyering.net>
5524
5525         * vasnprintf.c (vasnprintf): Work around losing snprintf on HPUX 10.20.
5526
5527 2003-10-16  Paul Eggert  <eggert@twinsun.com>
5528
5529         * getgroups.c: Include <errno.h>, <stdlib.h>.
5530         (getgroups): First arg is int, not size_t.
5531         Don't let 'free' mangle errno.
5532
5533 2003-10-16  Jim Meyering  <jim@meyering.net>
5534
5535         * xmalloc.c: Include <string.h>, for declarations of memset and memcpy.
5536
5537 2003-10-15  Paul Eggert  <eggert@twinsun.com>
5538
5539         * exclude.c: Do not include <inttypes.h> or <stdint.h>.
5540         (SIZE_MAX): Remove.
5541         (new_exclude, add_exclude_file): Initial size no longer needs to
5542         be a power of 2.
5543         (add_exclude, add_exclude_file): Use xnrealloc instead of rolling
5544         our own address arithmetic overflow checking.
5545
5546         * fnmatch.c (SIZE_MAX): Define if standard headers don't.
5547         (fnmatch): Do not alloca more than 2000 wide characters;
5548         instead, use malloc for large buffers.
5549         Check for address arithmetic overflow, and return -1
5550         with errno set to ENOMEM in that case.
5551         * fnmatch_loop.c (ALLOCA_LIMIT): New macro.
5552         (NEW_PATTERN): Do not alloca more than 8000 bytes;
5553         instead, return -1.  Check for address arithmetic overflow.
5554
5555 2003-10-14  Paul Eggert  <eggert@twinsun.com>
5556
5557         Handle invalid suffixes and overflow independently, so that
5558         callers can treat them independently as needed.  Fix some bugs in
5559         suffix handling, e.g., "100k@" was not diagnosed as an invalid
5560         suffix for a human-readable blocksize.  The major caller-visible
5561         change is the addition of a new
5562         LONGINT_INVALID_SUFFIX_CHAR_WITH_OVERFLOW enum value, indicating
5563         that both overflow and suffix chars were found.
5564
5565         * human.c (humblock): Don't check separately for invalid suffix
5566         char; that is xstrtoumax's job (now that its bug is fixed).
5567         * xstrtoimax.c (STRTOL_T_MINIMUM, STRTOL_T_MAXIMUM) [defined
5568         INTMAX_MAX]: New macros.
5569         * xstrtol.c (STRTOL_T_MINIMUM, STRTOL_T_MAXIMUM, TYPE_MINIMUM,
5570         TYPE_MAXIMUM): New macros.
5571         (bkm_scale, bkm_scale_by_power): Return strtol_error, not int.
5572         (bkm_scale, bkm_scale_by_power, __xstrtol): Return maximal values
5573         if overflow occurs, as it's what __strtol does and it's more useful
5574         in practice.
5575         (__xstrtol): If __strtol reports some error other than ERANGE,
5576         reflect it to the caller as LONGINT_INVALID.  If it reports
5577         ERANGE, continue the rest of parsing, and report LONGINT_OVERFLOW
5578         | LONGINT_INVALID_SUFFIX_CHAR if both errors occur.
5579         * xstrtol.h (LONGINT_INVALID_SUFFIX_CHAR_WITH_OVERFLOW): New enum
5580         value.
5581         (_STRTOL_ERROR): Handle it.  Abort when given unknown error codes.
5582         * xstrtoul.c (STRTOL_T_MINIMUM, STRTOL_T_MAXIMUM): New macros.
5583         * xstrtoumax.c (STRTOL_T_MINIMUM, STRTOL_T_MAXIMUM)
5584         [defined UINTMAX_MAX]: New macros.
5585
5586 2003-10-14  Bruno Haible  <bruno@clisp.org>
5587
5588         * fatal-signal.h: Improved comments. Suggested by Paul Eggert.
5589         * fatal-signal.c: Use sig_atomic_t. Suggested by Paul Eggert.
5590         Also use volatile where needed.
5591
5592 2003-10-12  Paul Eggert  <eggert@twinsun.com>
5593
5594         * xalloc.h (xnmalloc, xzalloc, xnrealloc, xclone): New decls.
5595         (XMALLOC, XCALLOC, XREALLOC, XFREE, CCLONE, CLONE): Deprecate,
5596         and define in terms of the other primitives.
5597         * xmalloc.c: Include stdbool.h; do not include exit.h.
5598         (SIZE_MAX): Define if not already defined.
5599         (array_size_overflow): New function.
5600         (xalloc_die): Abort instead of exiting if 'error' returns.
5601         (xnmalloc, xnrealloc, xzalloc, xclone): New functions.
5602         (xmalloc, xrealloc): Use them.
5603         (xcalloc): Check for address arithmetic overflow.
5604         * xstrdup.c (xstrdup): Use xclone, since memcpy should be
5605         a bit faster than strcpy.
5606
5607 2003-10-08  Paul Eggert  <eggert@twinsun.com>
5608
5609         Merge getpass from libc, plus a few fixes.
5610
5611         * getpass.c (HAVE_STDIO_EXT) [_LIBC]: Define to 1.
5612         Include <stdbool.h>.
5613         Include <stdio_ext.h> if HAVE_STDIO_H, otherwise define
5614         __fsetlocking to empty.
5615         [_LIBC]: Do not include "getline.h" or "unlocked-io.h", but
5616         do include <bits/libc-lock.h>.
5617         Do not include <fcntl.h>; not needed.
5618         [_LIBC]: Include <wchar.h>.
5619         (NOTCANCEL_MODE): New macro.
5620         (flockfile, funlockfile) [_LIBC]: New macros.
5621         (__libc_cleanup_push, __libc_cleanup_pop, __getline, __tcgetattr)
5622         [!_LIBC]: New macros.
5623         (call_fclose): New function.
5624         (getpass): Use it.  Save tty stream separately; this simplifies the
5625         code and makes it more reliable if stdin happens to equal stdout.
5626         Invoke __fsetlocking on tty.
5627         Handle thread cancellation if needed.
5628         Namespace cleanup (use __tcgetattr, __getline).
5629         Use bool for Booleans.
5630         [USE_IN_LIBIO]: Handle wide streams.
5631         [!_LIBC]: Unconditionally do the fseek, since we don't know what
5632         stream might go where.
5633
5634         * unlocked-io.h: Include <stdio.h>, so that the caller
5635         doesn't have to include <stdio.h> before us.
5636         (clearerr_unlocked, feof_unlocked, ferror_unlocked,
5637         fflush_unlocked, fgets_unlocked, fputc_unlocked, fputs_unlocked,
5638         fread_unlocked, fwrite_unlocked, getc_unlocked, getchar_unlocked,
5639         putc_unlocked, putchar_unlocked): Define to the unlocked counterpart
5640         if not declared, so that we can use getpass.c code from libc without
5641         rewriting it.
5642         (flockfile, ftrylockfile, funlockfile): New macros.
5643
5644 2003-10-06  Bruno Haible  <bruno@clisp.org>
5645
5646         * version-etc-2.h: Remove file.
5647         * version-etc-2.c: Remove file.
5648
5649 2003-09-25  Jim Meyering  <jim@meyering.net>
5650             Bruno Haible  <bruno@clisp.org>
5651
5652         This lets translators provide better translations for the
5653         "Written by ..." part of --version output.
5654         * version-etc.h: Include stdarg.h.
5655         (version_etc_copyright): Declare as readonly.
5656         (version_etc): Make this function variadic with a NULL-terminated list
5657         of author name strings.
5658         (version_etc_va): New declaration.
5659         * version-etc.c: Include stdarg.h, stdlib.h.
5660         (version_etc_copyright): Declare as readonly.
5661         (version_etc_va): New function. Provide a different translatable string
5662         for each possible number of authors < 10. Abbreviate when there are 10
5663         authors or more.
5664         (version_etc): Make this function variadic. Call version_etc_va.
5665         Suggestion from Gary V. Vaughan.
5666
5667         * long-options.h (parse_long_options): Change prototype: the authors
5668         string is moved to the end and becomes variadic.
5669         * long-options.c: Include stdarg.h.
5670         (parse_long_options): Make this function variadic, too.
5671         Call version_etc_va, not version_etc.
5672
5673 2003-10-06  Bruno Haible  <bruno@clisp.org>
5674
5675         * fatal-signal.h: New file, from GNU gettext.
5676         * fatal-signal.c: New file, from GNU gettext.
5677
5678 2003-10-04  Karl Berry  <karl@gnu.org>
5679
5680         * argp*: update from libc.
5681
5682 2003-10-01  Larry Jones  <lawrence.jones@eds.com>
5683
5684         * getpass.c (getpass): Use a no-op fseek when switching from input to
5685         output mode on the same stream.
5686
5687 2003-09-29  Paul Eggert  <eggert@twinsun.com>
5688
5689         * strftime.c (tm_diff) [! HAVE_TM_GMTOFF]:
5690         Fix arg typo in previous patch.
5691
5692 2003-09-28  Jim Meyering  <jim@meyering.net>
5693
5694         * error.c: Correct cpp indentation.
5695
5696 2003-09-27  Paul Eggert  <eggert@twinsun.com>
5697
5698         * minmax.h (MIN, MAX) [__STDC__ && defined __GNUC__ && __GNUC__ >= 2]:
5699         Omit the special code that used __typeof__, since we worry that
5700         it could be more trouble than it's worth.  See:
5701         http://mail.gnu.org/archive/html/bug-gnulib/2003-01/msg00090.html
5702         http://mail.gnu.org/archive/html/bug-gnulib/2003-01/msg00095.html
5703
5704         * free.c: New file.
5705
5706 2003-09-26  Jim Meyering  <jim@meyering.net>
5707
5708         * error.c (error_tail): Move some declarations
5709         into inner scope where the local variables are used.
5710
5711 2003-09-26  Bruno Haible  <bruno@clisp.org>
5712
5713         * stpncpy.h (gnu_stpncpy): New declaration.
5714         (stpncpy): Define as alias for gnu_stpncpy.
5715         * stpncpy.c [!_LIBC]: Define gnu_stpncpy, not stpncpy.
5716
5717 2003-09-26  Paul Eggert  <eggert@twinsun.com>
5718
5719         * error.c (SIZE_MAX) [!defined SIZE_MAX]: Define.
5720         (error_tail): Do not loop, reallocating temporary buffer, since
5721         the output cannot contain more wide characters than the input
5722         contains bytes, the size must be big enough already.  This avoids
5723         one potential size overflow calculation.  Check for size overflow
5724         when calculating temporary buffer size.  Free temporary buffer
5725         when done, if it was allocated with malloc; this plugs a memory
5726         leak.  Remove casts from void * to pointers, that are no longer
5727         needed now that we're assuming C89 or better.
5728
5729         Merge error changes from glibc.
5730
5731         * error.c, error.h: Update copyright notice header to match glibc.
5732         * error.c [defined _LIBC]: Include <errno.h>, <bits/libc-lock.h>.
5733         (error, error_at_line) [defined _LIBC && defined __libc_ptf_call]:
5734         Disable cancellation while printing error.
5735         * error.h: Prepend __ to parameter names.
5736
5737 2003-09-25  Karl Berry  <karl@gnu.org>
5738
5739         * argp-fmtstream.c, argp-help.c: update from libc.
5740
5741 2003-09-25  Bruno Haible  <bruno@clisp.org>
5742
5743         * version-etc-2.h: New file, from version-etc.h with modifications.
5744         * version-etc-2.c: New file, from version-etc.c with modifications.
5745
5746 2003-09-25  Simon Josefsson  <jas@extundo.com>
5747
5748         * xgetdomainname.h: New file.
5749         * xgetdomainname.c: New file.
5750
5751 2003-09-25  Simon Josefsson  <jas@extundo.com>
5752             Bruno Haible  <bruno@clisp.org>
5753
5754         * getdomainname.h: New file.
5755         * getdomainname.c: New file.
5756
5757 2003-09-24  Paul Eggert  <eggert@twinsun.com>
5758
5759         * linebuffer.c (freebuffer): Don't free the argument, just
5760         the buffer associated with the argument.  Bug reported by
5761         Simon Josefsson.
5762
5763 2003-09-19  Karl Berry  <karl@gnu.org>
5764
5765         * argp.h: update from libc.
5766
5767 2003-09-16  Paul Eggert  <eggert@twinsun.com>
5768
5769         * linebuffer.c (readlinebuffer): Return NULL immediately upon
5770         input error, instead of returning NULL the next time we are called
5771         (and therefore losing track of errno).
5772
5773 2003-09-15  Paul Eggert  <eggert@twinsun.com>
5774
5775         * getndelim2.c (getndelim2): Don't trash errno when a read
5776         fails, so that the caller gets the proper errno.
5777
5778         * readutmp.c (read_utmp): Likewise.
5779         Check for fstat error.  Close stream and free storage
5780         when failing.
5781
5782 2003-09-14  Bruno Haible  <bruno@clisp.org>
5783
5784         * fwriteerror.h: New file.
5785         * fwriteerror.c: New file.
5786
5787 2003-09-14  Jim Meyering  <jim@meyering.net>
5788
5789         * getloadavg.c: Correct cpp indentation.
5790         * strdup.c: Likewise.
5791         * vasnprintf.c: Likewise.
5792
5793 2003-09-12  Paul Eggert  <eggert@twinsun.com>
5794
5795         * argmatch.c, fatal.c, xgethostname.c, xmalloc.c: Include exit.h.
5796         * obstack.c [!defined _LIBC]: Likewise.
5797         * argmatch.c (EXIT_FAILURE): Remove; now done by exit.h
5798         * exitfail.c, fatal.c, xgethostname.c, xmalloc.c: Likewise.
5799         * exitfail.c: Don't include stdlib.h; no longer needed.
5800
5801         More changes to assume C89 or better.
5802
5803         * error.c (error_tail): Assume vprintf.
5804
5805         * argmatch.c (getenv): Remove decl.
5806         * progreloc.c (get_full_program_name): Define via prototype.
5807         * setenv.c (clearenv): Likewise.
5808         * stpncpy.c: Do not include <string.h> or <sys/types.h>; not
5809         needed.
5810         * strdup.c: Include <stdlib.h>, <string.h> unconditionally.
5811         (malloc, memcpy): Remove decls.
5812         * strftime.c (HAVE_LIMITS_H, STDC_HEADERS) [defined _LIBC]: Remove.
5813         (HAVE_MEMCPY) [defined emacs && !defined HAVE_BCOPY]: Remove.
5814         Include <limits.h>, <stddef.h>, <stdlib.h>, <string.h> unconditionally.
5815         (memcpy): Remove macro.
5816         (MEMCPY) [!defined COMPILE_WIDE]: Define to memcpy unconditionally.
5817         (__P): Remove.  All uses removed.
5818         (PTR): Remove.  All uses changed to void *.
5819         (CHAR_BIT, NULL): Remove.
5820         (spaces, zeros, memset_space, memset_zero)
5821         [!defined memset && !defined HAVE_MEMSET && !defined _LIBC]:
5822         Remove.
5823         (LOCALE_PARAM, LOCALE_PARAM_DECL): Remove.
5824         (memcpy_lowcase, memcpy_uppcase, tm_diff, iso_week_days):
5825         Define with prototype.
5826         Remove now-unnecessary prototype decl.
5827         (extra_args_spec): Assume ANSI C.  All uses changed.
5828         (extra_args_spec_iso): Remove.
5829         (my_strftime, emacs_strftimeu): Define via prototype.
5830         * strtod.c: Include <float.h>, <stdlib.h>, <string.h>
5831         unconditionally.
5832         (DBL_MAX, DBL_MIN, HUGE_VAL, NULL): Remove decls.
5833         * strtoimax.c: Include <stdlib.h> unconditionally.
5834         (strtoul, strtol): Remove decls.
5835         * strtol.c (STDC_HEADERS, HAVE_LIMITS_H, NULL, ULONG_MAX,
5836         LONG_MAX): Remove.
5837         Include <limits.h>, <stddef.h>, <stdlib.h>, <string.h> unconditionally.
5838         (LOCALE_PARAM_DECL): Remove.  All uses changed to LOCALE_PARAM_PROTO.
5839         (LOCALE_PARAM_PROTO): New macro.
5840         (INTERNAL, INTERNAL1, WEAKNAME): Assume ANSI C, not K&R.
5841         (INTERNAL (strtol), strtol): Define with a prototype.
5842         (PARAMS): Remove.  All uses removed.
5843         * tempname.c: Include <string.h> unconditionally.
5844         * userspec.c: Include <stdlib.h>, <string.h> unconditionally.
5845         * xgethostname.c (main): Define with a prototype.
5846         * xmalloc.c: Include "xalloc.h" first, to check interface.
5847         Include <stdlib.h> unconditionally.
5848         (calloc, malloc, realloc, free): Remove decls.
5849         * xstrtod.c: Include "xstrtod.h" first, to check interface.
5850         Include <stdlib.h> unconditionally.  Sort include file names.
5851         (strtod): Remove.
5852         (xstrtod): Define with a prototype.
5853         * xstrtol.c: Include <stdlib.h>, <string.h> unconditionally.
5854         (strtol, strtoul): Remove decls.
5855
5856 2003-09-11  Paul Eggert  <eggert@twinsun.com>
5857
5858         * strndup.c: Don't include <stdio.h>, <sys/types.h>.
5859         Include <stdlib.h>, <string.h> unconditionally.
5860         Remove now-unnecessary cast to char *.
5861         * strnlen.c: Include <string.h> unconditionally.
5862         * yesno.c (yesno): Define with a prototype.
5863
5864 2003-09-10  Bruno Haible  <bruno@clisp.org>
5865
5866         * strcspn.c: Include <string.h> unconditionally.
5867         * strpbrk.c: Include <string.h> unconditionally.
5868         * strstr.c: Include <string.h> unconditionally.
5869         * unicodeio.c: Include <string.h> unconditionally.
5870         * setenv.c: Include <stdlib.h> and <string.h> unconditionally.
5871         * unsetenv.c: Likewise.
5872         * xreadlink.c: Include <stdlib.h> unconditionally.
5873         * yesno.c: Include <stdlib.h> unconditionally.
5874         (rpmatch): Add prototype.
5875
5876 2003-09-10  Jim Meyering  <jim@meyering.net>
5877
5878         * error.c: Correct indentation of cpp directives.
5879
5880 2003-09-09  Paul Eggert  <eggert@twinsun.com>
5881
5882         More K&R removal.
5883
5884         * acosl.c (main): Use a prototype.
5885         * asinl.c, cosl.c, expl.c, frexpl.c, ldexpl.c, sinl.c,
5886         tanl.c: Likewise.
5887
5888         * getloadavg.c (getloadavg, main): Define via prototypes.
5889
5890         * getopt.h (struct option.name): Assume C89, and use 'const'.
5891         (getopt, etopt_long, getopt_long_only, _getopt_internal)
5892         [defined __GNU_LIBRARY__]: Assume C89, so we can always declare
5893         with a prototype.
5894         * getopt.c (const): Remove macro.
5895         Include <string.h> unconditionally.
5896         (my_index): Remove; all uses changed to strchr.
5897         (strlen): Remove decl.
5898         (exchange): Remove forward decl; no longer needed.
5899         (exchange, _getopt_initialize, _getopt_internal, getopt, main):
5900         Define with prototype.
5901         * getopt1.c (const): Remove macro.
5902         (getopt_long, getopt_long_only, main): Define with prototype.
5903
5904         * getugroups.c: Include <string.h> unconditionally.
5905
5906         * getusershell.c: Include <stdlib.h> unconditionally.
5907         (getusershell, setusershell, endusershell, readname, main):
5908         Define with prototypes.
5909
5910         * group-member.c: Include group-member.h first.
5911         Include <stdlib.h> unconditionally.
5912
5913         * hard-locale.c: Include hard-locale.h first.
5914         Include <stdlib.h>, <string.h> unconditionally.
5915
5916         * hash.c (free, malloc): Remove decls.
5917         Include <stdlib.h> unconditionally.
5918
5919         * human.c: Include <stdlib.h>, <string.h> unconditionally.
5920         (getenv): Do not declare.
5921
5922         * idcache.c: Include <string.h> unconditionally.
5923
5924         * long-options.c: Include long-options.h first, to test interface.
5925         Include <stdlib.h> unconditionally.
5926
5927         * makepath.c: Include makepath.h first, to test interface.
5928         Include <stdlib.h> and <string.h> unconditionally.
5929
5930         * linebuffer.c: Include <stdlib.h>.
5931         (free): Remove decl.
5932
5933         * malloc.c: Include <stdlib.h>, for malloc; don't bother with stddef.h.
5934         rpl_malloc returns void *, not char *.
5935         * realloc.c (rpl_realloc): Likewise.  Also, define with a prototype.
5936
5937         * md5.h: Include <limits.h> unconditionally.
5938         (UINT_MAX_32_BITS): Don't worry about non-__STDC__ case.
5939         (__P): Remove; all uses removed.
5940         * md5.c: Include "md5.h" first.
5941         (md5_init_ctx, md5_read_ctx, md5_finish_ctx, md5_stream,
5942         md5_buffer, md5_process_bytes, md5_process_block):
5943         Define with prototypes.
5944         * sha.h (__P): Remove all uses.  (It wasn't defined??)
5945         * sha.c: Include "sha.h" first.
5946         Include <stdlib.h>, <string.h> unconditionally.
5947
5948         * memchr.c (__ptr_t): Remove; all uses changed to void *.
5949         * memcmp.c (__ptr_t): Likewise.
5950         * memrchr.c (__ptr_t): Likewise.
5951         * memchr.c, memcmp.c, memcoll.c, memrchr.c:
5952         Include <string.h> unconditionally.
5953         * memchr.c, memrchr.c: Include <limits.h> unconditionally.
5954         * memchr.c: Include <stdlib.h> unconditionally.
5955         * memchr.c (LONG_MAX): Remove.
5956         * memrchr.c (LONG_MAX): Likewise.
5957         * memchr.c (__memchr): Define via a prototype.
5958         * memrchr.c (__memrchr): Likewise.
5959         * memcmp.c (__P): Remove, and remove all uses.
5960         (memcmp_bytes, memcmp_common_alignment, memcmp_not_common_alignment):
5961         Remove forward decls; no longer needed.
5962         * memcpy.c, memmove.c, memset.c: Include <stddef.h>.
5963         Use types required by C89 in prototype.
5964
5965         * mkdir.c: Include <stdlib.h>, <string.h> unconditionally.
5966         * savedir.c: Likewise.
5967         * mkdir.c (free): Remove decl.
5968         * rmdir.c (rmdir): Define with a prototype.
5969         * savedir.c: Include savedir.h first, to test interface.
5970
5971         * mktime.c (STDC_HEADERS): Remove.
5972         Include <stdlib.h>, <string.h> unconditionally.
5973
5974         * modechange.c: Include <stdlib.h> unconditionally.
5975         (malloc): Remove decl.
5976
5977         * mountlist.c: Include <stdlib.h>, <string.h> unconditionally.
5978         (free): Remove decl.
5979
5980         * obstack.h (PTR_INT_TYPE) [!defined __PTRDIFF_TYPE__]:
5981         Define to ptrdiff_t, without bothering to check HAVE_STDDEF_H.
5982         (This type really should be intptr_t, but that's a C99ism.)
5983         (_obstack_memcpy): Remove: all uses changed to memcpy.
5984         Include <string.h> unconditionally.
5985         (struct obstack): Assume __STDC__ for types of members
5986         chunkfun, freefun, extra_arg.
5987         (_obstack_newchunk, _obstack_free, _obstack_begin, _obstack_begin_1,
5988         _obstack_memory_used, obstack_alloc_failed_handler, obstack_init,
5989         obstack_begin, obstack_specify_allocation,
5990         obstack_specify_allocation_with_arg, obstack_chunkfun,
5991         obstack_freefun, obstack_free) [! (defined __STDC__ && __STDC__)]:
5992         Remove unprototyped decls and the macros that use them.
5993         * obstack.c (POINTER): Remove.  All uses changed to void *.
5994         (obstack_alloc_failed_handler, CALL_CHUNKFUN, CALL_FREEFUN,
5995         _obstack_begin, _obstack_begin_1, _obstack_allocated_p)
5996         (defined __STDC__ && __STDC__)]:
5997         Remove nonprototyped code.
5998         Include <stdlib.h> unconditionally.
5999         (_obstack_begin, _obstack_begin_1, _obstack_newchunk,
6000         _obstack_allocated_p, _obstack_free, obstack_free,
6001         _obstack_memory_used, print_and_abort):
6002         Define using prototypes.
6003         (obstack_1grow, obstack_1grow_fast, obstack_alloc, obstack_base,
6004         obstack_blank, obstack_blank_fast, obstack_copy, obstack_copy0,
6005         obstack_finish, obstack_grow, obstack_grow0, obstack_make_room,
6006         obstack_next_free, obstack_object_size, obstack_room) [0]:
6007         Remove unused, unprototyped code.
6008
6009         * path-concat.c: Include <stdlib.h>, <string.h> unconditionally.
6010
6011         * physmem.c (physmem_total, physmem_available, main): Define
6012         with prototypes.
6013
6014         * posixtm.c: Include <stdlib.h>, <string.h> unconditionally.
6015         (main): Define with a prototype.
6016
6017         * posixver.c (getenv): Remove decl.
6018
6019         * putenv.c (malloc): Returns void *, not char *.
6020         Include <string.h> unconditionally.
6021         (strchr, memcpy, NULL): Do not define.
6022
6023         * readtokens.c: Include readtokens.h first, to test interface.
6024         Include <stdlib.h>, <string.h> unconditionally.
6025         (init_tokenbuffer): Define with a prototype.
6026
6027         * regex.c (PARAMS): Remove.  All uses removed.
6028         All uses of _RE_ARGS removed, too.
6029         Include <stddef.h>, <stdlib.h>, <string.h>, <limits.h>
6030         unconditionally.
6031         (bzero): Assume memset exists.
6032         (memcmp, memcpy, NULL): Remove.
6033         (SIGN_EXTEND_CHAR): Remove; all uses replaced by casts to signed
6034         char, or assignments to local vars of type signed char.
6035         (init_syntax_once, PREFIX(extract_number_and_incr),
6036         PREFIX(print_partial_compiled_pattern),
6037         PREFIX(print_compiled_pattern), PREFIX(print_double_string),
6038         convert_mbs_to_wcs, print_fastmap, re_set_syntax,
6039         PREFIX(regex_grow_registers), PREFIX(regex_compile),
6040         PREFIX(store_op1), PREFIX(store_op2), PREFIX(insert_op1),
6041         PREFIX(insert_op2), PREFIX(at_begline_loc_p),
6042         PREFIX(at_endline_loc_p), group_in_compile_stack, insert_space,
6043         wcs_compile_range, byte_compile_range, truncate_wchar,
6044         PREFIX(re_compile_fastmap), re_compile_fastmap, re_set_registers,
6045         re_search, re_search_2, PREFIX(re_search_2), re_match, re_match_2,
6046         count_mbs_length, wcs_re_match_2_internal,
6047         byte_re_match_2_internal, PREFIX(group_match_null_string_p),
6048         PREFIX(alt_match_null_string_p),
6049         PREFIX(common_op_match_null_string_p), PREFIX(bcmp_translate),
6050         re_compile_pattern, re_comp, re_exec, regcomp, regexec, regerror,
6051         regfree, PREFIX(extract_number)): Define with prototype.  Remove
6052         now-unnecessary declaration, if any.
6053         (byte_compile_range, PREFIX(regex_compile), re_comp, re_exec,
6054         regcomp, regexec):
6055         Remove now-unnecessary casts among pointer types.
6056         * regex.h (_RE_ARGS): Remove.  All uses removed.
6057
6058         * rename.c: Include <stdlib.h>, <string.h> unconditionally.
6059         (free): Remove decl.
6060
6061         * rpmatch.c: Include <stdlib.h> unconditionally.
6062
6063         * same.c: Include <stdlib.h>, <string.h> unconditionally.
6064         (free): Remove decl.
6065
6066         * save-cwd.c: Include <stdlib.h> unconditionally.
6067         * xgetcwd.c: Likewise.
6068
6069         * stat.c: Include <stdlib.h>, <string.h> unconditionally.
6070         (free): Remove decl.
6071
6072         * strchrnul.c (strchrnul): Define with a prototype.
6073         Fix bug: c_in was not converted to char before searching.
6074
6075         The following changes are not K&R related:
6076
6077         * group-member.h: Include <sys/types.h>, so that this file is
6078         self-contained.
6079         * makepath.h: Likewise.
6080
6081         * getusershell.c (readname, default_index, line_size, readname):
6082         Use size_t, not int, for sizes.
6083         (readname): If the size overflows, report an error instead of
6084         looping forever.
6085
6086 2003-09-09  Derek Robert Price  <derek@ximbiot.com>
6087
6088         * getndelim2.c: Assume stdlib.h per the C89 spec.
6089
6090 2003-09-08  Paul Eggert  <eggert@twinsun.com>
6091
6092         Assume C89 or better; remove K&R cruft.
6093         A few of these changes were first proposed by Derek Robert Price
6094         in <http://mail.gnu.org/archive/html/bug-gnulib/2003-07/msg00105.html>.
6095
6096         * addext.c: Include <string.h> unconditionally.
6097         * backupfile.c: Include <string.h>, <stdlib.h> unconditionally.
6098         Don't declare getenv or malloc.
6099
6100         * alloca.c: Include <string.h>, <stdlib.h> unconditionally.
6101         (POINTER_TYPE, pointer): Remove; all uses changed to void *.
6102         (NULL): Remove.
6103         (find_stack_direction, alloca): Use prototypes.
6104
6105         * atexit.c (atexit): Define using a prototype.
6106
6107         * basename.c, dirname.c, stripslash.c:
6108         Include <string.h> unconditionally.
6109
6110         * bcopy.c: Include <stddef.h>.
6111         (bcopy): Define with prototype, using 'const' and 'void' and 'size_t'.
6112
6113         * canon-host.c: Include <stdlib.h>, <string.h> unconditionally.
6114
6115         * error.h (error, error_at_line, error_print_progname)
6116         [! (defined (__STDC__) && __STDC__)]: Remove decls.
6117         * error.c: Include error.h first, to check interface.
6118         Include <stdarg.h>, <stdlib.h>, <string.h> unconditionally.
6119         (VA_START): Remove; all uses changeed to va_start.
6120         (exit, strerror): Remove decls.
6121         (error_print_progname): Prototype uncondionally.
6122         Don't include <errno.h>; no longer needed.
6123         (private_strerror): Remove.
6124         (error_tail): Always define.
6125         (error, error_at_line): Assume C89 or better; always use prototypes.
6126         * fatal.c: Include "fatal.h" first, to test interface.
6127         Include <stdarg.h>, <stdlib.h>, <string.h> unconditionally.
6128         (VA_START): Remove; all uses changed to va_start.
6129         [! (HAVE_VPRINTF || HAVE_DOPRNT || _LIBC)]: Remove support for
6130         this case.
6131         (exit): Remove decl.
6132         (fatal): Prototype unconditionally.  Assume va_start works.
6133         Abort at end, to pacify gcc.
6134
6135         * euidaccess.c (main): Define with a prototype.
6136
6137         * exclude.c: Include <stdlib.h>, <string.h> unconditionally.
6138
6139         * exitfail.c: Include <stdlib.h> unconditionally.
6140
6141         * fnmatch_.h (__P): Remove.  All uses changed to assume
6142         prototypes.
6143         * fnmatch.c: Include fnmatch.h first, to test interface.
6144         Include <string.h>, <stddef.h>, <stdlib.h> unconditionally.
6145         (getenv): Remove decl.
6146         (fnmatch): Define using a prototype.
6147         * fnmatch_loop.c (FCT): Remove forward decl; no longer needed.
6148         (FCT): Define using a prototype.
6149
6150         * getdate.y: Include <stdlib.h>, <string.h> unconditionally.
6151
6152         * gethostname.c: Include <stddef.h>.
6153         (gethostname): Define with prototype.  Length is size_t, not int.
6154
6155 2003-09-08  Paul Eggert  <eggert@twinsun.com>
6156
6157         * getversion.c: Remove; was migrated to backupfile.c in 1997.
6158         getversion.c should have been removed then, but was accidentally
6159         preserved.
6160
6161         * utime.c [!HAVE_UTIMES_NULL]: Include <sys/stat.h>, <fcntl.h>.
6162         (utime_null): Fix typo: 'st' was sometimes called 'sb'.
6163
6164 2003-09-07  Paul Eggert  <eggert@twinsun.com>
6165
6166         * time_r.c (gmtime_r, localtime_r): Fix silly typo: missing arg to
6167         copy_tm_result.  Bug reported by Simon Josefsson in
6168         <http://mail.gnu.org/archive/html/bug-gnulib/2003-09/msg00028.html>.
6169
6170 2003-09-06  Paul Eggert  <eggert@twinsun.com>
6171
6172         * time_r.c, time_r.h: New files.
6173
6174         * mktime.c (my_mktime_localtime_r): Remove; all uses changed to
6175         __localtime_r.
6176         (__localtime_r) [!defined _LIBC]: New macro.  Include <time_r.h>.
6177         (__mktime_internal) [!defined _LIBC]: Now extern, not static.
6178
6179         * strftime.c (my_strftime_gmtime_r): Remove; all uses changed to
6180         __gmtime_r.
6181         (my_strftime_localtime_r): Remove; all uses changed to __localtime_r.
6182         (__gtime_r, __localtime_r) [!HAVE_TM_GMTOFF]: New macros.
6183         Include <time_r.h>.
6184
6185         * timegm.c: Switch to glibc implementation, with the following changes:
6186         [defined HAVE_CONFIG_H]: Include <config.h>.
6187         [!defined _LIBC]: Include "timegm.h" rather than <time.h>.
6188         (__mktime_internal) [!defined _LIBC]: New decl.
6189         (__gmtime_r) [!defined _LIBC]: New macro and function.
6190         (timegm): Use a prototype, since gnulib assumes C89.
6191         Do not bother declaring tmp to be const, as it's not really usefu.
6192         * timegm.h: Hoist "#include <time.h>" out of #ifdef.
6193         (timegm): Declare only if HAVE_DECL_TIMEGM.
6194
6195 2003-09-03  Paul Eggert  <eggert@twinsun.com>
6196
6197         * human.c (human_readable): Fix bug that rounded 10501 to 10k.
6198         Bug reported by Lute Kamstra in
6199         <http://mail.gnu.org/archive/html/bug-gnulib/2003-09/msg00003.html>.
6200
6201         * getdate.y (relative_time_table): Use tDAY_UNIT for "tomorrow",
6202         "yesterday", "today", and "now" rather than tMINUTE_UNIT.  Of
6203         course with correspondingly smaller numbers for tomorrow and
6204         yesterday.  From Tadayoshi Funaba.  Originally installed into
6205         sh-utils on 1999-08-07, but the patch got lost (I guess during the
6206         coreutils merge?).
6207
6208 2003-08-31  Simon Josefsson  <jas@extundo.com>
6209
6210         * timegm.h: New file.
6211         * timegm.c: New file.  Based on wget-1.8.2/src/http.c:mktime_from_utc.
6212
6213 2003-08-31  Karl Berry  <karl@gnu.org>
6214
6215         * argp.h: update from libc.
6216
6217 2003-08-28  Bruno Haible  <bruno@clisp.org>
6218
6219         * binary-io.h: Undefine O_BINARY before defining it. This avoids a
6220         warning on QNX, which defines O_BINARY to 000000.
6221
6222 2003-08-24  Bruno Haible  <bruno@clisp.org>
6223
6224         * binary-io.h: Include <stdio.h>, to avoid a compilation error when
6225         MSVC7 <stdio.h> is included later.
6226
6227 2003-08-20  Bruno Haible  <bruno@clisp.org>
6228
6229         * progname.h: New file, from GNU gettext.
6230         * progname.c: New file, from GNU gettext.
6231         * progreloc.c: New file, from GNU gettext.
6232
6233 2003-08-19  Bruno Haible  <bruno@clisp.org>
6234
6235         * xstrdup.c: Assume <string.h> exists.
6236
6237 2003-08-18  Jim Meyering  <jim@meyering.net>
6238
6239         * setenv.h: Indent nested cpp directive.
6240         * vasnprintf.c: Remove trailing blanks.
6241
6242 2003-08-17  Simon Josefsson  <jas@extundo.com>
6243             Bruno Haible  <bruno@clisp.org>
6244
6245         * xstrndup.h: New file.
6246         * xstrndup.c: New file.
6247
6248 2003-08-17  Bruno Haible  <bruno@clisp.org>
6249
6250         * strndup.h: New file.
6251
6252 2003-08-16  Paul Eggert  <eggert@twinsun.com>
6253
6254         * regex.h, strdup.c, strtoll.c, strtoul.c: Do not normalize white
6255         space, undoing this 2003-08-12 change:
6256         <http://mail.gnu.org/archive/html/bug-gnulib/2003-08/msg00080.html>
6257
6258 2003-08-16  Jim Meyering  <jim@meyering.net>
6259
6260         Merge from coreutils.
6261         * xstrtoimax.c: #else #if -> #elif.
6262         * xstrtoumax.c: Likewise.
6263
6264 2003-08-15  Paul Eggert  <eggert@twinsun.com>
6265
6266         * config.charset, ref-add.sin, ref-del.sin: Use three spaces,
6267         rather than tab, after '#' in shell-script copyright notices.
6268         Suggested by Bruno Haible.
6269
6270 2003-08-15  Jim Meyering  <jim@meyering.net>
6271         and Paul Eggert  <eggert@twinsun.com>
6272
6273         Merge from coreutils.
6274         * readutmp.h (HAVE_UTMPX_H): Undef if struct utmp has the ut_exit
6275         member but strut utmpx does not.  Needed for AIX 4.3.3.
6276         (UT_EXIT_E_TERMINATION, UT_EXIT_E_EXIT): Define.
6277
6278 2003-08-15  Jim Meyering  <jim@meyering.net>
6279
6280         Merge from coreutils.
6281         * xgethostname.c: Include <stdlib.h>.
6282         (xghostname): Don't exit for anything other than memory-related
6283         failure; just return NULL.
6284         * userspec.c: Include "posixver.h".
6285         (parse_user_spec): Accept `.' as a separator only
6286         in pre-POSIX-200112 mode.
6287         * strtoimax.c: Use #elif rather than #else #if.
6288         * strftime.c (my_strftime) [!_LIBC && HAVE_TZNAME && HAVE_TZSET]:
6289         Remove function, now that we can rely on a working tzset function.
6290         [!_LIBC]: Ensure that the required autoconf test has been run.
6291         [!defined _NL_CURRENT && HAVE_STRFTIME]:
6292         Use underlying_strftime for %r.
6293         * sha.c: Merge in some clean-up and optimization changes from glibc.
6294         * sha.c (sha_stream) [BLOCKSIZE]: Move definition to top of file.
6295         Ensure that it is a multiple of 64.
6296         Rearrange loop exit tests so as to avoid performing an
6297         additional fread after encountering an error or EOF.
6298         * realloc.c: Update copyright date.
6299
6300 2003-08-14  Jim Meyering  <jim@meyering.net>
6301
6302         Merge from coreutils.
6303         * obstack.h: Whitespace changes.
6304         * mountlist.c: Remove anachronistic casts of xmalloc, xrealloc,
6305         and xcalloc return values.
6306         (read_filesystem_list) [MOUNTED_GETFSSTAT]:
6307         Use MNT_NOWAIT, rather than MNT_WAIT.  Otherwise, `df DIR' could
6308         hang on OSF/1 5.1 for DIR on both local and remote file systems.
6309         Reported by (and fix confirmed by) Nelson H. F. Beebe.
6310         (read_filesystem_list) [MOUNTED_VMOUNT]: Detect any
6311         error from mntctl.
6312         Use mntctl's return value to drive the entry-processing loop, since
6313         we can't rely on the value of the vmt_length member in the last
6314         entry.  On some systems doing so could result in exhausting
6315         virtual memory.  Based in part on a patch from Mike Jetzer.
6316
6317 2003-08-14  Jim Meyering  <jim@meyering.net>
6318         and Paul Eggert  <eggert@twinsun.com>
6319
6320         Merges from coreutils, plus other fixes.
6321         * physmem.c: Merge in portability changes from gcc/libiberty
6322         to support AIX, IRIX, Tru64, and Windows.  See the ChangeLog there
6323         for credits and details.  Thanks to Kaveh Ghazi for helping
6324         to keep these files in sync.
6325         (ARRAY_SIZE): Define it.
6326         (physmem_total, physmem_available): Add comments. From Kaveh Ghazi.
6327         * memcasecmp.c: Remove unnecessary parentheses after 'defined'.
6328         (memcasecmp): Don't assume size_t fits in unsigned int.
6329         Remove casts and duplicate code.
6330         * md5.c: Include <string.h> and <stdlib.h> unconditionally.
6331         (memcpy): Remove definition.
6332         Merge in some clean-up and optimization changes from glibc.
6333         [BLOCKSIZE]: Move definition to top of file.
6334         Ensure that it is a multiple of 64.
6335         Rearrange loop exit tests so as to avoid performing an
6336         additional fread after encountering an error or EOF.
6337         * md5.h (md5_uintptr): Define.
6338         * makepath.c (CLEANUP_CWD): Report an error if we failed to
6339         return to the initial working directory.  Preserve errno
6340         for caller.
6341         * idcache.c: Include "xalloc.h".
6342         (xmalloc, xrealloc): Remove decls.
6343         (getuser): Remove casts no longer required in C89.
6344         * human.c: Include stdio.h, for sprintf.
6345         * group-member.c: Include "xalloc.h".
6346         (xmalloc, xrealloc): Remove decls.
6347         (get_group_info): Remove casts no longer required in C89.
6348         * getusershell.c (readname): Remove casts no longer required in C89.
6349         * gettimeofday.c (rpl_gmtime, rpl_tzset): New functions.
6350         * getline.c: Whitespace fix, from coreutils.
6351
6352 2003-08-13  Paul Eggert  <eggert@twinsun.com>
6353
6354         * exclude.c: Include <ctype.h>
6355         (IN_CTYPE_DOMAIN): New macro.
6356         (is_space): New fn.
6357         (add_exclude_file): If LINE_END is a space, ignore trailing spaces
6358         and empty lines.
6359
6360         * argp-help.c, argp-parse.c, config.charset, getopt.h:
6361         Undo previous (whitespace-only) change.
6362
6363 2003-08-12  Paul Eggert  <eggert@twinsun.com>
6364
6365         * argp-help.c, argp-parse.c, config.charset, getopt.h:
6366         Normalize leading white space and remove trailing white space.
6367         * ref-add.sin, ref-del.sin: Use '#' before empty line in copyright
6368         notice, as per ../config/srclist-update.
6369
6370         Merge from coreutils.
6371         * euidaccess.h: New file.
6372         * euidaccess.c: Include it.
6373         * .cppi-disable: Add printf-args.h, printf-parse.h, stdbool_.h,
6374         vasnprintf.h, vasprintf.h.  Remove strdup.c, gettext.h.
6375         * regex.h, strdup.c, strtoll.c, strtoul.c: Normalize white space.
6376
6377 2003-08-11  Bruno Haible  <bruno@clisp.org>
6378
6379         * vasnprintf.c (local_wcslen): New function, for Solaris 2.5.1.
6380         (vasnprintf): Use it instead of wcslen.
6381
6382 2003-08-11  Bruno Haible  <bruno@clisp.org>
6383
6384         * stdbool_.h (_Bool): Undo last change; instead use a negative enum
6385         value to ensure that _Bool promotes to int. Use #define for _Bool when
6386         using the Solaris C compiler. Adds comments suggested by Paul Eggert.
6387
6388 2003-08-10  Karl Berry  <karl@gnu.org>
6389
6390         * regex.h: update from libc (whitespace fix).
6391
6392 2003-08-09  Paul Eggert  <eggert@twinsun.com>
6393
6394         Merge some files from coreutils.  These changes were
6395         originally made by Jim Meyering.
6396         * acl.c: Include <sys/types.h> before <sys/stat.h>;
6397         many older Unixes require this.
6398         * alloca.c (alloca): Remove cast to argument of free;
6399         no longer needed in C89.
6400         * alloca_.h, regex.h: Fix white space to match
6401         what GNU indent does.
6402
6403 2003-08-05  Paul Eggert  <eggert@twinsun.com>
6404
6405         * bumpalloc.h: Remove.
6406
6407 2003-08-04  Paul Eggert  <eggert@twinsun.com>
6408
6409         * getloadavg.c: Change copyright notice and spacing to conform to
6410         GNU coding style.
6411
6412         Merge from coreutils.
6413         * error.c [!USE_IN_LIBIO]: Omit this case; assume USE_IN_LIBIO is 1.
6414         From glibc.
6415         * getdate.y (date): Also accept dates like May-23-2003; suggestion
6416         from Karl Berry, implemented by Jim Meyering.
6417         * getgroups.c: Include "xalloc.h" instead of declaring xalloc fns;
6418         from Dmitry V. Levin.
6419         Remove anachronistic cast of xrealloc.
6420         * fnmatch_.h (__const): Remove.  Use 'const'.
6421         * fnmatch_loop.c (NEW_PATTERN): Cast alloca return value to proper
6422         type. Otherwise, it wouldn't compile with at least /bin/cc on
6423         ymp-cray-unicos9.0.2.X.
6424         Combine two mostly-identical uses of alloca into one.
6425         Thanks to the Cray-Cyber project for access to a Cray Y-MP.
6426
6427 2003-08-04  Dave Love <d.love@dl.ac.uk>
6428
6429         [From Emacs.]
6430
6431         * getloadavg.c: Check `__unix' as well as `unix'.  Use #ifdef, not
6432         #if.  Check HAVE_LIBKSTAT as well as LOAD_AVE_TYPE.  Check
6433         F_SETFD, not FD_SETFD.  Use HAVE_STRUCT_NLIST_N_UN_N_NAME, not
6434         obsolete NLIST_NAME_UNION.
6435         [__GNU__]: Undef BSD and FSCALE.
6436         [!NLIST_STRUCT]: Remove conditional definition of NLIST_STRUCT.
6437
6438 2003-08-03  Paul Eggert  <eggert@twinsun.com>
6439
6440         * stdbool_.h (_Bool): Make it signed char, instead of
6441         an enum type, so that it's guaranteed to promote to int.  See:
6442         <http://mail.gnu.org/archive/html/bug-gnulib/2003-07/msg00124.html>
6443
6444 2003-07-31  Paul Eggert  <eggert@twinsun.com>
6445
6446         * strerror.c: Include config.h, limits.h.  Declare sprintf.
6447         (strerror): Don't assume that a printable int fits in 14 bytes.
6448
6449 2003-07-24  Derek Robert Price  <derek@ximbiot.com>
6450             Bruno Haible  <bruno@clisp.org>
6451
6452         * getline.h (getline, getdelim): Change return type to ssize_t.
6453         * getline.c (getline, getdelim): Likewise.
6454         Remove _GNU_SOURCE define; now it's defined in config.h through
6455         m4/getline.m4.
6456
6457 2003-07-22  Paul Eggert  <eggert@twinsun.com>
6458
6459         * xalloc.h (XCALLOC, XREALLOC, CCLONE): Fix under- and
6460         over-parenthesization in macros.
6461
6462         Sync with coreutils.
6463
6464         * xalloc.h (XMALLOC, XCALLOC, XREALLOC): Remove casts not
6465         required by C99.
6466
6467         Use `exit_failure' for xalloc and xmemcoll instead of their own
6468         private exit-failure variables.
6469         * xalloc.h (xalloc_exit_failure): Remove.
6470         * xmalloc.c: Likewise.  Include exitfail.h.
6471         (xalloc_die): Use exit_failure instead of xalloc_exit_failure.
6472         * xmemcoll.h (xmemcoll_exit_failure): Remove.
6473         * xmemcoll.c: Likewise.  Include exitfail.h.
6474         (xmemcoll): Use exit_failure instead of xalloc_exit_failure.
6475
6476 2003-07-18  Paul Eggert  <eggert@twinsun.com>
6477
6478         * closeout.h (close_stdout_set_status, close_stdout_status): Remove.
6479         * closeout.c: Likewise.  Include "closeout.h" right after config.h,
6480         to test that it can stand by itself.  Include "exitfail.h".
6481         Clients should set exit_failure instead.
6482         (EXIT_FAILURE): Remove; no longer needed.  Do not include <stdlib.h>.
6483
6484 2003-07-18  Andreas Schwab  <schwab@suse.de>
6485
6486         * memcoll.c (memcoll) [!HAVE_STRCOLL]: Clear errno.
6487
6488 2003-07-18  Bruno Haible  <bruno@clisp.org>
6489
6490         * getndelim2.h: New file.
6491         * getndelim2.c: Make into a module of its own. Include config.h,
6492         getndelim2.h.
6493         (getndelim2): Make non-static. Change return type to ssize_t.
6494         * getline.h: Change argument names.
6495         * getline.c: Include getndelim2.h instead of getndelim2.c.
6496         * getnline.c: Include getndelim2.h.
6497
6498 2003-07-17  Bruno Haible  <bruno@clisp.org>
6499
6500         * Makefile.am: Remove file.
6501         * Makefile.in: Remove file.
6502
6503 2003-07-17  Bruno Haible  <bruno@clisp.org>
6504
6505         * getnline.h: New file.
6506         * getnline.c: New file.
6507         * getndelim2.c: New file, extracted from getline.c.
6508         (getndelim2): Renamed from getdelim2, with added nmax argument.
6509         * getline.c: Include getndelim2.c.
6510         (getdelim2): Moved out to getndelim2.c.
6511         (getline, getdelim): Update.
6512
6513 2003-07-15    <karl@gnu.org>
6514
6515         * vasnprintf.c: update from gettext.
6516
6517 2003-07-15  Jim Meyering  <jim@meyering.net>
6518
6519         * makepath.c (make_path): Enclose diagnostic in _(...).
6520
6521 2003-07-14  Paul Eggert  <eggert@twinsun.com>
6522
6523         * asnprintf.c, asprintf.c, config.charset, gettext.h,
6524         localcharset.c, localcharset.h, mkdtemp.c, printf-args.c,
6525         printf-args.h, printf-parse.c, printf-parse.h, ref-add.sin,
6526         ref-del.sin, setenv.c, unsetenv.c, vasnprintf.c, vasnprintf.h,
6527         vasprintf.c, vasprintf.h: Regenerate.  These files are now being
6528         updated automatically by ../config/srclist-update.  This changes
6529         their license from LPGL to GPL.
6530
6531 2003-07-14  Jim Meyering  <jim@meyering.net>
6532
6533         Don't emit diagnostics.  Let callers do that.
6534         * save-cwd.c: Don't include "error.h".
6535         (save_cwd): Don't call error.  Ensure that errno is valid
6536         when returning nonzero.
6537
6538         * save-cwd.h (restore_cwd): Update prototype.
6539         * save-cwd.c (restore_cwd): Remove two parameters.
6540         Simplify.  Don't call error upon failure.  Let callers do that.
6541         (save_cwd): Mention that Irix 5.3 has the same problem as SunOS 4
6542         when auditing is enabled.  But don't bother updating the #if.
6543
6544 2003-07-14  Simon Josefsson  <jas@extundo.com>
6545
6546         * mempcpy.h: New file.
6547         * mempcpy.c: New file.
6548
6549 2003-07-14  Paul Eggert  <eggert@twinsun.com>
6550
6551         * ceill.c, expl.c, floorl.c, frexpl.c, ldexpl.c, mathl.h,
6552         sincosl.c, sqrtl.c, trigl.c, trigl.h, poll.c, poll_.h, mkstemp.c,
6553         unicodeio.c, unicodeio.h, unlocked-io.h:
6554         Switch from LGPL to GPL.
6555
6556 2003-07-11  Alexandre Duret-Lutz  <adl@gnu.org>
6557
6558         * obstack.h (__INT_TO_PTR): Revert change of 2003-03-13;
6559         it breaks C++ compilation.
6560         [!__GNUC__ || !__STDC__] (obstack_finish): Cast result to void*.
6561
6562 2003-07-10  Jim Meyering  <jim@meyering.net>
6563
6564         * vasnprintf.c: Remove trailing blanks.
6565         Make cpp indentation consistent.
6566
6567 2003-07-09  Paul Eggert  <eggert@twinsun.com>
6568
6569         * alloca_.h, euidaccess.c, getpass.c, memrchr.c, obstack.h,
6570         posixver.c, strftime.c, strnlen.c, strverscmp.c:
6571         Switch from LGPL to GPL.
6572
6573 2003-07-07  Paul Eggert  <eggert@twinsun.com>
6574
6575         * mktime.c: Fix some boundary cases and remove need for floating point.
6576
6577         Issue a compile-time diagnostic if time_t is floating point, or if
6578         two's complement arithmetic is not in effect, or if arithmetic
6579         right shift does not propagate the sign.  These assumptions were
6580         all in the original code but they weren't checked.
6581
6582         (TIME_T_MIDPOINT, verify): New macros.
6583         (__isleap): Remove; it has integer overflow problems.
6584         (leapyear): New function, without those problems.
6585         (ydhms_tm_diff): Remove; splitting into two parts.
6586         (ydhms_diff): New function, containing the arithmetic part of
6587         the old ydhms_tm_diff function.  Issue a compile-time
6588         diagnostic if we are not using C99 integer division.
6589         Avoid casts when possible.
6590         (guess_time_tm): New function, containing the checking part of
6591         the old ydhms_tm_diff function.  Return the new value, rather than
6592         the difference between it and the old.  Accept a new argument T
6593         so that *T specifies the old value.  Check for overflow in the result.
6594
6595         (__mktime_internal): Use a time_t offset, not a long int offset.
6596         This undoes the 2003-06-04 change, which is no longer needed now
6597         that we have better overflow checking.
6598         (localtime_offset): Likewise.
6599
6600         (__mktime_internal): Avoid harmful overflow on hosts where time_t
6601         and long are 64-bit but int is only 32-bit.
6602         (ydhms_diff): Use long int to store year1 and yday1.
6603         Issue a compile-time diagnostic if long int is not wide enough.
6604
6605         (__mktime_internal): Use long int to store adjusted year and yday.
6606         Use plain C rather than preprocessor commands, if that doesn't
6607         affect efficiency.
6608         Check for overflow (and try to repair) after each probe
6609         rather than checking only at the very end.  This avoids some bugs
6610         (e.g., southern hemisphere, behind GMT, and GMT offset at minimum time
6611         does not equal GMT offset at maximum time).
6612         Use integer to check for overflow rather than floating point; this
6613         is more portable to non-IEEE hosts, and is a tad faster.
6614         When we detect that we are oscillating between two values,
6615         don't check whether tm_isdst has the requested value, since
6616         we already know the answer.  When tm_isdst has the wrong value,
6617         use a different heuristic to find the right one, based on the
6618         extreme values actually observed in practice in tz2003a,
6619         rather than the (overly optimistic) "previous 3 calendar quarters".
6620
6621         (not_equal_tm, print_tm, check_result): Use "const T" rather than
6622         "T const" to accommodate glibc style.
6623         (check_result): Use less-confusing report format.  "long" -> "long int.
6624         (main): Likewise.
6625         Don't loop if the iteration overflows time_t.
6626         Allow a negative step in the iteration.
6627
6628 2003-07-01  Paul Eggert  <eggert@twinsun.com>
6629
6630         * xreadlink.c: Include <sys/types.h> unconditionally, instead of
6631         having it depend on HAVE_SYS_TYPES_H.
6632
6633 2003-06-25  Bruno Haible  <bruno@clisp.org>
6634
6635         * readlink.c: New file.
6636
6637 2003-06-20  Bruno Haible  <bruno@clisp.org>
6638
6639         Assume C89, so PARAMS isn't needed.
6640         * unicodeio.h (PARAMS): Remove.
6641         * unicodeio.c: Don't use PARAMS.
6642
6643 2003-06-18  Jim Meyering  <jim@meyering.net>
6644
6645         Merge changes from coreutils.
6646         * readutmp.c: Include <string.h> and <stdlib.h> unconditionally.
6647         Remove explicit declarations of xmalloc and realloc.
6648         Include xalloc.h.
6649         (read_utmp): Remove anachronistic cast of xmalloc.
6650
6651 2003-06-17  Paul Eggert  <eggert@twinsun.com>
6652
6653         Assume C89, so PARAMS isn't needed.
6654         * backupfile.h (PARAMS): Remove.  All uses removed.
6655         * closeout.h, dirname.h, filemode.h, fsusage.h, getdate.h, getline.h,
6656         group-member.h, hard-locale.h, hash.h, linebuffer.h, long-options.h,
6657         makepath.h, memcasecmp.h, memcoll.h, modechange.h, mountlist.h,
6658         path-concat.h, physmem.h, posixtm.h, quote.h, readutmp.h, same.h,
6659         save-cwd.h, savedir.h, stdio-safer.h, strtoimax.c, strverscmp.h,
6660         unistd-safer.h, version-etc.h, xalloc.h, xreadlink.h, xstrtod.h,
6661         xstrtol.h: Likewise.
6662         * filemode.h, hard-locale.h, memcoll.h, modechange.h, physmem.h,
6663         same.h, strverscmp.h: Do not include config.h; no longer needed.
6664         Anyway, config.h should always be included before any other file.
6665
6666 2003-06-11  Simon Josefsson  <jas@extundo.com>
6667
6668         * sysexit_.h: New file.
6669
6670 2003-05-20  Derek Price  <derek@ximbiot.com>
6671
6672         * stat.c [LSTAT]: Compile/use slash_aware_lstat only if it is necessary.
6673
6674 2003-06-10  Simon Josefsson  <jas@extundo.com>
6675
6676         * strchrnul.h: New file.
6677         * strchrnul.c: New file.
6678
6679 2003-06-10  Simon Josefsson <jas@extundo.com>
6680
6681         * argp.h: New file, from glibc.
6682         * argp-ba.c: New file, from glibc.
6683         * argp-eexst.c: New file, from glibc.
6684         * argp-fmtstream.c: New file, from glibc.
6685         * argp-fmtstream.h: New file, from glibc.
6686         * argp-fs-xinl.c: New file, from glibc.
6687         * argp-help.c: New file, from glibc.
6688         * argp-namefrob.h: New file, from glibc.
6689         * argp-parse.c: New file, from glibc.
6690         * argp-pv.c: New file, from glibc.
6691         * argp-pvh.c: New file, from glibc.
6692         * argp-xinl.c: New file, from glibc.
6693
6694 2003-06-07  Jim Meyering  <jim@meyering.net>
6695
6696         * readtokens.h: Put `Free Software Foundation, Inc.'
6697         in place of my name in the copyright comment.
6698         Remove definition and uses of __P.
6699
6700         From coreutils.
6701         * stat.c: Don't declare xmalloc explicitly.
6702         Instead, include "xalloc.h".
6703         * readtokens.c (readtokens): Remove anachronistic casts of xmalloc,
6704         xrealloc, and xcalloc return values.
6705         * xgetcwd.c (xgetcwd): Include "xgetcwd.h".
6706         Improve comment.
6707         * xgetcwd.h: Remove definition/uses of PARAMS.
6708
6709 2003-06-06  Jim Meyering  <jim@meyering.net>
6710
6711         * stdbool_.h: Renamed from stdbool.h.in.
6712
6713 2003-06-06  Jim Meyering  <jim@meyering.net>
6714
6715         Merge from coreutils.
6716         * same.c: (same_name): Declare *_basename locals to be `const'.
6717         Consolidate declarations and initializations of *_base* locals.
6718
6719         Merge from coreutils.
6720         This avoids a core dump on systems without GNU putenv,
6721         when running `env -u SOME_ALREADY_UNSET_VARIABLE'.
6722         * putenv.c (__set_errno, LOCK, UNLOCK): Define.
6723         (unsetenv): New static function, from GNU libc.
6724         (rpl_putenv): Use it.
6725
6726         * modechange.c: Remove trailing blanks.
6727
6728         Merge from coreutils.
6729         * fsusage.c: Remove declaration of statfs.
6730         It conflicted with one from OSF/1 5.1 in <sys/mount.h>.
6731
6732         * posixtm.c: Include <stdbool.h> unconditionally.
6733
6734 2003-06-05  Paul Eggert  <eggert@twinsun.com>
6735
6736         * mktime.c (__mktime_internal): When resolving a tm_isdst
6737         mismatch, look in future quarters as well as past.  This fixes a
6738         bug when processing fall-backwards gaps immediately after a long
6739         period of daylight-saving time.
6740
6741         * mktime.c: Assume freestanding C89 or better.
6742         (HAVE_LIMITS_H): Remove.  Assume it's 1.
6743         (__P): Remove; not used.
6744         (CHAR_BIT, INT_MIN, INT_MAX): Remove; <limits.h> defines them.
6745         (mktime, not_equal_tm, print_tm, check_result,
6746         main): Use prototypes.  Use const * where appropriate.
6747         (main): Fix typo in testing code that uncovered by above changes.
6748         (Local Variables): Remove -DHAVE_LIMITS_H from compile-command.
6749
6750 2003-06-04  Paul Eggert  <eggert@twinsun.com>
6751
6752         * mktime.c: Fix Debian bug 177940
6753         <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=177940>.
6754         (localtime_offset): Now long int, not time_t, because we want it
6755         to be guaranteed to be signed.  All uses changed.
6756         (__mktime_internal): If overflow would occur when adding offset,
6757         don't add it.
6758
6759         Merge 'human' changes from coreutils.  Rewrite to support
6760         locale-specific notations like thousands separators.
6761         * human.c: Simplify authorship notice.
6762         Include human.h immediately after config.h.
6763         <sys/types.h>, <stdio.h>: Do not include; no longer needed.
6764         <limits.h>: Do not include, since human.h does.
6765         (SIZE_MAX, UINTMAX_MAX): New macros.
6766         <strings.h>: Include if HAVE_STRINGS_H, not if !HAVE_STRING_H.
6767         <locale.h>: Include if HAVE_LOCALE_H and HAVE_LOCALECONV.
6768         (HUMAN_READABLE_SUFFIX_LENGTH_MAX): New macro.
6769         (power_letter): Renamed from suffixes.
6770         (generate_suffix_backwards): Remove.
6771         (adjust_value): Now takes int style (because of human.h changes)
6772         and long double value (for greater precision on some platforms).
6773         (group_number): New function.
6774         (human_readable): Use it.  Use integer options, not enum.
6775         Put the options before the sizes in the arg list.
6776         Support all the new options.
6777         The old human_readable function has been removed;
6778         use inttostr.h instead.
6779         (human_readable, default_block_size, humblock):
6780         Use uintmax_t, not int, for block sizes.
6781         (human_readable_inexact, block_size_types): Remove.
6782         (block_size_opts): New constant.
6783         (human_options): Renamed from human_block_size, with new signature
6784         that allows block sizes up to UINTMAX_MAX.  All callers changed.
6785         * human.h: Add copyright and authorship notice.
6786         Include <limits.h> and <stdbool.h> unconditionally.
6787         (PARAMS): Remove.  All uses removed.
6788         (LONGEST_HUMAN_READABLE): Add support for thousands separator.
6789         (enum human_inexact_style): Remove tag; now a nameless enum.
6790         (human_floor, human_ceiling, human_round_to_even): Now have
6791         values 2, 0, 1 rather than -1, 1, 0.
6792         (human_group_digits, human_suppress_point_zero, human_autoscale,
6793         human_base_1024, human_SI, human_B): New constants.
6794         (human_readable_inexact, human_block_size): Remove.
6795         (human_readable): Size args are now uintmax_t, not int.
6796         (human_options): New decl.
6797
6798         * exclude.c: (new_exclude, add_exclude): Remove casts that are
6799         unnecessary now that we assume C89 or better.  This change
6800         imported from coreutils.
6801
6802         * mktime.c (__mktime_internal): Do not reject negative timestamps
6803         arbitrarily.  This is the same patch as 2003-05-28, but it got lost
6804         in the 2003-05-30 sync from glibc.
6805
6806         .h files should stand alone, but we shouldn't include <sys/types.h>
6807         if we can get away with just <stddef.h>.
6808
6809         * __fpending.h, addext.c, backupfile.c, exclude.c, getline.c,
6810         malloc.c, putenv.c, realloc.c, strcasecmp.c: Include <stddef.h>
6811         rather than <sys/types.h>, as we merely need size_t.
6812         * dirname.h, memcoll.h, xalloc.h, xmemcoll.h: Include <stddef.h>,
6813         to get size_t.
6814         * hash.h, linebuffer.h, readtokens.h, stdio-safer.h, version-etc.h:
6815         Include <stdio.h>, to get FILE.
6816         * memcasecmp.c: Don't include <sys/types.h>, as we can assume
6817         memcasecmp.h has included <stddef.h> and all we need is size_t.
6818         * memcoll.c: Include "memcoll.h", which gets us size_t and checks
6819         our interface, instead of including <sys/types.h>
6820
6821 2003-06-02  Paul Eggert  <eggert@twinsun.com>
6822
6823         [from coreutils]
6824         Fix some minor time-related bugs with POSIX time arguments.
6825         Some valid time stamps were being rejected (notably -1, and
6826         time stamps before 1900 on 64-bit hosts).  And some invalid
6827         time stamps were being accepted, e.g. September 31.
6828
6829         * posixtm.h (posixtime): Return bool instead of time_t, so
6830         that we can return (time_t) -1 successfully.
6831         * posixtm.c: Likewise.
6832         [HAVE_STDBOOL_H]: Include <stdbool.h>.
6833         (bool, false, true) [!HAVE_STDBOOL_H]: New type.
6834         (t): Remove static var.
6835         (year, posix_time_parse): Now takes struct tm * arg to modify, instead
6836         of static var.  All uses changed.
6837         (year): Do not reject years before 1900; they can occur with
6838         64-bit time_t.
6839         (posix_time_parse): Do not check for out-of-range components;
6840         that is now the caller's responsibility, since our checks were
6841         only approximations.
6842         (posixtime): Use mktime to check for out-of-range components,
6843         since it knows them exactly.
6844         If mktime returns (time_t) -1, check whether an error actually occurred
6845         by invoking localtime on -1.
6846         (main) [TEST_POSIXTIME]: Check for input data errors, and report
6847         posixtime failures better.
6848         Improve the test data (in comments only).
6849
6850 2003-05-30    <karl@gnu.org>
6851
6852         * mktime.c: update from libc.
6853
6854 2003-05-30  Bruno Haible  <bruno@clisp.org>
6855
6856         * config.charset: Upgrade to gettext-0.12.1 and libiconv-1.9.1.
6857         * localcharset.h: Likewise.
6858         * localcharset.c: Likewise.
6859
6860 2003-05-28  Paul Eggert  <eggert@twinsun.com>
6861
6862         Assume the headers required for C89 freestanding compilers.
6863         * addext.c, backupfile.c, fsusage.c, human.c, pathmax.h,
6864         rpmatch.c, userspec.c, xreadlink.c, xstrtol.c: Include <limits.h>
6865         without checking for HAVE_LIMITS_H.
6866         * backupfile.c, fsusage.c, hash.c, human.c, safe-read.c, userspec.c,
6867         xstrtol.c (CHAR_BIT) : Don't define, since <limits.h> is guaranteed
6868         to do that.
6869         * fatal.c: Include <stdarg.h> without checking for __STDC__.
6870         * exclude.c: Include <stdbool.h> unconditionally.
6871         * tempname.c: Include <stddef.h> unconditionally.
6872         * hash.c: Include <limits.h>, since we no longer define CHAR_BIT.
6873         * modechange.c, rpmatch.c (NULL): Don't define, since
6874         <stddef.h> does that.
6875         * quote.c: Dont include <stddef.h> or <sys/types.h>; not needed.
6876         * safe-read.c (INT_MAX): Don't define, since <limits.h> does that.
6877         * safe-read.c (TYPE_MINIMUM, TYPE_MAXIMUM): Remove; no longer needed.
6878         * xstrtol.c: Likewise.
6879         * safe-read.c: Remove TYPE_SIGNED; no longer needed.
6880         * savedir.c: Include <stddef.h> instead of defining NULL.
6881
6882         * addext.c (addext): Use assignment rather than cast, to avoid
6883         warnings on some platforms.
6884
6885         * mktime.c (__mktime_internal): Do not reject negative timestamps
6886         arbitrarily.
6887
6888 2003-05-10  Bruno Haible  <bruno@clisp.org>
6889
6890         * linebreak.c (iconv_string_length): Don't return -1 just because the
6891         string is longer than 4 KB.
6892
6893 2003-05-12  Jim Meyering  <jim@meyering.net>
6894
6895         * strftime.c (my_strftime): Let the `-' (no-pad) flag affect
6896         the space-padded-by-default conversion specifiers, %e, %k, %l.
6897
6898 2003-05-03  Bruno Haible  <bruno@clisp.org>
6899
6900         Upgrade to Unicode-4.0.
6901         * linebreak.c (nonspacing_table_data): Change width of U+00AD,
6902         U+0350..U+0357, U+035D..U+035F, U+0600..U+0603, U+0610..U+0615,
6903         U+0656..U+0658, U+0A01, U+0AE2..U+0AE3, U+0CBC, U+17B4..U+17B5,
6904         U+17DD, U+1920..U+1922, U+1927..U+192B, U+1932, U+1939..U+193B
6905         from 1 to 0. Change width of U+0CBF, U+0CC6, U+180E from 0 to 1.
6906         (uc_width): Change width of U+4DC0..U+4DFF from 2 to 1. Change width
6907         of U+2A6D7..U+2F7FF, U+2FA1E..U+2FFFD, U+30000..U+3FFFD from 1 to 2.
6908         Change width of U+E0100..U+E01EF from 1 to 0.
6909
6910 2003-04-25  Bruno Haible  <bruno@clisp.org>
6911
6912         * copy-file.c: Include <stddef.h>, for size_t.
6913
6914 2003-04-25  Jim Meyering  <jim@meyering.net>
6915
6916         * copy-file.c (copy_file_preserving): Declare buf_size to be
6917         of type size_t, not int.
6918
6919 2003-04-11  Jim Meyering  <jim@meyering.net>
6920
6921         Merge changes from Coreutils.
6922
6923         2003-03-22  Jim Meyering  <jim@meyering.net>
6924
6925         * strftime.c (widen): Cast alloca return value to proper type.
6926
6927         2003-01-19  Ulrich Drepper  <drepper@redhat.com>
6928
6929         From GNU libc.
6930         * strftime.c (my_strftime): Handle very large width
6931         specifications for numeric values correctly.  Improve checks for
6932         overflow.
6933
6934         2003-01-19  Jim Meyering  <jim@meyering.net>
6935
6936         * strftime.c (widen) [COMPILE_WIDE]: Merge nearly-identical definitions.
6937         (nl_get_alt_digit) [! defined my_strftime]: Define.
6938         (my_strftime) [_NL_CURRENT]: Merge nearly-identical uses of
6939         _nl_get_alt_digit and _nl_get_walt_digit.
6940
6941         * strftime.c (my_strftime): Merge in locale-related changes from libc.
6942         These changes have no effect outside of _LIBC.
6943
6944 2003-04-10  Bruno Haible  <bruno@clisp.org>
6945
6946         * findprog.h: New file, from GNU gettext.
6947         * findprog.c: New file, from GNU gettext.
6948
6949 2003-04-05  Jim Meyering  <jim@meyering.net>
6950
6951         Merge changes from Coreutils.
6952
6953         * exclude.h (PARAMS): Remove definition and uses.
6954         * exclude.c: Remove uses of `PARAMS'.
6955
6956         * dirname.c [TEST_DIRNAME]: Update build instructions for test.
6957         Add test-cases for DOS filenames. Declare program_name.
6958         (main): Set up program_name.  Patch by Rich Dawe.
6959
6960         * mountlist.c (read_filesystem_list) [MOUNTED_VMOUNT]: Detect any
6961         error from mntctl.
6962         Use mntctl's return value to drive the entry-processing loop, since
6963         we can't rely on the value of the vmt_length member in the last
6964         entry.  On some systems doing so could result in exhausting
6965         virtual memory.  Based in part on a patch from Mike Jetzer.
6966
6967 2003-04-04  Bruno Haible  <bruno@clisp.org>
6968
6969         * linebreak.h: New file, from GNU gettext.
6970         * linebreak.c: New file, from GNU gettext with slight modifications.
6971         * lbrkprop.h: New file, from GNU gettext.
6972
6973 2003-04-03  Bruno Haible  <bruno@clisp.org>
6974
6975         * utf8-ucs4.h: New file, from GNU gettext.
6976         * utf16-ucs4.h: New file, from GNU gettext.
6977         * ucs4-utf8.h: New file, from GNU gettext.
6978         * ucs4-utf16.h: New file, from GNU gettext.
6979
6980 2003-04-02  Bruno Haible  <bruno@clisp.org>
6981
6982         * binary-io.h: New file, from GNU gettext.
6983
6984 2003-04-01  Bruno Haible  <bruno@clisp.org>
6985
6986         * pathname.h: New file, from GNU gettext.
6987         * concatpath.c: New file, from GNU gettext.
6988
6989 2003-03-30  Bruno Haible  <bruno@clisp.org>
6990
6991         * copy-file.c (copy_file_preserving): Don't set owner if the function
6992         chown() doesn't exist.
6993
6994 2003-03-28  Bruno Haible  <bruno@clisp.org>
6995
6996         * copy-file.h: New file, from GNU gettext.
6997         * copy-file.c: New file, from GNU gettext.
6998
6999 2003-03-18  Jim Meyering  <jim@meyering.net>
7000
7001         * quote.c (quote_n): Fix typo in comment.
7002
7003 2003-03-14  Jim Meyering  <jim@meyering.net>
7004
7005         Merge changes from Coreutils.
7006         * obstack.h (obstack_object_size): Declare temporary, __o,
7007         to be const, in order to avoid warnings.
7008         (obstack_room): Likewise.
7009         (obstack_empty_p): Likewise.
7010
7011 2003-03-13  Paul Eggert  <eggert@twinsun.com>
7012
7013         Merge changes from Bison.
7014         * obstack.h: (__INT_TO_PTR) [__STDC__]: Cast result to
7015         (void *) to avoid diagnostic with native c89 on SGI IRIX 6.5
7016         when compiling Bison 1.875's `bitset bset = obstack_alloc
7017         (bobstack, bytes);'.  Problem reported by Nelson H. F. Beebe.
7018         * hash.c: Include <stdbool.h> unconditionally.
7019
7020 2003-03-09  Paul Eggert  <eggert@twinsun.com>
7021
7022         * argmatch.c (EXIT_FAILURE): Define if the system doesn't.
7023         Reported by Bruce Becker; see:
7024         http://mail.gnu.org/archive/html/bug-bison/2003-03/msg00017.html
7025
7026 2003-03-03  Paul Eggert  <eggert@twinsun.com>
7027             Bruno Haible  <bruno@clisp.org>
7028
7029         * mbswidth.h: Include <wchar.h>. Needed for UnixWare 7.1.1.
7030         Reported by John Hughes, see
7031         http://mail.gnu.org/archive/html/bug-bison/2003-02/msg00030.html
7032
7033 2003-02-19  Paolo Bonzino  <bonzini@gnu.org>
7034
7035         * poll_.h: New file.
7036         * poll.c: New file.
7037
7038 2003-02-18  Paolo Bonzino  <bonzini@gnu.org>
7039
7040         * mathl.h: New file.
7041         * acosl.c: New file.
7042         * asinl.c: New file.
7043         * atanl.c: New file.
7044         * ceill.c: New file.
7045         * cosl.c: New file.
7046         * expl.c: New file.
7047         * floorl.c: New file.
7048         * frexpl.c: New file.
7049         * ldexpl.c: New file.
7050         * logl.c: New file.
7051         * sincosl.c: New file.
7052         * sinl.c: New file.
7053         * sqrtl.c: New file.
7054         * tanl.c: New file.
7055         * trigl.c: New file.
7056         * trigl.h: New file.
7057
7058 2003-02-17  Bruno Haible  <bruno@clisp.org>
7059
7060         * mkdtemp.h: New file, from GNU gettext.
7061         * mkdtemp.c: New file, from GNU gettext.
7062
7063 2003-01-31  Bruno Haible  <bruno@clisp.org>
7064
7065         * rename.c: #undef rename before defining rpl_rename.
7066         * strnlen.c: #undef strnlen, define rpl_strnlen instead of strnlen.
7067
7068 2003-01-30  Bruno Haible  <bruno@clisp.org>
7069
7070         * printf-args.h: New file, from GNU gettext.
7071         * printf-args.c: New file, from GNU gettext.
7072         * printf-parse.h: New file, from GNU gettext.
7073         * printf-parse.c: New file, from GNU gettext.
7074         * vasnprintf.h: New file, from GNU gettext.
7075         * vasnprintf.c: New file, from GNU gettext.
7076         * asnprintf.c: New file, from GNU gettext.
7077         * vasprintf.h: New file, from GNU gettext with modifications.
7078         * vasprintf.c: New file, from GNU gettext.
7079         * asprintf.c: New file, from GNU gettext.
7080
7081 2003-01-29  Bruno Haible  <bruno@clisp.org>
7082
7083         * stpncpy.h: New file, from GNU gettext with modifications.
7084         * stpncpy.c: New file, from GNU gettext with modifications.
7085
7086 2003-01-28  Bruno Haible  <bruno@clisp.org>
7087
7088         * c-ctype.h: New file, from GNU gettext, with changes suggested by
7089         Paul Eggert.
7090         * c-ctype.c: New file, from GNU gettext, with changes suggested by
7091         Paul Eggert.
7092
7093 2003-01-27  Bruno Haible  <bruno@clisp.org>
7094
7095         * xsetenv.h: New file, from GNU gettext.
7096         * xsetenv.c: New file, from GNU gettext.
7097
7098 2003-01-23  Bruno Haible  <bruno@clisp.org>
7099
7100         * minmax.h: New file, from GNU gettext, with comments from Paul Eggert.
7101
7102 2003-01-22  Bruno Haible  <bruno@clisp.org>
7103
7104         * exit.h: New file, from GNU gettext.
7105
7106 2003-01-11  Bruno Haible  <bruno@clisp.org>
7107
7108         * stpcpy.h (stpcpy): Use ANSI C function declarations.
7109         * strcase.h (strcasecmp, strncasecmp): Likewise.
7110
7111 2003-01-14  Jim Meyering  <jim@meyering.net>
7112
7113         * same.c (same_name): Tweak a comment.
7114
7115 2003-01-11  Bruno Haible  <bruno@clisp.org>
7116
7117         * same.c (same_name): Reorder tests so as to avoid calling stat()
7118         when a string comparison is sufficient.
7119
7120 2003-01-11  Bruno Haible  <bruno@clisp.org>
7121
7122         * readtokens.c (readtoken): Cast character to 'unsigned char', not
7123         'unsigned int'.
7124
7125 2003-01-11  Bruno Haible  <bruno@clisp.org>
7126
7127         * hash-pjw.c: Add comment about low quality of this function.
7128
7129 2003-01-12  Paul Eggert  <eggert@twinsun.com>
7130
7131         Finish renaming getstr -> getdelim2 and readline -> readlinebuffer,
7132         to avoid collisions with libcurses and libreadline.
7133
7134         * Makefile.am (libfetish_a_SOURCES): Remove getstr.c, getstr.h.
7135         * getstr.h, getstr.c: Remove.
7136         * getline.c: Include "getline.h", to check interface.
7137         Move body of old getstr.c here: this defines MIN_CHUNK and
7138         declares getdelim2, which is renamed from getstr.
7139         (getline, getdelim): Adjust to renaming of getstr -> getdelim2.
7140
7141         * linebuffer.c (readlinebuffer): Renamed from readline.
7142         All uses changed.
7143         * linebuffer.h: Likewise.
7144         (readline): Remove backward-compatibility macro.
7145
7146 2003-01-12  Jim Meyering  <jim@meyering.net>
7147
7148         * makepath.c: Don't test HAVE_ERRNO_H.  It's not necessary.
7149
7150 2003-01-10  Bruno Haible  <bruno@clisp.org>
7151
7152         * alloca_.h: New file.
7153         * getdate.y: Unconditionally include alloca.h.
7154         * makepath.c: Likewise.
7155         * setenv.c: Likewise.
7156         * userspec.c: Likewise.
7157
7158 2003-01-09  Bruno Haible  <bruno@clisp.org>
7159
7160         * stdbool.h.in: New file.
7161
7162 2003-01-08  Bruno Haible  <bruno@clisp.org>
7163
7164         * safe-read.c: Include specification header first, to ensure its
7165         selfcontainedness.
7166         * full-write.c: Likewise.
7167
7168 2003-01-08  Jim Meyering  <jim@meyering.net>
7169
7170         * full-write.c: Undefine and define-away `const' after inclusion
7171         of errno.h, not before.  Suggestion from Bruno Haible.
7172
7173 2003-01-07  Jim Meyering  <jim@meyering.net>
7174
7175         * full-write.c: Rework so that it may serve to define full_read, too.
7176         * full-read.c: Simply #define FULL_READ and include full-write.c.
7177
7178 2003-01-06  Jim Meyering  <jim@meyering.net>
7179
7180         * version-etc.c: Update year in translatable copyright string.
7181
7182 2002-12-25  Bruno Haible  <bruno@clisp.org>
7183
7184         * strtoimax.c: Include <stdint.h> as an alternative to <inttypes.h>.
7185         * xstrtol.h: Likewise.
7186         * xstrtoimax.c: Likewise.
7187         * xstrtoumax.c: Likewise.
7188         * human.h: Likewise.
7189
7190         * tempname.c: Include <inttypes.h> too. Avoids a compilation error
7191         on systems that have <inttypes.h> but not <stdint.h>.
7192
7193 2002-12-31  Paul Eggert  <eggert@twinsun.com>
7194
7195         * memcoll.c (memcoll): Fall back on a simple algorithm using
7196         memcmp if strcoll doesn't work.
7197
7198 2002-12-23  Bruno Haible  <bruno@clisp.org>
7199
7200         * localcharset.h: New file.
7201         * localcharset.c: Include it.
7202         * unicodeio.c: Likewise.
7203
7204 2002-12-22  Bruno Haible  <bruno@clisp.org>
7205
7206         * utime.c (utime_null): No need to call ftruncate if the file was
7207         nonempty.
7208
7209 2002-12-23  Bruno Haible  <bruno@clisp.org>
7210
7211         * memcoll.c (STRCOLL): New macro.
7212         (memcoll): Use it.
7213
7214 2002-12-22  Bruno Haible  <bruno@clisp.org>
7215
7216         * getstr.h (getstr): Define, to avoid clash with libcurses.
7217         * linebuffer.h (readline): Define, to avoid clash with libreadline.
7218
7219 2002-12-22  Bruno Haible  <bruno@clisp.org>
7220
7221         * getdate.y (get_date): Test HAVE_STRUCT_TM_TM_ZONE, not HAVE_TM_ZONE.
7222
7223 2002-12-23  Bruno Haible  <bruno@clisp.org>
7224
7225         * getline.h: Include <stddef.h>, for size_t.
7226
7227         * unicodeio.h: Include <stddef.h>, for size_t.
7228         * unicodeio.c: Don't include <stddef.h>.
7229
7230 2002-12-17  Bruno Haible  <bruno@clisp.org>
7231
7232         * canon-host.c (strdup): Remove unused declaration.
7233
7234         * fsusage.c: Include full_read.h.
7235         (get_fs_usage): Use full_read instead of safe_read.
7236
7237         * utime.c (utime_null): Use SAFE_READ_ERROR.
7238
7239 2002-12-11  Bruno Haible  <bruno@clisp.org>
7240
7241         * setenv.h: Rewritten to cope with systems that have setenv() but not
7242         unsetenv().
7243         * setenv.c, unsetenv.c: Taken from glibc-2.2.4 with the following
7244         modifications:
7245
7246         2002-12-11  Bruno Haible  <bruno@clisp.org>
7247
7248                 * setenv.c (alloca): Fall back to malloc.
7249                 (freea): New macro.
7250                 (setenv): Use freea() to free memory allocated with alloca().
7251
7252         2002-11-13  Bruno Haible  <bruno@clisp.org>
7253
7254                 * setenv.c (compar_fn_t, __add_to_environ, setenv): Use ANSI C
7255                 function declarations.
7256                 * unsetenv.c (unsetenv): Likewise.
7257
7258         2002-03-04  Bruno Haible  <bruno@clisp.org>
7259
7260                 Portability to AIX 4.3.3.
7261                 * unsetenv.c: New file, extracted from setenv.c.
7262                 * setenv.c: Move the unsetenv() function to unsetenv.c.
7263
7264         2001-12-20  Bruno Haible  <bruno@clisp.org>
7265
7266                 * setenv.c (__add_to_environ): Don't call realloc(NULL,...),
7267                 use malloc instead. For SunOS 4.
7268
7269         2001-12-11  Bruno Haible  <bruno@clisp.org>
7270
7271                 * setenv.c: Declare alloca.
7272                 (compar_fn_t): New typedef.
7273                 (KNOWN_VALUE, STORE_VALUE): Use it.
7274
7275         * Makefile.am (libfetish_a_SOURCES): Add setenv.c, unsetenv.c,
7276         setenv.h.
7277
7278 2002-12-10  Paul Eggert  <eggert@twinsun.com>
7279
7280         Port exclude.c and exclude.h to more non-GNU systems, e.g. Solaris 7.
7281         * exclude.h (EXCLUDE_ANCHORED, EXCLUDE_INCLUDE, EXCLUDE_WILDCARDS):
7282         Choose values that are less likely to collide with system fnmatch
7283         options.
7284         * exclude.c (FNM_CASEFOLD, FNM_LEADING_DIR): Define to 0 if not
7285         defined (e.g., a pure POSIX system).
7286         (EXCLUDE_macros_do_not_collide_with_FNM_macros): Use FNM_PATHNAME
7287         instead of FNM_FILE_NAME, for compatibility with pure POSIX sytems.
7288
7289 2002-12-06  Jim Meyering  <jim@meyering.net>
7290
7291         * error.c: Be consistent: change `#ifndef _LIBC' to `#if !_LIBC'.
7292
7293         Merge in changes from libc's misc/error.c, in preparation
7294         for the merge of gnulib's changes back into libc.
7295
7296         * error.c (_): Define only if not already defined.
7297         Move definition to follow all #include directives.
7298         Include unlocked-io.h only if !_LIBC.
7299         [_LIBC]: Include <libio/libioP.h>.
7300         [USE_IN_LIBIO]: Include <libio/iolibio.h>
7301         (fflush): Tweak definition to use INTUSE.
7302         (putc): Define.
7303
7304 2002-12-05  Paul Eggert  <eggert@twinsun.com>
7305
7306         * alloca.c [defined emacs]: Include "lisp.h".
7307         (xalloc_die) [defined emacs]: New macro.
7308         (free) [defined emacs && defined EMACS_FREE]: Define to EMACS_FREE.
7309         [! defined emacs]: Include <xalloc.h>.
7310         (POINTER_TYPE) [!defined POINTER_TYPE]: New macro.
7311         (pointer): Typedef to POINTER_TYPE *.
7312         (malloc): Remove decl; we now always use xmalloc.
7313         (alloca): Use old-style definition, since Emacs needs this.
7314         Check for arithmetic overflow when computing combined size.
7315
7316 2002-12-04  Paul Eggert  <eggert@twinsun.com>
7317
7318         Do not generate unlocked-io.h automatically, since it's easier to
7319         maintain it by hand.
7320
7321         * unlocked-io.h: New file, from GNU diffutils,
7322         but with proper copyright notice and attribution.
7323         * gen-uio: Remove.
7324         * Makefile.am: Add copyright notice.
7325         (libfetish_a_SOURCES): Add unlocked-io.h.
7326         (BUILT_SOURCES, all-local): Remove unlocked-io.h.
7327         (DISTCLEANFILES, io_functions): Remove macros.
7328         (EXTRA_DIST): Remove gen_uio.
7329         (unlocked-io.h): Remove rule.
7330
7331 2002-12-04  Jim Meyering  <jim@meyering.net>
7332
7333         Reflect the fact that stat.c and lstat.c are no longer generated.
7334         * Makefile.am (BUILT_SOURCES): Remove stat.c and lstat.c.
7335         (DISTCLEANFILES): Likewise.
7336         (EXTRA_DIST): Likewise.
7337         (all_local): Don't depend on stat.c or lstat.c.
7338         (stat.c, lstat.c): Remove rules.
7339         (EXTRA_DIST): Remove xstat.in.
7340
7341         * xstat.in: Remove file.  Contents moved into stat.c.
7342         * stat.c: New file.  Contents mostly from xstat.in.
7343         * stat.c: Rework so that it may serve to define rpl_lstat, too.
7344         * lstat.c: New file. Simply #define LSTAT and include stat.c.
7345
7346         * safe-read.c: Rework so that it may serve to define safe_write, too.
7347         * safe-write.c: Simply #define SAFE_WRITE and include safe-read.c.
7348
7349 2002-12-03  Jim Meyering  <jim@meyering.net>
7350
7351         * safe-read.c, safe-write.c: Change variable names and comments, but
7352         not semantics, to minimize the differences between these two files.
7353         (safe_read): Change comment to mention SAFE_READ_ERROR.
7354
7355         * safe-read.c (IS_EINTR): Define.
7356         (safe_read): Use IS_EINTR in place of in-function cpp directives.
7357
7358 2002-12-02  Bruno Haible  <bruno@clisp.org>
7359
7360         * safe-write.c (CHAR_BIT, TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM):
7361         Define, taken from safe-read.c.
7362         (INT_MAX): Provide fallback.
7363         (safe_write): Rewrite to iterate IFF the write fails with EINTR.
7364         * safe-write.h (SAFE_WRITE_ERROR): Define.
7365
7366         * safe-read.c (EINTR): Remove definition.
7367         (safe_read): Don't use EINTR if it is absent.
7368
7369 2002-12-02  Jim Meyering  <jim@meyering.net>
7370
7371         * safe-read.c (EINTR): Define.
7372         (CHAR_BIT, TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM): Define.
7373         (INT_MAX): Provide fallback.
7374         (safe_read): Rewrite to iterate IFF the read fails with EINTR.
7375
7376         * safe-read.h (SAFE_READ_ERROR): Define.
7377
7378 2002-12-01  Jim Meyering  <jim@meyering.net>
7379
7380         * safe-read.c: (safe_read): Also exit the loop when read returns zero.
7381         (CHAR_BIT, TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM, INT_MAX): Define.
7382
7383 2002-11-27  Paul Eggert  <eggert@twinsun.com>
7384
7385         * hash.c (hash_lookup, hash_get_first, hash_get_next, hash_find_entry,
7386         hash_rehash): Replace `if (limit <= value) abort ();' with
7387         `if (! (value < limit)) abort ();', for readability.
7388
7389 2002-11-26    <karl@gnu.org>
7390
7391         * strdup.c: copy from libc again, with jim's ok.
7392         * .cppi-disable: re-add strdup.c
7393
7394 2002-11-25    <karl@gnu.org>
7395
7396         * strtoll.c: copy from libc, meaning we now #include <strtol.c>
7397         instead of "strtol.c".
7398
7399 2002-11-25  Jim Meyering  <jim@meyering.net>
7400
7401         * mktime.c: Sync from libc, now that it has the latest fix.
7402
7403 2002-11-24    <karl@gnu.org>
7404
7405         * error.c, getopt.c, getopt.h, getopt1.c, obstack.c, regex.c,
7406         regex.h, strdup.c, strtoll.c, tempname.c: change license to gpl.
7407
7408 2002-11-24  Jim Meyering  <jim@meyering.net>
7409
7410         Update from coreutils:
7411
7412         * mktime.c: Merge in changes from libc.
7413
7414         Avoid a link-time failure on some Linux systems.
7415         * mktime.c (STATIC): Define to be empty (_LIBC) or `static' (otherwise).
7416         (__mon_yday): Declare with the STATIC attribute.
7417         (__mktime_internal): Likewise.
7418         Based on a report from Greg Schafer.
7419
7420 2002-11-23  Jim Meyering  <jim@meyering.net>
7421
7422         * sig2str.c (str2signum, sig2str): Avoid a warning from gcc:
7423         Use `unsigned', not `int', as type of index.
7424
7425         * xstat.in [@BEGIN_LSTAT_ONLY@]: Include <string.h>.
7426
7427         * fsusage.c: Remove unneeded parentheses around operands of `defined'.
7428
7429 2002-11-22  Paul Eggert  <eggert@twinsun.com>
7430
7431         * hash.c: Avoid use of <assert.h>, as the GNU Coding Standards
7432         hint that one should use `if (! x) abort ();' rather than `assert
7433         (x);', and anyway it's one less thing to worry about configuring.
7434         (hash_lookup, hash_get_first, hash_get_next, hash_find_entry,
7435         hash_rehash, hash_insert): Use abort rather than assert.
7436
7437 2002-11-22  Paul Eggert  <eggert@twinsun.com>
7438
7439         * quotearg.h: Allow multiple inclusion by surrounding with
7440         "#ifndef QUOTEARG_H_".  Include <stddef.h>, for size_t,
7441         so that we can be included first.
7442         (PARAMS): Remove; we now assume C89 or later.  All uses removed.
7443         * quotearg.c: Include quotearg.h immediately after config.h.
7444         No need to include stddef.h or sys/types.h any more.
7445         Surround local include files with "", not "<>".
7446         Assume HAVE_LIMITS_H unconditionally, as we assume C89.
7447         Similarly, assume HAVE_C_BACKSLASH_A, CHAR_BIT, UCHAR_MAX, UINT_MAX,
7448         HAVE_STDLIB_H, HAVE_STRING_H, STDC_HEADERS.
7449         (HAVE_MBSINIT): Undef if !HAVE_MBRTOWC.
7450         (mbsinit): Define to 1 if !defined mbsinit && !HAVE_MBSINIT.
7451         (ISPRINT): Remove; no longer needed now that we assume C89.
7452
7453         (clone_quoting_options, quotearg_buffer, quotearg_n_options):
7454         Preserve errno.
7455
7456         (quotearg_buffer_restyled, quotearg_n, quotearg_n_style,
7457         quotearg_char): Use SIZE_MAX rather than
7458         (size_t) -1 when we are talking about "infinity".
7459
7460         (quotearg_buffer_restyled): Fix bug when quoting trigraphs.
7461
7462 2002-11-22  Bruno Haible  <bruno@clisp.org>
7463
7464         * safe-read.h: Assume C89. Add comments.
7465         (safe_read): Change return type to size_t.
7466         * safe-read.c (safe_read): Change return type to size_t. Handle byte
7467         counts > SSIZE_MAX correctly.
7468         * safe-write.h: New file.
7469         * safe-write.c: New file.
7470         * full-read.h: New file.
7471         * full-read.c: New file.
7472         * full-write.h: Assume C89. Add comments.
7473         * full-write.c: Include safe-write.h.
7474         (full_write): Rewritten to use safe_write.
7475         Suggested by Jim Meyering and Paul Eggert.
7476
7477 2002-11-21  Bruno Haible  <bruno@clisp.org>
7478
7479         Remove case insensitive option matching.
7480         * argmatch.h (argcasematch): Remove declaration.
7481         (ARGCASEMATCH): Remove macro.
7482         (__xargmatch_internal): Remove case_sensitive argument.
7483         (XARGMATCH): Update.
7484         (XARGCASEMATCH): Remove macro.
7485         * argmatch.c (argmatch): Renamed from __argmatch_internal. Remove
7486         case_sensitive argument.
7487         (argcasematch): Remove function.
7488         (__xargmatch_internal): Remove case_sensitive argument.
7489         (main): Use XARGMATCH instead of XARGCASEMATCH.
7490
7491         * xmalloc.c: Change compile-time error message. Add comment about
7492         required autoconf version.
7493
7494 2002-11-21  Jim Meyering  <jim@meyering.net>
7495
7496         * strdup.c (strdup): Tweak comment and initial #if/#include.
7497
7498         Merge in changes from the coreutils.
7499
7500         2002-09-25  Paul Eggert  <eggert@twinsun.com>
7501         * fsusage.c [! HAVE_INTTYPES_H && HAVE_STDINT_H] Include <stdint.h>.
7502         (UINTMAX_MAX) [!defined UINTMAX_MAX]: New macro.
7503         (PROPAGATE_ALL_ONES): Work even if X is unsigned and narrower than
7504         int.  Work more efficiently if X is the same width as uintmax_t.
7505         Do not compare X to -1, to avoid bogus compiler warning.
7506         (get_fs_usage): (uintmax_t) -1 -> UINTMAX_MAX to avoid a cast.
7507         Don't assume that f_frsize and f_bsize are the same type.
7508
7509         * mountlist.c: #undef MNT_IGNORE before defining it, to avoid warning
7510         on FreeBSD.
7511
7512         * makepath.c (make_path): Restore umask *before* creating the final
7513         component.
7514         (make_path): Minor reformatting.
7515
7516         * xmalloc.c: Adjust to work with new autoconf macros, AC_FUNC_MALLOC
7517         and AC_FUNC_REALLOC: test #ifndef HAVE_MALLOC/HAVE_REALLOC.
7518
7519         * mountlist.h (ME_DUMMY): Don't count entries of type `auto' as dummy
7520         ones.  At least on GNU/Linux systems, `auto' means something else.
7521         From Michael Stone.
7522
7523 2002-11-20  Paul Eggert  <eggert@twinsun.com>
7524
7525         Merge argmatch cleanups from Bison.  Assume C89.
7526
7527         * argmatch.c: Include config.h here, not in argmatch.h.
7528         Include stdlib.h, for EXIT_FAILURE.
7529         Always include <string.h>, since we assume C89.
7530         (EXIT_FAILURE): Remove pre-C89 bug workaround.
7531         * argmatch.h: Do not include <config.h> or <sys/types.h>.
7532         Include <stddef.h> instead, since it's all we need for size_t.
7533         (PARAMS): Remove.  All uses removed.
7534         (ARRAY_CARDINALITY): Do not bother to #undef.
7535         (ARRAY_CARDINALITY, ARGMATCH, ARGCASEMATCH, invalid_arg,
7536         ARGMATCH_VALID, XARGMATCH, XARGCASEMATCH):
7537         Remove unnecessary parentheses.
7538         (ARGMATCH_VALID, XARGMATCH, XARGCASEMATCH):
7539         Insert necessary parentheses.
7540         (ARGMATCH_CONSTRAINT, ARGMATCH_VERIFY): New macros.
7541         (ARGMATCH_ASSERT): Use ARGMATCH_CONSTRAINT.
7542
7543 2002-11-19  Bruno Haible  <bruno@clisp.org>
7544
7545         * mbswidth.c: Include mbswidth.h right at the beginning.
7546         * mbswidth.h: Include <stddef.h>, for size_t.
7547
7548         * mbswidth.h (PARAMS): Remove macro.
7549         (mbswidth, mbsnwidth): Use ANSI C function declarations.
7550         * mbswidth.c (mbswidth, mbsnwidth): Likewise.
7551
7552         * gcd.h (PARAMS): Remove macro.
7553         (gcd): Use ANSI C function declarations.
7554         * gcd.c (gcd): Likewise.
7555
7556 2002-11-15  Bruno Haible  <bruno@clisp.org>
7557
7558         * strcspn.c: Include <stddef.h>.
7559         (strcspn): Use ANSI C function declaration. Change return type to
7560         size_t. Use NULL.
7561         * strpbrk.c: Minimize diffs to glibc. Include <stddef.h>.
7562         (strpbrk): Use NULL.
7563         * strpbrk.h (PARAMS): Remove macro.
7564         (strpbrk): Use ANSI C function declaration.
7565         * strstr.c: Don't include <sys/types.h>.
7566         * strstr.h (PARAMS): Remove macro.
7567         (strstr): Use ANSI C function declarations.
7568
7569 2002-11-06  Bruno Haible  <bruno@clisp.org>
7570
7571         * gcd.h (gcd): Change argument type to 'unsigned long'.
7572         * gcd.c (gcd): Likewise.
7573
7574 2002-11-05  Bruno Haible  <bruno@clisp.org>
7575
7576         * gcd.h: New file, from gettext-0.11.5.
7577         * gcd.c: New file, from gettext-0.11.5.
7578
7579 2002-11-05  Bruno Haible  <bruno@clisp.org>
7580
7581         * error.c [!_LIBC]: Include gettext.h instead of <libintl.h>.
7582         * getopt.c [!_LIBC]: Include gettext.h instead of <libintl.h>.
7583         * obstack.c [!_LIBC]: Include gettext.h instead of <libintl.h>.
7584         * regex.c [!_LIBC]: Include gettext.h instead of <libintl.h>.
7585
7586         * argmatch.c: Include gettext.h instead of <locale.h> and <libintl.h>.
7587         * makepath.c: Include gettext.h instead of <locale.h> and <libintl.h>.
7588
7589         * closeout.c: Include gettext.h instead of <libintl.h>.
7590         * human.c: Include gettext.h instead of <libintl.h>.
7591         * quotearg.c: Include gettext.h instead of <libintl.h>.
7592         * rpmatch.c: Include gettext.h instead of <libintl.h>.
7593         * unicodeio.c: Include gettext.h instead of <libintl.h>.
7594         * userspec.c: Include gettext.h instead of <libintl.h>.
7595         * version-etc.c: Include gettext.h instead of <libintl.h>.
7596         * xmalloc.c: Include gettext.h instead of <libintl.h>.
7597         (textdomain): Remove definition.
7598         * xmemcoll.c: Include gettext.h instead of <libintl.h>.
7599
7600         * long-options.c: Remove include of <libintl.h> and definition of _.
7601         * same.c: Remove include of <libintl.h> and definition of _.
7602
7603 2002-11-04  Bruno Haible  <bruno@clisp.org>
7604
7605         * stpcpy.h: New file, from GNU gettext-0.11.5.
7606         * strcase.h: New file, from GNU gettext-0.11.5.
7607         * strpbrk.h: New file, from GNU gettext-0.11.5.
7608         * strstr.h: New file, from GNU gettext-0.11.5.
7609         * xgetcwd.h: New file, from GNU gettext-0.11.5.
7610
7611 2002-05-09  Bruno Haible  <bruno@clisp.org>
7612
7613         * config.charset: Update for newest glibc. Add canonical names
7614         ISO-8859-14, KOI8-T, TCVN5712-1, GEORGIAN-PS.
7615
7616 2002-05-09  Bruno Haible  <bruno@clisp.org>
7617
7618         * localcharset.c (get_charset_aliases): Add more Windows specific
7619         aliases.
7620
7621 2002-05-08  Owen Taylor  <otaylor@redhat.com>
7622
7623         * config.charset: A few additions for Solaris.
7624
7625 2001-12-05  Bruno Haible  <bruno@clisp.org>
7626
7627         * localcharset.c (locale_charset): Don't return an empty string.
7628
7629 2001-10-23  Bruno Haible  <haible@clisp.cons.org>
7630
7631         * config.charset: msdos in uk_UA uses CP1125.
7632
7633 2001-08-05  Bruno Haible  <haible@clisp.cons.org>
7634
7635         Make it possible to build libcharset with CC=gcc CFLAGS="-x c++".
7636         * localcharset.c (locale_charset): Declare as extern "C".
7637
7638 2002-02-15  Bruno Haible  <bruno@clisp.org>
7639
7640         * config.charset [msdosdjgpp]: For Russian, use CP866.
7641
7642 2002-02-11  Bruno Haible  <bruno@clisp.org>
7643
7644         * config.charset: Add support for NetBSD.
7645
7646 2002-09-25    <karl@gnu.org>
7647
7648         * strdup.c: copy from libc/string (via ../config/srclist*).
7649         * getopt*: copy from libc/posix.
7650         * gettext.h: copy from gettext.
7651         * .cppi-disable: add strdup.c, gettext.h.
7652
7653 2002-07-01  Jim Meyering  <meyering@lucent.com>
7654
7655         * c-stack.c: Include sys/time.h.
7656         From Volker Borchert.
7657
7658 2002-06-11  Paul Eggert  <eggert@twinsun.com>
7659
7660         * fnmatch.c, fnmatch_loop.c (WIDE_CHAR_SUPPORT):
7661         New macro.  Use it uniformly instead of
7662         (defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H).
7663         It also uses HAVE_BTOWC, to fix a porting bug on Solaris 2.5.1
7664         reported by Vin Shelton.
7665
7666 2002-06-22  Jim Meyering  <meyering@lucent.com>
7667
7668         * fnmatch.c (ISASCII, ISPRINT): Undefine, to avoid warning about
7669         redefinition due to Solaris 2.6's definition in /usr/include/sys/euc.h.
7670
7671 2002-06-22  Paul Eggert  <eggert@twinsun.com>
7672
7673         * c-stack.h (segv_handler, c_stack_action) [! defined SA_SIGINFO]:
7674         Do not assume SA_SIGINFO behavior.
7675         Bug reported by Jim Meyering on NetBSD 1.5.2.
7676
7677 2002-06-22  Jim Meyering  <meyering@lucent.com>
7678
7679         * c-stack.c, c-stack.h: New files, from diffutils-2.8.2.
7680
7681         * exitfail.c, exitfail.h: Likewise.
7682         * Makefile.am (libfetish_a_SOURCES): Add exitfail.c and exitfail.h.
7683
7684         * Makefile.am (libfetish_a_SOURCES): Add fnmatch_.h in place
7685         of fnmatch.h.
7686         (EXTRA_DIST): Add fnmatch_loop.c.
7687         (libfetish_a_SOURCES): Add c-stack.c and c-stack.h.
7688
7689         * fnmatch_loop.c: New file, from diffutils-2.8.2.
7690         * fnmatch.c: Update from diffutils-2.8.2.
7691         * fnmatch_.h: New file.  From diffutils-2.8.2.
7692         * fnmatch.h: Remove file.
7693
7694 2002-06-18  Paul Eggert  <eggert@twinsun.com>
7695
7696         * file-type.h: Report an error if neither S_ISREG nor
7697         S_IFREG is defined, instead of using a test specific to glibc
7698         2.2.  This should be safe, since POSIX requires S_ISREG and
7699         Unix Version 7 had S_IFREG.  We don't need to check for
7700         <sys/types.h> since we don't use any symbols that it defines.
7701
7702 2002-06-15  Jim Meyering  <meyering@lucent.com>
7703
7704         * file-type.h (FILE_TYPE_H): Guard entire contents with #ifndef.
7705         For GNU libc 2.2 and newer, ensure that <sys/types.h> and <sys/stat.h>
7706         have been included before this file.
7707
7708 2002-06-13  Richard Dawe  <richdawe@bigfoot.com>
7709
7710         * Makefile.am (lstat.c, stat.c, .sin.sed): Use t-$@, rather than $@-t,
7711         so that each temporary file name is unique and valid in the first
7712         8 characters, for operation under DOS.
7713
7714 2002-06-15  Jim Meyering  <meyering@lucent.com>
7715
7716         Work even with DJGPP 2.03, which lacks support for symlinks.
7717         From Richard Dawe.
7718         * xstat.in (S_ISLNK): Define to 0 if neither S_ISLNK nor S_IFLNK
7719         is defined.
7720         * lchown.c (S_ISLNK): Likewise.
7721
7722 2002-06-14  Jim Meyering  <meyering@lucent.com>
7723
7724         * file-type.h: Use the version from diffutils-2.8.2.
7725         * file-type.c: Likewise.
7726
7727 2002-05-27  Jim Meyering  <meyering@lucent.com>
7728
7729         Fix a problem seen only on nonconforming systems whereby ls.c's
7730         use of localtime, and then of gettimeofday would cause trouble:
7731         the localtime call used to initialize rpl_gettimeofday's save
7732         mechanism would clobber ls's current local time information so
7733         that in any long listing the first file would always be listed
7734         with date 1970-01-01.  Analysis by Volker Borchert.
7735
7736         * gettimeofday.c (localtime): Undefine.
7737         (rpl_localtime): New function.
7738
7739 2002-05-22  Jim Meyering  <meyering@lucent.com>
7740
7741         * Makefile.am (libfetish_a_SOURCES): Add file-type.c and file-type.h.
7742         * file-type.h: New file.
7743         * file-type.c (file_type): New file/function.  Extracted from diffutils.
7744
7745 2002-04-29  Paul Eggert  <eggert@twinsun.com>
7746
7747         * hard-locale.c: Upgrade to version used in GNU Diffutils 2.8.1.
7748
7749 2002-04-28  Paul Eggert  <eggert@twinsun.com>
7750
7751         * sig2str.h (SIGNUM_BOUND): Do not use WTERMSIG, to avoid
7752         depending on <sys/wait.h> and WTERMSIG.  Default to 64 instead
7753         of 127, since 64 is the largest conceivable number for ancient
7754         nonstandard hosts.
7755         * sig2str.c: Do not include <sys/wait.h>; no longer needed.
7756
7757 2002-04-28  Jim Meyering  <meyering@lucent.com>
7758
7759         * sig2str.c (WTERMSIG): Remove definition (unused).
7760
7761 2002-04-28  Paul Eggert  <eggert@twinsun.com>
7762
7763         * sig2str.h, sig2str.c: New files.
7764         * Makefile.am (libfetish_a_SOURCES): Add sig2str.h.
7765
7766 2002-04-24  Jim Meyering  <meyering@lucent.com>
7767
7768         * gettext.h: New file, from Gettext.
7769         * Makefile.am (INCLUDES): Remove -I../intl.
7770         (libfetish_a_SOURCES): Add gettext.h.
7771
7772 2002-04-16  Jim Meyering  <meyering@lucent.com>
7773
7774         * readutmp.h (UT_TYPE): Remove definition (now in who.c).
7775         (HAVE_STRUCT_XTMP_UT_EXIT, HAVE_STRUCT_XTMP_UT_ID): Define.
7776         (HAVE_STRUCT_XTMP_UT_PID, HAVE_STRUCT_XTMP_UT_TYPE): Define.
7777
7778 2002-04-12  Jim Meyering  <meyering@lucent.com>
7779
7780         * dirfd.h (dirfd): Elide prototype if dirfd is a macro.
7781
7782 2002-03-10  Jim Meyering  <meyering@lucent.com>
7783
7784         * makepath.c (make_path): Remove a comma from a diagnostic.
7785         Suggestion from Santiago Vila.
7786
7787 2002-03-08  Jim Meyering  <meyering@lucent.com>
7788
7789         * rename.c: Mention that this wrapper is needed also on
7790         mips-dec-ultrix4.4 systems.
7791
7792 2002-03-02  Jim Meyering  <meyering@lucent.com>
7793
7794         * gettime.c (gettime): Test HAVE_CLOCK_GETTIME,
7795         not HAVE_CLOCK_SETTIME.
7796
7797 2002-02-27  Paul Eggert  <eggert@twinsun.com>
7798
7799         * nanosleep.h: Rename to....
7800         * timespec.h: New name for nanosleep.h.  All uses changed.
7801
7802         * gettime.c: New file.
7803         * settime.c: New file.
7804         * stime.c: Remove.
7805
7806         * Makefile.am (libfetish_a_SOURCES): Add gettime.c, settime.c,
7807         timespec.h.  Remove nanosleep.h.
7808
7809 2002-02-25  Paul Eggert  <eggert@twinsun.com>
7810
7811         * acl.c, acl.h: New files.
7812         * Makefile.am (libfetish_a_SOURCES): Add acl.h, acl.c.
7813
7814 2002-02-24  Jim Meyering  <meyering@lucent.com>
7815
7816         * strnlen.c (strnlen): Define-away/undef so that an inconsistent
7817         prototype in string.h (on at least AIX4.3.2.0 w/gcc-2.95.3) doesn't
7818         cause trouble.  Reported by Nelson Beebe.
7819
7820 2002-02-23  Paul Eggert  <eggert@twinsun.com>
7821
7822         * path-concat.c (xpath_concat): Reorder code to pacify
7823         compilers that don't know that xalloc_die never returns.
7824
7825 2002-02-20  Jim Meyering  <meyering@lucent.com>
7826
7827         * getdate.c: Regenerate using bison-1.33.
7828
7829 2002-02-15  Paul Eggert  <eggert@twinsun.com>
7830
7831         * posixver.c, posixver.h: New files.
7832         * Makefile.am (libfetish_a_SOURCES): Add them.
7833
7834 2002-02-02  Paul Eggert  <eggert@twinsun.com>
7835             Bruno Haible  <bruno@clisp.org>
7836
7837         * unicodeio.h (print_unicode_char): Add exit_on_error argument.
7838         (fwrite_success_callback): New declaration.
7839         * unicodeio.c (unicode_to_mb): New function, extracted from
7840         print_unicode_char. Call failure callback instead of error.
7841         (fwrite_success_callback): New function.
7842         (exit_failure_callback): New function.
7843         (fallback_failure_callback): New function.
7844         (print_unicode_char): Call unicode_to_mb.
7845
7846 2002-01-26  Jim Meyering  <meyering@lucent.com>
7847
7848         * Makefile.am (getdate$U.o): Depend on unlocked-io.h.
7849
7850 2002-01-22  Jim Meyering  <meyering@lucent.com>
7851
7852         * Makefile.am (Makefile): Don't depend on $(BUILT_SOURCES).
7853         Otherwise, some versions of automake would omit the rule that makes
7854         Makefile from Makefile.in.
7855
7856 2001-01-21  Paul Eggert  <eggert@twinsun.com>
7857
7858         * xmemcoll.h, xmemcoll.c: New files.
7859         * Makefile.am (libfetish_a_SOURCES): Add them.
7860         * memcoll.c: Include errno.h, and declare errno if not defined.
7861         (memcoll): Set errno to zero if there is no error.
7862
7863         * quotearg.c (quotearg_buffer_restyled):
7864         Fix bug with quoting buffers containing NUL when backslashing escapes.
7865         This bug was exposed by the other changes in this patch.
7866         (quotearg_n_options): New arg ARGSIZE.
7867         All callers changed.
7868         (quoting_options_from_style): New function.
7869         (quotearg_n_style): Use it.
7870         (quotearg_n_style_mem): New function.
7871
7872         * quotearg.h (quotearg_n_style_mem): New function.
7873
7874 2002-01-16  Jim Meyering  <meyering@lucent.com>
7875
7876         * getdate.y: Add three semicolons, each just before a closing brace.
7877         Bison (as of version 1.31) no longer papers over that mistake.
7878
7879 2002-02-14  Paul Eggert  <eggert@twinsun.com>
7880
7881         * backupfile.c (ISDIGIT): Comment fix.
7882         * getdate.y (ISDIGIT): Likewise.
7883         * posixtm.c (ISDIGIT, year): Likewise.
7884         * strverscmp.c (ISDIGIT): Likewise.
7885         * userspec.c (ISDIGIT): Likewise.
7886
7887 2002-01-05  Jim Meyering  <meyering@lucent.com>
7888
7889         * version-etc.c (version_etc_copyright): Update copyright year.
7890
7891 2001-01-19  Paul Eggert  <eggert@twinsun.com>
7892
7893         * closeout.c (close_stdout_status): If ferror (stdout), do
7894         not silently exit merely because the output buffer happens to
7895         have nothing pending.
7896
7897 2001-12-18  Paul Eggert  <eggert@twinsun.com>
7898
7899         See the big note in ../ChangeLog.
7900         * human.c (suffixes): Prefer K to k for 1024.
7901         (generate_suffix_backwards): New function.
7902         (human_readable_inexact): Use it.
7903         * xstrtol.c (__xstrtol): If there is no number but there
7904         is a valid suffix, assume 1.  "MB" now means decimal, "MiB" binary.
7905         Accept 'K' as well as 'k'.
7906
7907 2001-12-15  Jim Meyering  <meyering@lucent.com>
7908
7909         * regex.h (__restrict_arr): Update from libc.
7910
7911         * mountlist.h (ME_REMOTE): Recognize file systems of type smbfs
7912         as `remote' if the name starts with `//'.  Suggested by Michael Stone.
7913         (STREQ): Define.
7914
7915 2001-12-10  Jim Meyering  <meyering@lucent.com>
7916
7917         * linebuffer.c: Remove explicit declarations of xmalloc and xrealloc,
7918         Instead, include "xalloc.h".
7919         (initbuffer): Don't cast xmalloc return value to char*.
7920         (readline): Reword comment.
7921         Don't cast xrealloc return value to char*
7922         Return NULL, not 0.
7923
7924 2001-12-09  Jim Meyering  <meyering@lucent.com>
7925
7926         * modechange.c (mode_compile): Add cast to avoid pedantic warning about
7927         `signed and unsigned type in conditional expression'.
7928         * posixtm.c (posix_time_parse): Likewise.
7929
7930         * xreadlink.c (xreadlink): Add cast to avoid a pedantic warning.
7931
7932         * readtokens.c (readtoken): Declare an index to be of type unsigned
7933         to avoid a pedantic warning.
7934
7935         * getstr.c: Don't include assert.h.
7936         (getstr): Remove warning-evoking assertions.
7937         Return -1 if offset parameter is out of bounds.
7938         Change the type of a local from int to size_t.
7939
7940         * strftime.c (my_strftime_localtime_r): Include this function
7941         definition in the `#if ! HAVE_TM_GMTOFF' block.
7942
7943         * xgethostname.c: Remove declarations of xmalloc and xrealloc.
7944         Include xalloc.h instead.
7945
7946 2001-12-02  Jim Meyering  <meyering@lucent.com>
7947
7948         * tempname.c: Don't declare getenv, thus reverting the change of
7949         2001-11-18.  It's no longer necessary, now that stdlib.h is always
7950         included.
7951
7952         * regex.c [!__BOUNDED_POINTERS__]: Define away __bounded,
7953         __unbounded, and __ptrvalue.  Reported by Uwe H. Steinfeld.
7954
7955 2001-11-30  Akim Demaille  <akim@epita.fr>
7956
7957         * xstrdup.c: Include xalloc.h, so that xstrdup is declared
7958         before being defined.
7959
7960 2001-11-27  Paul Eggert  <eggert@twinsun.com>
7961
7962         * quotearg.h (quotearg_n, quotearg_n_style):
7963         First arg is int, not unsigned.
7964         * quotearg.c (quotearg_n, quotearg_n_style): Likewise.
7965         (SIZE_MAX, UINT_MAX): New macros.
7966         (quotearg_n_options): Abort if N is negative.
7967         Avoid overflow check on hosts where size_t is 64 bits and int
7968         is 32 bits, as overflow is impossible there.
7969         Fix off-by-one typo that caused unnecessary reallocation.
7970
7971 2001-11-27  Jim Meyering  <meyering@lucent.com>
7972
7973         * tempname.c: Merge with version from libc.
7974         * regex.c: Likewise.
7975
7976         * tempname.c: Include stdlib.h unconditionally.  On some old systems
7977         for which STDC_HEADERS is 0, it was not included, resulting in a
7978         warning about an integer-to-pointer conversion problem with getenv.
7979         Reported by Volker Borchert.
7980
7981 2001-11-26  Jim Meyering  <meyering@lucent.com>
7982
7983         * gtod.h: Remove file.
7984         * Makefile.am (libfetish_a_SOURCES): Remove gtod.h.
7985         * gettimeofday.c: Don't include gtod.h.
7986         (GTOD_init): Remove function.
7987         (rpl_gettimeofday): Do its job here instead, rather than aborting.
7988         Suggestion from Volker Borchert.
7989
7990 2001-11-23  Jim Meyering  <meyering@lucent.com>
7991
7992         * hash.h (struct hash_table): Don't define here.  Merely declare it.
7993         * hash.c (struct hash_table): Define it here instead.
7994
7995 2001-11-22  Jim Meyering  <meyering@lucent.com>
7996
7997         * hash.h: Bracket contents of file with #ifndef HASH_H_ ... #endif.
7998
7999 2001-11-18  Paul Eggert  <eggert@twinsun.com>
8000
8001         * tempname.c (TMP_MAX): Remove; no longer needed.
8002         (TEMPORARIES): New macro.
8003         (__gen_tempname): Use TEMPORARIES rather than TMP_MAX.  This
8004         removes an artificial limitation (e.g. HP-UX 10.20, where
8005         TMP_MAX is 17576).
8006
8007 2001-11-18  Jim Meyering  <meyering@lucent.com>
8008
8009         * tempname.c [!HAVE_DECL_GETENV]: Declare getenv to avoid warning
8010         on SunOS 4.
8011
8012         * Makefile.am (Makefile): Depend on $(BUILT_SOURCES), so those
8013         files will be created before anything else.
8014
8015 2001-11-17  Jim Meyering  <meyering@lucent.com>
8016
8017         * modechange.c (mode_adjust): Fix error introduced on 1999-04-26
8018         that made e.g., `chmod a=,o=w,g=o F' cause F to be group readable
8019         rather than group writable.  Patch by Juan F. Codagnone.
8020
8021         * readtokens.c: Remove explicit declarations of xmalloc and xrealloc,
8022         Instead, include "xalloc.h".
8023
8024         * mountlist.c: Include unlocked-io.h after all system headers.
8025         Remove explicit declarations of xmalloc, xrealloc,
8026         and xstrdup.  Instead, include "xalloc.h".
8027
8028         * argmatch.c, closeout.c, error.c, exclude.c: Include unlocked-io.h.
8029         * fatal.c, getdate.y, getpass.c, getstr.c, getusershell.c: Likewise.
8030         * mountlist.c, posixtm.c, readtokens.c, readutmp.c: Likewise.
8031
8032         * regex.c, sha.c, version-etc.c, yesno.c: Likewise.
8033         Reported by Padraig Brady.
8034
8035         * mkstemp.c: #undef mkstemp.
8036         Include config.h.
8037         (rpl_mkstemp): Rename from mkstemp.
8038         Protoize.
8039
8040 2001-11-16  Jim Meyering  <meyering@lucent.com>
8041
8042         * physmem.c [HAVE_SYS_PSTAT_H]: Include <sys/pstat.h>.
8043         (physmem_total) [HAVE_PSTAT_GETSTATIC]: If sysconf couldn't be used to
8044         determine the amount of total physical memory, use pstat_getstatic.
8045         HPUX-11 doesn't define _SC_PHYS_PAGES.
8046         (physmem_available) [HAVE_PSTAT_GETSTATIC && HAVE_PSTAT_GETDYNAMIC]:
8047         If sysconf couldn't be used to determine the amount of available
8048         physical memory, use both pstat_getstatic and pstat_getdynamic.
8049         Based on a patch from Bob Proulx.
8050
8051 2001-11-05  Jim Meyering  <meyering@lucent.com>
8052
8053         * xstat.in (slash_aware_lstat): Correct a misleading comment.
8054
8055 2001-11-03  Jim Meyering  <meyering@lucent.com>
8056
8057         * argmatch.h (ARGMATCH_TO_ARGUMENT): Remove casts of first two args
8058         in argmatch_to_argument call.
8059
8060         * dirfd.c (dirfd): Reflect the fact that DIR_TO_FD now takes an
8061         argument.
8062
8063         * hash.c (hash_clear): Fix a bug that could lead to an infloop or
8064         e.g., a fault due to an attempt to free a NULL pointer.
8065
8066 2001-11-01  Jim Meyering  <meyering@lucent.com>
8067
8068         * dirfd.c, dirfd.h: New files.
8069         * Makefile.am (libfetish_a_SOURCES): Add dirfd.h.
8070
8071         * hash.c (hash_print) [TESTING]: Clean up.
8072
8073 2001-10-22  Paul Eggert  <eggert@twinsun.com>
8074
8075         * hard-locale.c (alloca): Define to __builtin_alloca if __GNUC__,
8076         to avoid a warning if -Wall.
8077
8078 2001-10-21  Paul Eggert  <eggert@twinsun.com>
8079
8080         * regex.c (uintptr_t): Remove macro and decl; it's config.h's job.
8081
8082 2001-10-21  Jim Meyering  <meyering@lucent.com>
8083
8084         * obstack.c (_): Honor the setting of ENABLE_NLS.  Otherwise,
8085         this code would end up calling gettext even in packages built
8086         with --disable-nls.
8087         * getopt.c (_): Likewise.
8088         * regex.c (_): Likewise.
8089
8090 2001-10-20  Paul Eggert  <eggert@twinsun.com>
8091
8092         * error.c (strerror_r): Do not declare unless !_LIBC.
8093         Do not check for HAVE_DECL_STRERROR_R missing unless STRERROR_R_CHAR_P.
8094         Use strerror_r that is only a macro, even if it is not a function.
8095         (strerror): Check for HAVE_DECL_STRERROR before declaring.
8096         (private_strerror): Use prototypes, not old-style function definition.
8097         (print_errno_message): New function.
8098         Support the POSIX 'int'-flavored strerror_r, as well as the traditional
8099         char*-flavored one.
8100         (error_tail, error, error_at_line): Use it.
8101
8102 2001-10-11  Jim Meyering  <meyering@lucent.com>
8103
8104         * argmatch.c (argmatch_invalid): Use quotearg_n_style (0, ...
8105         and quote_n (1, ... to avoid clobbering a buffer.
8106
8107 2001-10-05  Jim Meyering  <meyering@lucent.com>
8108
8109         * Makefile.am: (libfetish_a_SOURCES): Add hash-pjw.c and hash-pjw.h.
8110         * hash-pjw.c: New file (factored out of fileutils' remove.c).
8111         * hash-pjw.h: New file.
8112
8113 2001-09-30  Jim Meyering  <meyering@lucent.com>
8114
8115         * mountlist.c [MOUNTED_GETFSSTAT]:
8116         Include <sys/ucred.h>, for Apple Darwin.
8117         Include sys/mount.h and sys/fs_types.h only if available.
8118         (FS_TYPE): Define.
8119         (read_filesystem_list): Use FS_TYPE.
8120
8121 2001-09-29  Paul Eggert  <eggert@twinsun.com>
8122
8123         * exclude.c (excluded_filename): 0 -> false, since it's
8124         a boolean context.
8125
8126 2001-09-28  Paul Eggert  <eggert@twinsun.com>
8127
8128         Fix bug reported by Petter Reinholdtsen for HP-UX 10.20, which
8129         #defines strtoimax.  Also treat the other strto* functions
8130         like strtoimax.
8131
8132         * xstrtol.c (strtol): Do not declare if HAVE_DECL_STRTOL.
8133         (strtoul): Do not declare if HAVE_DECL_STRTOUL.
8134         (strtoimax, strtoumax): Do not declare if already defined as a macro.
8135
8136 2001-09-26  Jim Meyering  <meyering@lucent.com>
8137
8138         Most macros in unlocked-io.h had the wrong number of arguments.
8139         * gen-uio: New script.
8140         (USE_UNLOCKED_IO): Define to 1 if not already defined.
8141         * unlocked-io.hin: Remove file.
8142         * Makefile.am (unlocked-io.h): Rewrite to use a separate script,
8143         rather than trying to embed it here.
8144         (EXTRA_DIST): Add gen-uio.  Remove unlocked-io.hin
8145         Reported by Padraig Brady.
8146
8147 2001-09-25  Volker Borchert  <bt@teknon.de>
8148
8149         * gettimeofday.c (rpl_gettimeofday): Declare local variable `result'.
8150
8151 2001-09-23  Jim Meyering  <meyering@lucent.com>
8152
8153         * mountlist.c: Remove useless parentheses in #if directives.
8154         (MOUNTED) [!defined MOUNTED]: Define to _PATH_MOUNTED, for when
8155         the deprecated MOUNTED symbol is no longer defined in mntent.h.
8156
8157 2001-09-22  Jim Meyering  <meyering@lucent.com>
8158
8159         * localcharset.c: Update from latest gettext.
8160         * config.charset: Likewise.
8161
8162 2001-09-20  Jim Meyering  <meyering@lucent.com>
8163
8164         * xstrtol.c (strtoimax): Guard declaration with
8165         `#if !HAVE_DECL_STRTOIMAX', rather than just `#ifndef strtoimax'.
8166         The latter fails because some systems (at least rs6000-ibm-aix4.3.3.0)
8167         have their own, conflicting declaration of strtoimax in sys/inttypes.h.
8168         (strtoumax): Likewise, for completeness (it wasn't necessary).
8169
8170 2001-09-06  Paul Eggert  <eggert@twinsun.com>
8171
8172         * strtoimax.c (HAVE_LONG_LONG):
8173         Redefine to HAVE_UNSIGNED_LONG_LONG if unsigned.
8174         (strtoimax): Use sizeof (long), not sizeof strtol (ptr, endptr, base),
8175         to work around bug in IBM C compiler.
8176
8177 2001-09-16  Jim Meyering  <meyering@lucent.com>
8178
8179         * mkdir.c: New file.
8180
8181 2001-09-04  Paul Eggert  <eggert@twinsun.com>
8182
8183         * xgetcwd.c: Revert some of the previous change; intead,
8184         fix the HAVE_GETCWD_NULL code to behave more like the
8185         !HAVE_GETCWD_NULL code used to.
8186
8187         Include "xalloc.h".
8188         (xgetcwd): Do not return NULL when memory is exhausted; instead,
8189         invoke xalloc_die.
8190
8191 2001-09-04  Paul Eggert  <eggert@twinsun.com>
8192
8193         * xreadlink.c (xreadlink): Omit size_t* arg.  All uses changed.
8194         Use ssize_t, not int, to store result of readlink.
8195         Check for ssize_t overflow as well as size_t overflow,
8196         as POSIX says the result of readlink is implementation-defined
8197         when ssize_t overflows.
8198         Remove unnecessary cast to char*.
8199         Use free+malloc instead of realloc, as the storage doesn't need
8200         to be preserved and it's clearer and can be more efficient that way.
8201         (SIZE_MAX, SSIZE_MAX): New macros, if <limits.h> doesn't declare.
8202         * xreadlink.h (xreadlink): Update prototype.
8203
8204 2001-09-03  Paul Eggert  <eggert@twinsun.com>
8205
8206         * exclude.c (fnmatch_no_wildcards): Fix confusion between
8207         usage of FNM_CASEFOLD and FNM_LEADING_DIR.  The bug was
8208         spotted by Jim Meyering.
8209
8210 2001-09-03  Jim Meyering  <meyering@lucent.com>
8211
8212         * xreadlink.c (xreadlink): Preserve errno around `free' during failure.
8213
8214 2001-09-03  Paul Eggert  <eggert@twinsun.com>
8215
8216         * xgetcwd.c: Fix the !HAVE_GETCWD_NULL code to behave more
8217         like the HAVE_GETCWD_NULL code.
8218         Include pathmax.h if not HAVE_GETCWD.
8219         Do not include xalloc.h.
8220         (INITIAL_BUFFER_SIZE): New symbol.
8221         Do not use xmalloc / xrealloc, since the caller is responsible for
8222         handling errors.  Preserve errno around `free' during failure.
8223         Do not overrun buffer when using getwd.
8224
8225 2001-09-03  Paul Eggert  <eggert@twinsun.com>
8226
8227         * xgetcwd.c (xgetcwd): Use HAVE_GETCWD_NULL, not (defined
8228         __GLIBC__ && __GLIBC__ >= 2), to decide whether to use getcwd (NULL, 0).
8229
8230 2001-09-02  Jim Meyering  <meyering@lucent.com>
8231
8232         * error.c: Update from GNU libc.
8233
8234 2001-09-01  Jim Meyering  <meyering@lucent.com>
8235
8236         * xreadlink.c: New file.
8237         * xreadlink.h: New file.
8238         * Makefile.am (libfetish_a_SOURCES): Add xreadlink.c and xreadlink.h.
8239
8240         * regex.c (uintptr_t) [!_LIBC]: Define to private_uintptr_t, so it
8241         doesn't conflict with sparc Solaris 7's definition in
8242         /usr/include/sys/int_types.h.
8243
8244         * exclude.c: Use `""', not `<>' to #include non-system header files.
8245         (fnmatch_no_wildcards): Rewrite not to use function names, strcasecmp
8246         and strncasecmp as r-values.  Unixware didn't have declarations.
8247
8248 2001-08-31  Jim Meyering  <meyering@lucent.com>
8249
8250         * xgetcwd.c (xgetcwd): Reorganize to avoid some duplication.
8251         Use an initial, malloc'd, buffer of length 128 rather than
8252         a statically allocated one of length 1024.
8253
8254 2001-08-30  Paul Eggert  <eggert@twinsun.com>
8255
8256         * xgetcwd.c: Don't include pathmax.h.
8257         Include stdlib.h and unistd.h if available.
8258         Include xalloc.h.
8259         (xmalloc, xstrdup, free): Remove decls.
8260         (xgetcwd): Don't assume sizes fit in unsigned.
8261         Check for overflow when computing sizes.
8262         Simplify reallocation code.
8263
8264 2001-08-28  Paul Eggert  <eggert@twinsun.com>
8265
8266         * Makefile.am (libfetish_a_SOURCES): Remove strtoxmax.c.
8267
8268         * strtoimax.c: Renamed from strtoxmax.c, removing the
8269         old strtoimax.c.
8270
8271         Also, make the following further changes to make this file's
8272         configuration more similar to that of strtol.c:
8273         (UNSIGNED): Renamed from STRTOUXMAX_UNSIGNED.  All uses changed.
8274         (strtoumax, uintmax_t, strtoull, strtol): Remove.
8275         (intmax_t, strtoimax, strtol, strtoll): New macros, if UNSIGNED.
8276         (strtoimax): Renamed from strtoumax.  All uses of unsigned values
8277         changed to signed values.
8278
8279         And make the following changes as well:
8280         Fix copyright notice, as 1999 was missing.
8281         (verify): New macro.
8282         (strtoimax): Check sizes at compile-time, not run-time.
8283         Prefer strtol to strtoll if both work.
8284         (main): Remove; it was not that useful and was a pain to maintain.
8285
8286         * strtoumax.c: Include strtoimax.c, not strtouxmax.c.
8287
8288 2001-08-30  Paul Eggert  <eggert@twinsun.com>
8289
8290         * savedir.c (savedir): Remove size parameter, as POSIX says that
8291         a directory's st_size can have an arbitrary value, so the old
8292         usage could waste an arbitrary amount of memory.  All uses
8293         changed.
8294         * savedir.h: Update prototype.
8295
8296 2001-08-30  Paul Eggert  <eggert@twinsun.com>
8297
8298         * xstrtol.c (strtoimax): New decl.
8299
8300 2001-08-28  Paul Eggert  <eggert@twinsun.com>
8301
8302         * xstrtol.h: Add copyright notice.
8303         (_DECLARE_XSTRTOL): Improve quality of diagnostic for
8304         LONGINT_INVALID_SUFFIX_CHAR.
8305
8306 2001-08-30  Paul Eggert  <eggert@twinsun.com>
8307
8308         * quotearg.c: BSD/OS 4.1 wchar.h requires FILE and struct
8309         tm to be declared.
8310
8311 2001-08-30  Paul Eggert  <eggert@twinsun.com>
8312
8313         * hash.c: Remove '2001' from copyright notice.
8314
8315 2001-08-30  Paul Eggert  <eggert@twinsun.com>
8316
8317         * full-write.h: New file.
8318         * Makefile.am (libfetish_a_SOURCES): Add full-write.h.
8319         * full-write.c: Correct credits, as cccp.c no longer
8320         exists and anyway it was so heavily changed from the old cccp
8321         code as to be unrecognizable.  Include full-write.h.
8322         (full_write) Return size_t, with short writes meaning failure.
8323         All callers changed.  This fixes a bug with large buffers
8324         on 64-bit hosts.
8325         * utime.c: Include full-write.h.
8326
8327 2001-08-30  Paul Eggert  <eggert@twinsun.com>
8328
8329         Merge 'exclude' changes from tar 1.13.22.
8330         This fixes one or two unlikely storage allocation overflow bugs,
8331         but doesn't change user-visible behavior otherwise.
8332
8333 2001-08-30  Paul Eggert  <eggert@twinsun.com>
8334
8335         * exclude.c (bool): Declare, perhaps by including stdbool.h.
8336         (<sys/types.h>): Include only if HAVE_SYS_TYPES_H.
8337         (<stdlib.h>, <string.h>, <strings.h>, <inttypes.h>, <stdint.h>):
8338         Include if available.
8339         (<xalloc.h>): Include
8340         (SIZE_MAX): Define if <stdint.h> or <inttypes.h> doesn't.
8341         (verify): New macro.  Use it to verify that EXCLUDE macros do not
8342         collide with FNM macros.
8343         (struct patopts): New struct.
8344         (struct exclude): Use it, as exclude patterns now come with options.
8345         (new_exclude): Support above changes.
8346         (new_exclude, add_exclude_file):
8347         Initial size must now be a power of two to simplify overflow checking.
8348         (free_exclude, fnmatch_no_wildcards): New function.
8349         (excluded_filename): No longer requires options arg, as the options
8350         are determined by add_exclude.  Now returns bool, not int.
8351         (excluded_filename, add_exclude):
8352         Add support for the fancy new exclusion options.
8353         (add_exclude, add_exclude_file): Now takes int options arg.
8354         Check for arithmetic overflow when computing sizes.
8355         (add_exclude_file): xrealloc might modify errno, so don't
8356         realloc until after errno might be used.
8357
8358         * exclude.h (EXCLUDE_ANCHORED, EXCLUDE_INCLUDE,EXCLUDE_WILDCARDS):
8359         New macros.
8360         (free_exclude): New decl.
8361         (add_exclude, add_exclude_file): Now takes int options arg.
8362         (excluded_filename): No longer requires options arg, as the options
8363         are determined by add_exclude.  Now returns bool, not int.
8364
8365 2001-08-30  Paul Eggert  <eggert@twinsun.com>
8366
8367         * alloca.c (alloca): Arg is of type size_t, not unsigned.
8368
8369 2001-08-27  Jim Meyering  <meyering@lucent.com>
8370
8371         * Makefile.am (libfetish_a_SOURCES): Add strtoxmax.c
8372
8373         * version-etc.c (N_): Remove definition.
8374         Revert most of last change.
8375         Instead, simply don't mark the `Copyright...' string for translation.
8376         Based on advice from Paul Eggert.
8377
8378         * strtoxmax.c: Tweak comment.
8379
8380 2001-08-26  Jim Meyering  <meyering@lucent.com>
8381
8382         * version-etc.c (version_etc_copyright_fmt): Replace literal year
8383         of copyright with `%s' so translators don't get an untranslated
8384         message in 2002.
8385         (COPYRIGHT_YEAR): Define.
8386         (version_etc): Use fprintf rather than fputs.
8387         Suggestion from Ulrich Drepper.
8388
8389         * Makefile.am (libfetish_a_SOURCES): Add xstrtoimax.c.
8390
8391         * strtoll.c: New file, from GNU libc.
8392         * xstrtoimax.c: New file.
8393
8394         * xstrtol.h: Add xstrtoimax.
8395         * strtoumax.c: New file.  Simply include "strtoumax.c".
8396         * strtoimax.c: New file.  Likewise, but first define STRTOUXMAX_SIGNED.
8397
8398         * strtoumax.c: Factor to work both for unsigned and signed types, ...
8399         * strtoxmax.c: ... then renamed to this.
8400
8401 2001-08-13  Paul Eggert  <eggert@twinsun.com>
8402
8403         * Makefile.am (unlocked-io.h): Do not append "_unlocked" twice.
8404         Port to Solaris 8, where 'sed' requires a space after the 'r'
8405         command, and where sh dislikes "$/".  Clean up the spacing a bit.
8406         Redirect output to $tmp just once.
8407
8408 2001-08-12  Paul Eggert  <eggert@sic.twinsun.com>
8409
8410         * addext.c (<errno.h>): Include.
8411         (errno): Declare if not defined.
8412         (addext): Work correctly when pathconf returns -1 and leaves
8413         errno alone because there is no limit.  Also, work even if
8414         pathconf returns a value greater than SIZE_MAX.
8415
8416 2001-08-12  Jim Meyering  <meyering@lucent.com>
8417
8418         * xgetcwd.c (xgetcwd) [defined __GLIBC__ && __GLIBC__ >= 2]:
8419         Simply `return getcwd (NULL, 0);'.
8420         [! (defined __GLIBC__ && __GLIBC__ >= 2)]:
8421         Use 1300 as initial value for length, not PATH_MAX.
8422
8423         * pathmax.h: Clean up cpp syntax.
8424
8425 2001-08-12  Jim Meyering  <meyering@lucent.com>
8426
8427         * gettimeofday.c: New file.
8428         * gtod.h: New file.
8429         * Makefile.am (libfetish_a_SOURCES): Add gtod.h.
8430
8431 2001-08-04  Jim Meyering  <meyering@lucent.com>
8432
8433         * error.h (__attribute__): Remove `|| __STRICT_ANSI__' from #if stmt,
8434         to get in sync with glibc.
8435
8436 2001-08-03  Paul Eggert  <eggert@twinsun.com>
8437
8438         The following changes are from gettext 0.10.39 as maintained by
8439         Bruno Haible.
8440
8441         * mbswidth.h (MBSW_REJECT_UNPRINTABLE, MBSW_REJECT_INVALID):
8442         Renamed from MBSW_ACCEPT_UNPRINTABLE and MBSW_ACCEPT_INVALID
8443         with inverted sense.  All uses changed.
8444
8445         * mbswidth.c: Don't include <limits.h>.
8446         Include <stdlib.h> and <string.h> unconditionally.
8447         (iswcntrl, mbsinit, ISCNTRL): New macros.
8448         (mbsnwidth): Use K&R style function declarations.
8449         Don't bother checking for MB_LEN_MAX == 1, since the compiler
8450         can optimize it when MB_CUR_MAX == 1.
8451         The width of control characters is zero, not 1.
8452
8453 2001-07-15  Jim Meyering  <meyering@lucent.com>
8454
8455         * Makefile.am (EXTRA_DIST): Add unlocked-io.hin.
8456         (BUILT_SOURCES): Add unlocked-io.h.
8457         (io_functions): Define.
8458         (unlocked-io.h): New rule.
8459         (DISTCLEANFILES): Add unlocked-io.h.
8460         (all-local): Depend on unlocked-io.h, to ensure it is created.
8461
8462         * unlocked-io.hin: New file
8463
8464         * regex.c: Update from glibc.
8465
8466 2001-07-05  Jim Meyering  <meyering@lucent.com>
8467
8468         * Makefile.am (noinst_HEADERS): Remove definition, per new automake
8469         recommendation.
8470         (libfetish_a_SOURCES): Put all .h files here instead.
8471         Remove a thus-exposed (better checks in automake) duplicate and
8472         two unnecessary .h files.
8473
8474 2001-06-11  Jim Meyering  <meyering@lucent.com>
8475
8476         * regex.c: Update from GNU libc.
8477
8478 2001-05-27  Jim Meyering  <meyering@lucent.com>
8479
8480         * readutmp.h (UT_TYPE): Define.
8481
8482 2001-05-24  Jim Meyering  <meyering@lucent.com>
8483
8484         * argmatch.c: Include "quote.h".
8485         (argmatch_invalid): Remove explicit `' quotes.  Instead, use the
8486         quote function.  Reported by Göran Uddeborg.
8487
8488 2001-05-20  Alexandre Duret-Lutz  <duret_g@epita.fr>
8489
8490         * dirname.c (dir_name): Compute append_dot using path, not newpath
8491         which is not yet declared.
8492
8493 2001-05-11  Paul Eggert  <eggert@twinsun.com>
8494
8495         * Makefile.am (libfetish_a_SOURCES):
8496         Add strftime.c, since we now compile it on all hosts.
8497
8498         * strftime.c (my_strftime):
8499         Define to nstrftime if emacs, but only if my_strftime is not defined.
8500         (extra_args, extra_args_spec, extra_args_spec_iso): Rename from
8501         ut_argument, ut_argument_spec, ut_argument_spec_iso, respectively.
8502         Add one more extra argument: a nanoseconds value.
8503         All uses changed.
8504         (ns): New macro.
8505         (my_strftime function): Add %N format.
8506         (emacs_strftimeu): Renamed from emacs_strftime,
8507         with extra ut argument.
8508
8509 2001-05-11  Paul Eggert  <eggert@twinsun.com>
8510
8511         dirname code cleanup.  base_name now behaves more compatibly
8512         with POSIX basename when given file names that have trailing
8513         slashes, and similarly for dir_name.  Add new primitives
8514         base_len and dir_len.  Put the directory-name-related decls
8515         into dirname.h.
8516
8517         * addext.c (ISSLASH, base_name): Remove; now in dirname.h.
8518         * backupfile.c (base_name): Likewise.
8519         * basename.c (FILESYSTEM_PREFIX_LEN, PARAMS, ISSLASH): Likewise.
8520         * dirname.c (FILESYSTEM_PREFIX_LEN, ISSLASH): Likewise.
8521         * makepath.c (strip_trailing_slashes): Likewise.
8522         * path-concat.c (DIRECTORY_SEPARATOR, FILESYSTEM_PREFIX_LEN, ISSLASH):
8523         Likewise.
8524         * rename.c (strip_trailing_slashes): Likewise.
8525         * same.c (base_name): Likewise.
8526         * stripslash.c (ISSLASH): Likewise.
8527
8528         * addext.c: Include <dirname.h> after size_t is defined.
8529         * backupfile.c: Likewise.
8530
8531         * addext.c (addext): Use base_len to trim redundant
8532         trailing slashes instead of doing it ourselves.
8533         But do not trim the last slash if it is not redundant.
8534
8535         * backupfile.c (find_backup_file_name,
8536         max_backup_version): Use base_len instead of rolling it ourselves.
8537         Handle the case of "" and (on DOS) "C:" correctly.
8538
8539         * basename.c: Do not include <stdio.h>, <assert.h>; no longer needed.
8540         Include <string.h>, <dirname.h>.
8541         (base_name): Allow file names ending in slashes, other than names
8542         that are all slashes.  In this case, return the basename followed
8543         by the slashes.  This is more general, and can be used in places
8544         where the original base_name purposely had an assertion failure.
8545         (base_len): New function.
8546
8547         * dirname.c: Include <string.h> instead of <stdlib.h>.
8548         Do not include <assert.h>; no longer needed.
8549         Include xalloc.h.
8550         (memrchr): Remove decl.
8551         (dir_name_r): Remove.
8552         (dir_len): Renamed from dirlen.  All callers changed.
8553         Rewrite in terms of base_name, for simplicity and consistency.
8554         (dir_name): Never return NULL.  All callers changed.
8555         Do not include <stdlib.h> in test program; no longer needed.
8556         return 0; is fine for test program.
8557
8558         * dirname.h (DIRECTORY_SEPARATOR, ISSLASH, FILESYSTEM_PREFIX_LEN):
8559         New macros.
8560         (base_name, base_len, dir_len, strip_trailing_slashes): New decls.
8561
8562         * path-concat.c (path_concat): Use base_len to compute
8563         base length, not strlen; this means we cannot rely on memcpy
8564         to null-terminate.
8565
8566         * same.c (STREQ): Remove.
8567         (same_name): Handle the case where the basename ends in trailing '/'.
8568
8569         * stripslash.c (strip_trailing_slashes): Return nonzero if
8570         a slash was stripped.  Do not strip the last slash after a
8571         file system prefix.
8572
8573 2001-04-08  Jim Meyering  <meyering@lucent.com>
8574
8575         * getdate.y (get_date): Set tm_isdst to -1 to ensure that it is
8576         recomputed; that's necessary when the offset spans a DST transition.
8577         Patch by David J. MacKenzie.  Reported by Hon-Yin Kok.
8578
8579 2001-04-02  Jim Meyering  <meyering@lucent.com>
8580
8581         * regex.h, regex.c: Update from GNU libc.
8582
8583 2001-03-19  Paul Eggert  <eggert@twinsun.com>
8584
8585         * version-etc.c (version_etc_copyright): Update to 2001.
8586
8587 2001-03-16  Paul Eggert  <eggert@twinsun.com>
8588
8589         * tempname.c (uint64_t): Define to uintmax_t if
8590         not defined, and if UINT64_MAX is not defined.
8591         Required at least for Vax Ultrix4.3, which doesn't define uint64_t.
8592         Reported by John David Anglin.
8593
8594 2001-03-10  Bruno Haible  <haible@clisp.cons.org>
8595
8596         * localcharset.c (locale_charset): Allow wildcard syntax. Also resolve
8597         alias if codeset is empty.
8598         * config.charset (BeOS): Use wildcard syntax.
8599
8600 2001-03-13  Jim Meyering  <meyering@lucent.com>
8601
8602         * path-concat.c (path_concat) [FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX]:
8603         Don't insert a backslash when concatenating e.g., `C:' and `foo'.
8604         From Bruno Haible.
8605
8606 2001-03-06  Bruno Haible  <haible@clisp.cons.org>
8607
8608         * localcharset.c (locale_charset): Don't use setlocale(LC_CTYPE,NULL).
8609         Don't return NULL.
8610         * unicodeio.c (print_unicode_char): Simplify accordingly.
8611
8612 2001-03-06  Bruno Haible  <haible@clisp.cons.org>
8613
8614         * config.charset: Update for FreeBSD 4.2 and OSF/1 5.1. Add
8615         support for DOS/DJGPP.
8616
8617 2001-02-28  Paul Eggert  <eggert@twinsun.com>
8618
8619         * Makefile.am (libfetish_a_SOURCES):
8620         Add dup-safer.c, fopen-safer.c.
8621         (noinst_HEADERS): Add stdio-safer.h, unistd-safer.h.
8622
8623         * dup-safer.c, fopen-safer.c, stdio-safer.h, unistd-safer.h: New files.
8624
8625 2001-02-25  Paul Eggert  <eggert@twinsun.com>
8626
8627         The mkstemp replacement is taken from glibc 2.2.2, with some
8628         portability fixes for use outside glibc, as follows:
8629
8630         * tempname.c (struct_stat64): New macro.
8631         (direxists, __gen_tempname): Use it.
8632         This avoids a portability problem with Solaris 8.
8633
8634         * tempname.c (<config.h>): Include if HAVE_CONFIG_H.
8635         (<stddef.h>, <stdint.h>, <string.h>):
8636         Include only if STDC_HEADERS || _LIBC.
8637         (<fcntl.h>): Include only if HAVE_FCNTL_H || _LIBC.
8638         (<unistd.h>): Include only if HAVE_UNISTD_H || _LIBC.
8639         (<sys/time.h>): Include only if HAVE_SYS_TIME_H || _LIBC.
8640         (__set_errno): Define this macro if <errno.h> doesn't.
8641         (P_tmpdir, TMP_MAX, __GT_FILE, __GT_BIGFILE, __GT_DIR, __GT_NOCREATE):
8642         Define these macros if <stdio.h> doesn't.
8643         (S_ISDIR, S_IRUSR, S_IWUSR, S_IXUSR):
8644         Define these macros if <sys/stat.h>
8645         doesn't.  Ignore <sys/stat.h> S_ISDIR if STAT_MACROS_BROKEN.
8646         (stat64, __getpid, __gettimeofday, __mkdir, __open, __open64, lxstat64,
8647         __xstat64): Define if not _LIBC.
8648         (__secure_getenv): Define if ! (HAVE___SECURE_GETENV || _LIBC).
8649         (__gen_tempname): Invoke gettimeofday only if
8650         HAVE_GETTIMEOFDAY || _LIBC;
8651         otherwise, fall back on plain "time".
8652         Use macros like S_IRUSR | S_IWUSR rather than octal values like 0600.
8653
8654         * mkstemp.c (__GT_FILE): Define to zero if not defined.
8655
8656         * mkstemp.c, tempname.c: New files, taken from glibc 2.2.2.
8657
8658 2001-02-17  Jim Meyering  <meyering@lucent.com>
8659
8660         * strtoul.c: Sync from GNU libc.  Use double quotes, not <...>
8661         around included file name.
8662
8663         * strnlen.c (__strnlen): Merge in a change from GNU libc.
8664
8665         * strftime.c: Update from GNU libc (the only changes were to comments).
8666
8667 2001-02-13  Bruno Haible  <haible@clisp.cons.org>
8668
8669         * mbswidth.h (mbswidth): Also define as macro, to avoid prototype clash.
8670
8671 2001-02-17  Paul Eggert  <eggert@twinsun.com>
8672
8673         * mbswidth.c, quotearg.c (mbrtowc, mbsinit):
8674         Remove workaround macros for hosts that have mbrtowc but not
8675         mbstate_t, as we now insist on proper declarations for both
8676         before using mbrtowc.
8677
8678 2001-02-17  Jim Meyering  <meyering@lucent.com>
8679
8680         * regex.c: Update from libc.
8681
8682 2001-02-16  Paul Eggert  <eggert@twinsun.com>
8683
8684         * alloca.c (malloc): Undef before defining, since stdlib.h
8685         may have defined it.  Needed for Encore Umax-3.0.9.16b systems.
8686         Reported by Mark Hounschell via Paul Eggert.
8687
8688 2001-01-30  Bruno Haible  <haible@clisp.cons.org>
8689
8690         * config.charset: Update for FreeBSD 4.2.
8691
8692 2001-01-26  Jim Meyering  <meyering@lucent.com>
8693
8694         * quotearg.c: Include stddef.h.
8695         * quote.c: Include stddef.h.
8696         Reported by Axel Kittenberger.
8697
8698         * xmalloc.c [HAVE_DONE_WORKING_MALLOC_CHECK]: Enclose error-evoking
8699         line in double quotes so that it evokes a better diagnostic.
8700         [HAVE_DONE_WORKING_REALLOC_CHECK]: Likewise.
8701         Reported by Axel Kittenberger.
8702
8703 2001-01-15  Bruno Haible  <haible@clisp.cons.org>
8704
8705         * unicodeio.c (print_unicode_char): Cast the second iconv() arg,
8706         to avoid a warning.  Add back 'const' to inptr.
8707
8708 2001-01-16  Jim Meyering  <meyering@lucent.com>
8709
8710         * basename.c: Include <stdio.h>, needed by assert on SunOS 4.
8711         From Bruno Haible.
8712
8713 2001-01-14  Jim Meyering  <meyering@lucent.com>
8714
8715         * rename.c: New file.  From Volker Borchert.
8716         Include stdlib.h, string.h or strings.h, and xalloc.h.
8717         Use strip_trailing_slashes rather than open-coding it.
8718
8719 2001-01-03  Paul Eggert  <eggert@twinsun.com>
8720
8721         * strftime.c: Sync with glibc time/strftime.c 1.81.
8722
8723 2001-01-03  Jim Meyering  <meyering@lucent.com>
8724
8725         * unicodeio.c (print_unicode_char): Remove `const' from declaration of
8726         local `inptr' to avoid warning with some system declarations of iconv.
8727
8728 2000-12-29  Paul Eggert  <eggert@twinsun.com>
8729
8730         * modechange.c: Do not assume that mode_t uses the
8731         traditional octal encoding.  E.g. "chmod 1 FOO" should set
8732         the other-execute bit of FOO even if S_IXOTH != 1.
8733
8734         (SUID, SGID, SVTX, RUSR, WUSR, XUSR, RGRP, WGRP, XGRP, ROTH,
8735         WOTH, XOTH, ALLM): New macros.
8736         (S_ISUID, S_ISGID, S_ISVTX, S_IRUSR, S_IWUSR, S_IXUSR,
8737          S_IRGRP, S_IWGRP, S_IXGRP, S_IROTH, S_IWOTH, S_IXOTH):
8738         Use them.
8739         (S_ISGID): Fix typo; it was defaulting to the same value as S_ISUID.
8740         (S_IRWXU, S_IRWXG, S_IRWXO): Specify defaults in terms of the above.
8741         (mode_compile):
8742         No need to use uintmax_t; unsigned long is long enough.
8743         Don't bother to get suffix since we don't use it.
8744
8745 2000-12-24  Jim Meyering  <meyering@lucent.com>
8746
8747         * hash.c (is_prime): Return explicit boolean values.
8748         (hash_get_first): Return NULL to appease Irix5.6's 89.
8749         Reported by Nelson Beebe.
8750
8751 2000-10-31  Bruno Haible  <haible@clisp.cons.org>
8752
8753         * localcharset.c (locale_charset): Add support for Win32.
8754
8755 2000-12-18  Paul Eggert  <eggert@twinsun.com>
8756
8757         * physmem.h, physmem.c: New files.
8758
8759         * Makefile.am (libfetish_a_SOURCES): Add physmem.c.
8760         (noinst_HEADERS): Add physmem.h.
8761
8762         * xstrtol.c (__xstrtol): Add undocumented suffixes 'g' and
8763         't' for compatibility with Solaris 8 sort.
8764
8765 2000-12-18  Bruno Haible  <haible@clisp.cons.org>
8766
8767         * config.charset: Add support for BeOS.
8768
8769 2000-12-16  Jim Meyering  <meyering@lucent.com>
8770
8771         * getusershell.c [!SHELLS_FILE && __DJGPP__]: Define
8772         SHELLS_FILE to a file name that's useful on djgpp systems.
8773         Include stdlib.h.
8774         (ADDITIONAL_DEFAULT_SHELLS): Define.
8775         (default_shells): Prepend ADDITIONAL_DEFAULT_SHELLS.
8776         Based mostly on a patch from Prashant TR.
8777
8778 2000-12-16  Jim Meyering  <meyering@lucent.com>
8779
8780         This bug had a serious impact on chown: `chown N:M FILE' (for integer
8781         N and M) would have treated it like `chown N:N FILE'.
8782
8783         * userspec.c (parse_user_spec): Fix typo: s/u/g/.
8784
8785 2000-10-31  Bruno Haible  <haible@clisp.cons.org>
8786
8787         * config.charset: Add ISO-8859-3, BIG5HKSCS, GB18030, JOHAB, VISCII,
8788         CP874, CP949, CP950, CP1250, CP1253, CP1254, CP1255, CP1256, CP1257
8789         to the list of canonical encodings. Rename EUC-CN to GB2312.
8790
8791 2000-12-08  Andreas Schwab  <schwab@suse.de>
8792
8793         * mbswidth.c (mbsnwidth): Don't loop endlessly when called with an
8794         invalid mulitbyte sequence and with the MBSW_ACCEPT_INVALID flag set.
8795
8796 2000-12-07  Jim Meyering  <meyering@lucent.com>
8797
8798         * stripslash.c (ISSLASH): Define.
8799         (strip_trailing_slashes): Use ISSLASH rather than comparing against `/'.
8800         From Prashant TR.
8801
8802         * dirname.c (FILESYSTEM_PREFIX_LEN): Define.
8803         (dir_name_r): Declare this function as static.
8804         [BACKSLASH_IS_PATH_SEPARATOR]: Fix a bug that'd
8805         manifest itself on a name containing a mix of slashes and
8806         backslashes.
8807         Make this function work with names starting with a DOS-style
8808         drive letter and colon prefix.
8809         (dir_name): Append `.' if necessary.
8810         Based mostly on patches from Prashant TR and Eli Zaretskii.
8811
8812         * dirname.h (dir_name_r): Remove prototype.
8813
8814 2000-12-05  Jim Meyering  <meyering@lucent.com>
8815
8816         * dirname.c (dir_name_r): Add `const' in a few local declarations.
8817
8818 2000-12-04  Jim Meyering  <meyering@lucent.com>
8819
8820         * path-concat.c: [!HAVE_DECL_MALLOC]: Declare malloc.
8821         Also include memory.h, stdlib.h, unistd.h if appropriate.
8822         Reported by Andreas Jaeger (conflicting declaration of malloc).
8823
8824 2000-12-02  Jim Meyering  <meyering@lucent.com>
8825
8826         * closeout.h: Make idempotent, to avoid some obscure warnings.
8827
8828 2000-12-01  Paul Eggert  <eggert@twinsun.com>
8829
8830         * memrchr.c: Include <config.h> before any system include file.
8831
8832 2000-11-29  Paul Eggert  <eggert@twinsun.com>
8833
8834         * dirname.c (dir_name_r): Fix typo: int -> size_t.
8835
8836 2000-11-26  Jim Meyering  <meyering@lucent.com>
8837
8838         * memcoll.c: Include sys/types.h.  From Werner Almesberger.
8839
8840 2000-11-22  Paul Eggert  <eggert@twinsun.com>
8841
8842         * strftime.c (my_strftime): Do not invoke mbrlen with a
8843         size of (size_t) -1; it's not portable.
8844
8845 2000-11-17  Akim Demaille  <akim@epita.fr>
8846
8847         * obstack.h: Formatting changes.
8848         (obstack_grow, obstack_grow0): Don't cast WHERE at all: that would
8849         prevent type checking.
8850         (obstack_ptr_grow, obstack_ptr_grow_fast): When assigning, don't
8851         cast the value to (void *): assigning a `foo *' to a `void *'
8852         variable is valid.
8853         (obstack_int_grow, obstack_int_grow_fast): Don't cast AINT to int.
8854
8855 2000-11-17  Jim Meyering  <meyering@lucent.com>
8856
8857         * strstr.c: Update from GNU libc.
8858
8859 2000-11-16  Jim Meyering  <meyering@lucent.com>
8860
8861         * strverscmp.c: Incorporate weak-alias-related changes from glibc.
8862
8863 2000-11-11  Jim Meyering  <meyering@lucent.com>
8864
8865         * error.c: Add a couple #includes, merging from GNU libc version.
8866
8867 2000-11-10  Jim Meyering  <meyering@lucent.com>
8868
8869         * obstack.h: Update from GNU libc.
8870         * obstack.c: Likewise.
8871
8872 2000-11-06  Paul Eggert  <eggert@twinsun.com>
8873
8874         * getusershell.c (setusershell): Use rewind rather than
8875         fseek/fseeko, to avoid configuration hassles with fseeko.
8876         Don't bother opening SHELLS_FILE if shellstream is NULL;
8877         it's not necessary.
8878
8879 2000-11-05  Jim Meyering  <meyering@lucent.com>
8880
8881         * makepath.h (make_dir): Declare.
8882         * makepath.c (make_dir): Remove `static' attribute.
8883         Tweak a comment.
8884
8885 2000-11-04  Alexandre Duret-Lutz  <duret_g@epita.fr>
8886
8887         * hash.c (hash_get_next): Fix a thinko:  when ENTRY is the
8888         last one in a bucket, advance to the next bucket.
8889
8890 2000-11-02  Vesselin Atanasov  <vesselin@bgnet.bg>
8891
8892         * fnmatch.c: Do not comment out all the code if we are using
8893         the GNU C library, because in some cases we are replacing buggy
8894         code in the GNU C library itself.
8895
8896 2000-10-30  Paul Eggert  <eggert@twinsun.com>
8897
8898         * error.h, getline.h, modechange.h:
8899         Remove "2000" from Copyright line, as the file hasn't been
8900         changed this year other than in the copyright notice.
8901
8902         * xalloc.h: Add "2000" to Copyright line, as this file
8903         was changed this year.
8904
8905 2000-10-30  Paul Eggert  <eggert@twinsun.com>
8906
8907         * fnmatch.c (FOLD): Do not assume that characters are unsigned.
8908         (fnmatch): Fix some FNM_FILE_NAME and FNM_LEADING_DIR bugs,
8909         e.g. fnmatch("d*/*1", "d/s/1", FNM_FILE_NAME) incorrectly yielded zero.
8910
8911 2000-10-29  Greg Louis  <glouis@dynamicro.on.ca>
8912
8913         * regex.h (__restrict_arr): Move definition out of #ifndef block.
8914         Required because egcs-2.91.66 (aka 1.1.2) defines __restrict, but
8915         doesn't define __restrict_arr.
8916
8917 2000-10-29  Jim Meyering  <meyering@lucent.com>
8918
8919         * xstat.in: Fix grammar in comment.
8920
8921 2000-10-28  Jim Meyering  <meyering@lucent.com>
8922
8923         * memchr.c: Update from libc.
8924         Adjust for portability:
8925         [HAVE_STDLIB_H]: Include stdlib.h.
8926         [HAVE_BP_SYM_H || _LIBC]: Guard inclusion of bp-sym.h.
8927         Undef __memchr, too.
8928         [!weak_alias]: Define __memchr to memchr.
8929
8930         * regex.c: Update from libc.
8931         * regex.h: Likewise.
8932         * getopt1.c: Likewise.
8933         * memcmp.c: Likewise.
8934
8935         * getusershell.c (setusershell) [HAVE_FSEEKO]: Use fseeko.
8936         Avoid using fseek, when possible -- it's broken by design.
8937         Patch by Ulrich Drepper.
8938
8939 2000-10-26  Jim Meyering  <meyering@lucent.com>
8940
8941         * strftime.c: Update from libc.
8942
8943 2000-10-25  Jim Meyering  <meyering@lucent.com>
8944
8945         * obstack.c: Update from libc.
8946
8947 2000-10-23  Jim Meyering  <meyering@lucent.com>
8948
8949         * hard-locale.c (hard_locale): Revert last change -- it was simply
8950         wrong.  That set_locale call must not have any side effects.
8951         From Paul Eggert.
8952
8953 2000-10-22  Jim Meyering  <meyering@lucent.com>
8954
8955         * md5.c (md5_process_block) [OP]: Use `rol', not CYCLIC.
8956         [CYCLIC]: Remove now-unused definition.
8957
8958         * save-cwd.c (O_DIRECTORY): Define, if needed.
8959         (save_cwd) [HAVE_FCHDIR]: Use O_DIRECTORY when opening ".".
8960         Suggestion from Ulrich Drepper.
8961
8962 2000-10-21  Jim Meyering  <meyering@lucent.com>
8963
8964         * dirname.c (dir_name_r): New function, factored out of dir_name.
8965         (dir_name): Use dir_name_r.
8966         * dirname.h (dir_name_r): Declare it.
8967
8968 2000-10-21  Jim Meyering  <meyering@lucent.com>
8969
8970         * dirname.c (memrchr): Declare if necessary.
8971         (dir_name): Remove the restriction that there be no
8972         trailing slashes.  Now, this code skips past them, effectively
8973         ignoring them.
8974         [TEST_DIRNAME] (main): New unit tests.
8975
8976         * memrchr.c: New file from GNU libc.
8977         Undef __memrchr, too.
8978         [!weak_alias]: Define __memrchr to memrchr.
8979         Guard weak_alias use with `#ifdef weak_alias'.
8980
8981 2000-10-17  Jim Meyering  <meyering@lucent.com>
8982
8983         * quote.h (PARAMS): Define and use.
8984         Reported by Akim Demaille.
8985
8986         * getopt.c: Update from libc.
8987
8988 2000-10-16  Jim Meyering  <meyering@lucent.com>
8989
8990         * hard-locale.c (hard_locale): Use "", not 0 as 2nd arg to setlocale.
8991         From Jan Fedak.
8992
8993 2000-09-25  Jim Meyering  <meyering@lucent.com>
8994
8995         * md5.h (rol): Define (from GnuPG).
8996
8997         * sha.c: Give credit (GnuPG) where due.
8998         (M): Use rol rather than open-coding it.
8999         Add a FIXME comment.
9000
9001 2000-09-21  Jim Meyering  <meyering@lucent.com>
9002
9003         * userspec.c (parse_user_spec): Remove debugging printf I'd added.
9004         Reported by Michael Stone.
9005
9006 2000-09-20  Jim Meyering  <meyering@lucent.com>
9007
9008         * Makefile.am (libfetish_a_SOURCES): Add sha.c.
9009         (noinst_HEADERS): Add sha.h.
9010         Based on code from Scott G. Miller and from GnuPG.
9011
9012 2000-09-15  Jim Meyering  <meyering@lucent.com>
9013
9014         * regex.c: Update from libc.
9015
9016 2000-09-10  Jim Meyering  <meyering@lucent.com>
9017
9018         * getopt.c (_getopt_internal): Update from glibc.
9019
9020 2000-09-09  Jim Meyering  <meyering@lucent.com>
9021
9022         * quotearg.c: Rename ISASCII to IN_CTYPE_DOMAIN, so people don't
9023         think it should be used as a general replacement for isascii.
9024         * fnmatch.c: Likewise.
9025         * mbswidth.c: Likewise
9026         * regex.c: Likewise.
9027
9028         Don't use atoi.
9029         * userspec.c: Include sys/param.h and limits.h.
9030         Include xstrtol.h.
9031         (CHAR_BIT, TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM): Define.
9032         (UID_T_MAX, GID_T_MAX, MAXUID, MAXGID): Define.
9033         (parse_user_spec): Use xstrtoul, not atoi when converting numeric
9034         UID, GID.  Check range.
9035
9036 2000-09-06  Jim Meyering  <meyering@lucent.com>
9037
9038         * getopt.c (_getopt_internal): Update from glibc.
9039
9040 2000-08-30  Jim Meyering  <meyering@lucent.com>
9041
9042         * strftime.c: Merge in changes from GNU libc.
9043
9044 2000-08-26  Jim Meyering  <meyering@lucent.com>
9045
9046         * closeout.c: Include "__fpending.h".
9047         (close_stdout_status): Return right away if there's nothing to flush.
9048
9049         * Makefile.am (noinst_HEADERS): Add __fpending.h.
9050         * __fpending.c: New file.
9051         * __fpending.h: New file.
9052
9053 2000-08-07  Paul Eggert  <eggert@twinsun.com>
9054
9055         Standardize on "memory exhausted" instead of "Memory exhausted"
9056         or "virtual memory exhausted".
9057         * obstack.c (print_and_abort): Use "memory exhausted", not
9058         "virtual memory exhausted".
9059         * same.c (same_name): Invoke xalloc_die instead of printing
9060         our own message.
9061         * userspec.c (parse_user_spec): Likewise.
9062         * bumpalloc.h: comment fix
9063         * same.c, userspec.c: Include xalloc.h.
9064
9065         * xalloc.h (xalloc_msg_memory_exhausted): Now char const[],
9066         not char *const and pointing to a constant array.
9067         * xmalloc.c (xalloc_msg_memory_exhausted): Likewise.
9068         (xrealloc): Comment fix.
9069
9070         * userspec.c (parse_user_spec):
9071         Don't translate a message until just before returning,
9072         to avoid unnecessary translation.
9073
9074 2000-08-07  Jim Meyering  <meyering@lucent.com>
9075
9076         * addext.c, argmatch.c, argmatch.h, backupfile.h, bumpalloc.h,
9077         chown.c, diacrit.h, dirname.h, dup2.c, exclude.h, fileblocks.c,
9078         fnmatch.c, fnmatch.h, fsusage.c, fsusage.h, getdate.h,
9079         getgroups.c, gethostname.c, getopt.h, group-member.c,
9080         hard-locale.c, hash.h, isdir.c, lchown.c, linebuffer.c,
9081         linebuffer.h, long-options.h, malloc.c, md5.c, md5.h, memchr.c,
9082         memcmp.c, memcoll.c, memset.c, mktime.c, modechange.h, obstack.h,
9083         pathmax.h, realloc.c, rmdir.c, safe-read.c, save-cwd.c, stime.c,
9084         stpcpy.c, strcasecmp.c, strcspn.c, strdup.c, stripslash.c,
9085         strstr.c, strtod.c, strtol.c, strtoul.c, strtoull.c, strtoumax.c,
9086         utime.c, version-etc.h, xalloc.h, xstrdup.c, xstrtoumax.c,
9087         yesno.c: Back out Copyright date changes for each file with no change
9088         this year.  This eases coordination with other programs using the same
9089         source code modules.  From Paul Eggert.
9090
9091 2000-08-03  Greg McGary  <greg@mcgary.org>
9092
9093         * regex.c (SET_HIGH_BOUND, MOVE_BUFFER_POINTER,
9094         ELSE_EXTEND_BUFFER_HIGH_BOUND): New macros.
9095         (EXTEND_BUFFER): Use them.
9096
9097 2000-08-01  Jim Meyering  <meyering@lucent.com>
9098
9099         * dirname.c (ISSLASH): Define.
9100         (BACKSLASH_IS_PATH_SEPARATOR): Define.
9101         (dir_name) [BACKSLASH_IS_PATH_SEPARATOR]: Handle the case in which
9102         both `\' and `/' may be use as path separators.
9103         Based on a patch from Prashant TR.
9104
9105 2000-07-31  Paul Eggert  <eggert@twinsun.com>
9106
9107         * quotearg.c (quotearg_n_options): Don't make the initial
9108         slot vector a constant, since it might get modified.
9109
9110 2000-07-31  Jim Meyering  <meyering@lucent.com>
9111
9112         * xmalloc.c: Use `virtual memory exhausted', not `Memory exhausted'.
9113         * obstack.c (print_and_abort): Likewise.
9114
9115 2000-07-30  Paul Eggert  <eggert@twinsun.com>
9116
9117         * quotearg.c (quotearg_n_options): Preallocate a slot 0
9118         buffer, so that the caller can always quote one small
9119         component of a "memory exhausted" message in slot 0.
9120         From a suggestion by Jim Meyering.
9121
9122 2000-07-30  Jim Meyering  <meyering@lucent.com>
9123
9124         * makepath.c (make_path): Quote the other instance, too.
9125
9126         * quotearg.c (N_STATIC_SLOTVECS): Define.
9127         (STATIC_BUF_SIZE): Define.
9128         (quotearg_n_options): Use only statically allocated storage when
9129         N < N_STATIC_SLOTVECS and the length of the quoted result is smaller
9130         than STATIC_BUF_SIZE.
9131
9132 2000-07-29  Jim Meyering  <meyering@lucent.com>
9133
9134         * diacrit.c (diacrit_diac): Use __MSDOS__ in favor of MSDOS.
9135         * dirname.c (dir_name): Likewise.
9136
9137         * basename.c (base_name): Use ISSLASH rather than comparing against `/'.
9138
9139         * dirname.c (dir_name) [MSDOS]: Declare `lim' to be const.
9140         (dir_name): Assert that there are no trailing slashes.
9141
9142 2000-07-18  Bruno Haible  <haible@clisp.cons.org>
9143
9144         * mbswidth.h (mbswidth): Add a flags argument.
9145         (mbswidth): New declaration.
9146         (MBSW_ACCEPT_INVALID, MBSW_ACCEPT_UNPRINTABLE): New macros.
9147         * mbswidth.c (mbswidth): Add a flags argument.
9148         (mbsnwidth): New function.
9149
9150 2000-07-24  Jim Meyering  <meyering@lucent.com>
9151
9152         * mbswidth.c: Remove useless #else.  From Bruno Haible.
9153
9154 2000-07-23  Paul Eggert  <eggert@twinsun.com>
9155
9156         * mbswidth.c (_XOPEN_SOURCE):
9157         Don't define; this causes problems on Solaris 7.
9158         (wcwidth) [!HAVE_DECL_WCWIDTH]: Declare.
9159
9160 2000-07-23  Paul Eggert  <eggert@twinsun.com>
9161
9162         * quotearg.c:
9163         Include <wchar.h> even if ! (HAVE_MBRTOWC && 1 < MB_LEN_MAX),
9164         so that mbstate_t is always defined.
9165
9166         Do not inspect MB_LEN_MAX, since it's incorrectly defined to
9167         be 1 in at least one GCC installation, and this configuration
9168         error is likely to be common.  Ignoring MB_LEN_MAX hurts
9169         performance on hosts that have mbrtowc but have only unibyte
9170         locales, but I assume these hosts are rare.
9171
9172 2000-07-23  Paul Eggert  <eggert@twinsun.com>
9173
9174         * quotearg.c: Streamline by invoking multibyte code only if needed.
9175         <wchar.h>: Include only if HAVE_MBRTOWC && 1 < MB_LEN_MAX.
9176         (MB_CUR_MAX): Redefine to 1 if ! (HAVE_MBRTOWC && 1 < MB_LEN_MAX).
9177         (quotearg_buffer_restyled): If a unibyte locale, don't bother to
9178         invoke multibyte primitives.
9179
9180 2000-07-23  Jim Meyering  <meyering@lucent.com>
9181
9182         * basename.c (base_name): Add an assertion.
9183
9184 2000-07-15  Bruno Haible  <clisp.cons.org>
9185
9186         * quotearg.c: When the system forces us to redefine mbstate_t,
9187         shadow its mbsinit function.
9188
9189 2000-07-16  Bruno Haible  <haible@clisp.cons.org>
9190
9191         * mbswidth.h: New file.
9192         * mbswidth.c: New file.
9193         * Makefile.am (libfetish_a_SOURCES): Add mbswidth.c.
9194         (noinst_HEADERS): Add mbswidth.h.
9195
9196 2000-07-17  Bruno Haible  <haible@clisp.cons.org>
9197
9198         * config.charset: Add support for FreeBSD. Improve support for HP-UX
9199         and IRIX 6.
9200
9201 2000-07-15  Jim Meyering  <meyering@lucent.com>
9202
9203         * makepath.c: Include quote.h.
9204         (make_path): Convert "`%s'" in format strings to "%s", and wrap each
9205         corresponding argument in a `quote (...)' call.
9206         Give better diagnostics.
9207
9208         * Makefile.am (libfetish_a_SOURCES): Add quote.c.
9209         (noinst_HEADERS): Add quote.h.
9210
9211         * quote.c (quote, quote_n): New file.  Two functions taken verbatim
9212         from tar's src/misc.c.
9213         * quote.h: New file.  Prototypes for same.
9214
9215 2000-07-10  Paul Eggert  <eggert@twinsun.com>
9216
9217         From a suggestion by Bruno Haible.
9218         * quotearg.c (mbrtowc): Do not use HAVE_WCHAR_H in the definition.
9219         Use defined mbstate_t, not HAVE_MBSTATE_T_OBJECT,
9220         to decide whether to define the BeOS workaround macro;
9221         this adjusts to the change to AC_MBSTATE_T.
9222
9223 2000-07-13  Paul Eggert  <eggert@twinsun.com>
9224
9225         * quotearg.h (enum quoting style): New enum clocale_quoting_style.
9226
9227         * quotearg.c (quoting_style_args, quoting_style_vals,
9228         quotearg_buffer_restyled): Add support for
9229         clocale_quoting_style.  Undo previous change to
9230         locale_quoting_style behavior, and undo the "{LEFT QUOTATION MARK}"
9231         and "{RIGHT QUOTATION MARK}" msgids.
9232
9233 2000-07-05  Paul Eggert  <eggert@twinsun.com>
9234
9235         The old behavior of quoting `like this' doesn't look good with
9236         newer, ISO-style fonts.  See:
9237         http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
9238
9239         Instead, quote "like this" by default.  Let the translator
9240         tailor the locale-specific quoting behavior by providing
9241         translations for {LEFT QUOTATION MARK} and {RIGHT QUOTATION MARK}.
9242
9243         * quotearg.c (N_): New macro.
9244         (gettext_default): New function.
9245         (quotearg_buffer_restyled): Use
9246         gettext_default ("{LEFT QUOTATION MARK}", "\"") for left quote, and
9247         gettext_default ("{RIGHT QUOTATION MARK}", "\"") for right quote.
9248
9249 2000-07-09  Jim Meyering  <meyering@lucent.com>
9250
9251         * Most files: Update copyright dates to include 2000.
9252
9253 2000-07-08  Jim Meyering  <meyering@lucent.com>
9254
9255         * xgethostname.c (ENAMETOOLONG): Define to an unlikely value
9256         if not defined.
9257         (xgethostname): Remove now-unnecessary #ifdef.
9258         Move declaration of `err' into loop where it's used.
9259
9260 2000-07-05  Bruno Haible  <haible@clisp.cons.org>
9261
9262         * xgethostname.c (xgethostname): Protect against the SunOS 5.5 bug
9263         by allocating a larger buffer. Test the gethostname return value for
9264         being >= 0, not == 0, for BeOS.  Don't exhaust memory if gethostname
9265         returns an error and ENAMETOOLONG isn't defined.
9266
9267 2000-07-05  Paul Eggert  <eggert@twinsun.com>
9268         and Bruno Haible  <haible@clisp.cons.org>
9269
9270         * quotearg.c (mbrtowc): Declare returned type, since BeOS doesn't.
9271
9272 2000-07-05  Bruno Haible  <haible@clisp.cons.org>
9273
9274         * quotearg.c (struct quoting_options): Simplify quote_these_too
9275         dimension.
9276
9277 2000-07-03  Jim Meyering  <meyering@lucent.com>
9278
9279         * strndup.c: [!HAVE_DECL_STRNLEN]: Declare strnlen.
9280         Reported by Bruno Haible.
9281
9282 2000-07-04  Jim Meyering  <meyering@lucent.com>
9283
9284         * quotearg.c: Make inclusion of <wchar.h> independent of whether
9285         HAVE_MBRTOWC is set.  Required at least for irix-5.6, which
9286         lacks mbrtowc.
9287
9288 2000-07-03  Paul Eggert  <eggert@twinsun.com>
9289         and Bruno Haible  <haible@clisp.cons.org>
9290
9291         * quotearg.c (mbrtowc):
9292         Assign to *pwc, and return 1 only if result is nonzero.
9293         (iswprint): Use ISPRINT when substituting our own mbrtowc.
9294
9295 2000-07-03  Jim Meyering  <meyering@lucent.com>
9296
9297         * readutmp.h: [HAVE_UTMPX_H]: Include <utmp.h> if HAVE_UTMP_H.
9298         This is necessary to get a definition of e.g., UTMP_FILE on HP-UX 10.20.
9299         From Bob Proulx.
9300
9301 2000-07-02  Jim Meyering  <meyering@lucent.com>
9302
9303         * quotearg.c (mbstate_t): Don't define here.
9304
9305 2000-07-02  Jim Meyering  <meyering@lucent.com>
9306
9307         * nanosleep.c (SIGCONT): Define if not already defined.
9308
9309 2000-06-17  Bruno Haible  <haible@clisp.cons.org>
9310
9311         * mountlist.c: Use MOUNTED_FS_STAT_DEV instead of MOUNTED_NEXT_DEV,
9312         per change in ../m4/ls-mntd-fs.m4.
9313         (read_filesystem_list): Ignore symbolic links.
9314
9315 2000-06-29  Jim Meyering  <meyering@lucent.com>
9316
9317         * same.c: Include <string.h> or <strings.h>, as appropriate,
9318         for declaration of strcmp.
9319
9320         * long-options.c: Include <stdlib.h>, for declaration of exit.
9321
9322         * mountlist.c (fsp_to_string) [HAVE_F_FSTYPENAME_IN_STATFS]:
9323         Avoid warning by casting result to `char *' to remove `const'.
9324
9325 2000-06-17  Bruno Haible  <haible@clisp.cons.org>
9326
9327         * Makefile.am (libfetish_a_SOURCES): Remove readutmp.c.
9328
9329 2000-06-26  Paul Eggert  <eggert@twinsun.com>
9330
9331         savedir now sets errno on failure and invokes xmalloc to get memory.
9332         Fix a couple of other minor bugs while we're at it.
9333
9334         * savedir.c (<unistd.h>): Do not include; there's no need.
9335         (NAMLEN): Remove macro.
9336         (malloc, realloc): Remove decls.
9337         (stpcpy): Likewise.
9338         ("xalloc.h"): Include.
9339         (NAME_SIZE_DEFAULT): New macro.
9340         (savedir): Use xmalloc / xrealloc to allocate memory.
9341         Use NAME_SIZE_DEFAULT if name_size is negative or overflows to zero.
9342         Skip "" directory entries.
9343         Use strlen to calculate directory entry length, since the old method
9344         is rarely used these days and isn't worth supporting.
9345         Don't use a pointer after freeing it.
9346         Check for integer overflow when calculating allocation size.
9347         Use memcpy to copy entries, instead of stpcpy.
9348         Set errno properly when returning NULL.
9349         Check for readdir error.
9350
9351 2000-06-26  Jim Meyering  <meyering@lucent.com>
9352
9353         * posixtm.c [HAVE_STDLIB_H]: Include stdlib.h, for decl of abort.
9354
9355 2000-06-17  Bruno Haible  <haible@clisp.cons.org>
9356
9357         * getusershell.c (xmalloc, xrealloc): Remove functions.
9358         Include xalloc.h.
9359         Don't include <stdlib.h>.  Don't declare malloc, realloc.
9360
9361 2000-06-23  Bruno Haible  <haible@clisp.cons.org>
9362
9363         * unicodeio.c (print_unicode_char): Work around ansi2knr deficiency.
9364
9365 2000-06-24  Jim Meyering  <meyering@lucent.com>
9366
9367         * error.c [!HAVE_DECL_STRERROR_R]: Declare strerror_r.
9368
9369 2000-06-21  Jim Meyering  <meyering@lucent.com>
9370
9371         * getpass.c: New file, from Bruno Haible.  Required for BeOS.
9372
9373 2000-06-19  Paul Eggert  <eggert@twinsun.com>
9374
9375         * quotearg.c: Include <wctype.h> after <wchar.h>, for Solaris 2.5.
9376         (mbrtowc, mbstate_t): Define substitutes if
9377         HAVE_MBRTOWC && HAVE_WCHAR_H && !HAVE_MBSTATE_T_OBJECT.
9378         (iswprint): Define to 1 if !defined iswprint && !HAVE_ISWPRINT,
9379         not if ! (HAVE_MBRTOWC && HAVE_WCHAR_H).
9380
9381 2000-06-17  Bruno Haible  <haible@clisp.cons.org>
9382
9383         * xgetcwd.c (xgetcwd): If the required pathname length is smaller
9384         than 1024, return a memory chunk of least possible size, instead
9385         of size PATH_MAX + 2. In the loop, increment the size proportionally.
9386         Use free/xmalloc instead of xrealloc to avoid copying for very long
9387         paths.
9388
9389 2000-06-17  Bruno Haible  <haible@clisp.cons.org>
9390
9391         * canon-host.c (canon_host): Use malloc and memcpy to copy an
9392         address, not strdup.  Include <stdlib.h> and don't declare free().
9393
9394 2000-06-17  Bruno Haible  <haible@clisp.cons.org>
9395
9396         * path-concat.c (path_concat): Don't access dir[-1] if dir is
9397         the empty string.
9398
9399 2000-06-21  Jim Meyering  <meyering@lucent.com>
9400
9401         * Makefile.am (libfetish_a_SOURCES): Add getstr.c.
9402         (noinst_HEADERS): Add getstr.h.
9403
9404         * getline.c (getstr): Move into a separate file.
9405         * getstr.c (getstr): New file, extracted from getline.c, with
9406         the following changes: new parameter, delim2; both delim[12]
9407         parameters have type `int', not `char'.  The latter would lose
9408         with 8-bit delimiters.
9409         * getstr.h: New file.
9410
9411 2000-06-19  Jim Meyering  <meyering@lucent.com>
9412
9413         * getloadavg.c [HAVE_NLIST_H] (NLIST_STRUCT): Define.
9414
9415 2000-06-18  Jim Meyering  <meyering@lucent.com>
9416
9417         * mkdir.c: Remove file, due mainly to copyright incompatibility.
9418         Besides, these days every porting target provides a mkdir function.
9419
9420         * strnlen.c: Include memory.h, string.h, and/or strings.h as needed.
9421         (this snippet comes from src/system.h).
9422
9423 2000-06-15  Paul Eggert  <eggert@twinsun.com>
9424
9425         * human.c (adjust_value): New function.
9426         (human_readable_inexact): Apply rounding style even when
9427         printing approximate values.
9428
9429 2000-06-14  Paul Eggert  <eggert@twinsun.com>
9430
9431         * human.c (human_readable_inexact): Allow an input block
9432         size that is not a multiple of the output block size, and vice versa.
9433         Reported by Piergiorgio Sartor.
9434
9435 2000-06-14  Paul Eggert  <eggert@twinsun.com>
9436
9437         * getdate.y (get_date): Apply relative times after time
9438         zone indicator, not before.  Reported by Todd A. Jacobs.
9439
9440 2000-06-13  Jim Meyering  <meyering@lucent.com>
9441
9442         * Makefile.am (all-local): Depend on lstat.c and stat.c.
9443
9444         * xstat.in [!HAVE_DECL_FREE]: Declare free in lstat.c.
9445
9446 2000-06-12  Paul Eggert  <eggert@twinsun.com>
9447
9448         * xstat.in: Include <stdlib.h> in lstat, to declare "free".
9449
9450 2000-06-04  Paul Eggert  <eggert@twinsun.com>
9451
9452         * strnlen.c: Include <config.h> if HAVE_CONFIG_H.
9453
9454 2000-06-04  Jim Meyering  <meyering@lucent.com>
9455
9456         * getugroups.c (getugroups): Cast -1 to gid_t, for systems like
9457         SunOS 4.1.4 for which gid_t is an unsigned type.
9458
9459 2000-06-03  Jim Meyering  <meyering@lucent.com>
9460
9461         * strnlen.c [!HAVE_DECL_MEMCHR]: Declare memchr.
9462
9463 2000-05-26  Bruno Haible  <haible@clisp.cons.org>
9464
9465         * Makefile.am (install-exec-local): On systems with glibc-2.1 or
9466         newer, don't install charset.alias.
9467         * config.charset: Change the Linux/glibc rules so they become empty
9468         on glibc-2.1 or newer.
9469
9470 2000-06-02  Jim Meyering  <meyering@lucent.com>
9471
9472         * mountlist.c: Back out last change.  Instead, do this...
9473         * mountlist.c (read_filesystem_list) [MOUNTED_VMOUNT]: Set the me_dummy
9474         member using the same `ignore'-testing code.
9475         * mountlist.h (ME_DUMMY): Add `autofs' to the list of ignored
9476         fs_type strings.
9477         From Mark D. Roth.
9478
9479 2000-05-29  Jim Meyering  <meyering@lucent.com>
9480
9481         * mountlist.c (read_filesystem_list) [MOUNTED_VMOUNT]: Ignore mounts
9482         with the `ignore' attribute.  Based on a patch from Mark D. Roth.
9483
9484 2000-05-22  Jim Meyering  <meyering@lucent.com>
9485
9486         * makepath.c: Remove old, now-unnecessary `#ifdef __MSDOS__' block.
9487
9488 2000-05-18  Jim Meyering  <meyering@lucent.com>
9489
9490         * hash.c (hash_rehash): Fix a nasty bug: copy the free entry list
9491         back, too, since it may have been modified by allocate_entry.
9492         (hash_delete): Rewrite to use neither the assignment operator
9493         nor the comma operator in an if-expression.
9494
9495 2000-05-15  Paul Eggert  <eggert@twinsun.com>
9496
9497         * closeout.c:
9498         <sys/stat.h>, <sys/types.h>, <unistd.h>, (STDOUT_FILENO):
9499         Remove; no longer needed.
9500         "quotearg.h": Add include.
9501         (file_name): Do not bother to explicitly initialize to NULL; it's less
9502         efficient on some hosts.
9503         (close_stdout_status): Remove test as to whether stdout was already
9504         closed; it breaks for the case "echo x | sort >&-".
9505         Quote file name colons.
9506         Do not assume that _("write error") lacks format strings.
9507
9508 2000-05-15  Jim Meyering  <meyering@lucent.com>
9509
9510         * version-etc.c (version_etc_copyright): Update the copyright string
9511         used in all --version output.
9512
9513 2000-05-14  Jim Meyering  <meyering@lucent.com>
9514
9515         * closeout.c (close_stdout_set_file_name): New function.
9516         (close_stdout_status): Use new file-scoped global.
9517         Return right away if fstat says the stdout file descriptor is invalid.
9518         * closeout.h (close_stdout_set_file_name): Declare.
9519
9520 2000-05-10  Jim Meyering  <meyering@lucent.com>
9521
9522         * closeout.c [default_exit_status]: New file-scoped variable.
9523         (close_stdout_set_status): New function.
9524         * closeout.h (close_stdout_set_status): Declare.
9525
9526 2000-05-08  Jim Meyering  <meyering@lucent.com>
9527
9528         * long-options.c: Don't include closeout.h.
9529         (parse_long_options): Don't call close_stdout for --version.
9530
9531 2000-05-06  Jim Meyering  <meyering@lucent.com>
9532
9533         * strnlen.c: Undefine __strnlen and strnlen.
9534         [!weak_alias]: Define __strnlen to strnlen.
9535
9536         * atexit.c: New file, from libiberty.
9537
9538 2000-05-06  Jim Meyering  <meyering@lucent.com>
9539
9540         * closeout.c (close_stdout_status): Also check for errors on the
9541         stderr stream.
9542
9543 2000-05-05  Bruno Haible  <haible@clisp.cons.org>
9544
9545         * localcharset.c (get_charset_aliases): Use malloc, realloc and memcpy
9546         instead of xmalloc, xrealloc, path_concat.
9547         (locale_charset): Treat empty environment variables as absent.
9548         (DIRECTORY_SEPARATOR, ISSLASH): New macros.
9549
9550 2000-05-04  Jim Meyering  <meyering@lucent.com>
9551
9552         * getopt.c: Update from glibc.
9553         * obstack.c: Likewise.
9554         * obstack.h: Likewise.
9555         * regex.c: Likewise.  NB: K&R compiler support is dropped for this file
9556
9557         * regex.h: Likewise.
9558         * strndup.c: Likewise.
9559         * strnlen.c: New file, from glibc.
9560
9561 2000-05-01  Jim Meyering  <meyering@lucent.com>
9562
9563         * full-write.c (full_write): Remove `FIXME' part of comment.
9564
9565 2000-04-29  Jim Meyering  <meyering@lucent.com>
9566
9567         * path-concat.c: Declare strdup only if it's not defined.
9568         * canon-host.c: Likewise.
9569
9570 2000-04-28  Jim Meyering  <meyering@lucent.com>
9571
9572         * rpmatch.c [HAVE_LIMITS_H]: Include limits.h before regex.h to avoid
9573         redefinition warning on some systems (HPUX).  Otherwise, regex.h is
9574         included first, then limits.h is included by locale.h by libintl.h.
9575         From John David Anglin.
9576
9577 2000-04-25  Jim Meyering  <meyering@lucent.com>
9578
9579         * makepath.c (S_IRWXUGO): Define.
9580         (make_path): Always perform explicit chmod if MODE specifies any
9581         of the `special' permission bits.  Prompted by a bug report against
9582         install from Mate Wierdl and Joost van Baal.
9583
9584 2000-04-18  Jim Meyering  <meyering@lucent.com>
9585
9586         * README: New file.
9587
9588         * getpagesize.h [!getpagesize && HAVE_OS_H && B_PAGE_SIZE]: Define
9589         getpagesize.  For BeOS.  Based on a patch from Bruno Haible.
9590
9591 2000-04-17  Jim Meyering  <meyering@lucent.com>
9592
9593         * strftime.c (my_strftime) [strftime]: Declare strftime here, since
9594         the definition of it to rpl_strftime also defined-away the system's
9595         declaration.
9596
9597 2000-04-15  Jim Meyering  <meyering@lucent.com>
9598
9599         Use `C' to denote so-called `contiguous' files, the same way
9600         that tar does.
9601         * filemode.c (S_ISCTG) [!S_ISCTG && S_IFCTG]: Define.
9602         (ftypelet): Use S_ISCTG.
9603         From Michael Deutschmann.
9604
9605 2000-04-14  Jim Meyering  <meyering@lucent.com>
9606
9607         * strftime.c (my_strftime) [#ifdef strftime]: Declare strftime.
9608
9609 2000-04-08  Jim Meyering  <meyering@lucent.com>
9610
9611         * Makefile.am (charset.alias): Use t-$@, not $@-t so the DOS 8.3
9612         names don't conflict.  Reported by Eli Zaretskii.
9613
9614 2000-03-28  Bruno Haible  <haible@clisp.cons.org>
9615
9616         * unicodeio.c (print_unicode_char): Avoid triggering Solaris iconv
9617         bug.  Deal with the different error behavior of Irix iconv.
9618
9619 2000-04-07  Jim Meyering  <meyering@lucent.com>
9620
9621         * putenv.c: Move inclusion of errno.h so it follows that of sys/types.h,
9622         to work around system header problems on AIX 3.2.5.  From Bruno Haible.
9623
9624 2000-04-05  Jim Meyering  <meyering@lucent.com>
9625
9626         Portability tweaks required for ultrix4.3.
9627         * readutmp.h [HAVE_UTMPX_H && !HAVE_DECL_GETUTENT]: Declare getutent.
9628         * readutmp.c: Include sys/types.h before sys/stat.h.
9629         * canon-host.c: Declare strdup.
9630         * path-concat.c: Likewise.
9631         From John David Anglin.
9632
9633 2000-04-04  Jim Meyering  <meyering@lucent.com>
9634
9635         Be more DOS 8.3-friendly.
9636         * ref-add.sin: Renamed from ref-add.sed.in.
9637         * ref-del.sin: Renamed from ref-del.sed.in.
9638         * Makefile.am: Reflect renaming.
9639         Reported by Eli Zaretskii.
9640
9641         Use a temporary file name that won't clash with `charset.alias'
9642         in the DOS 8.3 name space.
9643         * Makefile.am (charset_tmp): Define.
9644         (install-exec-local): Use $(charset_tmp) instead of $(charset_alias)-t.
9645         (uninstall-local): Likewise.
9646         Reported by Eli Zaretskii.
9647
9648 2000-03-29  Paul Eggert  <eggert@twinsun.com>
9649
9650         * time/strftime.c (my_strftime): Make sure we call the system
9651         strftime, not ourselves, when invoking the underlying strftime.
9652
9653 2000-03-24  Jim Meyering  <meyering@lucent.com>
9654
9655         * Makefile.am (EXTRA_DIST): Add ref-add.sed.in and ref-del.sed.in.
9656         (charset_alias): Define.
9657         (install-exec-local): Factor out common code.
9658         (uninstall-local): Split lines longer than 80.
9659         (ref-add.sed, ref-del.sed): Remove rules... (do the following instead)
9660         (SUFFIXES): Define.
9661         (.sed.in.sed): New rule.  Don't redirect directly to $@.
9662         (CLEANFILES): Add ref-add.sed and ref-del.sed.
9663
9664 2000-03-19  Bruno Haible  <haible@clisp.cons.org>
9665
9666         * config.charset: Output a line containing "Packages using this file".
9667         * ref-add.sed.in, ref-del.sed.in: New files.
9668         * Makefile.am (install-exec-local, uninstall-local, ref-add.sed,
9669         ref-del.sed): New rules.
9670
9671 2000-03-17  Jim Meyering  <meyering@lucent.com>
9672
9673         * unicodeio.c (<string.h>): Include only #if HAVE_STRING_H.
9674         Otherwise, include <strings.h>
9675
9676 2000-03-17  Bruno Haible  <haible@clisp.cons.org>
9677
9678         * unicodeio.c (utf8_wctomb): New function.
9679         (print_unicode_char): Pass the Unicode character to iconv in UTF-8
9680         format instead of in UCS-4 with platform dependent endianness.
9681
9682 2000-03-07  Paul Eggert  <eggert@twinsun.com>
9683
9684         * savedir.c (savedir): Work even if directory size is
9685         negative; this can happen with some screwy NFS configurations.
9686
9687 2000-03-06  Jim Meyering  <meyering@lucent.com>
9688
9689         * localcharset.c (get_charset_aliases): Don't try to free file_name
9690         if it's NULL (because we ran out of memory).  From Bruno Haible.
9691
9692 2000-03-05  Jim Meyering  <meyering@lucent.com>
9693
9694         * localcharset.c ("path-concat.h"): Include.
9695         (get_charset_aliases): Use path_concat instead of ANSI string
9696         concatenation.
9697
9698         * unicodeio.h (PARAMS): Define.
9699         Use it to guard prototype.
9700
9701 2000-03-04  Jim Meyering  <meyering@lucent.com>
9702
9703         * Makefile.am (install-exec-local): Create $(libdir) before installing
9704         into it.
9705         (uninstall-local): Uncomment this rule so `make distcheck' works
9706         once again.
9707
9708         * unicodeio.c (<errno.h>): Include it.
9709         (errno): Declare if not defined.
9710
9711         * localcharset.c: Add Bruno's comment justifying use of volatile.
9712
9713         * config.charset: New version, incorporating remarks from a linux
9714         i18n mailing list.  From Bruno Haible.
9715
9716 2000-03-02  Jim Meyering  <meyering@lucent.com>
9717
9718         * Makefile.am (EXTRA_DIST): Add config.charset.
9719
9720 2000-03-01  Jim Meyering  <meyering@lucent.com>
9721
9722         * localcharset.c: Guard some #includes with `#if HAVE_...'.
9723         * unicodeio.c: Likewise.
9724
9725 2000-02-02  Bruno Haible  <haible@clisp.cons.org>
9726
9727         * config.charset: New file.
9728         * localcharset.c: New file.
9729         * unicodeio.h, unicodeio.c: New files.
9730         * Makefile.am (DEFS): Add -DLIBDIR=...
9731         (libfetish_a_SOURCES): Add localcharset.c and unicodeio.c.
9732         (noinst_HEADERS): Add unicodeio.h.
9733         (all-local, install-exec-local, charset.alias): New targets.
9734
9735 2000-02-28  Paul Eggert  <eggert@twinsun.com>
9736
9737         * quotearg.c (ALERT_CHAR): New macro.
9738         (quotearg_buffer_restyled): Use it.
9739
9740 2000-02-27  Jim Meyering  <meyering@lucent.com>
9741
9742         * strtoumax.c: Fix typo in decl of strtoul: s/long long/long/.
9743         Guard declaration of strtoull also with `&& HAVE_UNSIGNED_LONG_LONG'.
9744
9745         * backupfile.c: Guard inclusion of stdlib.h with `#if HAVE_STDLIB_H',
9746         not `#if STDC_HEADERS'.
9747         Declare malloc if needed.
9748
9749         * backupfile.c: Use `#if !HAVE_DECL...' instead of `#ifndef HAVE_DECL..'
9750         now that autoconf always defines the HAVE_DECL_ symbols.
9751         * human.c: Likewise.
9752         * same.c: Likewise.
9753         * strtoumax.c: Likewise.
9754
9755         * backupfile.c: Arrange for cpp to fail if the configure-time
9756         declaration check was not run.
9757         * hash.c: Likewise.
9758         * human.c: Likewise.
9759         * same.c: Likewise.
9760         * strtoumax.c: Likewise.
9761
9762         * userspec.c (parse_user_spec): If there is no `:' but there is a `.',
9763         then first look up the entire `.'-containing string as a login name.
9764
9765 2000-02-18  Paul Eggert  <eggert@twinsun.com>
9766
9767         * getdate.y: Handle two-digit years with leading zeros correctly.
9768         (textint): New typedef.
9769         (parser_control): Member year changed from int to textint.
9770         All uses changed.
9771         (YYSTYPE): Removed; replaced by %union with int and textint members.
9772         (tDAY, tDAY_UNIT, tDAYZONE, tHOUR_UNIT, tID, tLOCAL_ZONE, tMERIDIAN,
9773         tMINUTE_UNIT, tMONTH, tMONTH_UNIT tSEC_UNIT, tSNUMBER, tUNUMBER,
9774         tYEAR_UNIT, tZONE, o_merid): Now of type <intval>.
9775         (tSNUMBER, tUNUMBER): Now of type <textintval>.
9776         (date, number, to_year): Use width of number in digits, not its value,
9777         to determine whether it's a 2-digit year, or a 2-digit time.
9778         (yylex): Store number of digits of numeric tokens.
9779         Reported by John Kendall.
9780
9781         (parser_control): Changed from struct parser_control to typedef (for
9782         consistency).  All uses changed.
9783
9784         (tID): Removed; not used.
9785         (yylex): Return '?' for unknown identifiers, rather than (unused) tID.
9786
9787 2000-02-14  Paul Eggert  <eggert@twinsun.com>
9788
9789         * getpagesize.h (getpagesize): Port to VMS for Alpha;
9790         adapted from changes to grep getpagesize.h by Martin P.J. Zinser.
9791
9792 2000-02-12  Jim Meyering  <meyering@lucent.com>
9793
9794         * userspec.c (ISDIGIT): Define it.
9795         (isdigit): Remove definition.
9796         (is_number): Use ISDIGIT, not isdigit.
9797         <libintl.h>: Include.
9798         (_ and N_): Define.
9799         (parse_user_spec): Mark translatable strings.
9800
9801 2000-02-10  Jim Meyering  <meyering@lucent.com>
9802
9803         With these changes, nanosleep.[ch] are finally enough like the other
9804         lib/* replacement files to compile on a few more losing systems.
9805
9806         * nanosleep.h: Don't include config.h.
9807         Remove prototype from declaration of nanosleep.
9808         (PARAMS): Remove now-unneeded definition.
9809         * nanosleep.c: #undef nanosleep.
9810         (rpl_nanosleep): Rename from nanosleep.
9811
9812 2000-02-03  Jim Meyering  <meyering@lucent.com>
9813
9814         * readutmp.c (read_utmp): Guard with `#ifdef UTMP_NAME_FUNCTION',
9815         rather than with `#if HAVE_UTMPNAME'.
9816
9817 2000-02-01  Jim Meyering  <meyering@lucent.com>
9818
9819         * readutmp.h (UT_USER): Add parens.  From Andreas Schwab.
9820
9821 2000-01-31  Jim Meyering  <meyering@lucent.com>
9822
9823         * nanosleep.h (nanosleep): Guard declaration with
9824         `#if ! HAVE_DECL_NANOSLEEP'.
9825         Without this, OFS gets a redeclaration error for rpl_nanosleep, due to
9826         the declaration in that vendor's sys/timers.h.
9827         Reported by Christian Krackowizer.
9828
9829         * quotearg.c (ISASCII): Add #undef and move definition to follow
9830         inclusion of wctype.h to work around Solaris 2.6 namespace pollution.
9831         (ISPRINT): Likewise.
9832         Reported by Tom Tromey.
9833
9834 2000-01-30  Jim Meyering  <meyering@lucent.com>
9835
9836         * readutmp.c (extract_trimmed_name): Use UT_USER instead of hard-coding
9837         uses of ->ut_name.  The latter doesn't work with new Linux header files
9838         where only utmpx.ut_user is declared.
9839
9840         * readutmp.h (UT_USER): Define.
9841
9842 2000-01-23  Jim Meyering  <meyering@lucent.com>
9843
9844         * Makefile.am (libfetish_a_SOURCES): Remove explicit mention of
9845         obstack.c.
9846
9847 2000-01-22  Jim Meyering  <meyering@lucent.com>
9848
9849         * strtoumax.c: [! HAVE_DECL_STRTOUL]: Declare strtoul.
9850         [! HAVE_DECL_STRTOULL]: Declare strtoull.
9851         Required for some AIX systems.  Reported by Christian Krackowizer.
9852         [TESTING] (main): New function.
9853
9854         1997-10-17  Eli Zaretskii  <eliz@is.elta.co.il>
9855         * dirname.c (dir_name): Support for DOS-style file names with drive
9856         letters.
9857
9858         * quotearg.c [HAVE_WCTYPE_H]: Include <wctype.h> for decl of iswprint.
9859
9860         * strverscmp.c (ISDIGIT): Define.
9861         (strverscmp): Use ISDIGIT, not isdigit.
9862
9863 2000-01-17  Paul Eggert  <eggert@twinsun.com>
9864
9865         * nanosleep.c (nanosleep):
9866         Don't use SA_INTERRUPT to decide whether to call sigaction, as
9867         POSIX.1 doesn't require SA_INTERRUPT and some systems
9868         (e.g. Solaris 7) don't define it.  Use SA_NOCLDSTOP instead;
9869         it's been part of POSIX.1 since day 1 (in 1988).
9870
9871 2000-01-17  Jim Meyering  <meyering@lucent.com>
9872
9873         * interlock: Remove unused file.  Reported by François Pinard.
9874
9875 2000-01-16  Paul Eggert  <eggert@twinsun.com>
9876
9877         * quotearg.c (quotearg_buffer_restyled): Do not quote
9878         alert, backslash, formfeed, and vertical tab unnecessarily in
9879         shell quoting style.
9880
9881
9882 Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
9883 Free Software Foundation, Inc.
9884 Copying and distribution of this file, with or without modification,
9885 are permitted provided the copyright notice and this notice are preserved.