sed: fix "sed CMD -i nonexistent_file". Closes 7484

function                                             old     new   delta
sed_main                                             643     676     +33

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2014-10-05 02:44:34 +02:00
parent b434ce7069
commit cd73871178

View File

@ -1522,12 +1522,16 @@ int sed_main(int argc UNUSED_PARAM, char **argv)
/* -i: process each FILE separately: */ /* -i: process each FILE separately: */
if (stat(*argv, &statbuf) != 0) {
bb_simple_perror_msg(*argv);
G.exitcode = EXIT_FAILURE;
G.current_input_file++;
continue;
}
G.outname = xasprintf("%sXXXXXX", *argv); G.outname = xasprintf("%sXXXXXX", *argv);
nonstdoutfd = xmkstemp(G.outname); nonstdoutfd = xmkstemp(G.outname);
G.nonstdout = xfdopen_for_write(nonstdoutfd); G.nonstdout = xfdopen_for_write(nonstdoutfd);
/* Set permissions/owner of output file */ /* Set permissions/owner of output file */
stat(*argv, &statbuf);
/* chmod'ing AFTER chown would preserve suid/sgid bits, /* chmod'ing AFTER chown would preserve suid/sgid bits,
* but GNU sed 4.2.1 does not preserve them either */ * but GNU sed 4.2.1 does not preserve them either */
fchmod(nonstdoutfd, statbuf.st_mode); fchmod(nonstdoutfd, statbuf.st_mode);