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:
parent
b434ce7069
commit
cd73871178
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user