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