Applied, thanks
On Sat, Jun 13, 2020 at 2:01 AM Gray Wolf <[email protected]> wrote: > > Some editors (like vim) use renaming strategy to save file. That means > they save a file to some random name and then rename it to final > location. The advantage is that such save is atomic. > > However, crontab -e holds open fd to the temporary file, meaning it > never sees the changes. The temporary file needs to be re-opened after > the editor terminates for the changes to properly save. > > Fixes #12491 > > Signed-off-by: Wolf <[email protected]> > --- > miscutils/crontab.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/miscutils/crontab.c b/miscutils/crontab.c > index c71d914fc..411a18a50 100644 > --- a/miscutils/crontab.c > +++ b/miscutils/crontab.c > @@ -165,8 +165,12 @@ int crontab_main(int argc UNUSED_PARAM, char **argv) > close(fd); > xlseek(src_fd, 0, SEEK_SET); > } > - close_on_exec_on(src_fd); /* don't want editor to see this fd > */ > + close(src_fd); > edit_file(pas, tmp_fname); > + /* The src_fd needs to be reopened to handle editors that do > + * save the buffer as new file and rename it to tmp_fname (so > + * for example vim). */ > + src_fd = xopen3(tmp_fname, O_RDONLY, 0600); > /* fall through */ > > case 0: /* Replace (no -l, -e, or -r were given) */ > -- > 2.27.0 > > _______________________________________________ > busybox mailing list > [email protected] > http://lists.busybox.net/mailman/listinfo/busybox _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
