The 'expr' command now detects and reports integer overflow.
[platform/upstream/coreutils.git] / ChangeLog
1 2006-06-06  Paul Eggert  <eggert@cs.ucla.edu>
2
3         * Version 6.0-cvs.
4
5         * NEWS: The 'expr' command now detects and reports integer overflow.
6         (It would be better to use extended precision instead, but that
7         would be more work.)
8         * src/expr.c (integer_overflow): New function.
9         (eval4, eval3): Check for integer overflow.
10
11 2006-06-05  Paul Eggert  <eggert@cs.ucla.edu>
12
13         Fix problems when building with Solaris/SVR4/etc. make, which uses a
14         different and somewhat bogus implementation of VPATH.  In the
15         directory tests/misc, rename tests whose names might appear in the
16         Automake-generated rules.  For example, we can't use a test named
17         'test', since Automake generates a rule that contains the text
18         "if test -f ./$$tst; ...", and this might expand to something like
19         "if ../../../coreutils-6.0/tests/misc/test -f ./$$test; ...",
20         which executes the 'test' script rather than the 'test' command.
21         * tests/misc/false-status: Renamed from tests/misc/false.
22         * tests/misc/pwd-long: Renamed from tests/misc/pwd.
23         * tests/misc/sort-merge: Renamed from tests/misc/sort.
24         ($prog): Set to 'sort' rather than to $PROG.
25         * tests/misc/test-diag: Renamed from tests/misc/test.
26         * tests/misc/Makefile.am (PROG): Take the basename of $$tst,
27         in case Solaris make has prepended the directory.
28         (TESTS): Adjust to above renamings.
29         * tests/misc/expand: Don't assign to PROG; no longer needed
30         now that Makefile.am sets PROG to the basename.
31         * tests/misc/fold: Likewise.
32
33 2006-06-03  Jim Meyering  <jim@meyering.net>
34
35         Make `cp --link --no-dereference' work also on systems where the
36         link system call cannot create a hard link to a symbolic link.
37         * src/copy.c (copy_internal) [LINK_FOLLOWS_SYMLINKS]: Don't use
38         the link syscall on a symlink when it would do the wrong thing.
39         Based on the patch by Aurelien Jarno: <http://bugs.debian.org/329451>
40         * tests/cp/link-no-deref: New file/test for the above.
41         * tests/cp/Makefile.am (TESTS): Add link-no-deref.
42         * NEWS: Mention the change (doesn't affect Linux).
43
44 2006-06-01  Paul Eggert  <eggert@cs.ucla.edu>
45
46         Fix some porting problems in the test cases reported by
47         Ralf Wildenhues for HP-UX 11.23 in:
48         http://lists.gnu.org/archive/html/bug-coreutils/2006-05/msg00238.html
49         * tests/help-version: Don't assume that \< \> works in sed.
50         * tests/misc/close-stdout: Don't assume that >&- works.
51         Add a /dev/full test.
52         * tests/touch/no-create-missing: Don't assume that >&- works.
53
54 2006-05-30  Jim Meyering  <jim@meyering.net>
55
56         * src/ls.c (usage): Add `v' to the list of sorting-related options.
57         From Justin Pryzby.
58
59 2006-05-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
60
61         * tests/cp/fail-perm: source lang-default.
62         * tests/rm/inaccessible: Likewise.
63
64 2006-05-28  Jim Meyering  <jim@meyering.net>
65
66         * tests/rm/inaccessible: AIX 4.3.3 gives a different diagnostic.
67         Recognize it, too.  Reported by Ralf Wildenhues, in
68         http://lists.gnu.org/archive/html/bug-coreutils/2006-05/msg00192.html
69
70 2006-05-27  Jim Meyering  <jim@meyering.net>
71
72         * src/chgrp.c: Support new options: --preserve-root and
73         --no-preserve-root.  Somehow this program was skipped when those
74         options were added to chown, chmod, and rm.  Reported by
75         vaqflabuopac@spammotel.com in <http://bugs.debian.org/365656>.
76         * NEWS: Mention this.
77
78 2006-05-25  Paul Eggert  <eggert@cs.ucla.edu>
79
80         * NEWS: Remove mention of --seed.  We'll replace it with something
81         better, and don't want to indicate that it is supported.
82         * src/sort.c (usage): Likewise.
83
84 2006-05-20  Jim Meyering  <jim@meyering.net>
85
86         * src/chmod.c (main): Use FTS_PHYSICAL here, too.
87
88         * src/du.c (main): Rename local, s/symlink_deref_bit/symlink_deref_bits/
89         and arrange for -D to set fts' FTS_PHYSICAL bit as well as
90         FTS_COMFOLLOW.  Spotted by Justin Pryzby.
91
92         * gnupload: Merge changes from automake, retaining the ""--to...
93         kludge to placate overzealous `make distcheck' check.
94
95 2006-05-19  Jim Meyering  <jim@meyering.net>
96
97         * src/du.c (main): Don't let -D, -L, or -P turn off the internal
98         FTS_TIGHT_CYCLE_CHECK directory traversal option.
99         Reported by Justin Pryzby in http://bugs.debian.org/367691
100
101 2006-05-15  Jim Meyering  <jim@meyering.net>
102
103         * src/cp.c (usage): Correct description of -a: s/-dpR/-dpPR/.
104         From Tomas Pospisek.
105
106 2006-05-13  Jim Meyering  <jim@meyering.net>
107
108         * tests/mv/no-target-dir: Test two more cases.
109
110 2006-05-11  Jim Meyering  <jim@meyering.net>
111
112         mv -T DIR EMPTY_DIR no longer fails unconditionally
113         * src/copy.c (copy_internal): Don't manually prohibit a move where
114         the destination is an existing directory.  Sometimes doing that is
115         valid.  Let the rename system call enforce the rules.  That is
116         allowed only when the source is a directory and the destination
117         directory (to be replaced) is empty.  Reported by Eric Blake.
118         * tests/mv/no-target-dir: New file/test for this.
119         * tests/mv/Makefile.am (TESTS): Add no-target-dir.
120         * NEWS: Mention this.
121
122         * tests/mv/atomic: New file/test for yesterday's fix.
123         * tests/mv/Makefile.am (TESTS): Add atomic.
124
125         * tests/du/long-sloop: Avoid harmless `ambiguous redirect' diagnostic.
126
127 2006-05-10  Jim Meyering  <jim@meyering.net>
128
129         * src/copy.c (copy_internal): Don't explicitly unlink the destination
130         when moving a symlink into the place of an existing non-directory.
131         Reported by Joshua Hudson.
132         * NEWS: mention this.
133
134 2006-05-07  Jim Meyering  <jim@meyering.net>
135
136         * Makefile.maint (patch-check): Fail if patch generates any output,
137         even merely for changed offsets.
138
139         * src/c99-to-c89.diff: Adjust to reflect new offsets.
140
141         * NEWS: Mention changes affecting df, pwd, shred.
142
143 2006-05-06  Jim Meyering  <jim@meyering.net>
144
145         * tests/ls/stat-vs-dirent: New test, to detect the bogus file
146         system condition where dirent.d_ino != stat.st_ino.
147         * tests/ls/Makefile.am (TESTS): Add stat-vs-dirent.
148
149 2006-05-06  Eric Blake  <ebb9@byu.net>
150
151         * tests/ls/inode: Expand to test inode from readdir case.
152         * tests/ls/follow-slink: Expand to test broken links encountered
153         implicitly, favoring Solaris 9 and OpenBSD 3.4 behavior.
154
155 2006-05-06  Eric Blake  <ebb9@byu.net>
156
157         * tests/mv/leak-fd: Work even on case-insensitive file system.
158
159 2006-05-04  Jim Meyering  <jim@meyering.net>
160
161         * NEWS: Mention the 2006-03-19 pwd-related change that makes
162         lib/getcwd.c work around inconsistent file system dirent.d_ino data.
163
164 2006-05-03  Jim Meyering  <jim@meyering.net>
165
166         * src/ls.c (DEFINE_SORT_FUNCTIONS, LIST_SORTFUNCTION_VARIANTS):
167         Use better macro parameter names: s/basename/key_name/,
168         s/basefunc/key_cmp_func.  Fix typo in comment.
169
170 2006-04-29  Eric Blake  <ebb9@byu.net>
171
172         * src/ls.c (main): On systems with d_type, directories_first only
173         implies format_needs_type, not format_needs_stat.
174
175 2006-05-03  Jim Meyering  <jim@meyering.net>
176
177         * src/ls.c (xstrcoll_df_version, rev_xstrcoll_df_version): Add space
178         after comma in arg list, from Eric Blake.
179
180 2006-04-25  Paul Eggert  <eggert@cs.ucla.edu>
181
182         * tests/misc/date (relative-3): New test, derived from a bug
183         report by John Thomas McDole.
184
185 2006-04-23  Francesco Montorsi  <fr_m@hotmail.com>
186
187         New option for ls: --group-directories-first.
188         It makes ls list directories before files.
189         * NEWS [New features]: Mention it.
190         * src/ls.c (sort_type): Rearrange to use as an array index when
191         choosing sort function; added new sort_numtypes member for
192         compile-time check.
193         (time_type): Add new time_numtypes member for compile-time check.
194         (directories_first): New global variable.
195         (GROUP_DIRECTORIES_FIRST_OPTION): New enum.
196         (long_options): Add --directories-first.
197         (main): Support new option.
198         (is_directory): New function.
199         (extract_dirs_from_files): Use it.
200         (DIRFIRST_CHECK, DEFINE_SORT_FUNCTIONS)
201         (LIST_SORTFUNCTION_VARIANTS): New macros.
202         (sort_functions): New global variable.
203         (sort_files): Use it.
204         (usage): Document new option.
205
206 2006-04-18  Paul Eggert  <eggert@cs.ucla.edu>
207
208         * src/shred.c (fillrand): The assertion was way too weak, due to
209         what must be a typo.  Strengthen it to its intended value.
210         (dopass): Don't use alloca; it's not worth the aggravation here,
211         since it's used only to get a page-aligned buffer, and page
212         alignment doesn't buy us much here.  I'm suspicious that alloca
213         causes problems on some hosts, due to a recent bug report by Adam
214         Waltman: http://bugs.gentoo.org/130246.
215
216 2006-04-18  Jim Meyering  <jim@meyering.net>
217
218         * tests/misc/tty-eof: Add new programs, base64, sha224sum, sha256sum,
219         sha384sum, sha512sum.
220
221 2006-04-17  Paul Eggert  <eggert@cs.ucla.edu>
222
223         * src/chmod.c (describe_change): Adjust to filemode changes.
224         * src/ls.c (HAVE_ST_DM_MODE): Remove; moved to ../lib/filemode.c.
225         (print_long_format): Use (new) filemodestring rather than
226         (old) mode_string, so that we get more file types right, at least
227         in theory.  Adjust to filemode changes.
228         * src/stat.c (human_access): Likewise.
229
230 2006-04-18  Jim Meyering  <jim@meyering.net>
231
232         * src/ptx.c (main) [DEFAULT_IGNORE_FILE]: Remove code to use a default
233         ignore file.  This has never been enabled.  Reported by Eric Blake.
234
235 2006-04-12  Paul Eggert  <eggert@cs.ucla.edu>
236
237         * src/ln.c (linkfunc): Remove.  This method ran into a compiler/linker
238         bug in Interix.  Just call symlink or link directly.  All uses changed.
239         * src/setuidgid.c (main) [! HAVE_SETGROUPS]: Don't call setgroups.
240         * src/stat.c (USE_STATVFS): New macro.
241         Include <sys/statvfs.h> and use statvfs only if USE_STATVFS.
242         (NAMEMAX_FORMAT): define a bit more clearly, now that the
243         statvfs-using code is a bit more regular.
244         * src/system.h (sync) [!HAVE_SYNC]: New macro.
245
246 2006-04-11  Paul Eggert  <eggert@cs.ucla.edu>
247
248         * NEWS: csplit, nl, expr now conform to POSIX better, and are
249         more-compatible with traditional Unix, with respect to regular
250         expressions.
251         * src/csplit.c (extract_regexp): Set re_syntax_options to a
252         value that is compatible with what POSIX requires.
253         * src/nl.c (build_type_arg): Likewise.
254         * src/expr.c (docolon): Likewise.  Also, don't let anchors match
255         newline; this fixes an incompatibility with tradition and with POSIX.
256         Don't warn about leading ^.  POSIX says it is unspecified whether
257         ^ is a special character, which means that implementations can
258         either treat it as special or not, but either way a warning is not
259         allowed (unless the regexp is otherwise invalid).  Instead, anchor
260         the expression but treat ^ as an anchor; this is the traditional
261         behavior (e.g., Solaris 10).
262         (eval4, eval3, eval2): Treat non-numeric args, division by zero,
263         and the like as invalid expressions (exit status 2), not as
264         failure of 'expr' (exit status 3).  This is more consistent with
265         how Solaris behaves.
266         * tests/expr/basic (fail-a): Adjust exit status to match new expr
267         behavior, for status 2 versus 3.
268         (anchor): New test.
269         (bre1, bre2, bre3, bre4, bre5, bre6, bre7, bre8, bre9, bre10):
270         (bre11, bre12, bre13, bre14, bre15, bre16, bre17, bre18, bre19, bre20):
271         (bre21, bre22, bre23, bre24, bre25, bre26, bre27, bre28, bre29, bre30):
272         (bre31, bre32, bre33, bre34, bre35, bre36, bre37, bre38, bre39, bre40):
273         (bre41, bre42, bre43, bre44, bre45, bre46, bre47, bre48, bre49, bre50):
274         (bre51, bre52, bre53, bre54, bre55, bre56, bre57, bre58, bre59, bre60):
275         (bre61, bre62): New tests.
276         * tests/misc/csplit: Use \{...\} in test RE, to test that we're
277         conforming to POSIX.
278
279         Port to Solaris 8.
280         * tests/du/long-from-unreachable: Solaris 8 sh doesn't understand
281         "if !".  Do not assume that 'sed' can handle long, newline-free input.
282         * tests/du/long-sloop: Likewise.  Evaluate expr once, not $n times.
283
284 2006-04-10  Paul Eggert  <eggert@cs.ucla.edu>
285
286         Adjust to new regex.h API (with new fastmap type), and clean
287         up the regex storage allocation a bit.
288
289         * src/csplit.c (struct control): Put re_compiled member at the
290         end, since it's large.  Change regexpr member from char * to bool;
291         all uses changed.  Add new member fastmap.
292         (extract_regexp): regexp arg is now char const *, not char *.
293         Don't bother duplicating the regular expression; it's not needed.
294         Set fastmap from new fastmap member.  Don't bother allocating
295         a buffer, as the regexp code does a better job than we do.
296         * src/expr.c (docolon): Allocate and use a fastmap.
297         Don't bother allocating a buffer.
298         * src/nl.c (body_fastmap, header_fastmap, footer_fastmap):
299         New vars.
300         (build_type_arg): New fastmap arg.  All uses changed.
301         Don't bother allocating a buffer, but set a fastmap.
302         * src/ptx.c (context_regex_string, word_regex_string): Remove.
303         (context_regex, word_regex): New vars, replacing the above.
304         All uses changed.
305         (struct regex_data): New type.
306         (compile_regex): Renamed from alloc_and_compile_regex, since
307         we no longer allocate storage.  Arg is now a struct regex_data *,
308         not a const char *.  All uses changed.  Don't allocate the fastmap;
309         instead, take it from the caller.  Don't convert size_t to int,
310         to avoid arithmetic overflow problems.  Don't bother freeing
311         storage afterwards; it's not worth the aggravation.
312         * src/tac.c (compiled_separator_fastmap): New ver.
313         (main): Use it.  Don't bother allocating a buffer.
314
315 2006-03-30  Jim Meyering  <jim@meyering.net>
316
317         * src/dd.c (iwrite): Remove assignment without effect.
318         Reported by Felix Rauch Valenti.
319
320 2006-03-22  Eric Blake  <ebb9@byu.net>
321
322         * src/ptx.c (usage): Remove mention of --copyright/-C.
323         (main): Alias --copyright to --version plus a deprecation warning.
324         * NEWS: Mention this.
325
326 2006-03-27  Jim Meyering  <jim@meyering.net>
327
328         * src/Makefile.am (uptime_LDADD): Add $(POW_LIB), for uptime's
329         use of strtod.  Tiny patch from Nickolai Zeldovich.
330
331 2006-03-11  Eric Blake  <ebb9@byu.net>
332
333         * tests/misc/dirname: New file.
334         * tests/basename/Makefile.am: Delete.
335         * tests/basename/basic: Move to...
336         * tests/misc/basename: ... this new file.  Add some tests,
337         including fixed behavior for //.
338         * tests/misc/Makefile.am (TESTS): Sort.  Add basename, dirname.
339         * tests/Makefile.am (SUBDIRS): Remove basename.
340         * configure.ac (AC_CONFIG_FILES): Remove tests/basename.
341
342         Improvements to dirname/basename handling on platforms like
343         cygwin with distinct // and with drive letters.
344         * NEWS: Document new behavior.
345         * src/basename.c (main): Don't strip suffix from file system
346         roots.
347         * src/cp.c (target_directory_operand): Use new last_component.
348         (ASSIGN_BASENAME_STRDUPA): Likewise.  Reduce time spent
349         traversing the string.
350         * src/dircolors.c (guess_shell_syntax): Use new last_component.
351         * src/install.c (target_directory_operand, install_file_in_dir):
352         Likewise.
353         * src/ln.c (target_directory_operand, main): Likewise.
354         * src/ls.c (basename_is_dot_or_dotdot): Likewise.
355         * src/mv.c (target_directory_operand, movefile): Likewise.
356         * src/remove.c (rm_1): Likewise.
357         * src/shred.c (wipename): Likewise.
358         * src/split.c (next_file_name): Likewise.
359         * src/su.c (log_su, run_shell): Likewise.
360
361 2006-03-23  Paul Eggert  <eggert@cs.ucla.edu>
362
363         * NEWS: nohup diagnostics are now more precise, and nohup now
364         redirects stderr to nohup.out if stdout is closed and stderr is a tty.
365         * src/nohup.c (main): Implement this.
366         * tests/misc/nohup: Test the new behavior.
367
368 2006-03-12  Jim Meyering  <jim@meyering.net>
369
370         * src/copy.c (set_author): Rename function, from preserve_author.
371
372         * src/remove.c (AD_pop_and_chdir): Use new macro,
373         CYCLE_CHECK_REFLECT_CHDIR_UP, rather than open-coding it.
374
375         * src/system.h (SAME_INODE): Remove definition.
376         Include "same-inode.h", instead.
377
378 2006-03-11  Eric Blake  <ebb9@byu.net>
379
380         * src/pwd.c (robust_getcwd): Prepend only one slash, not two.
381
382 2006-03-10  Jim Meyering  <jim@meyering.net>
383
384         Fix a bug whereby a user with write access to a directory being removed
385         could cause the removal of that directory to fail with an erroneous
386         diagnostic about a directory cycle.  Reported by Vineet Chadha.
387
388         * NEWS: Mention this.
389         * src/remove.c (AD_pop_and_chdir): If the directory we're about to
390         leave (and try to rmdir) is the one whose dev_ino is being used to
391         detect a cycle, reset cycle_check_state.dev_ino to that of the parent.
392
393 2006-03-08  Paul Eggert  <eggert@cs.ucla.edu>
394
395         * NEWS: Document dd's new 'directory' and 'nolinks' flags.
396         * src/dd.c (set_fd_flags): Handle file-creation flags on file
397         descriptors, rather than ignoring them.
398         * tests/dd/misc: Add test cases for append, nofollow, directory,
399         and nolinks flags.  Simplify redirection to /dev/null in some cases.
400
401         * tests/dd/misc: iflags->iflag.  This fixes a typo that meant the
402         noatime test never tested anything.
403
404 2006-03-05  Paul Eggert  <eggert@cs.ucla.edu>
405
406         * src/dd.c (flags, usage): New flags directory, nolinks.
407         * src/system.h (O_NOLINKS): Define to 0 if not already defined.
408
409         * src/ls.c (usage): Mention that -f disables --color.
410         Problem reported by Niels Möller.
411
412 2006-03-03  Justin Pryzby  <pryzbyj@justinpryzby.com>
413
414         * man/*.x: Add references to syscalls from utilities of the same name.
415
416 2006-03-05  Jim Meyering  <jim@meyering.net>
417
418         * tests/help-version: Set SHELL, if not already set, in order to
419         avoid failure when `make check' is run through debuild;  dircolors
420         would fail due to lack of $SHELL.  Reported by Sven Joachim.
421
422         Make `base64 --wrap=N' work for N=0, and for N larger than SIZE_MAX.
423         * src/base64.c (wrap_write, do_encode, main): Change type of
424         parameters and locals, wrap_column, form size_t to uintmax_t.
425         (main): Adjust to use xstrtoumax, accordingly.
426
427 2006-03-03  Jim Meyering  <jim@meyering.net>
428
429         Don't fail when run from an environment with SHELL not a Bourne
430         shell, e.g. `env SHELL=/bin/csh make check' would fail this test.
431         * tests/dircolors/simple: Invoke each non-failing test with -b.
432         Reported by Michael Stone.
433
434 2006-02-27  Jim Meyering  <jim@meyering.net>
435
436         * tests/misc/base64: Derive --decode-using tests from the
437         encode-based ones.
438
439         * tests/misc/base64: Factor out a long constant string.
440         Split lines to stay within 80 columns.
441
442         * tests/misc/Makefile.am (TESTS): Add base64.
443         * tests/misc/base64: Test base64.  From Simon Josefsson.
444
445         * src/base64.c (do_decode): Use correct type for parameter,
446         ignore_garbage: s/size_t/bool/.
447
448         * src/base64.c: Don't include .h files already included by system.h:
449         <string.h>, <stdlib.h>, <stdbool.h>, <limits.h>, <errno.h>.
450         Include "system.h" before the other lib/*.h header files.
451         Include <sys/types.h> before "system.h".
452         (wrap_write): Remove declaration of unused local, initial_column.
453         (wrap_write): Correct declaration syntax: s/size_t * V/size_t *V/.
454
455         * README: Add base64 to the list.
456
457 2006-02-17  Simon Josefsson  <jas@extundo.com>
458
459         New program: base64.
460         * AUTHORS: Mention base64.
461         * NEWS: Likewise.
462         * man/Makefile.am: Build base64.1.
463         * man/base64.x: New file.
464         * src/Makefile.am (bin_PROGRAMS): Add base64.
465         * src/base64.c: New file.
466
467 2006-02-25  Eric Blake  <ebb9@byu.net>
468
469         In ls, avoid calling stat for --inode (-i), when possible.
470         * src/pwd.c (NOT_AN_INODE_NUMBER, D_INO): Move to ...
471         * src/system.h: ... here, for use in ...
472         * src/ls.c (main): ... here.  Prefer dirent.d_ino to stat when
473         possible.
474         (gobble_file): Add inode argument.
475         (print_dir): Pass inode if available.
476         (usage): Remove inaccuracy.
477
478 2006-02-23  Jim Meyering  <jim@meyering.net>
479
480         * TODO: Update/correct some obsolete entries.
481
482 2006-02-20  Paul Eggert  <eggert@cs.ucla.edu>
483
484         * doc/coreutils.texi (join invocation): Mention `sort -k 1b,1'.
485         * src/join.c (usage): Likewise.
486         Documentation problem reported by Philip Kensche.
487
488 2006-02-20  Eric Blake  <ebb9@byu.net>
489
490         * man/rm.x: Update documentation to match previous patch.
491
492 2006-02-18  Eric Blake  <ebb9@byu.net>
493
494         New option for rm: --interactive=once (-I).
495         * NEWS: Document it, along with change to rm --interactive.
496         * TODO: Remove entry for implementing rm -I
497         * src/rm.c (INTERACTIVE_OPTION): New enum value.
498         (interactive_type): New enum.
499         (long_opts): Let interactive take an optional argument.
500         (interactive_args, interactive_types): New option arguments.
501         (usage): Document -I, --interactive=WHEN.  Use program_name
502         instead of a basename.
503         (main): New -I option, new behavior to --interactive.
504         * tests/rm/interactive-once: New tests.
505         * tests/rm/interactive-always: Ditto.
506         * tests/rm/Makefile.am (TESTS): Run them.
507
508 2006-02-18  Jim Meyering  <jim@meyering.net>
509
510         * Makefile.maint (sc_two_space_separator_in_usage): Make the regular
511         expression match more of the target lines, e.g., those that start with
512         `-S,' (short option followed by a comma) or that include `=[...]'.
513         Patch by Nicolas François.
514         Fix the four offenders thus exposed:
515         * src/join.c (usage): Use two spaces (not one) to separate the
516         --first-only option string from its description, so help2man formats
517         the derived man page properly.
518         * src/pr.c (usage): Likewise.
519         * src/uniq.c (usage): Likewise.
520         * src/install.c (usage): Likewise.
521
522 2006-02-15  Jim Meyering  <jim@meyering.net>
523
524         * Makefile.maint (alpha beta major): For `make major', ensure that the
525         version string is of the form N.N[.N]*, where N is one or more digits.
526
527 2006-02-14  Jim Meyering  <jim@meyering.net>
528
529         * INSTALL: Update from gnulib.
530
531 2006-02-13  Jim Meyering  <jim@meyering.net>
532
533         * GNUmakefile (all): Emit diagnostics to stderr, not stdout.
534
535 2006-02-12  Jim Meyering  <jim@meyering.net>
536
537         * Makefile.maint (patch-check): New target.
538         (local-checks-available): Add to the list.
539
540 2006-02-11  Jim Meyering  <jim@meyering.net>
541
542         * src/c99-to-c89.diff: New file.
543         * src/Makefile.am (EXTRA_DIST): Add c99-to-c89.diff.
544
545         * .x-po-check: New file, with exclusions so that `make distcheck'
546         passes once again.
547         * Makefile.am (EXTRA_DIST): Add .x-po-check.
548
549         rm -r must remove an empty directory, even if it is inaccessible.
550         * src/remove.c (close_preserve_errno): New function.
551         (fd_to_subdirp): Don't print a diagnostic in this function.
552         Do it from the callers instead, unless rmdir succeeds.
553         (remove_cwd_entries, remove_dir): Adjust callers.
554         * tests/rm/empty-inacc: New test for the above.
555         * tests/rm/Makefile.am (TESTS): Add empty-inacc.
556         * NEWS: Mention this bug fix.
557         * tests/rm/rm2: Adjust two expected diagnostics, now that they're
558         a tiny bit less precise: cannot remove `a/1': ... instead of
559         cannot open directory `a/1': ...
560
561         * Makefile.maint (syntax-check-rules): Automatically derive this
562         list of sc_-prefixed rule names.
563
564 2006-02-10  Paul Eggert  <eggert@cs.ucla.edu>
565
566         * Makefile.maint (CVS_LIST): Don't assume cvsu is available.
567         (CVS_LIST_EXCEPT): New macro, to simplify exception-processing.
568         Most uses of CVS_LIST changed to use CVS_LIST_EXCEPT.
569         (syntax-check-rules): Bring back sc_changelong.  (Hmm, why did it
570         go away? was that an accident?)
571         (sc_cast_of_argument_to_free, sc_cast_of_x_alloc_return_value):
572         (sc_cast_of_alloca_return_value, sc_space_tab, sc_prohibit_atoi_atof):
573         (sc_error_exit_success, sc_file_system, sc_no_if_have_config_h):
574         (sc_system_h_headers, sc_sun_os_names, sc_trailing_blank):
575         (sc_two_space_separator_in_usage, sc_unmarked_diagnostics):
576         (sc_obsolete_symbols, sc_changelog, sc_prohibit_jm_in_m4):
577         (sc_useless_cpp_parens, makefile-check, m4-check, po-check):
578         (author_mark_check, makefile_path_separator_check):
579         Output line numbers, to simplify navigation of Emacs *compilation*
580         buffers.
581         (sc_prohibit_atoi_atof, sc_file_system):
582         Rework slightly so that Makefile.maint doesn't get reported as a
583         violation of its own syntax rules.
584         (sc_dd_max_sym_length): Use ifneq to do nothing, instead of doing
585         it at run-time (which didn't work with Bison).  Fix a makefile typo,
586         caught by Makefile.maint itself: spaces where a tab should be.
587         (po-check): Check lib/*.[ch] even if not in CVS; used by Bison,
588         which copies from ../gnulib/lib/*.[ch] to lib/*.[ch].
589         Ignore djgpp and man subdirectories, to avoid false matches with
590         Bison and coreutils, respectively.  Use sort -u to remove the
591         resulting duplicates.
592         * gnupload: Rework slightly to avoid bogus warning from
593         sc_two_space_separator_in_usage.
594
595 2006-02-10  Jim Meyering  <jim@meyering.net>
596
597         Use gzip's --rsyncable option only if it's available.
598         * Makefile.maint (gzip_rsyncable): New variable.
599         (GZIP_ENV): Use it.
600
601 2006-02-08  Jim Meyering  <jim@meyering.net>
602
603         * Makefile.maint (local-checks-available): Define in terms of
604         the expansion, $(syntax-check-rules), rather than the single,
605         top-level target `syntax-check', so that it's easier to exclude
606         individual rules (via $(local-checks-to-skip)).
607         (tgz-md5, tgz-sha1, ...): Remove now-unused definitions.
608
609 2006-02-07  Jim Meyering  <jim@meyering.net>
610
611         * src/system.h (!defined O_DIRECT): If O_DIRECTIO is defined (as it
612         is on Tru64), define O_DIRECT to that.  Patch From James Lemley.
613
614         * tests/help-version (expected_failure_status_vdir):
615         Redirect an expected disk-full diagnostic to /dev/null.
616
617 2006-02-06  Jim Meyering  <jim@meyering.net>
618
619         * src/unexpand.c (usage): Use two spaces (not one) to separate the
620         --first-only option string from its description, so help2man formats
621         the derived man page properly.
622         * src/rm.c (usage): Likewise for --no-preserve-root.
623         * src/chown.c (usage): Likewise.
624         * src/chgrp.c (usage): Likewise.
625
626         Add a rule to ensure that the above doesn't happen again.
627         * Makefile.maint (sc_two_space_separator_in_usage): New rule.
628         (syntax-check-rules): Add it.
629         * .x-sc_two_space_separator_in_usage: New empty file.
630         * Makefile.am (EXTRA_DIST): Add .x-sc_two_space_separator_in_usage.
631
632 2006-02-06  Jim Meyering  <jim@meyering.net>
633
634         * src/cp.c (usage): Use two spaces (not one) to separate each
635         option string from its description, so help2man formats the
636         derived man page properly.
637         * src/mv.c (usage): Likewise.
638         Patch from Nicolas François in http://bugs.debian.org/351601.
639
640 2006-02-04  Jim Meyering  <jim@meyering.net>
641
642         * src/copy.c (copy_internal): cp -RL would fail when encountering
643         the same directory more than once in the hierarchy beneath a single
644         command-line argument.  That is legitimate, e.g. when there are
645         two or more symbolic links, each pointing to some directory that
646         would not otherwise be copied.  Reported by Christophe LYON.
647         * tests/cp/cp-deref: New file.  Test for today's fix.
648         * tests/cp/Makefile.am (TESTS): Add cp-deref.
649         * NEWS: Document this.
650
651 2006-02-03  Jim Meyering  <jim@meyering.net>
652
653         * configure.ac: Require automake-1.9.6, not 1.8.3.
654
655 2006-02-01  Paul Eggert  <eggert@cs.ucla.edu>
656
657         * src/od.c (usage): Mention that -t a ignores high order bit.
658         Documentation problem reported by Ed Avis.
659
660 2006-02-01  Jim Meyering  <jim@meyering.net>
661
662         * src/pwd.c (find_dir_entry): Remove unused local, `ent_sb_valid'.
663
664 2006-01-30  Paul Eggert  <eggert@cs.ucla.edu>
665
666         * src/head.c (main): Use a better diagnostic when someone uses a
667         trailing numeric option in an invalid way.  Problem reported by
668         Karl Berry.
669         * src/tail.c (parse_options): Likewise.
670
671 2006-01-30  Jim Meyering  <jim@meyering.net>
672
673         * man/wc.x: Include `count' keyword in man page synopsis,
674         per suggestion from http://bugs.debian.org/181585.
675
676 2006-01-24  Paul Eggert  <eggert@cs.ucla.edu>
677
678         * src/df.c (show_dev): If the file system claims to have
679         more available than total blocks, report the number of used
680         blocks as being total - available (a negative number) rather
681         than as garbage.  Problem reported by Toralf Foerster.
682
683 2006-01-24  Jim Meyering  <jim@meyering.net>
684
685         * src/tail.c (tail_forever): Don't exit-nonzero when an attempt
686         to put a regular file in O_NONBLOCK mode fails with EPERM.
687         That happens on Linux (up to 2.6.15) when using tail -f on a file with
688         the append-only attribute.  Reported by Dean Gaudet.  For details,
689         see http://savannah.gnu.org/bugs/?func=detailitem&item_id=15473.
690         * NEWS: Mention this fix.
691         * tests/tail-2/append-only: New file.  Test for the above.
692         * tests/tail-2/Makefile.am (TESTS): Add append-only.
693         * tests/Makefile.am (check-root): Add tail-2/append-only
694
695 2006-01-21  Jim Meyering  <jim@meyering.net>
696
697         * NEWS: Mention fts-related improvements and bug fixes.
698
699 2006-01-19  Jim Meyering  <jim@meyering.net>
700
701         * tests/fmt/basic (pfx-1, pfx-2): New tests, to demonstrate the bug
702         reported as http://bugs.debian.org/147577.  Forwarded by Thomas Hood.
703
704 2006-01-18  Jim Meyering  <jim@meyering.net>
705
706         * tests/du/Makefile.am (TESTS): Add long-from-unreadable.
707
708 2006-01-17  Jim Meyering  <jim@meyering.net>
709
710         Now that fts no longer changes the current working directory, adjust
711         its clients accordingly -- note that du.c uses fts but doesn't need
712         any adjustment, since it doesn't operate on the actual files,
713         but rather just uses the stat buffers provided by fts.
714
715         * src/chown-core.c: Include "openat.h".
716         Don't include "lchown.h".
717         (restricted_chown): Accept a new parameter, CWD_FD, and use it in
718         calling openat, lchownat, chownat, rather than open, lchown, chown.
719         Update caller.
720         * src/chmod.c: Include "openat.h".
721         (process_file): Use chmodat (fts->fts_cwd_fd,... in place of chmod (...
722
723         * tests/du/long-from-unreadable: New test, to exercise one small
724         corner of fts.c.
725
726 2006-01-13  Jim Meyering  <jim@meyering.net>
727
728         * tests/Makefile.am (SUBDIRS): Add comments discouraging the
729         addition of new directories under tests/.
730
731         * tests/acl: Redirect stdin to /dev/null.  Otherwise, FreeBSD 5.0's
732         getfacl would hang.
733
734 2006-01-12  Jim Meyering  <jim@meyering.net>
735
736         * tests/du/long-sloop: Adjust not to hard-code the expected
737         diagnostic corresponding to ELOOP.  Solaris' diagnostic differs
738         from that of GNU libc.  Reported by Paul Eggert.
739
740         * tests/du/long-sloop: Create file at end of symlink chain.
741
742         * tests/misc/test: New file, with a test for one of the
743         bugs fixed by yesterday's test.c changes.
744         * tests/misc/Makefile.am (TESTS): Add test.
745
746 2006-01-11  Jim Meyering  <jim@meyering.net>
747
748         * tests/du/long-sloop: New file.  Test for today's fts.c bug fix.
749         That bug could make du -L, chgrp -L, or chown -L fail to diagnose
750         a very long sequence of symbolic links (not necessarily a loop).
751         * tests/du/Makefile.am (TESTS): Add long-sloop.
752
753 2006-01-11  Paul Eggert  <eggert@cs.ucla.edu>
754
755         * src/test.c (test_syntax_error): Append a newline.  All callers
756         changed, except for the ones that didn't already append a newline.
757         Bug reported by Eric Blake.
758
759 2006-01-11  Jim Meyering  <jim@meyering.net>
760
761         * src/system.h (X2NREALLOC): Now that verify_true is no longer
762         void, cast its result to void, to avoid gcc's warning that
763         ``left-hand operand of comma expression has no effect''.
764         (DECIMAL_DIGIT_ACCUMULATE, X2REALLOC): Likewise.
765
766 2006-01-10  Jim Meyering  <jim@meyering.net>
767
768         * tests/chmod/no-x: Add a test for today's fts.c fix.
769
770 2006-01-10  Jim Meyering  <jim@meyering.net>  (tiny change)
771
772         * src/ls.c (gobble_file): Use DTTOIF only if it's defined.
773         This is necessary for Dragonfly.  Patch by Joerg Sonnenberger.
774
775 2006-01-10  Paul Eggert  <eggert@cs.ucla.edu>
776
777         * src/system.h (X2NREALLOC, X2REALLOC, DECIMAL_DIGIT_ACCUMULATE):
778         Use verify_true instead of verify_expr, to sync with gnulib.
779
780 2006-01-08  Jim Meyering  <jim@meyering.net>
781
782         * src/date.c (usage): Adjust the formatting of the entries for
783         %::z and %:::z (separate with two spaces, not one) so that help2man
784         formats them properly.  Reported by Philip Rowlands.
785
786 2006-01-06  Paul Eggert  <eggert@cs.ucla.edu>
787
788         * configure.ac (gl_IGNORE_UNUSED_LIBRARIES): Add.
789
790 2006-01-06  Jim Meyering  <jim@meyering.net>
791
792         * Makefile.maint (copyright-check): Use date +%Y in place of
793         hard-coded 2005.
794
795         * src/remove.c (rm_1): Remove `static' attribute on local `status'.
796         First off, the attribute should have been `volatile' (not static)
797         to avoid longjmp-related risk of clobber.  Secondly, now there is
798         no longer any risk of a local variable being clobbered, so there's
799         no need for any attribute at all.
800
801 2006-01-05  Jim Meyering  <jim@meyering.net>
802
803         * src/remove.c: Give a few functions the inline attribute.
804         (AD_pop_and_chdir): Use gotos to avoid some duplication.
805         (AD_push): Rewrite an assertion so that the entire computation
806         goes away when assertions are turned off.
807
808         * src/tail.c (ENOSYS) [!defined ENOSYS]: Don't define here.
809         It's already defined in "system.h".
810         * Makefile.maint: Add a FIXME comment.
811
812 2006-01-04  Jim Meyering  <jim@meyering.net>
813
814         * ChangeLog: Remove entries from 2005-10-22 and earlier.
815         * ChangeLog-2005: New file, for entries up to version 5.92.
816
817 2006-01-03  Jim Meyering  <jim@meyering.net>
818
819         * tests/du/no-x: Also allow a slightly different diagnostic -- the
820         one you get when using openat-enabled fts.c and du (coming soon).
821         * tests/chmod/no-x: Likewise.
822         * tests/chgrp/no-x: Likewise.
823
824         * src/system.h (O_DIRECTORY) [!defined O_DIRECTORY]: Define.
825
826 2006-01-02  Paul Eggert  <eggert@cs.ucla.edu>
827
828         * src/chown-core.c (RC_do_ordinary_chown): New enum value.
829         (restricted_chown): Return it, if the file cannot be accessed due
830         to EPERM, or if no uid or gid are required, or if the file is
831         neither a directory nor a regular file.  Rewrite to avoid gotos.
832         (change_file_owner): Handle RC_do_ordinary_chown case.
833         Rewrite to avoid gotos.
834         * tests/chgrp/basic: Make sure we can change the group of
835         inaccessible files.
836
837         * src/date.c (usage): Explain %g, %G, and %V a bit better.
838
839 2006-01-02  Jim Meyering  <jim@meyering.net>
840
841         * src/copy.c (set_owner): Correct a comment.
842
843         * src/tail.c (parse_options): Change warning to say that --retry
844         is useful `mainly' (not `only') when following by name.
845         Reported here: http://bugs.debian.org/273781
846
847 2006-01-01  Paul Eggert  <eggert@cs.ucla.edu>
848
849         * NEWS: Document that mkfifo and mknod -m no longer set special bits.
850         * src/copy.c: Include lchmod.h.
851         (copy_internal): Use lchmod rather than chmod.
852         * src/cp.c: Include lchmod.h.
853         (re_protect, make_dir_parents_private): Use lchmod rather than chmod.
854         * src/mkdir.c: Include lchmod.h.
855         (usage): Clarify -m's operation.
856         (main): Use lchmod rather than chmod.  Don't use lchmod unless the
857         new mode contains bits outside the 777 range.
858         * src/mkfifo.c (usage): Clarify -m's operation.
859         (main): If -m is given, don't invoke chmod; use umask 0 instead.
860         Report an error if -m asks for bits outside the 777 range.
861         * src/mknod.c (usage, main): Likewise.
862
863         * src/mkdir.c, src/mkfifo.c, src/mknod.c: Undo 2005-12-19 changes.
864
865 2005-12-27  Jim Meyering  <jim@meyering.net>
866
867         * Makefile.maint (sc_obsolete_symbols): Prohibit use of O_NDELAY.
868         (sc_prohibit_assert_without_use): New rule.
869         (syntax-check-rules): Add it to the list.
870         * .x-sc_prohibit_assert_without_use: New empty file.
871         * Makefile.am (EXTRA_DIST): Add it.
872
873         * Makefile.maint (CVS_LIST): Define in terms of $(srcdir).
874
875         * cp.c, df.c, link.c, mknod.c, nice.c, sleep.c, unlink.c:
876         Don't include <assert.h>; it wasn't used.
877
878 2005-12-26  Paul Eggert  <eggert@cs.ucla.edu>
879
880         * src/chown-core.c (restricted_chown):
881         Don't try O_WRONLY unless O_RDONLY failed wth EACCES.
882         * src/remove.c (fd_to_subdirp): Open with O_DIRECTORY | O_NOCTTY
883         | O_NOFOLLOW too, for consistency with other dir-openers.
884         Use POSIX-preferred O_NONBLOCK rather than O_NDELAY.
885         (is_empty_dir): Likewise.
886         * src/shred.c (wipename): Likewise.  Don't bother trying to open
887         dir for writing, since POSIX prohibits it.
888
889 2005-12-22  Jim Meyering  <jim@meyering.net>
890
891         * tests/help-version: Redirect stderr to /dev/full, to suppress
892         write error diagnostic.
893
894 2005-12-19  Jim Meyering  <jim@meyering.net>
895
896         * src/mkdir.c, src/mknod.c, src/mkfifo.c (main)
897         Avoid a minor race condition when `-m MODE' is specified, by using
898         open, fchown, and close rather than just chown.  To do that reliably --
899         even with an overly restrictive umask -- ensure that each mkdir,
900         mknod and mkfifo call uses a mode including at least owner-read access.
901         * src/mknod.c (main): When `-m MODE' is specified, exit nonzero if
902         the subsequent chown (or equivalent open,fchown,close) fails.
903         * tests/misc/mknod: New tests.
904         * tests/misc/Makefile.am (TESTS): Add mknod.
905
906 2005-12-17  Jim Meyering  <jim@meyering.net>
907
908         * src/remove.c (is_empty_dir): Open with O_NDELAY, so we don't hang,
909         e.g., on a named pipe.
910         (OPEN_NO_FOLLOW_SYMLINK): Remove definition.  Use O_NOFOLLOW in
911         place of all uses, since it is guaranteed (system.h) to be defined.
912
913 2005-12-05  Andreas Gruenbacher  <agruen@suse.de>
914
915         Add POSIX ACL support
916         * src/ls.c: Switch back from HAVE_ACL to USE_ACL: The acl() syscall
917         is no requirement for ACL support; particularly, it does not exist
918         on systems that have POSIX ACLs.
919         * src/copy.h (cp_option_init) [umask_kill]: Remove member.
920         * src/cp.c (umask_kill): With default acls, the umask is not to be
921         applied.  Remove umask_kill, don't change the process umask, and let
922         the kernel apply the umask where appropriate.
923         * src/cp.c (make_dir_parents_private): Fix logic for POSIX ACLs.
924         * src/copy.c (get_dest_mode): Remove; it is obsolete after removing
925         umask_kill.
926         (copy_reg, copy_internal): Use copy_acl and set_acl
927         instead of fchown/chown. Fix the logic for POSIX ACLs.
928         (chown_succeded): Remove; we now always copy acls and
929         preserve S_ISUID, S_ISGID, and S_ISVTX when needed, no matter if we
930         did a chown before or not.
931         * src/mv.c, src/install.c (cp_option_init): Don't set umask_kill member.
932         * src/Makefile.am (dir_LDADD, ls_LDADD, vdir_LDADD, cp_LDADD,
933         mv_LDADD, ginstall_LDADD): On systems with an ACL library, arrange
934         to link with it via $(LIB_ACL), for the utilities that need it.
935
936 2005-12-16  Paul Eggert  <eggert@cs.ucla.edu>
937
938         * src/remove.c (OPENAT_CWD_RESTORE__REQUIRE): Remove.
939         (OPENAT_CWD_RESTORE__ALLOW_FAILURE): Likewise.
940         (fd_to_subdirp): Remove openat_cwd_restore_allow_failure arg; its
941         value is now signified by whether cwd_errno is null.
942         (fd_to_subdirp, remove_dir, rm_1); Change cwd failure indicator from
943         pointer-to-bool to pointer-to-errno-value.  All callers changed.
944         (rm_1): Don't bother setting a local cwd failure flag and then
945         ORing it into the caller's.  Just set the caller's.
946         (rm): Use cwd failure errno value to print a slightly-better
947         diagnostic.
948
949 2005-12-15  Jim Meyering  <jim@meyering.net>
950
951         * src/stat.c (print_it): Properly handle a backslash at the
952         end of a --printf format string.  Reported by Paul Eggert.
953         * tests/misc/stat-printf (end-bs): Add a test for the above.
954
955 2005-12-15  Paul Eggert  <eggert@cs.ucla.edu>
956
957         * tests/acl: Port to pre-POSIX shells like Solaris 8 /bin/sh.
958         Don't assume /etc/passwd contains user names; use 'id' instead.
959
960 2005-12-15  Jim Meyering  <jim@meyering.net>
961
962         stat: revert behavior of --format=FMT (-c)
963         stat: add new option: --printf=FMT
964         * NEWS: Mention this.
965         * src/stat.c (isodigit, octtobin, hextobin): Define.
966         (PRINTF_OPTION): Define.
967         (interpret_backslash_escapes, trailing_delim): New globals.
968         (usage): Document them.  Alphabetize on long option names.
969         (print_esc_char): New function.
970         (print_it): Rewrite, in order to handle backslash escapes.
971         (main): Handle new option.  Set globals for --format, too.
972
973         * tests/misc/stat-printf: Test --printf and --format.
974         * tests/misc/Makefile.am (TESTS): Add stat-printf.
975
976 2005-12-14  Paul Eggert  <eggert@cs.ucla.edu>
977
978         * NEWS: sort now reports incompatible options.
979         * src/sort.c (incompatible_options, check_ordering_compatibility):
980         New functions.
981         (main): Use them.  Don't bother with a usage message for
982         "sort -c a b", for consistency with other error diagnostics.
983         * tests/sort/Test.pm (incompat1, incompat2, incompat3, incompat4):
984         New tests.
985
986         * src/cat.c (main): Undo previous change.  close_stdout already
987         does the check, so the previous change wasn't necessary.
988
989 2005-12-13  Paul Eggert  <eggert@cs.ucla.edu>
990
991         * src/cat.c (main): Check for close (STDOUT_FILENO) failure.
992
993 2005-12-12  Paul Eggert  <eggert@cs.ucla.edu>
994
995         Install a more-conservative approach for sort -R.  It's the
996         same basic idea as the existing code, except it uses the full ISAAC
997         approach (called the "more kosher" approach in the existing comments).
998         This makes "sort -R" quite a bit slower (about a factor of 2 on my
999         little tests involving 10000 lines on a 2.4 GHz P4), but I think it's
1000         better to be conservative here at first, and review any performance
1001         improvements carefully.
1002         * .x-sc_require_config_h: Add src/rand-isaac.c.
1003         * src/rand-isaac.h: Remove.  All uses now simply include rand-isaac.c.
1004         * src/Makefile.am (noinst_HEADERS): Remove rand-isaac.h.
1005         (shred_SOURCES, sort_SOURCES): Remove.
1006         (EXTRA_DIST): Add rand-isaac.c.
1007         * src/rand-isaac.c: Revert to what used to be in shred.c, without
1008         changing it to allow for varying numbers of words in the state.
1009         Alter so that we include rand-isaac.c directly rather than
1010         compiling it and linking to it.  Don't include config.h or
1011         system.h; that's the includer's responsibility.
1012         Omit functions that are specific to shred.
1013         (ISAAC_LOG, ISAAC_WORDS, ISAAC_BYTES, struct isaac_state, ind):
1014         (isaac_step, struct irand_state):
1015         Resurrect these, with the same defns that used to be in shred.c.
1016         (ISAAC_SIZE, isaac_new, isaac_copy): Remove.
1017         (isaac_refill, isaac_seed_start, isaac_seed_data, irand_init, irand32):
1018         static again.
1019         (struct isaac_state, isaac_refill, isaac_mix, isaac_init):
1020         (isaac_seed_start, isaac_seed_data, isaac_seed_finish, isaac_seed):
1021         (irand_init, irand32, irand_mod):
1022         Number of words is constant again.
1023         (struct irand_state, irand_init, irand32, irand_mod): Move to shred.c.
1024         * src/shred.c: Include rand-isaac.c rather than rand-isaac.h.
1025         * src/sort.c: Likewise.
1026         * src/shred.c (fillrand, dopass, main): Undo previous change.
1027         (struct irand_state, irand_init, irand32, irand_mod): Moved back here,
1028         from rand-isaac.c.
1029         * src/sort.c: Don't include md5.h; it wasn't needed.
1030         (struct keyfield): Rename random_hash to random, for consistency
1031         with the other member names.  All uses changed.
1032         (usage): Tweak wording to mention STRING for --seed option.
1033         (short_options): Rorder for consistency with other programs.
1034         (rand_state): Now a struct, not a pointer to one.  All uses changed.
1035         (HASH_WORDS, HASH_SIZE): Remove.
1036         (get_hash): Remove comments around resbuf size, since we can assume C89.
1037         Use a "more-kosher" (but slower) approach of invoking isaac_refill.
1038         (keycompare): Adjust to the new get_hash.
1039         Add a FIXME.
1040         (badfieldspec): Omit recently-introduced comment; it isn't needed.
1041         (main): Don't set need_random simply because gkey has it set; that
1042         doesn't necessarily mean we'll need random numbers.
1043         Redo seeding to match new get_hash approach.
1044
1045 2005-12-10  Jim Meyering  <jim@meyering.net>
1046
1047         * src/Makefile.am (noinst_HEADERS): Add rand-isaac.h.
1048
1049         Avoid shred segfault on 64-bit systems.
1050         * src/rand-isaac.c (isaac_refill): Don't try to negate a
1051         local of type uint32_t.  Make the local an `int' instead.
1052
1053         * NEWS: Mention sort's new options.
1054
1055         * src/rand-isaac.c (isaac_mix): Declare to be static.
1056         Mark all other functions as `extern' so the tight-scope
1057         part of `make distcheck' passes once again.
1058         * src/rand-isaac.h (isaac_mix): Remove declaration.
1059
1060         * src/sort.c (get_hash): Change position of `*' in parameter
1061         type to conform with convention.
1062         (main): Split a long line so it fits in 80 columns.
1063         (keycompare): Remove stray SPACE before TAB that was
1064         causing `make distcheck' to fail.
1065
1066         * src/shred.c: Don't include gethrxtime.h.  No longer needed.
1067
1068         * tests/misc/sort-rand: New file: basic tests for the new options.
1069         * tests/misc/Makefile.am (TESTS): Add sort-rand.
1070
1071 2005-12-10  Frederik Eaton  <frederik@ofb.net>
1072
1073         * src/Makefile.am (sort_LDADD): Add $(LIB_GETHRXTIME).
1074         (shred_SOURCES, sort_SOURCES): New macros, so we compile rand-isaac.c.
1075         * src/rand-isaac.c: New file, containing ISAAC code that was in shred.c.
1076         Make state size runtime-configurable.
1077         (isaac_new, isaac_copy): New functions.
1078         * src/rand-isaac.h: New file.
1079         * src/shred.c: Include rand-isaac.h.  Move ISAAC code to rand-isaac.c.
1080         (fillrand, main): Adjust to the fact that the state size is now
1081         runtime-configurable.
1082         * src/sort.c (short_options, long_options, WORDS, keycompare, main):
1083         (usage): Add options --random-sort and --seed to implement a random
1084         shuffle.
1085         Include md5.h and rand-isaac.h.
1086         (get_hash): New function.
1087         (rand_state): New var.
1088         (HASH_WORDS, HASH_SIZE): New macros.
1089
1090 2005-12-09  Paul Eggert  <eggert@cs.ucla.edu>
1091
1092         * tests/dd/misc: Add test for dd iflags=noatime.
1093
1094 2005-12-09  Jim Meyering  <jim@meyering.net>
1095
1096         * src/sort.c (usage): Mention white space vs -b and -t options.
1097         From The Wanderer.
1098
1099 2005-12-09  Eric Blake  <ebb9@byu.net>
1100
1101         * src/test.c (main): Fix misleading comment.
1102
1103 2005-12-07  Paul Eggert  <eggert@cs.ucla.edu>
1104
1105         * NEWS: Mention dd's new noatime flag.
1106         * src/system.h (O_NOATIME): Define to 0 if not already defined.
1107         * src/dd.c (flags, usage): Add support for noatime flag.
1108
1109 2005-12-07  Jim Meyering  <jim@meyering.net>
1110
1111         Distribute the cvsu script, used only by `make syntax-check'.
1112         * Makefile.am (EXTRA_DIST): Add build-aux/cvsu.
1113         * Makefile.maint (CVS_LIST): Use build-aux/cvsu, now that we
1114         distribute a copy of this script.
1115         * .x-sc_unmarked_diagnostics: Add build-aux/cvsu.
1116
1117         * tests/mv/acl: exit-77 before the trap, not after, if we fail
1118         to create a temporary directory on another partition.
1119         From Andreas Gruenbacher.
1120
1121 2005-12-06  Tomas Pospisek  <tpo@sourcepole.ch>  (tiny change)
1122
1123         * man/basename.x: Cross-reference to dirname and readlink.
1124         * man/dirname.x: Cross-reference to basename and readlink.
1125
1126 2005-12-05  Andreas Gruenbacher
1127
1128         * src/copy.c [!HAVE_FCHOWN]: Define fchown(...) to -1.
1129         (set_owner, preserve_author): New functions, factored out of copy_reg.
1130         (copy_reg): Use them.
1131         (copy_internal): Use them here, too.
1132
1133 2005-12-04  Jim Meyering  <jim@meyering.net>
1134
1135         * src/sleep.c (usage): Say what happens with two or more arguments.
1136         Suggested by Justin Pryzby.
1137
1138         * src/uptime.c (print_uptime): Move decl of `upsecs' into scope
1139         where it's used.
1140
1141 2005-12-03  Jim Meyering  <jim@meyering.net>
1142
1143         * src/rm.c (long_opts): Change the name of each undocumented, for-
1144         testing-only option to start with `-', so that it cannot render
1145         ambiguous any prefix it happens to share with some other option name.
1146         Problem reported by Eric Blake.
1147         * src/head.c (long_options): Likewise.
1148         * src/tail.c (long_options): Likewise.
1149
1150         * tests/misc/head-elide-tail: Update uses of undocumented, for-
1151         testing-only --presume* options to start with `---'.
1152         * tests/rm/dangling-symlink: Likewise.
1153         * tests/rm/dir-no-w: Likewise.
1154         * tests/rm/isatty: Likewise.
1155
1156 2005-11-30  Jim Meyering  <jim@meyering.net>
1157
1158         * Makefile.maint: Add a comment about cvsu.
1159
1160 2005-11-25  Paul Eggert  <eggert@cs.ucla.edu>
1161
1162         * NEWS: df updates for "none", "proc", inaccessible file systems.
1163         * src/df.c (show_point): Ignore inaccessible file systems.
1164         (usage): -a includes dummy file systems, not size-0 file systems.
1165
1166         * src/od.c (unsigned_long_long_int): Renamed from ulonglong_t,
1167         to avoid collision with POSIX name space.  All uses changed.
1168
1169 2005-11-24  Jim Meyering  <jim@meyering.net>
1170
1171         * tests/Makefile.am (EXTRA_DIST): Add acl to the list.
1172         * tests/acl: Add `$0: ' prefix to diagnostics.
1173
1174         * .x-sc_require_config_h: Add lib/buffer-lcm.c to the list.
1175
1176 2005-11-23  Paul Eggert  <eggert@cs.ucla.edu>
1177
1178         * src/copy.c: Improve performance a bit by optimizing away
1179         unnecessary system calls and going to a block size of at least
1180         8192 (on normal hosts, anyway).  This improved performance 5% on my
1181         Debian stable host (2.4.27 kernel, x86, copying from root
1182         ext3 file system to itself).
1183         Include "buffer-lcm.h".
1184         (copy_reg): Omit last argument.  All callers changed.
1185         Use xmalloc to allocate rather than trusting alloca
1186         (which is unwise with large block sizes).
1187         Declare locals more locally, if possible.
1188         Use uintptr_t words instead of int words, for a bit more speed
1189         when looking for null blocks on 64-bit hosts.
1190         Optimize away reads of zero bytes on regular files.
1191         In the typical case, insist on 8 KiB buffers, at least.
1192         Avoid unnecessary extra call to fstat when checking for sparse files.
1193         Avoid now-unnecessary cast to off_t, and "0L".
1194         Avoid unnecessary test of *new_dst when checking for same owner
1195         and group.
1196
1197 2005-11-22  Paul Eggert  <eggert@cs.ucla.edu>
1198
1199         * src/remove.c (rm): Don't assume C99 for-loop syntax.
1200
1201 2005-11-22  Jim Meyering  <jim@meyering.net>
1202
1203         * src/remove.c (AD_push): Remove debugging cruft.
1204
1205         * tests/rm/unread2 (rm): Change expected diagnostic,
1206         `cannot open directory' to `cannot remove', to align with
1207         new version of rm.
1208         * tests/rm/rm2: Ensure that rm now continues removing entries
1209         even after certain types of failure.
1210
1211         * src/remove.c: Rewrite.  Now, this module is reentrant on systems
1212         that provide openat (Solaris), and on systems like Linux+procfs
1213         where our openat emulation code is reentrant.  This also fixes a
1214         few low-probability leaks and eliminates some code that could,
1215         in very unusual circumstances, cause rm() (via a callee) to exit.
1216         * NEWS: Mention this.
1217
1218         * configure.ac: Put copyright dates all on one line so the
1219         emacs function that updates them works properly.
1220
1221 2005-11-18  Paul Eggert  <eggert@cs.ucla.edu>
1222
1223         * configure.ac (AM_PROG_CC_C_O): Add.  Needed for CVS Automake.
1224         Problem reported by Eric Blake.
1225         (AC_PROG_CC_STDC): Use this instead of AC_PROG_CC, so that
1226         we get a standard-conforming compiler.  This relies on the new
1227         m4/c.m4 file.  Note that it's a bit tricky, since c.m4 doesn't
1228         define AC_PROG_CC_STDC; we are relying on Autoconf 2.59 internals.
1229         m4/c.m4 can go away with Autoconf 2.60 comes out.
1230
1231 2005-11-17  Jim Meyering  <jim@meyering.net>
1232
1233         * src/remove.c (AD_mark_helper): Make a `char *' parameter `const'.
1234         (AD_mark_current_as_unremovable): Likewise, but for a local.
1235         (rm_1): Likewise.
1236
1237         * tests/mv/acl: Let traps handle removing temporary directories.
1238
1239         Expect acl-related tests to fail, until the corresponding
1240         patches are committed.
1241         * tests/mv/Makefile.am (XFAIL_TESTS): Add acl.
1242         * tests/cp/Makefile.am (XFAIL_TESTS): Likewise.
1243
1244         ACL tests, from Andreas Gruenbacher.
1245         * tests/acl, tests/mv/acl, tests/cp/acl: New files.
1246         * tests/mv/Makefile.am (TESTS): Add acl.
1247         * tests/cp/Makefile.am (TESTS): Add acl.
1248
1249         * src/ls.c (basename_is_dot_or_dotdot): Correct wording in comment.
1250
1251 2005-11-16  Paul Eggert  <eggert@cs.ucla.edu>
1252
1253         * NEWS: Improve quality of ln's diagnostics.
1254         * src/ln.c (do_link, usage): Likewise.
1255         (do_link): Don't use alloca on a buffer of unbounded size.
1256
1257 2005-11-16  Jim Meyering  <jim@meyering.net>
1258
1259         * tests/cp/fail-perm: Accommodate HPUX.  It appears to fail
1260         with EACCES rather than EPERM.  Reported by Peter O'Gorman here:
1261         http://article.gmane.org/gmane.comp.gnu.core-utils.bugs/5766
1262         This also affects AIX 4.3.3, according to Ralf Wildenhues, in
1263         http://lists.gnu.org/archive/html/bug-coreutils/2006-05/msg00192.html
1264
1265 2005-11-14  Jim Meyering  <jim@meyering.net>
1266
1267         * NEWS (sort): Mention consequences of today's mkstemp-safer.c fix.
1268
1269 2005-11-13  Jim Meyering  <jim@meyering.net>
1270
1271         * announce-gen: Accept new option, --gpg-key-id=ID and
1272         emit a blurb telling how to use the .sig files.
1273         * Makefile.cfg (gpg_key_ID): Define.
1274         * Makefile.maint (announcement): Use new option and key.
1275
1276         Require that most .c files include <config.h>.
1277         * Makefile.maint (sc_require_config_h): New rule.
1278         (syntax-check-rules): Add it.
1279         * .x-sc_require_config_h: New file listing exceptions to the
1280         above rule.  Some are legit, others are simply grandfathered in.
1281         * Makefile.am (EXTRA_DIST): Add .x-sc_require_config_h here, too.
1282
1283 2005-11-12  Jim Meyering  <jim@meyering.net>
1284
1285         * src/checksum.h, src/md5.c, src/sha1sum.c: Remove now-unused files.
1286
1287 2005-11-11  Jim Meyering  <jim@meyering.net>
1288
1289         * NEWS: Mention `readlink -f' bug fix in 5.3.0 news.
1290         Mention new readlink options in 5.3.0's `New features' section.
1291         Spotted by Thomas Hood.
1292
1293 2005-11-08  Jim Meyering  <jim@meyering.net>
1294
1295         * NEWS: Merge in changes from b5_9x branch.
1296
1297 2005-11-08  Paul Eggert  <eggert@cs.ucla.edu>
1298
1299         * NEWS: ls now defaults to --time-style='locale', which in turn acts
1300         like --time-style='posix-long-iso' if the locale settings are messed up.
1301         * src/ls.c (decode_switches): Implement this.
1302
1303 2005-11-08  Jim Meyering  <jim@meyering.net>
1304
1305         * tests/du/2g: s/expensive/very expensive/ in a comment.
1306         From Paul Townsend.
1307
1308 2005-10-17  Eric Blake  <ebb9@byu.net>
1309
1310         * src/ls.c (usage): Fix descriptions of --sort, --time.
1311         Reported by Vitaly A. Ostanin.
1312
1313 2005-11-04  Paul Eggert  <eggert@cs.ucla.edu>
1314
1315         * src/ln.c: Include filenamecat.c.
1316         (FILE_BASENAME_CONCAT): Remove.
1317         (do_link): Remove last arg DEST_IS_DIR.  All callers changed.
1318         (main): Use file_name_concat, base_name, and strip_trailing_slashes
1319         instead of FILE_BASENAME_CONCAT.  This simplifies the code, and avoids
1320         the use of alloca.
1321
1322 2005-11-04  Jim Meyering  <jim@meyering.net>
1323
1324         * src/du.c (process_file): Don't overflow for files of size >= 2^31
1325         on systems with stat.st_blocks of a signed 32-bit type.
1326         This bug causes trouble on some AIX 5.1 systems.
1327         Report and trivial patch from Paul Townsend:
1328         <http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00033.html>
1329         * NEWS: Mention this.
1330
1331         * tests/du/2g: New (very-expensive) test for the above-fixed bug.
1332         * tests/du/Makefile.am (TESTS): Add it here.
1333         * tests/very-expensive: New file.
1334         * tests/Makefile.am (EXTRA_DIST): Add it here.
1335         * tests/cp/perm: Mark this test as `very-expensive', too.
1336
1337 2005-11-02  Paul Eggert  <eggert@cs.ucla.edu>
1338
1339         * NEWS: Mention that rm -d and maybe ln -d are scheduled for
1340         removal in 2006.
1341         * src/remove.h (struct rm_options): Remove unlink_dirs.  All uses
1342         removed.
1343         * src/rm.c (usage): Don't mention rm -d.
1344
1345 2005-11-02  Jim Meyering  <jim@meyering.net>
1346
1347         * tests/dd/skip-seek: Fix typo in comment: s/fileutils/coreutils.
1348         From Andreas Schwab.
1349
1350         * tests/dd/unblock-sync: Redirect stderr to /dev/null so the
1351         `M+N records in/out' lines don't pollute `make check' output.
1352
1353         * tests/dd/skip-seek (sk-seek4): New test, to exercise the bug
1354         fixed on 2005-10-31.  This test uses the new, IN_PIPE specifier.
1355         * tests/Coreutils.pm: Accept a new type of input specifier: IN_PIPE,
1356         to indicate that the input file should be piped into the command
1357         under test (via `cat FILE | $prog ...').
1358
1359         * src/remove.c (remove_entry): Emit a better diagnostic when rm
1360         (without -r) fails to remove a directory on a non-Linux system.
1361         This change affects only newer Solaris systems (with priv_*
1362         functions like priv_allocset).  Reported by Keith Thompson.
1363
1364         * tests/rm/dir-nonrecur: New file/test for the above fix.
1365         * tests/rm/Makefile.am (TESTS): Add dir-nonrecur.
1366
1367 2005-11-01  Paul Eggert  <eggert@cs.ucla.edu>
1368
1369         * NEWS: "tail -c 2 FILE" and "touch 0101000000" now operate as
1370         POSIX 1002.1-2001 requires.
1371         * src/tail.c (parse_obsolete_option): Implement this.
1372         Problem reported by Vincent Lefevre.
1373         * src/touch.c (main): Pass PDS_PRE_2000 to posixtime.
1374         * tests/tail/Test.pm (c-2, c-2-minus, c2, c2-minus): New tests.
1375         (test_vector): Add special cases for _POSIX2_VERSION, and
1376         regularize the old ones a bit.
1377         * tests/touch/obsolescent: Add y2000 test.
1378
1379 2005-10-31  Paul Eggert  <eggert@cs.ucla.edu>
1380
1381         * src/dd.c (skip): Fix off-by-one error reported by
1382         Theodoros V. Kalamatianos.
1383
1384 2005-10-30  Paul Eggert  <eggert@cs.ucla.edu>
1385
1386         * tests/mkdir/p-3: Require that the test be run as non-root.
1387         Problem and trivial fix reported by Theodoros V. Kalamatianos.
1388
1389 2005-10-28  Paul Eggert  <eggert@cs.ucla.edu>
1390
1391         * src/ln.c (FILE_BASENAME_CONCAT): Omit unnecessary slashes in the
1392         boundary between DEST and SOURCE in the result.
1393
1394 2005-10-26  Dmitry V. Levin  <ldv@altlinux.org>
1395
1396         * src/md5sum.c (main) [!O_BINARY]: Changed default read mode
1397         back to text, to sync with documentation and for backwards
1398         compatibility.
1399
1400 2005-10-25  Jim Meyering  <jim@meyering.net>
1401
1402         * tests/dircolors/simple (other-wr): Add an explicit test for
1403         the dircolors bug (NULL-dereference) fixed yesterday.
1404
1405 2005-10-24  Jim Meyering  <jim@meyering.net>
1406
1407         * src/tac.c (tac_file): When determining whether a file is seekable,
1408         also test whether it is a tty.  Using only the lseek-based test would
1409         give a false positive on Solaris.  Reported by Peter Fales.
1410
1411 2005-10-24  Dmitry V. Levin  <ldv@altlinux.org>
1412
1413         * tests/install/d-slashdot: New test, for "install -d" failure.
1414         * tests/install/Makefile.am (TESTS): Add d-slashdot.
1415         * tests/mkdir/p-slashdot: New test, for "mkdir -p" failure.
1416         * tests/mkdir/Makefile.am (TESTS): Add p-slashdot.
1417
1418 2005-10-24  Jim Meyering  <jim@meyering.net>
1419
1420         * src/dircolors.c (ls_codes): Add missing comma.
1421         Anonymous report and patch from
1422         http://savannah.gnu.org/bugs/?func=detailitem&item_id=14849
1423
1424         * src/dircolors.c: Add compile-time assertion that the slack_codes
1425         and ls_codes arrays have the same number of elements.  This would
1426         have prevented the above-fixed bug.
1427
1428         * src/expand.c (parse_tab_stops): Add a comment to make this function
1429         identical to the one in unexpand.c.
1430         * src/unexpand.c (parse_tab_stops): Adjust syntax to make this function
1431         identical to the one in expand.c.
1432
1433         * src/expand.c (next_file): Don't assume fopen cannot return stdin.
1434
1435 2005-10-23  Jim Meyering  <jim@meyering.net>
1436
1437         * src/md5sum.c (digest_check, main): Use ptr_align rather than
1438         a dangerous pointer-value-to-`unsigned' cast.
1439         * NEWS: mention the new sha* programs.
1440         * AUTHORS: Add new sha* programs.
1441
1442 2005-08-28  David Madore  <david.madore@ens.fr>
1443
1444         Add new programs: sha224sum, sha256sum, sha384sum, sha512sum.
1445         * README: Add their names to the list.
1446         * src/md5sum.c: Provide framework for computing sha-2 hashes.
1447         * src/Makefile.am (sha224sum, sha256sum, sha384sum, sha512sum):
1448         Rules for compiling sha-2 utilities
1449         (noinst_HEADERS): Remove checksum.h.
1450         * man/sha512sum.x, man/sha384sum.x, man/sha256sum.x, man/sha224sum.x:
1451         New files.
1452         * man/Makefile.am (dist_man_MANS): Add the corresponding .1 names.
1453         (sha224sum.1, sha256sum.1, sha384sum.1, sha512sum.1): New dependencies.
1454         * tests/misc/sha224sum, tests/misc/sha256sum: New files.
1455         * tests/misc/sha384sum, tests/misc/sha512sum: New files.
1456         * tests/misc/Makefile.am (TESTS): Add new sha224sum, sha256sum,
1457         sha384sum, sha512sum test scripts here rather that each in its
1458         own directory.
1459
1460 2005-08-28  David Madore  <david.madore@ens.fr>
1461
1462         * tests/sha1sum/basic-1 (million-a): Add the "million a's" test (one
1463         of the FIPS test vectors).
1464
1465 2005-10-23  Jim Meyering  <jim@meyering.net>
1466
1467         * configure.ac: Use 6.0-cvs as the version string.
1468         * NEWS: Adjust accordingly.