bug-coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

coreutils-5.3.0 released (unstable)


From: Jim Meyering
Subject: coreutils-5.3.0 released (unstable)
Date: Mon, 10 Jan 2005 20:13:31 +0100

I am happy to announce a test release of the GNU coreutils.
The GNU coreutils package is the combination of and replacement
for the fileutils, sh-utils, and textutils packages.
This package contains the following programs:

  [ basename cat chgrp chmod chown chroot cksum comm cp csplit cut date
  dd df dir dircolors dirname du echo env expand expr factor false fmt
  fold groups head hostid hostname id install join kill link ln logname
  ls md5sum mkdir mkfifo mknod mv nice nl nohup od paste pathchk pinky pr
  printenv printf ptx pwd readlink rm rmdir seq sha1sum shred sleep sort
  split stat stty su sum sync tac tail tee test touch tr true tsort tty
  uname unexpand uniq unlink uptime users vdir wc who whoami yes

There have been many changes in the nine months since the last release
(stable 5.2.1).  So many that I feel 5.3.0 must be considered unstable.
There have been many bug fixes as well as quite a few feature additions.
The next release is expected to be a bug-fix-only release.

Special thanks go to Paul Eggert for his many contributions.  Thanks to
everyone else who contributed changes (attributions are in the ChangeLog
files), reported problems, and helped by fielding questions on the
mailing list.

Here are the compressed sources:
  ftp://alpha.gnu.org/gnu/coreutils/coreutils-5.3.0.tar.gz         (6.6MB)
  ftp://alpha.gnu.org/gnu/coreutils/coreutils-5.3.0.tar.bz2        (4.3MB)
  http://meyering.free.fr/coreutils/coreutils-5.3.0.tar.gz         (6.6MB)
  http://meyering.free.fr/coreutils/coreutils-5.3.0.tar.bz2        (4.3MB)

Here are the xdelta-style diffs:
  ftp://alpha.gnu.org/gnu/coreutils/coreutils-5.2.1-5.3.0.xdelta   (1.9MB)
  http://meyering.free.fr/coreutils/coreutils-5.2.1-5.3.0.xdelta   (1.9MB)

Here are the GPG detached signatures:
  ftp://alpha.gnu.org/gnu/coreutils/coreutils-5.3.0.tar.gz.sig
  ftp://alpha.gnu.org/gnu/coreutils/coreutils-5.3.0.tar.bz2.sig
  http://meyering.free.fr/coreutils/coreutils-5.3.0.tar.gz.sig
  http://meyering.free.fr/coreutils/coreutils-5.3.0.tar.bz2.sig

Here are the MD5 and SHA1 checksums:

9020750cc0be4a0d1b14b75620e9ede1  coreutils-5.3.0.tar.gz
903890208248639ac723d2c4988e04bd  coreutils-5.3.0.tar.bz2
d1560a9b3a248ec674f42074177148c8  coreutils-5.2.1-5.3.0.xdelta
cb7370d2e5c05ed926ed6d4a61b286c468a2939c  coreutils-5.3.0.tar.gz
3fcaaa87ace1a6e239e2fbafcb121a7836a14f32  coreutils-5.3.0.tar.bz2
8f0a7235e97c802de7ebfaa3fd012fec7aed00e9  coreutils-5.2.1-5.3.0.xdelta

NEWS

* Major changes in release 5.3.0 (2005-01-08) [unstable]

** Bug fixes

  Several fixes to chgrp and chown for compatibility with POSIX and BSD:

    Do not affect symbolic links by default.
    Now, operate on whatever a symbolic link points to, instead.
    To get the old behavior, use --no-dereference (-h).

    --dereference now works, even when the specified owner
    and/or group match those of an affected symlink.

    Check for incompatible options.  When -R and --dereference are
    both used, then either -H or -L must also be used.  When -R and -h
    are both used, then -P must be in effect.

    -H, -L, and -P have no effect unless -R is also specified.
    If -P and -R are both specified, -h is assumed.

    Do not optimize away the chown() system call when the file's owner
    and group already have the desired value.  This optimization was
    incorrect, as it failed to update the last-changed time and reset
    special permission bits, as POSIX requires.

    "chown : file", "chown '' file", and "chgrp '' file" now succeed
    without changing the uid or gid, instead of reporting an error.

    Do not report an error if the owner or group of a
    recursively-encountered symbolic link cannot be updated because
    the file system does not support it.

  chmod now accepts multiple mode-like options, e.g., "chmod -r -w f".

  chown is no longer subject to a race condition vulnerability, when
  used with --from=O:G and without the (-h) --no-dereference option.

  cut's --output-delimiter=D option works with abutting byte ranges.

  dircolors's documentation now recommends that shell scripts eval
  "`dircolors`" rather than `dircolors`, to avoid shell expansion pitfalls.

  du no longer segfaults when a subdirectory of an operand
  directory is removed while du is traversing that subdirectory.
  Since the bug was in the underlying fts.c module, it also affected
  chown, chmod, and chgrp.

  du's --exclude-from=FILE and --exclude=P options now compare patterns
  against the entire name of each file, rather than against just the
  final component.

  echo now conforms to POSIX better.  It supports the \0ooo syntax for
  octal escapes, and \c now terminates printing immediately.  If
  POSIXLY_CORRECT is set and the first argument is not "-n", echo now
  outputs all option-like arguments instead of treating them as options.

  expand and unexpand now conform to POSIX better.  They check for
  blanks (which can include characters other than space and tab in
  non-POSIX locales) instead of spaces and tabs.  Unexpand now
  preserves some blanks instead of converting them to tabs or spaces.

  "ln x d/" now reports an error if d/x is a directory and x a file,
  instead of incorrectly creating a link to d/x/x.

  ls no longer segfaults on systems for which SIZE_MAX != (size_t) -1.

  md5sum and sha1sum now report an error when given so many input
  lines that their line counter overflows, instead of silently
  reporting incorrect results.

  Fixes for "nice":

    If it fails to lower the nice value due to lack of permissions,
    it goes ahead and runs the command anyway, as POSIX requires.

    It no longer incorrectly reports an error if the current nice
    value happens to be -1.

    It no longer assumes that nice values range from -20 through 19.

    It now consistently adjusts out-of-range nice values to the
    closest values in range; formerly it sometimes reported an error.

  pathchk no longer accepts trailing options, e.g., "pathchk -p foo -b"
  now treats -b as a file name to check, not as an invalid option.

  `pr --columns=N' was not equivalent to `pr -N' when also using
  either -s or -w.

  pr now supports page numbers up to 2**64 on most hosts, and it
  detects page number overflow instead of silently wrapping around.
  pr now accepts file names that begin with "+" so long as the rest of
  the file name does not look like a page range.

  printf has several changes:

    It now uses 'intmax_t' (not 'long int') to format integers, so it
    can now format 64-bit integers on most modern hosts.

    On modern hosts it now supports the C99-inspired %a, %A, %F conversion
    specs, the "'" and "0" flags, and the ll, j, t, and z length modifiers
    (this is compatible with recent Bash versions).

    The printf command now rejects invalid conversion specifications
    like %#d, instead of relying on undefined behavior in the underlying
    printf function.

  ptx now diagnoses invalid values for its --width=N (-w)
  and --gap-size=N (-g) options.

  mv (when moving between partitions) no longer fails when
  operating on too many command-line-specified nonempty directories.

  rm (without -f) no longer hangs when attempting to remove a symlink
  to a file on an off-line NFS-mounted partition.

  rm no longer gets a failed assertion under some unusual conditions.

  rm no longer requires read access to the current directory.

  "rm -r" would mistakenly fail to remove files under a directory
  for some types of errors (e.g., read-only file system, I/O error)
  when first encountering the directory.

  "sort" fixes:

    "sort -o -" now writes to a file named "-" instead of to standard
    output; POSIX requires this.

    An unlikely race condition has been fixed where "sort" could have
    mistakenly removed a temporary file belonging to some other process.

    "sort" no longer has O(N**2) behavior when it creates many temporary files.

  tac can now handle regular, nonseekable files like Linux's
  /proc/modules.  Before, it would produce no output for such a file.

  tac would exit immediately upon I/O or temp-file creation failure.
  Now it continues on, processing any remaining command line arguments.

  "tail -f" no longer mishandles pipes and fifos.  With no operands,
  tail now ignores -f if standard input is a pipe, as POSIX requires.
  When conforming to POSIX 1003.2-1992, tail now supports the SUSv2 b
  modifier (e.g., "tail -10b file") and it handles some obscure cases
  more correctly, e.g., "tail +cl" now reads the file "+cl" rather
  than reporting an error, "tail -c file" no longer reports an error,
  and "tail - file" no longer reads standard input.

  tee now exits when it gets a SIGPIPE signal, as POSIX requires.
  To get tee's old behavior, use the shell command "(trap '' PIPE; tee)".
  Also, "tee -" now writes to standard output instead of to a file named "-".

  "touch -- MMDDhhmm[yy] file" is now equivalent to
  "touch MMDDhhmm[yy] file" even when conforming to pre-2001 POSIX.

  tr no longer mishandles a second operand with leading "-".

  who now prints user names in full instead of truncating them after 8 bytes.

  The following commands now reject unknown options instead of
  accepting them as operands, so that users are properly warned that
  options may be added later.  Formerly they accepted unknown options
  as operands; e.g., "basename -a a" acted like "basename -- -a a".

    basename dirname factor hostname link nohup sync unlink yes

** New features

  For efficiency, `sort -m' no longer copies input to a temporary file
  merely because the input happens to come from a pipe.  As a result,
  some relatively-contrived examples like `cat F | sort -m -o F - G'
  are no longer safe, as `sort' might start writing F before `cat' is
  done reading it.  This problem cannot occur unless `-m' is used.

  When outside the default POSIX locale, the 'who' and 'pinky'
  commands now output time stamps like "2004-06-21 13:09" instead of
  the traditional "Jun 21 13:09".

  pwd now works even when run from a working directory whose name
  is longer than PATH_MAX.

  cp, install, ln, and mv have a new --no-target-directory (-T) option,
  and -t is now a short name for their --target-directory option.

  cp -pu and mv -u (when copying) now don't bother to update the
  destination if the resulting time stamp would be no newer than the
  preexisting time stamp.  This saves work in the common case when
  copying or moving multiple times to the same destination in a file
  system with a coarse time stamp resolution.

  cut accepts a new option, --complement, to complement the set of
  selected bytes, characters, or fields.

  dd now also prints the number of bytes transferred, the time, and the
  transfer rate.  The new "status=noxfer" operand suppresses this change.

  dd has new conversions for the conv= option:

    nocreat   do not create the output file
    excl      fail if the output file already exists
    fdatasync physically write output file data before finishing
    fsync     likewise, but also write metadata

  dd has new iflag= and oflag= options with the following flags:

    append    append mode (makes sense for output file only)
    direct    use direct I/O for data
    dsync     use synchronized I/O for data
    sync      likewise, but also for metadata
    nonblock  use non-blocking I/O
    nofollow  do not follow symlinks
    noctty    do not assign controlling terminal from file

  stty now provides support (iutf8) for setting UTF-8 input mode.

  With stat, a specified format is no longer automatically newline terminated.
  If you want a newline at the end of your output, append `\n' to the format
  string.

  'df', 'du', and 'ls' now take the default block size from the
  BLOCKSIZE environment variable if the BLOCK_SIZE, DF_BLOCK_SIZE,
  DU_BLOCK_SIZE, and LS_BLOCK_SIZE environment variables are not set.
  Unlike the other variables, though, BLOCKSIZE does not affect
  values like 'ls -l' sizes that are normally displayed as bytes.
  This new behavior is for compatibility with BSD.

  du accepts a new option --files0-from=FILE, where FILE contains a
  list of NUL-terminated file names.

  Date syntax as used by date -d, date -f, and touch -d has been
  changed as follows:

    Dates like `January 32' with out-of-range components are now rejected.

    Dates can have fractional time stamps like 2004-02-27 14:19:13.489392193.

    Dates can be entered via integer counts of seconds since 1970 when
    prefixed by `@'.  For example, address@hidden' represents 1970-01-01 
00:05:21 UTC.

    Time zone corrections can now separate hours and minutes with a colon,
    and can follow standard abbreviations like "UTC".  For example,
    "UTC +0530" and "+05:30" are supported, and are both equivalent to "+0530".

    Date values can now have leading TZ="..." assignments that override
    the environment only while that date is being processed.  For example,
    the following shell command converts from Paris to New York time:

      TZ="America/New_York" date --date='TZ="Europe/Paris" 2004-10-31 06:30'

  `date' has a new option --iso-8601=ns that outputs
  nanosecond-resolution time stamps.

  echo -e '\xHH' now outputs a byte whose hexadecimal value is HH,
  for compatibility with bash.

  ls now exits with status 1 on minor problems, 2 if serious trouble.

  ls has a new --hide=PATTERN option that behaves like
  --ignore=PATTERN, except that it is overridden by -a or -A.
  This can be useful for aliases, e.g., if lh is an alias for
  "ls --hide='*~'", then "lh -A" lists the file "README~".

  In the following cases POSIX allows the default GNU behavior,
  so when POSIXLY_CORRECT is set:

    false, printf, true, unlink, and yes all support --help and --option.
    ls supports TABSIZE.
    pr no longer depends on LC_TIME for the date format in non-POSIX locales.
    printf supports \u, \U, \x.
    tail supports two or more files when using the obsolete option syntax.

  The usual `--' operand is now supported by chroot, hostid, hostname,
  pwd, sync, and yes.

  `od' now conforms to POSIX better, and is more compatible with BSD:

    The older syntax "od [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]" now works
    even without --traditional.  This is a change in behavior if there
    are one or two operands and the last one begins with +, or if
    there are two operands and the latter one begins with a digit.
    For example, "od foo 10" and "od +10" now treat the last operand as
    an offset, not as a file name.

    -h is no longer documented, and may be withdrawn in future versions.
    Use -x or -t x2 instead.

    -i is now equivalent to -t dI (not -t d2), and
    -l is now equivalent to -t dL (not -t d4).

    -s is now equivalent to -t d2.  The old "-s[NUM]" or "-s NUM"
    option has been renamed to "-S NUM".

    The default output format is now -t oS, not -t o2, i.e., short int
    rather than two-byte int.  This makes a difference only on hosts like
    Cray systems where the C short int type requires more than two bytes.

  The stat option --filesystem has been renamed to --file-system, for
  consistency with POSIX "file system" and with cp and du --one-file-system.

** Removed features

  md5sum and sha1sum's undocumented --string option has been removed.

  tail's undocumented --max-consecutive-size-changes option has been removed.

Attachment: pgp6FCdg1rZo6.pgp
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]