Help testing release candidate / mc-4.8.28-rc1

Andrew Borodin aborodin at vmail.ru
Sun Mar 20 15:59:32 UTC 2022


On Sun, 20 Mar 2022 15:22:14 +0100 Oswald Buddenhagen via mc-devel <mc-devel at gnome.org>
 wrote:
> On Sun, Mar 20, 2022 at 01:15:41PM +0100, Yury V. Zaytsev wrote:
> >TLDR; I would appreciate if you could please test the following tarball on your systems
> and report any blocker regressions as compared to the previous 4.8.27 release:
> >
> i tested master instead:
> 
> find.c: In function ‘find_cmd’:
> find.c:1837:28: warning: ‘start_dir_len’ may be used uninitialized in this function [-Wmaybe-uninitialized]
>   1837 |                 p = name + (size_t) start_dir_len;
>        |                            ^~~~~~~~~~~~~~~~~~~~~~
> find.c:1897:13: note: ‘start_dir_len’ was declared here
>   1897 |     ssize_t start_dir_len;
>        |             ^~~~~~~~~~~~~

This isn't critical. start_dir_len is an output of find_parameters().

> coord_cache.c: In function ‘mcview_ccache_add_entry’:
> coord_cache.c:97:5: warning: ‘g_memdup’ is deprecated: Use 'g_memdup2' instead [-Wdeprecated-declarations]
>     97 |     cache->cache[pos] = g_memdup (entry, sizeof (*entry));
>        |     ^~~~~
> In file included from /usr/include/glib-2.0/glib.h:82,
>                   from ../../lib/global.h:66,
>                   from coord_cache.c:57:
> /usr/include/glib-2.0/glib/gstrfuncs.h:257:23: note: declared here
>    257 | gpointer              g_memdup         (gconstpointer mem,
>        |                       ^~~~~~~~

This is not critical too.
https://midnight-commander.org/ticket/4270#comment:12

> `mc -P $file` doesn't work any more when the file already exists (which is of course the case after file=`mktemp`).

Indeed.
file is opened with O_CREAT | O_EXCL flags. In this case, as written in open(2),

O_EXCL Ensure  that  this call creates the file: if this flag is specified in conjunction
       with O_CREAT, and pathname already exists, then open() fails with the error EEXIST.

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;

-- 
Andrew



More information about the mc-devel mailing list