(linenum→info "unix/slp.c:2238")

coreutils/6.9/NEWS

    1: GNU coreutils NEWS                                    -*- outline -*-
    2: 
    3: * Noteworthy changes in release 6.9 (2007-03-22) [stable]
    4: 
    5: ** Bug fixes
    6: 
    7:   cp -x (--one-file-system) would fail to set mount point permissions
    8: 
    9:   The default block size and output format for df -P are now unaffected by
   10:   the DF_BLOCK_SIZE, BLOCK_SIZE, and BLOCKSIZE environment variables.  It
   11:   is still affected by POSIXLY_CORRECT, though.
   12: 
   13:   Using pr -m -s (i.e. merging files, with TAB as the output separator)
   14:   no longer inserts extraneous spaces between output columns.
   15: 
   16: 
   17: * Noteworthy changes in release 6.8 (2007-02-24) [not-unstable]
   18: 
   19: ** Bug fixes
   20: 
   21:   chgrp, chmod, and chown now honor the --preserve-root option.
   22:   Before, they would warn, yet continuing traversing and operating on /.
   23: 
   24:   chmod no longer fails in an environment (e.g., a chroot) with openat
   25:   support but with insufficient /proc support.
   26: 
   27:   "cp --parents F/G D" no longer creates a directory D/F when F is not
   28:   a directory (and F/G is therefore invalid).
   29: 
   30:   "cp --preserve=mode" would create directories that briefly had
   31:   too-generous permissions in some cases.  For example, when copying a
   32:   directory with permissions 777 the destination directory might
   33:   temporarily be setgid on some file systems, which would allow other
   34:   users to create subfiles with the same group as the directory.  Fix
   35:   similar problems with 'install' and 'mv'.
   36: 
   37:   cut no longer dumps core for usage like "cut -f2- f1 f2" with two or
   38:   more file arguments.  This was due to a double-free bug, introduced
   39:   in coreutils-5.3.0.
   40: 
   41:   dd bs= operands now silently override any later ibs= and obs=
   42:   operands, as POSIX and tradition require.
   43: 
   44:   "ls -FRL" always follows symbolic links on Linux.  Introduced in
   45:   coreutils-6.0.
   46: 
   47:   A cross-partition "mv /etc/passwd ~" (by non-root) now prints
   48:   a reasonable diagnostic.  Before, it would print this:
   49:   "mv: cannot remove `/etc/passwd': Not a directory".
   50: 
   51:   pwd and "readlink -e ." no longer fail unnecessarily when a parent
   52:   directory is unreadable.
   53: 
   54:   "rm -rf /etc/passwd" (run by non-root) now prints a diagnostic.
   55:   Before it would print nothing.
   56: 
   57:   "rm --interactive=never F" no longer prompts for an unwritable F
   58: 
   59: ** New features
   60: 
   61:   sort's new --compress-program=PROG option specifies a compression
   62:   program to use when writing and reading temporary files.
   63:   This can help save both time and disk space when sorting large inputs.
   64: 
   65:   sort accepts the new option -C, which acts like -c except no diagnostic
   66:   is printed.  Its --check option now accepts an optional argument, and
   67:   --check=quiet and --check=silent are now aliases for -C, while
   68:   --check=diagnose-first is an alias for -c or plain --check.
   69: 
   70: 
   71: * Noteworthy changes in release 6.7 (2006-12-08) [stable]
   72: 
   73: ** Bug fixes
   74: 
   75:   When cp -p copied a file with special mode bits set, the same bits
   76:   were set on the copy even when ownership could not be preserved.
   77:   This could result in files that were setuid to the wrong user.
   78:   To fix this, special mode bits are now set in the copy only if its
   79:   ownership is successfully preserved.  Similar problems were fixed
   80:   with mv when copying across file system boundaries.  This problem
   81:   affects all versions of coreutils through 6.6.
   82: 
   83:   cp --preserve=ownership would create output files that temporarily
   84:   had too-generous permissions in some cases.  For example, when
   85:   copying a file with group A and mode 644 into a group-B sticky
   86:   directory, the output file was briefly readable by group B.
   87:   Fix similar problems with cp options like -p that imply
   88:   --preserve=ownership, with install -d when combined with either -o
   89:   or -g, and with mv when copying across file system boundaries.
   90:   This bug affects coreutils 6.0 through 6.6.
   91: 
   92:   du --one-file-system (-x) would skip subdirectories of any directory
   93:   listed as second or subsequent command line argument.  This bug affects
   94:   coreutils-6.4, 6.5 and 6.6.
   95: 
   96: 
   97: * Noteworthy changes in release 6.6 (2006-11-22) [stable]
   98: 
   99: ** Bug fixes
  100: 
  101:   ls would segfault (dereference a NULL pointer) for a file with a
  102:   nameless group or owner.  This bug was introduced in coreutils-6.5.
  103: 
  104:   A bug in the latest official m4/gettext.m4 (from gettext-0.15)
  105:   made configure fail to detect gettext support, due to the unusual
  106:   way in which coreutils uses AM_GNU_GETTEXT.
  107: 
  108: ** Improved robustness
  109: 
  110:   Now, du (and the other fts clients: chmod, chgrp, chown) honor a
  111:   trailing slash in the name of a symlink-to-directory even on
  112:   Solaris 9, by working around its buggy fstatat implementation.
  113: 
  114: 
  115: * Major changes in release 6.5 (2006-11-19) [stable]
  116: 
  117: ** Bug fixes
  118: 
  119:   du (and the other fts clients: chmod, chgrp, chown) would exit early
  120:   when encountering an inaccessible directory on a system with native
  121:   openat support (i.e., linux-2.6.16 or newer along with glibc-2.4
  122:   or newer).  This bug was introduced with the switch to gnulib's
  123:   openat-based variant of fts, for coreutils-6.0.
  124: 
  125:   "ln --backup f f" now produces a sensible diagnostic
  126: 
  127: ** New features
  128: 
  129:   rm accepts a new option: --one-file-system
  130: 
  131: 
  132: * Major changes in release 6.4 (2006-10-22) [stable]
  133: 
  134: ** Bug fixes
  135: 
  136:   chgrp and chown would malfunction when invoked with both -R and -H and
  137:   with one or more of the following: --preserve-root, --verbose, --changes,
  138:   --from=o:g (chown only).  This bug was introduced with the switch to
  139:   gnulib's openat-based variant of fts, for coreutils-6.0.
  140: 
  141:   cp --backup dir1 dir2, would rename an existing dir2/dir1 to dir2/dir1~.
  142:   This bug was introduced in coreutils-6.0.
  143: 
  144:   With --force (-f), rm no longer fails for ENOTDIR.
  145:   For example, "rm -f existing-non-directory/anything" now exits
  146:   successfully, ignoring the error about a nonexistent file.
  147: 
  148: 
  149: * Major changes in release 6.3 (2006-09-30) [stable]
  150: 
  151: ** Improved robustness
  152: 
  153:   pinky no longer segfaults on Darwin 7.9.0 (MacOS X 10.3.9) due to a
  154:   buggy native getaddrinfo function.
  155: 
  156:   rm works around a bug in Darwin 7.9.0 (MacOS X 10.3.9) that would
  157:   sometimes keep it from removing all entries in a directory on an HFS+
  158:   or NFS-mounted partition.
  159: 
  160:   sort would fail to handle very large input (around 40GB) on systems with a
  161:   mkstemp function that returns a file descriptor limited to 32-bit offsets.
  162: 
  163: ** Bug fixes
  164: 
  165:   chmod would fail unnecessarily in an unusual case: when an initially-
  166:   inaccessible argument is rendered accessible by chmod's action on a
  167:   preceding command line argument.  This bug also affects chgrp, but
  168:   it is harder to demonstrate.  It does not affect chown.  The bug was
  169:   introduced with the switch from explicit recursion to the use of fts
  170:   in coreutils-5.1.0 (2003-10-15).
  171: 
  172:   cp -i and mv -i occasionally neglected to prompt when the copy or move
  173:   action was bound to fail.  This bug dates back to before fileutils-4.0.
  174: 
  175:   With --verbose (-v), cp and mv would sometimes generate no output,
  176:   or neglect to report file removal.
  177: 
  178:   For the "groups" command:
  179: 
  180:     "groups" no longer prefixes the output with "user :" unless more
  181:     than one user is specified; this is for compatibility with BSD.
  182: 
  183:     "groups user" now exits nonzero when it gets a write error.
  184: 
  185:     "groups" now processes options like --help more compatibly.
  186: 
  187:   shuf would infloop, given 8KB or more of piped input
  188: 
  189: ** Portability
  190: 
  191:   Versions of chmod, chown, chgrp, du, and rm (tools that use openat etc.)
  192:   compiled for Solaris 8 now also work when run on Solaris 10.
  193: 
  194: 
  195: * Major changes in release 6.2 (2006-09-18) [stable candidate]
  196: 
  197: ** Changes in behavior
  198: 
  199:   mkdir -p and install -d (or -D) now use a method that forks a child
  200:   process if the working directory is unreadable and a later argument
  201:   uses a relative file name.  This avoids some race conditions, but it
  202:   means you may need to kill two processes to stop these programs.
  203: 
  204:   rm now rejects attempts to remove the root directory, e.g., `rm -fr /'
  205:   now fails without removing anything.  Likewise for any file name with
  206:   a final `./' or `../' component.
  207: 
  208:   tail now ignores the -f option if POSIXLY_CORRECT is set, no file
  209:   operand is given, and standard input is any FIFO; formerly it did
  210:   this only for pipes.
  211: 
  212: ** Infrastructure changes
  213: 
  214:   Coreutils now uses gnulib via the gnulib-tool script.
  215:   If you check the source out from CVS, then follow the instructions
  216:   in README-cvs.  Although this represents a large change to the
  217:   infrastructure, it should cause no change in how the tools work.
  218: 
  219: ** Bug fixes
  220: 
  221:   cp --backup no longer fails when the last component of a source file
  222:   name is "." or "..".
  223: 
  224:   "ls --color" would highlight other-writable and sticky directories
  225:   no differently than regular directories on a file system with
  226:   dirent.d_type support.
  227: 
  228:   "mv -T --verbose --backup=t A B" now prints the " (backup: B.~1~)"
  229:   suffix when A and B are directories as well as when they are not.
  230: 
  231:   mv and "cp -r" no longer fail when invoked with two arguments
  232:   where the first one names a directory and the second name ends in
  233:   a slash and doesn't exist.  E.g., "mv dir B/", for nonexistent B,
  234:   now succeeds, once more.  This bug was introduced in coreutils-5.3.0.
  235: 
  236: 
  237: * Major changes in release 6.1 (2006-08-19) [unstable]
  238: 
  239: ** Changes in behavior
  240: 
  241:   df now considers BSD "kernfs" file systems to be dummies
  242: 
  243: ** New features
  244: 
  245:   printf now supports the 'I' flag on hosts whose underlying printf
  246:   implementations support 'I', e.g., "printf %Id 2".
  247: 
  248: ** Bug fixes
  249: 
  250:   cp --sparse preserves sparseness at the end of a file, even when
  251:   the file's apparent size is not a multiple of its block size.
  252:   [introduced with the original design, in fileutils-4.0r, 2000-04-29]
  253: 
  254:   df (with a command line argument) once again prints its header
  255:   [introduced in coreutils-6.0]
  256: 
  257:   ls -CF would misalign columns in some cases involving non-stat'able files
  258:   [introduced in coreutils-6.0]
  259: 
  260: * Major changes in release 6.0 (2006-08-15) [unstable]
  261: 
  262: ** Improved robustness
  263: 
  264:   df: if the file system claims to have more available than total blocks,
  265:   report the number of used blocks as being "total - available"
  266:   (a negative number) rather than as garbage.
  267: 
  268:   dircolors: a new autoconf run-test for AIX's buggy strndup function
  269:   prevents malfunction on that system;  may also affect cut, expand,
  270:   and unexpand.
  271: 
  272:   fts no longer changes the current working directory, so its clients
  273:   (chmod, chown, chgrp, du) no longer malfunction under extreme conditions.
  274: 
  275:   pwd and other programs using lib/getcwd.c work even on file systems
  276:   where dirent.d_ino values are inconsistent with those from stat.st_ino.
  277: 
  278:   rm's core is now reentrant: rm --recursive (-r) now processes
  279:   hierarchies without changing the working directory at all.
  280: 
  281: ** Changes in behavior
  282: 
  283:   basename and dirname now treat // as different from / on platforms
  284:   where the two are distinct.
  285: 
  286:   chmod, install, and mkdir now preserve a directory's set-user-ID and
  287:   set-group-ID bits unless you explicitly request otherwise.  E.g.,
  288:   `chmod 755 DIR' and `chmod u=rwx,go=rx DIR' now preserve DIR's
  289:   set-user-ID and set-group-ID bits instead of clearing them, and
  290:   similarly for `mkdir -m 755 DIR' and `mkdir -m u=rwx,go=rx DIR'.  To
  291:   clear the bits, mention them explicitly in a symbolic mode, e.g.,
  292:   `mkdir -m u=rwx,go=rx,-s DIR'.  To set them, mention them explicitly
  293:   in either a symbolic or a numeric mode, e.g., `mkdir -m 2755 DIR',
  294:   `mkdir -m u=rwx,go=rx,g+s' DIR.  This change is for convenience on
  295:   systems where these bits inherit from parents.  Unfortunately other
  296:   operating systems are not consistent here, and portable scripts
  297:   cannot assume the bits are set, cleared, or preserved, even when the
  298:   bits are explicitly mentioned.  For example, OpenBSD 3.9 `mkdir -m
  299:   777 D' preserves D's setgid bit but `chmod 777 D' clears it.
  300:   Conversely, Solaris 10 `mkdir -m 777 D', `mkdir -m g-s D', and
  301:   `chmod 0777 D' all preserve D's setgid bit, and you must use
  302:   something like `chmod g-s D' to clear it.
  303: 
  304:   `cp --link --no-dereference' now works also on systems where the
  305:   link system call cannot create a hard link to a symbolic link.
  306:   This change has no effect on systems with a Linux-based kernel.
  307: 
  308:   csplit and nl now use POSIX syntax for regular expressions, not
  309:   Emacs syntax.  As a result, character classes like [[:print:]] and
  310:   interval expressions like A\{1,9\} now have their usual meaning,
  311:   . no longer matches the null character, and \ must precede the + and
  312:   ? operators.
  313: 
  314:   date: a command like date -d '2006-04-23 21 days ago' would print
  315:   the wrong date in some time zones.  (see the test for an example)
  316: 
  317:   df changes:
  318: 
  319:     df now considers "none" and "proc" file systems to be dummies and
  320:     therefore does not normally display them.  Also, inaccessible file
  321:     systems (which can be caused by shadowed mount points or by
  322:     chrooted bind mounts) are now dummies, too.
  323: 
  324:     df now fails if it generates no output, so you can inspect the
  325:     exit status of a command like "df -t ext3 -t reiserfs DIR" to test
  326:     whether DIR is on a file system of type "ext3" or "reiserfs".
  327: 
  328:   expr no longer complains about leading ^ in a regular expression
  329:   (the anchor is ignored), or about regular expressions like A** (the
  330:   second "*" is ignored).  expr now exits with status 2 (not 3) for
  331:   errors it detects in the expression's values; exit status 3 is now
  332:   used only for internal errors (such as integer overflow, which expr
  333:   now checks for).
  334: 
  335:   install and mkdir now implement the X permission symbol correctly,
  336:   e.g., `mkdir -m a+X dir'; previously the X was ignored.
  337: 
  338:   install now creates parent directories with mode u=rwx,go=rx (755)
  339:   instead of using the mode specified by the -m option; and it does
  340:   not change the owner or group of parent directories.  This is for
  341:   compatibility with BSD and closes some race conditions.
  342: 
  343:   ln now uses different (and we hope clearer) diagnostics when it fails.
  344:   ln -v now acts more like FreeBSD, so it generates output only when
  345:   successful and the output is easier to parse.
  346: 
  347:   ls now defaults to --time-style='locale', not --time-style='posix-long-iso'.
  348:   However, the 'locale' time style now behaves like 'posix-long-iso'
  349:   if your locale settings appear to be messed up.  This change
  350:   attempts to have the default be the best of both worlds.
  351: 
  352:   mkfifo and mknod no longer set special mode bits (setuid, setgid,
  353:   and sticky) with the -m option.
  354: 
  355:   nohup's usual diagnostic now more precisely specifies the I/O
  356:   redirections, e.g., "ignoring input and appending output to
  357:   nohup.out".  Also, nohup now redirects stderr to nohup.out (or
  358:   $HOME/nohup.out) if stdout is closed and stderr is a tty; this is in
  359:   response to Open Group XCU ERN 71.
  360: 
  361:   rm --interactive now takes an optional argument, although the
  362:   default of using no argument still acts like -i.
  363: 
  364:   rm no longer fails to remove an empty, unreadable directory
  365: 
  366:   seq changes:
  367: 
  368:     seq defaults to a minimal fixed point format that does not lose
  369:     information if seq's operands are all fixed point decimal numbers.
  370:     You no longer need the `-f%.f' in `seq -f%.f 1048575 1024 1050623',
  371:     for example, since the default format now has the same effect.
  372: 
  373:     seq now lets you use %a, %A, %E, %F, and %G formats.
  374: 
  375:     seq now uses long double internally rather than double.
  376: 
  377:   sort now reports incompatible options (e.g., -i and -n) rather than
  378:   silently ignoring one of them.
  379: 
  380:   stat's --format=FMT option now works the way it did before 5.3.0:
  381:   FMT is automatically newline terminated.  The first stable release
  382:   containing this change was 5.92.
  383: 
  384:   stat accepts the new option --printf=FMT, where FMT is *not*
  385:   automatically newline terminated.
  386: 
  387:   stat: backslash escapes are interpreted in a format string specified
  388:   via --printf=FMT, but not one specified via --format=FMT.  That includes
  389:   octal (\ooo, at most three octal digits), hexadecimal (\xhh, one or
  390:   two hex digits), and the standard sequences (\a, \b, \f, \n, \r, \t,
  391:   \v, \", \\).
  392: 
  393:   With no operand, 'tail -f' now silently ignores the '-f' only if
  394:   standard input is a FIFO or pipe and POSIXLY_CORRECT is set.
  395:   Formerly, it ignored the '-f' when standard input was a FIFO, pipe,
  396:   or socket.
  397: 
  398: ** Scheduled for removal
  399: 
  400:   ptx's --copyright (-C) option is scheduled for removal in 2007, and
  401:   now evokes a warning.  Use --version instead.
  402: 
  403:   rm's --directory (-d) option is scheduled for removal in 2006.  This
  404:   option has been silently ignored since coreutils 5.0.  On systems
  405:   that support unlinking of directories, you can use the "unlink"
  406:   command to unlink a directory.
  407: 
  408:   Similarly, we are considering the removal of ln's --directory (-d,
  409:   -F) option in 2006.  Please write to <bug-coreutils@gnu.org> if this
  410:   would cause a problem for you.  On systems that support hard links
  411:   to directories, you can use the "link" command to create one.
  412: 
  413: ** New programs
  414: 
  415:   base64: base64 encoding and decoding (RFC 3548) functionality.
  416:   sha224sum: print or check a SHA224 (224-bit) checksum
  417:   sha256sum: print or check a SHA256 (256-bit) checksum
  418:   sha384sum: print or check a SHA384 (384-bit) checksum
  419:   sha512sum: print or check a SHA512 (512-bit) checksum
  420:   shuf: Shuffle lines of text.
  421: 
  422: ** New features
  423: 
  424:   chgrp now supports --preserve-root, --no-preserve-root (default),
  425:   as it was documented to do, and just as chmod, chown, and rm do.
  426: 
  427:   New dd iflag= and oflag= flags:
  428: 
  429:     'directory' causes dd to fail unless the file is a directory, on
  430:     hosts that support this (e.g., Linux kernels, version 2.1.126 and
  431:     later).  This has limited utility but is present for completeness.
  432: 
  433:     'noatime' causes dd to read a file without updating its access
  434:     time, on hosts that support this (e.g., Linux kernels, version
  435:     2.6.8 and later).
  436: 
  437:     'nolinks' causes dd to fail if the file has multiple hard links,
  438:     on hosts that support this (e.g., Solaris 10 and later).
  439: 
  440:   ls accepts the new option --group-directories-first, to make it
  441:   list directories before files.
  442: 
  443:   rm now accepts the -I (--interactive=once) option.  This new option
  444:   prompts once if rm is invoked recursively or if more than three
  445:   files are being deleted, which is less intrusive than -i prompting
  446:   for every file, but provides almost the same level of protection
  447:   against mistakes.
  448: 
  449:   shred and sort now accept the --random-source option.
  450: 
  451:   sort now accepts the --random-sort (-R) option and `R' ordering option.
  452: 
  453:   sort now supports obsolete usages like "sort +1 -2" unless
  454:   POSIXLY_CORRECT is set.  However, when conforming to POSIX
  455:   1003.1-2001 "sort +1" still sorts the file named "+1".
  456: 
  457:   wc accepts a new option --files0-from=FILE, where FILE contains a
  458:   list of NUL-terminated file names.
  459: 
  460: ** Bug fixes
  461: 
  462:   cat with any of the options, -A -v -e -E -T, when applied to a
  463:   file in /proc or /sys (linux-specific), would truncate its output,
  464:   usually printing nothing.
  465: 
  466:   cp -p would fail in a /proc-less chroot, on some systems
  467: 
  468:   When `cp -RL' encounters the same directory more than once in the
  469:   hierarchy beneath a single command-line argument, it no longer confuses
  470:   them with hard-linked directories.
  471: 
  472:   fts-using tools (chmod, chown, chgrp, du) no longer fail due to
  473:   a double-free bug -- it could be triggered by making a directory
  474:   inaccessible while e.g., du is traversing the hierarchy under it.
  475: 
  476:   fts-using tools (chmod, chown, chgrp, du) no longer misinterpret
  477:   a very long symlink chain as a dangling symlink.  Before, such a
  478:   misinterpretation would cause these tools not to diagnose an ELOOP error.
  479: 
  480:   ls --indicator-style=file-type would sometimes stat a symlink
  481:   unnecessarily.
  482: 
  483:   ls --file-type worked like --indicator-style=slash (-p),
  484:   rather than like --indicator-style=file-type.
  485: 
  486:   mv: moving a symlink into the place of an existing non-directory is
  487:   now done atomically;  before, mv would first unlink the destination.
  488: 
  489:   mv -T DIR EMPTY_DIR no longer fails unconditionally.  Also, mv can
  490:   now remove an empty destination directory: mkdir -p a b/a; mv a b
  491: 
  492:   rm (on systems with openat) can no longer exit before processing
  493:   all command-line arguments.
  494: 
  495:   rm is no longer susceptible to a few low-probability memory leaks.
  496: 
  497:   rm -r no longer fails to remove an inaccessible and empty directory
  498: 
  499:   rm -r's cycle detection code can no longer be tricked into reporting
  500:   a false positive (introduced in fileutils-4.1.9).
  501: 
  502:   shred --remove FILE no longer segfaults on Gentoo systems
  503: 
  504:   sort would fail for large inputs (~50MB) on systems with a buggy
  505:   mkstemp function.  sort and tac now use the replacement mkstemp
  506:   function, and hence are no longer subject to limitations (of 26 or 32,
  507:   on the maximum number of files from a given template) on HP-UX 10.20,
  508:   SunOS 4.1.4, Solaris 2.5.1 and OSF1/Tru64 V4.0F&V5.1.
  509: 
  510:   tail -f once again works on a file with the append-only
  511:   attribute (affects at least Linux ext2, ext3, xfs file systems)
  512: 
  513: * Major changes in release 5.97 (2006-06-24) [stable]
  514: * Major changes in release 5.96 (2006-05-22) [stable]
  515: * Major changes in release 5.95 (2006-05-12) [stable]
  516: * Major changes in release 5.94 (2006-02-13) [stable]
  517: 
  518: [see the b5_9x branch for details]
  519: 
  520: * Major changes in release 5.93 (2005-11-06) [stable]
  521: 
  522: ** Bug fixes
  523: 
  524:   dircolors no longer segfaults upon an attempt to use the new
  525:   STICKY_OTHER_WRITABLE (OWT) attribute.
  526: 
  527:   du no longer overflows a counter when processing a file larger than
  528:   2^31-1 on some 32-bit systems (at least some AIX 5.1 configurations).
  529: 
  530:   md5sum once again defaults to using the ` ' non-binary marker
  531:   (rather than the `*' binary marker) by default on Unix-like systems.
  532: 
  533:   mkdir -p and install -d no longer exit nonzero when asked to create
  534:   a directory like `nonexistent/.'
  535: 
  536:   rm emits a better diagnostic when (without -r) it fails to remove
  537:   a directory on e.g., Solaris 9/10 systems.
  538: 
  539:   tac now works when stdin is a tty, even on non-Linux systems.
  540: 
  541:   "tail -c 2 FILE" and "touch 0101000000" now operate as POSIX
  542:   1003.1-2001 requires, even when coreutils is conforming to older
  543:   POSIX standards, as the newly-required behavior is upward-compatible
  544:   with the old.
  545: 
  546:   The documentation no longer mentions rm's --directory (-d) option.
  547: 
  548: ** Build-related bug fixes
  549: 
  550:   installing .mo files would fail
  551: 
  552: 
  553: * Major changes in release 5.92 (2005-10-22) [stable]
  554: 
  555: ** Bug fixes
  556: 
  557:   chmod now diagnoses an invalid mode string starting with an octal digit
  558: 
  559:   dircolors now properly quotes single-quote characters
  560: 
  561: 
  562: * Major changes in release 5.91 (2005-10-17) [stable candidate]
  563: 
  564: ** Bug fixes
  565: 
  566:   "mkdir -p /a/b/c" no longer fails merely because a leading prefix
  567:   directory (e.g., /a or /a/b) exists on a read-only file system.
  568: 
  569: ** Removed options
  570: 
  571:   tail's --allow-missing option has been removed.  Use --retry instead.
  572: 
  573:   stat's --link and -l options have been removed.
  574:   Use --dereference (-L) instead.
  575: 
  576: ** Deprecated options
  577: 
  578:   Using ls, du, or df with the --kilobytes option now evokes a warning
  579:   that the long-named option is deprecated.  Use `-k' instead.
  580: 
  581:   du's long-named --megabytes option now evokes a warning.
  582:   Use -m instead.
  583: 
  584: 
  585: * Major changes in release 5.90 (2005-09-29) [unstable]
  586: 
  587: ** Bring back support for `head -NUM', `tail -NUM', etc. even when
  588:   conforming to POSIX 1003.1-2001.  The following changes apply only
  589:   when conforming to POSIX 1003.1-2001; there is no effect when
  590:   conforming to older POSIX versions.
  591: 
  592:   The following usages now behave just as when conforming to older POSIX:
  593: 
  594:     date -I
  595:     expand -TAB1[,TAB2,...]
  596:     fold -WIDTH
  597:     head -NUM
  598:     join -j FIELD
  599:     join -j1 FIELD
  600:     join -j2 FIELD
  601:     join -o FIELD_NAME1 FIELD_NAME2...
  602:     nice -NUM
  603:     od -w
  604:     pr -S
  605:     split -NUM
  606:     tail -[NUM][bcl][f] [FILE]
  607: 
  608:   The following usages no longer work, due to the above changes:
  609: 
  610:     date -I TIMESPEC  (use `date -ITIMESPEC' instead)
  611:     od -w WIDTH       (use `od -wWIDTH' instead)
  612:     pr -S STRING      (use `pr -SSTRING' instead)
  613: 
  614:   A few usages still have behavior that depends on which POSIX standard is
  615:   being conformed to, and portable applications should beware these
  616:   problematic usages.  These include:
  617: 
  618:     Problematic       Standard-conforming replacement, depending on
  619:        usage            whether you prefer the behavior of:
  620:                       POSIX 1003.2-1992    POSIX 1003.1-2001
  621:     sort +4           sort -k 5            sort ./+4
  622:     tail +4           tail -n +4           tail ./+4
  623:     tail - f          tail f               [see (*) below]
  624:     tail -c 4         tail -c 10 ./4       tail -c4
  625:     touch 12312359 f  touch -t 12312359 f  touch ./12312359 f
  626:     uniq +4           uniq -s 4            uniq ./+4
  627: 
  628:     (*) "tail - f" does not conform to POSIX 1003.1-2001; to read
  629:     standard input and then "f", use the command "tail -- - f".
  630: 
  631:   These changes are in response to decisions taken in the January 2005
  632:   Austin Group standardization meeting.  For more details, please see
  633:   "Utility Syntax Guidelines" in the Minutes of the January 2005
  634:   Meeting <http://www.opengroup.org/austin/docs/austin_239.html>.
  635: 
  636: ** Binary input and output are now implemented more consistently.
  637:   These changes affect only platforms like MS-DOS that distinguish
  638:   between binary and text files.
  639: 
  640:   The following programs now always use text input/output:
  641: 
  642:     expand unexpand
  643: 
  644:   The following programs now always use binary input/output to copy data:
  645: 
  646:     cp install mv shred
  647: 
  648:   The following programs now always use binary input/output to copy
  649:   data, except for stdin and stdout when it is a terminal.
  650: 
  651:     head tac tail tee tr
  652:     (cat behaves similarly, unless one of the options -bensAE is used.)
  653: 
  654:   cat's --binary or -B option has been removed.  It existed only on
  655:   MS-DOS-like platforms, and didn't work as documented there.
  656: 
  657:   md5sum and sha1sum now obey the -b or --binary option, even if
  658:   standard input is a terminal, and they no longer report files to be
  659:   binary if they actually read them in text mode.
  660: 
  661: ** Changes for better conformance to POSIX
  662: 
  663:   cp, ln, mv, rm changes:
  664: 
  665:     Leading white space is now significant in responses to yes-or-no questions.
  666:     For example, if "rm" asks "remove regular file `foo'?" and you respond
  667:     with " y" (i.e., space before "y"), it counts as "no".
  668: 
  669:   dd changes:
  670: 
  671:     On a QUIT or PIPE signal, dd now exits without printing statistics.
  672: 
  673:     On hosts lacking the INFO signal, dd no longer treats the USR1
  674:     signal as if it were INFO when POSIXLY_CORRECT is set.
  675: 
  676:     If the file F is non-seekable and contains fewer than N blocks,
  677:     then before copying "dd seek=N of=F" now extends F with zeroed
  678:     blocks until F contains N blocks.
  679: 
  680:   fold changes:
  681: 
  682:     When POSIXLY_CORRECT is set, "fold file -3" is now equivalent to
  683:     "fold file ./-3", not the obviously-erroneous "fold file ./-w3".
  684: 
  685:   ls changes:
  686: 
  687:     -p now marks only directories; it is equivalent to the new option
  688:     --indicator-style=slash.  Use --file-type or
  689:     --indicator-style=file-type to get -p's old behavior.
  690: 
  691:   nice changes:
  692: 
  693:     Documentation and diagnostics now refer to "nicenesses" (commonly
  694:     in the range -20...19) rather than "nice values" (commonly 0...39).
  695: 
  696:   nohup changes:
  697: 
  698:     nohup now ignores the umask when creating nohup.out.
  699: 
  700:     nohup now closes stderr if it is a terminal and stdout is closed.
  701: 
  702:     nohup now exits with status 127 (not 1) when given an invalid option.
  703: 
  704:   pathchk changes:
  705: 
  706:     It now rejects the empty name in the normal case.  That is,
  707:     "pathchk -p ''" now fails, and "pathchk ''" fails unless the
  708:     current host (contra POSIX) allows empty file names.
  709: 
  710:     The new -P option checks whether a file name component has leading "-",
  711:     as suggested in interpretation "Austin-039:XCU:pathchk:pathchk -p"
  712:     <http://www.opengroup.org/austin/interps/doc.tpl?gdid=6232>.
  713:     It also rejects the empty name even if the current host accepts it; see
  714:     <http://www.opengroup.org/austin/interps/doc.tpl?gdid=6233>.
  715: 
  716:     The --portability option is now equivalent to -p -P.
  717: 
  718: ** Bug fixes
  719: 
  720:   chmod, mkdir, mkfifo, and mknod formerly mishandled rarely-used symbolic
  721:   permissions like =xX and =u, and did not properly diagnose some invalid
  722:   strings like g+gr, ug,+x, and +1.  These bugs have been fixed.
  723: 
  724:   csplit could produce corrupt output, given input lines longer than 8KB
  725: 
  726:   dd now computes statistics using a realtime clock (if available)
  727:   rather than the time-of-day clock, to avoid glitches if the
  728:   time-of-day is changed while dd is running.  Also, it avoids
  729:   using unsafe code in signal handlers; this fixes some core dumps.
  730: 
  731:   expr and test now correctly compare integers of unlimited magnitude.
  732: 
  733:   expr now detects integer overflow when converting strings to integers,
  734:   rather than silently wrapping around.
  735: 
  736:   ls now refuses to generate time stamps containing more than 1000 bytes, to
  737:   foil potential denial-of-service attacks on hosts with very large stacks.
  738: 
  739:   "mkdir -m =+x dir" no longer ignores the umask when evaluating "+x",
  740:   and similarly for mkfifo and mknod.
  741: 
  742:   "mkdir -p /tmp/a/b dir" no longer attempts to create the `.'-relative
  743:   directory, dir (in /tmp/a), when, after creating /tmp/a/b, it is unable
  744:   to return to its initial working directory.  Similarly for "install -D
  745:   file /tmp/a/b/file".
  746: 
  747:   "pr -D FORMAT" now accepts the same formats that "date +FORMAT" does.
  748: 
  749:   stat now exits nonzero if a file operand does not exist
  750: 
  751: ** Improved robustness
  752: 
  753:   Date no longer needs to allocate virtual memory to do its job,
  754:   so it can no longer fail due to an out-of-memory condition,
  755:   no matter how large the result.
  756: 
  757: ** Improved portability
  758: 
  759:   hostid now prints exactly 8 hexadecimal digits, possibly with leading zeros,
  760:   and without any spurious leading "fff..." on 64-bit hosts.
  761: 
  762:   nice now works on Darwin 7.7.0 in spite of its invalid definition of NZERO.
  763: 
  764:   `rm -r' can remove all entries in a directory even when it is on a
  765:   file system for which readdir is buggy and that was not checked by
  766:   coreutils' old configure-time run-test.
  767: 
  768:   sleep no longer fails when resumed after being suspended on linux-2.6.8.1,
  769:   in spite of that kernel's buggy nanosleep implementation.
  770: 
  771: ** New features
  772: 
  773:   chmod -w now complains if its behavior differs from what chmod a-w
  774:   would do, and similarly for chmod -r, chmod -x, etc.
  775: 
  776:   cp and mv: the --reply=X option is deprecated
  777: 
  778:   date accepts the new option --rfc-3339=TIMESPEC.  The old --iso-8601 (-I)
  779:   option is deprecated; it still works, but new applications should avoid it.
  780:   date, du, ls, and pr's time formats now support new %:z, %::z, %:::z
  781:   specifiers for numeric time zone offsets like -07:00, -07:00:00, and -07.
  782: 
  783:   dd has new iflag= and oflag= flags "binary" and "text", which have an
  784:   effect only on nonstandard platforms that distinguish text from binary I/O.
  785: 
  786:   dircolors now supports SETUID, SETGID, STICKY_OTHER_WRITABLE,
  787:   OTHER_WRITABLE, and STICKY, with ls providing default colors for these
  788:   categories if not specified by dircolors.
  789: 
  790:   du accepts new options: --time[=TYPE] and --time-style=STYLE
  791: 
  792:   join now supports a NUL field separator, e.g., "join -t '\0'".
  793:   join now detects and reports incompatible options, e.g., "join -t x -t y",
  794: 
  795:   ls no longer outputs an extra space between the mode and the link count
  796:   when none of the listed files has an ACL.
  797: 
  798:   md5sum --check now accepts multiple input files, and similarly for sha1sum.
  799: 
  800:   If stdin is a terminal, nohup now redirects it from /dev/null to
  801:   prevent the command from tying up an OpenSSH session after you logout.
  802: 
  803:   "rm -FOO" now suggests "rm ./-FOO" if the file "-FOO" exists and