ed: fix current line number for file passed via the command-line

POSIX.1-2008 mandates the following regarding the file command-line
argument:

	If the file argument is given, ed shall simulate an e command
	on the file named by the pathname […]

The specification for the e command mandates the following behaviour
regarding the current line number in POSIX.1-2008:

	The current line number shall be set to the address of the last
	line of the buffer.

However, without this commit, busybox ed will set the current line
number to 1 if a file is given on the command-line and this file is not
empty (lastNum != 0). This is incorrect and fixed in this commit by not
modifying the current line number in ed_main(). As such, the current
line number will be zero for empty files and otherwise be set to the
address of the last line of the buffer.

function                                             old     new   delta
ed_main                                              144     128     -16

Signed-off-by: Sören Tempel <soeren+git@soeren-tempel.net>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Sören Tempel 2021-11-17 15:08:53 +01:00 committed by Denys Vlasenko
parent 7d49fedc86
commit f26eb796e2

View File

@ -1016,8 +1016,6 @@ int ed_main(int argc UNUSED_PARAM, char **argv)
if (!readLines(fileName, 1)) { if (!readLines(fileName, 1)) {
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }
if (lastNum)
setCurNum(1);
dirty = FALSE; dirty = FALSE;
} }