Path to this page:
Subject: CVS commit: pkgsrc/textproc/gsed
From: Thomas Klausner
Date: 2017-01-16 12:45:14
Message id: 20170116114514.ADF2FFBA6@cvs.NetBSD.org
Log Message:
Updated gsed to 4.3.
* Noteworthy changes in release 4.3 (2016-12-30) [stable]
** Improvements
sed's regular expression matching is now typically 10x faster
sed now uses unlocked-io where available, resulting in faster I/O
operations.
** Bug fixes
sed no longer mishandles anchors ^/$ in multiline regex (s///mg)
with -z option (NUL terminated lines). [Bug introducted in sed-4.2.2
with the initial implementation of -z]
sed no longer accepts a ":" command without a label; before, it would
treat that as defining a label whose name is empty, and subsequent
label-free "t" and "b" commands would use that label. Now, \
sed emits
a diagnostic and fails for that invalid construct.
sed no longer accesses uninitialized memory when processing certain
invalid multibyte sequences. Demonstrate with this:
echo a | LC_ALL=ja_JP.eucJP valgrind sed/sed 's/a/b\U\xb2c/'
The error appears to have been introduced with the sed-4.0a release.
The 'y' (transliterate) operator once again works with a NUL byte
on the RHS. E.g., sed 'y/b/\x00/' now works like tr b '\0'. GNU sed
has never before recognized \x00 in this context. However, sed-3.02
and prior did accept a literal NUL byte in the RHS, which was possible
only when reading a script from a file. For example, this:
echo abc|sed -f <(printf 'y/b/\x00/\n')|cat -A
is what stopped working. [bug introduced some time after sed-3.02 and
prior to the first sed-4* test release]
When the closed-above line number ranges of N editing commands
overlap (N>1), sed would apply commands 2..N to the line just
beyond the largest range endpoint.
[bug introduced some time after sed-4.09 and prior to release in sed-4.1]
Before, this command would mistakenly modify line 5:
$ seq 6|sed '2,4d;2,3s/^/x/;3,4s/^/y/'
1
yx5
6
Now, it does not:
$ seq 6|sed '2,4d;2,3s/^/x/;3,4s/^/y/'
1
5
6
An erroneous sed invocation like "echo > F; sed -i s//b/ F" no longer
leaves behind a temporary file. Before, that command would create a file
alongside F with a name matching /^sed......$/ and fail to remove it.
sed --follow-symlinks now works again for stdin.
[bug introduced in sed-4.2.2]
sed no longer elides invalid bytes in a substitution RHS.
Now, sed copies such bytes into the output, just as Perl does.
[bug introduced in sed-4.1 -- it was also present prior to 4.0.6]
sed no longer prints extraneous character when a backslash follows \c.
'\c\\' generates control character ^\ (ASCII 0x1C).
Other characters after the second backslash are rejected (e.g. '\c\d').
[bug introduced in the sed-4.0.* releases]
sed no longer mishandles incomplete multibyte sequences in s,y commands
and valid multibyte SHIFT-JIS characters in character classes.
Previously, the following commands would fail:
LC_ALL=en_US.UTF-8 sed $'s/\316/X/'
LC_ALL=ja_JP.shiftjis sed $'/[\203]/]/p'
[bug introduced some time after sed-4.1.5 and before sed-4.2.1]
** Feature removal
The "L" command (format a paragraph like the fmt(1) command would)
has been listed in the documentation as a failed experiment for at
least 10 years. That command is now removed.
** Build-related
"make dist" now builds .tar.xz files, rather than .tar.gz ones.
xz is portable enough and in wide-enough use that distributing
only .tar.xz files is enough. It has been fine for coreutils, grep,
diffutils and parted for a few years.
** New Features
new --sandbox option rejects programs with r/w/e commands.
* Noteworthy changes in release 4.2.2 (2012-12-22) [stable]
* don't misbehave (truncate input) for lines of length 2^31 and longer
* fix endless loop on incomplete multibyte sequences
* -u also does unbuffered input, rather than unbuffered output only
* New command `F' to print current input file name
* sed -i, s///w, and the `w' and `W' commands also obey the --binary option
(and create CR/LF-terminated files if the option is absent)
* --posix fails for scripts (or fragments as passed to the -e option) that
end in a backslash, as they are not portable.
* New option -z (--null-data) to separate lines by ASCII NUL characters.
* \x26 (and similar escaped sequences) produces a literal & in the
replacement argument of the s/// command, rather than including the
matched text.
Files: