Changes in version 1.14:
Version 1.14 is the largest bug hunt ever attempted in GNU ed. Other
goals of version 1.14 are to complete the documentation and to remove
any gratuitous incompatibilities with the POSIX standard. Thanks to Ori
Avtalion for initiating all this with a couple bug reports. ;-)
Byte counts, informative messages, command error messages, and the '?'
and '!' prompts are now written to stdout instead of to stderr. The
standard error (stderr) is now used only for diagnostic messages.
The current address is now correctly set to the addressed line after an
empty insert command.
Fixed inconsistent behavior of the substitute command. It incorrectly
reported 'Invalid pattern delimiter' when the two last delimiters were
omitted after a null regular expression. Now it consistently reports
'Missing pattern delimiter' if the two last delimiters are omitted after
any regular expression (null or not).
's/a/%' has been fixed. It incorrectly replaced 'a' with '%' instead of
using the replacement from the last substitution.
An infinite loop, happening when EOF was found in the middle of a
replacement string, has been fixed.
Ed no longer accepts newlines in the replacement of a 's' command if it
is part of the command list of a global command, because in this case
the meaning of the newline becomes ambiguous. For the same reason, the
last delimiter can't be omitted if the 's' command is not the last
command in the command list.
The substitute command now correctly sets the current address to the
address of the last line on which a substitution occurred, and leaves it
unchanged if no substitution is performed.
A bug in the calculation of address offsets has been fixed. '3 ---- 2'
was calculated as address -2 instead of the correct address 1.
Address ranges with the first address omitted are now accepted.
The current address is now correctly set to the addressed line (or to
the new last line if at EOF) after an empty replacement text in the
change command.
Repeated print suffixes are now rejected. It has been documented that ed
allows any combination of non-repeated print suffixes and combines their
effects.
The substitute command now accepts suffixes in any order.
The 'repeat substitution' command now rejects multiple count suffixes.
The 'p' suffix of the 'repeat substitution' command now toggles all the
print suffixes of the last substitution.
End of file on standard input now behaves as a 'q' command.
The modified status is no longer cleared after writing the buffer to the
standard input of a shell command. (Reported by Jérôme Frgacic).
The descriptions of the 'a', 'c', 'e', 'g', 'i', 'j', 'k', 'm', 'q',
'r', 's', 'u' and 'w' commands in the manual have been fixed.
Most tests in the testsuite have been improved. Bug reporting has been
simplified; only the failed logs and results are kept in the test
directory, which can then be (tarred, compressed, and) attached to the
bug report.
2016-01-24 Antonio Diaz Diaz <antonio@gnu.org>
* Version 1.13 released.
* buffer.c (put_sbuf_line): Fixed a memory leak.
* io.c (read_file, write_file): Close file on error.
(Both issues reported by Cédric Picard).
Problems found with existing distfiles:
distfiles/javascript-2.1b1.el
distfiles/yEd-3.14.2.zip
No changes made to the javascript-mode or yEd distinfo files.
Otherwise, existing SHA1 digests verified and found to be the same on
the machine holding the existing distfiles (morden). All existing
SHA1 digests retained for now as an audit trail.
* main_loop.c (exec_command): Return ERR if 'system' can't
create a shell process.
* main_loop.c (main_loop): Flush stdout/stderr before reading a
new command.
* buffer.c (put_sbuf_line): Added size parameter.
* ed.1: Man page is now generated with 'help2man'.
* ed.1: All command-line options are now documented in the man page.
* Restored copyright notices of Andrew L. Moore. It seems Andrew
granted some permissions but never assigned copyright to the FSF.
* buffer.c (append_lines): Fixed 'a', 'c' and 'i' commands.
(When used in a global command list, the commands following
them in the list were ignored).
* main_loop.c (exec_command): Fixed 'e' command.
(It quitted when invoked a second time with a modified buffer).
* main.c: Added new option '--restricted'.
* 'red' has been converted to a script invoking 'ed --restricted'.
* Description of ed in the manual has been changed.
* testsuite: Modified some tests and removed obsolete posix tests.
* main_loop.c: 'ibufp' variable made local to main_loop.
* Defined type bool to make clear which functions and variables
are Boolean.
* Added 'const' to all pointer declarations accepting it.
* regex.c (replace_matching_text): Make se_max an enum.
* signal.c: Include termios.h
* Converted C99 style comments '//' to C89 style comments '/* */'.
* ed.texinfo: Fixed an erratum.
* Changed copyright holder from Andrew, Antonio to the FSF.
* buffer.c, main_loop.c: Undo now restores the modified status.
* regex.c (search_and_replace): Fixed a race condition with user
interrupt.
* signal.c: Added functions resize_line_buffer and
resize_undo_buffer to definitively fix the aliasing warnings.
* Some minor corrections have been made to the manual.
* carg_parser.c (ap_resize_buffer): An aliasing related segfault
that only occurs when overoptimizing with GCC on some
architectures (alpha, sparc) has been (hopefully) fixed.
* signal.c (resize_buffer): Likewise.
* configure: Locale has been fixed to 'C'.
* Makefile.in: Man page is now installed by default.
* 'make install-info' should now work on Debian and OS X.
* ed.texinfo: License updated to GFDL version 1.3 or later.
Both patches changed. I made new patches to support being able
to install to program_prefix. (I supplied these upstream too.)
From change log:
2008-02-24 Antonio Diaz
* Version 0.9 released.
* signal.c (sighup_handler): Return 0 if no error.
* Arg_parser updated to 1.1.
2007-08-18 Antonio Diaz
* Version 0.8 released.
* check.sh: Testsuite exits unsuccesfully in case of error.
* ed.1: Fixed some minor problems in the manual page.
* ed.texinfo: Added 21kB of legalese (fdl.texinfo).
2007-07-18 Antonio Diaz
* Version 0.7 released.
* buf.c (dec_addr): Now returns correct address when wrapping.
2007-06-29 Antonio Diaz
* Version 0.6 released.
* License updated to GPL version 3 or later.
* signal.c (sigwinch_handler, set_signal):
Fixed two minor compatibility problems.
* main_loop.c (main_loop):
Fixed an infinite loop when reading an empty script.
2007-03-09 Antonio Diaz
* Version 0.5 released.
* main_loop.c (next_addr): '%' reimplemented as it was in ed 0.2.
2007-01-15 Antonio Diaz
* Version 0.4 released.
* Fixed some minor problems in the testsuite.
2006-11-11 Antonio Diaz
* Version 0.3 released.
* buf.c (open_sbuf):
Fixed symlink vulnerability using standard function `tmpfile'.
* signal.c: Fixed signal handling for SIGINT.
* main_loop.c (exec_command): Fixed `c' and `i' commands with address 0.
* The pause mode has been removed.
* main.c: Added new options `--loose-exit-status' and `--verbose'.
* carg_parser.c: New argument parser that replaces `getopt_long'.
* `configure' and `Makefile.in' have been replaced.
* Removed recursive make for testsuite.
* Created directory `doc'.
* Removed all pre ISO C89 code.
* Removed all global variables.
* ed.texinfo: Added to the manual the changes from Andrew and some mine.
and replace with appropriate references to PKGINFODIR instead.
* Properly account for split info files during installation.
* Move info file listings directly into the package PLISTs.
This fixes info-file-related PLIST problems.
"yes"). So any packages that have old GNU configure script that
does not support --infodir option (while using INFO_FILES) can set
CONFIGURE_HAS_INFODIR=NO.
This was suggested by agc@ as a clearer definition.