od: use gnulib printf replacement as necessary
[platform/upstream/coreutils.git] / NEWS
diff --git a/NEWS b/NEWS
index 93a632c..750b15e 100644 (file)
--- a/NEWS
+++ b/NEWS
 GNU coreutils NEWS                                    -*- outline -*-
 
-* Noteworthy changes in release 6.9+ (????-??-??) [stable]
+* Noteworthy changes in release 7.0 (????-??-??) [beta]
+
+** New programs
+
+  timeout: Run a command with bounded time.
+  truncate: Set the size of a file to a specified size.
+
+** New features
+
+  comm now verifies that the inputs are in sorted order.  This check can
+  be turned off with the --nocheck-order option.
+
+  comm accepts new option, --output-delimiter=STR, that allows specification
+  of an output delimiter other than the default single TAB.
+
+  md5sum now accepts the new option, --quiet, to suppress the printing of
+  'OK' messages.  sha1sum, sha224sum, sha384sum, and sha512sum accept it, too.
+
+** Bug fixes
+
+  od no longer suffers from platform bugs in printf(3).  This is
+  probably most noticeable when using 'od -tfL' to print long doubles.
+
+** Improvements
+
+  Improved support for access control lists (ACLs): On MacOS X, Solaris 7..10,
+  HP-UX 11, Tru64, AIX, IRIX 6.5, and Cygwin, "ls -l" now displays the presence
+  of an ACL on a file via a '+' sign after the mode, and "cp -p" copies ACLs.
+
+
+* Noteworthy changes in release 6.12 (2008-05-31) [stable]
+
+** Bug fixes
+
+  chcon, runcon: --help output now includes the bug-reporting address
+
+  cp -p copies permissions more portably.  For example, on MacOS X 10.5,
+  "cp -p some-fifo some-file" no longer fails while trying to copy the
+  permissions from the some-fifo argument.
+
+  id with no options now prints the SELinux context only when invoked
+  with no USERNAME argument.
+
+  id and groups once again print the AFS-specific nameless group-ID (PAG).
+  Printing of such large-numbered, kernel-only (not in /etc/group) group-IDs
+  was suppressed in 6.11 due to ignorance that they are useful.
+
+  uniq: avoid subtle field-skipping malfunction due to isblank misuse.
+  In some locales on some systems, isblank(240) (aka &nbsp) is nonzero.
+  On such systems, uniq --skip-fields=N would fail to skip the proper
+  number of fields for some inputs.
+
+  tac: avoid segfault with --regex (-r) and multiple files, e.g.,
+  "echo > x; tac -r x x".  [bug present at least in textutils-1.8b, from 1992]
+
+** Changes in behavior
+
+  install once again sets SELinux context, when possible
+  [it was deliberately disabled in 6.9.90]
+
+
+* Noteworthy changes in release 6.11 (2008-04-19) [stable]
+
+** Bug fixes
+
+  configure --enable-no-install-program=groups now works.
+
+  "cp -fR fifo E" now succeeds with an existing E.  Before this fix, using
+  -fR to copy a fifo or "special" file onto an existing file would fail
+  with EEXIST.  Now, it once again unlinks the destination before trying
+  to create the destination file.  [bug introduced in coreutils-5.90]
+
+  dd once again works with unnecessary options like if=/dev/stdin and
+  of=/dev/stdout.  [bug introduced in fileutils-4.0h]
+
+  id now uses getgrouplist, when possible.  This results in
+  much better performance when there are many users and/or groups.
+
+  ls no longer segfaults on files in /proc when linked with an older version
+  of libselinux.  E.g., ls -l /proc/sys would dereference a NULL pointer.
+
+  md5sum would segfault for invalid BSD-style input, e.g.,
+  echo 'MD5 (' | md5sum -c -  Now, md5sum ignores that line.
+  sha1sum, sha224sum, sha384sum, and sha512sum are affected, too.
+  [bug introduced in coreutils-5.1.0]
+
+  md5sum -c would accept a NUL-containing checksum string like "abcd\0..."
+  and would unnecessarily read and compute the checksum of the named file,
+  and then compare that checksum to the invalid one: guaranteed to fail.
+  Now, it recognizes that the line is not valid and skips it.
+  sha1sum, sha224sum, sha384sum, and sha512sum are affected, too.
+  [bug present in the original version, in coreutils-4.5.1, 1995]
+
+  "mkdir -Z x dir" no longer segfaults when diagnosing invalid context "x"
+  mkfifo and mknod would fail similarly.  Now they're fixed.
+
+  mv would mistakenly unlink a destination file before calling rename,
+  when the destination had two or more hard links.  It no longer does that.
+  [bug introduced in coreutils-5.3.0]
+
+  "paste -d'\' file" no longer overruns memory (heap since coreutils-5.1.2,
+  stack before then) [bug present in the original version, in 1992]
+
+  "pr -e" with a mix of backspaces and TABs no longer corrupts the heap
+  [bug present in the original version, in 1992]
+
+  "ptx -F'\' long-file-name" would overrun a malloc'd buffer and corrupt
+  the heap.  That was triggered by a lone backslash (or odd number of them)
+  at the end of the option argument to --flag-truncation=STRING (-F),
+  --word-regexp=REGEXP (-W), or --sentence-regexp=REGEXP (-S).
+
+  "rm -r DIR" would mistakenly declare to be "write protected" -- and
+  prompt about -- full DIR-relative names longer than MIN (PATH_MAX, 8192).
+
+  "rmdir --ignore-fail-on-non-empty" detects and ignores the failure
+  in more cases when a directory is empty.
+
+  "seq -f % 1" would issue the erroneous diagnostic "seq: memory exhausted"
+  rather than reporting the invalid string format.
+  [bug introduced in coreutils-6.0]
+
+** New features
+
+  join now verifies that the inputs are in sorted order.  This check can
+  be turned off with the --nocheck-order option.
+
+  sort accepts the new option --sort=WORD, where WORD can be one of
+  general-numeric, month, numeric or random.  These are equivalent to the
+  options --general-numeric-sort/-g, --month-sort/-M, --numeric-sort/-n
+  and --random-sort/-R, resp.
+
+** Improvements
+
+  id and groups work around an AFS-related bug whereby those programs
+  would print an invalid group number, when given no user-name argument.
+
+  ls --color no longer outputs unnecessary escape sequences
+
+  seq gives better diagnostics for invalid formats.
+
+** Portability
+
+  rm now works properly even on systems like BeOS and Haiku,
+  which have negative errno values.
+
+** Consistency
+
+  install, mkdir, rmdir and split now write --verbose output to stdout,
+  not to stderr.
+
+
+* Noteworthy changes in release 6.10 (2008-01-22) [stable]
+
+** Bug fixes
+
+  Fix a non-portable use of sed in configure.ac.
+  [bug introduced in coreutils-6.9.92]
+
+
+* Noteworthy changes in release 6.9.92 (2008-01-12) [beta]
+
+** Bug fixes
+
+  cp --parents no longer uses uninitialized memory when restoring the
+  permissions of a just-created destination directory.
+  [bug introduced in coreutils-6.9.90]
+
+  tr's case conversion would fail in a locale with differing numbers
+  of lower case and upper case characters.  E.g., this would fail:
+  env LC_CTYPE=en_US.ISO-8859-1 tr '[:upper:]' '[:lower:]'
+  [bug introduced in coreutils-6.9.90]
+
+** Improvements
+
+  "touch -d now writable-but-owned-by-someone-else" now succeeds
+  whenever that same command would succeed without "-d now".
+  Before, it would work fine with no -d option, yet it would
+  fail with the ostensibly-equivalent "-d now".
+
+
+* Noteworthy changes in release 6.9.91 (2007-12-15) [beta]
+
+** Bug fixes
+
+  "ls -l" would not output "+" on SELinux hosts unless -Z was also given.
+
+  "rm" would fail to unlink a non-directory when run in an environment
+  in which the user running rm is capable of unlinking a directory.
+  [bug introduced in coreutils-6.9]
+
+
+* Noteworthy changes in release 6.9.90 (2007-12-01) [beta]
 
 ** New programs
 
   arch: equivalent to uname -m, not installed by default
   But don't install this program on Solaris systems.
 
+  chcon: change the SELinux security context of a file
+
+  mktemp: create a temporary file or directory (or names)
+
+  runcon: run a program in a different SELinux security context
+
 ** Programs no longer installed by default
 
   hostname, su
 
 ** Changes in behavior
 
+  cp, by default, refuses to copy through a dangling destination symlink
+  Set POSIXLY_CORRECT if you require the old, risk-prone behavior.
+
   pr -F no longer suppresses the footer or the first two blank lines in
   the header.  This is for compatibility with BSD and POSIX.
 
@@ -22,7 +222,25 @@ GNU coreutils NEWS                                    -*- outline -*-
 
 ** New features
 
-  Add SELinux support (FIXME: add details here)
+  Add SELinux support, based on the patch from Fedora:
+  * cp accepts new --preserve=context option.
+  * "cp -a" works with SELinux:
+  Now, cp -a attempts to preserve context, but failure to do so does
+  not change cp's exit status.  However "cp --preserve=context" is
+  similar, but failure *does* cause cp to exit with nonzero status.
+  * install accepts new "-Z, --context=C" option.
+  * id accepts new "-Z" option.
+  * stat honors the new %C format directive: SELinux security context string
+  * ls accepts a slightly modified -Z option.
+  * ls: contrary to Fedora version, does not accept --lcontext and --scontext
+
+  The following commands and options now support the standard size
+  suffixes kB, M, MB, G, GB, and so on for T, P, Y, Z, and Y:
+  head -c, head -n, od -j, od -N, od -S, split -b, split -C,
+  tail -c, tail -n.
+
+  cp -p tries to preserve the GID of a file even if preserving the UID
+  is not possible.
 
   uniq accepts a new option: --zero-terminated (-z).  As with the sort
   option of the same name, this makes uniq consume and produce
@@ -66,7 +284,7 @@ GNU coreutils NEWS                                    -*- outline -*-
   loss of the contents of a/f.
 
   stty no longer silently accepts certain invalid hex values
-  in its 35-colon commmand-line argument
+  in its 35-colon command-line argument
 
 ** Bug fixes
 
@@ -79,16 +297,14 @@ GNU coreutils NEWS                                    -*- outline -*-
   reports stat.st_size == 0, while "cat /proc/cpuinfo > c" would "work",
   and create a nonempty one. [bug introduced in coreutils-6.0]
 
-  cp no longer fails to write through a dangling symlink
-  [bug introduced in coreutils-6.7].  cp --parents no
-  longer mishandles symlinks to directories in file name
-  components in the source, e.g., "cp --parents symlink/a/b
-  d" no longer fails.  Also, 'cp' no longer considers a
-  destination symlink to be the same as the referenced file when
-  copying links or making backups.  For example, if SYM is a symlink
-  to FILE, "cp -l FILE SYM" now reports an error instead of silently
-  doing nothing.  The behavior of 'cp' is now better documented when
-  the destination is a symlink.
+  cp --parents no longer mishandles symlinks to directories in file
+  name components in the source, e.g., "cp --parents symlink/a/b d"
+  no longer fails.  Also, 'cp' no longer considers a destination
+  symlink to be the same as the referenced file when copying links
+  or making backups.  For example, if SYM is a symlink to FILE,
+  "cp -l FILE SYM" now reports an error instead of silently doing
+  nothing.  The behavior of 'cp' is now better documented when the
+  destination is a symlink.
 
   "cp -i --update older newer" no longer prompts; same for mv
 
@@ -103,6 +319,9 @@ GNU coreutils NEWS                                    -*- outline -*-
   cut now diagnoses the '-' in "cut -f -" as an invalid range, rather
   than interpreting it as the unlimited range, "1-".
 
+  date -d now accepts strings of the form e.g., 'YYYYMMDD +N days',
+  in addition to the usual 'YYYYMMDD N days'.
+
   du -s now includes the size of any stat'able-but-inaccessible directory
   in the total size.
 
@@ -130,9 +349,18 @@ GNU coreutils NEWS                                    -*- outline -*-
   of bytes to skip is exactly the sum of the lengths of the first N files,
   od would skip only the first N-1 files. [introduced in textutils-2.0.9]
 
+  ./printf %.10000000f 1 could get an internal ENOMEM error and generate
+  no output, yet erroneously exit with status 0.  Now it diagnoses the error
+  and exits with nonzero status.  [present in initial implementation]
+
   seq no longer mishandles obvious cases like "seq 0 0.000001 0.000003",
   so workarounds like "seq 0 0.000001 0.0000031" are no longer needed.
 
+  seq would mistakenly reject some valid format strings containing %%,
+  and would mistakenly accept some invalid ones. e.g., %g%% and %%g, resp.
+
+  "seq .1 .1" would mistakenly generate no output on some systems
+
   Obsolete sort usage with an invalid ordering-option character, e.g.,
   "env _POSIX2_VERSION=199209 sort +1x" no longer makes sort free an
   invalid pointer [introduced in coreutils-6.5]
@@ -144,7 +372,10 @@ GNU coreutils NEWS                                    -*- outline -*-
   [this bug is present at least as far back as textutils-1.22 (Jan, 1997)]
 
   tr -c no longer aborts when translating with Set2 larger than the
-  complement of Set1.  [introduced with the original version, in 1992]
+  complement of Set1.  [present in the original version, in 1992]
+
+  tr no longer rejects an unmatched [:lower:] or [:upper:] in SET1.
+  [present in the original version]
 
 
 * Noteworthy changes in release 6.9 (2007-03-22) [stable]
@@ -197,11 +428,33 @@ GNU coreutils NEWS                                    -*- outline -*-
   pwd and "readlink -e ." no longer fail unnecessarily when a parent
   directory is unreadable.
 
+  rm (without -f) could prompt when it shouldn't, or fail to prompt
+  when it should, when operating on a full name longer than 511 bytes
+  and getting an ENOMEM error while trying to form the long name.
+
+  rm could mistakenly traverse into the wrong directory under unusual
+  conditions: when a full name longer than 511 bytes specifies a search-only
+  directory, and when forming that name fails with ENOMEM, rm would attempt
+  to open a truncated-to-511-byte name with the first five bytes replaced
+  with "[...]".  If such a directory were to actually exist, rm would attempt
+  to remove it.
+
   "rm -rf /etc/passwd" (run by non-root) now prints a diagnostic.
   Before it would print nothing.
 
   "rm --interactive=never F" no longer prompts for an unwritable F
 
+  "rm -rf D" would emit an misleading diagnostic when failing to
+  remove a symbolic link within the unwritable directory, D.
+  Introduced in coreutils-6.0.  Similarly, when a cross-partition
+  "mv" fails because the source directory is unwritable, it now gives
+  a reasonable diagnostic.  Before, this would print
+    $ mkdir /tmp/x; touch /tmp/x/y; chmod -w /tmp/x;
+    $ test $(stat -c %d /tmp/x) -ne $(stat -c %d .) && mv /tmp/x/y .
+    mv: cannot remove `/tmp/x/y': Not a directory
+  Now it prints this:
+    mv: cannot remove `/tmp/x/y': Permission denied.
+
 ** New features
 
   sort's new --compress-program=PROG option specifies a compression