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