Help testing release candidate / mc-4.8.28-rc1

Andrew Borodin aborodin at vmail.ru
Mon Mar 21 06:44:45 UTC 2022


On Sun, 20 Mar 2022 19:12:13 +0100 Oswald Buddenhagen via mc-devel <mc-devel at gnome.org> wrote:
> On Sun, Mar 20, 2022 at 06:59:32PM +0300, Andrew Borodin wrote:
> >On Sun, 20 Mar 2022 15:22:14 +0100 Oswald Buddenhagen via mc-devel <mc-devel at gnome.org>
> > wrote:
> >> `mc -P $file` doesn't work any more when the file already exists 
> >> (which is of course the case after file=`mktemp`).
> >
> >Indeed.
> >
> >A following patch is proposed:
> >
> >diff --git a/src/main.c b/src/main.c
> >index 3a33dfb59..a4910349a 100644
> >--- a/src/main.c
> >+++ b/src/main.c
> >@@ -492,6 +492,10 @@ main (int argc, char *argv[])
> > 
> >         last_wd_fd = open (mc_args__last_wd_file, O_WRONLY | O_CREAT | O_TRUNC | O_EXCL,
> >                            S_IRUSR | S_IWUSR);
> >+
> >+        if (last_wd_fd == -1 && errno == EEXIST)
> >+            last_wd_fd = open (mc_args__last_wd_file, O_WRONLY | O_TRUNC, S_IRUSR | S_IWUSR);
> >+
> >         if (last_wd_fd != -1)
> >         {
> >             ssize_t ret1;
> >
> that seems overly complicated - why not just drop the O_EXCL? at least i can't see an obvious
> reason for having it in the first place.

Ok.

> anyway, i wonder why i ran into this only recently, given that this behavior is actually
> rather ancient. probably has something to do with me porting the wrapper function from
> tempfile to mktemp (as debian started to complain about deprecation), though the replacement
> itself couldn't have caused it.

mc-wrapper.sh doesn't create a file. It creates a file name only. then mc creates a file with
given file name, and everything works fine.

Wrapper patched to use mktemp creates a file, and mc tries to open an existing file and fails.
A workaround is to apply `mktemp -u` or even `mktemp -u -t`, but is it portable?

-- 
A.





More information about the mc-devel mailing list