[PATCH] sed: check errors writing file with sed -i
David Laight
David.Laight at ACULAB.COM
Wed Nov 16 09:51:50 UTC 2022
From: busybox Dominique Martinet
> Sent: 16 November 2022 02:53
>
> From: Dominique Martinet <dominique.martinet at atmark-techno.com>
>
> sed would currently not error if write failed when modifying a file.
....
> diff --git a/editors/sed.c b/editors/sed.c
> index 32a4b61f6d4c..31ade17477ca 100644
> --- a/editors/sed.c
> +++ b/editors/sed.c
> @@ -1639,7 +1639,10 @@ int sed_main(int argc UNUSED_PARAM, char **argv)
> fchown(nonstdoutfd, statbuf.st_uid, statbuf.st_gid);
>
> process_files();
> -fclose(G.nonstdout);
> +if (fclose(G.nonstdout)) {
> +xfunc_error_retval = 4; /* It's what gnu sed exits with... */
> +bb_simple_error_msg_and_die(bb_msg_write_error);
> +}
> G.nonstdout = stdout;
Does that report an error if there is nothing currently buffered?
I think the best sequence is:
fflush(G.nonstdout);
if (ferror(G.nonstdout)) {
xfunc_error_retval = 4; /* It's what gnu sed exits with... */
bb_simple_error_msg_and_die(bb_msg_write_error);
}
fclose(G.nonstdout);
G.nonstdout = stdout;
David
-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)
More information about the busybox
mailing list