[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