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