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