Merge branch '4575_mc-wrapper-2'

Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
This commit is contained in:
Yury V. Zaytsev 2024-09-03 07:40:01 +02:00
commit 7a3a763f0e
5 changed files with 24 additions and 14 deletions

View File

@ -1,9 +1,9 @@
set MC_USER=`whoami`
if ($?TMPDIR) then
setenv MC_PWD_FILE $TMPDIR/mc-$MC_USER/mc.pwd.$$
if ($?MC_TMPDIR) then
setenv MC_PWD_FILE "`mktemp '$MC_TMPDIR/mc.pwd.XXXXXX'`"
else if ($?TMPDIR) then
setenv MC_PWD_FILE "`mktemp '$TMPDIR/mc.pwd.XXXXXX'`"
else
setenv MC_PWD_FILE /tmp/mc-$MC_USER/mc.pwd.$$
setenv MC_PWD_FILE "`mktemp '/tmp/mc.pwd.XXXXXX'`"
endif
@bindir@/mc -P "$MC_PWD_FILE" $*
@ -11,11 +11,10 @@ endif
if (-r "$MC_PWD_FILE") then
setenv MC_PWD "`cat '$MC_PWD_FILE'`"
if ("$MC_PWD" != "$cwd" && -d "$MC_PWD") then
cd "$MC_PWD"
cd "$MC_PWD" || true
endif
unsetenv MC_PWD
endif
rm -f "$MC_PWD_FILE"
unsetenv MC_PWD_FILE
unsetenv MC_USER

View File

@ -1,15 +1,20 @@
MC_USER=`whoami`
MC_PWD_FILE="${TMPDIR-/tmp}/mc-$MC_USER/mc.pwd.$$"
if test -n "$MC_TMPDIR"; then
MC_PWD_FILE="`mktemp "${MC_TMPDIR}/mc.pwd.XXXXXX"`"
elif test -n "$TMPDIR"; then
MC_PWD_FILE="`mktemp "${TMPDIR}/mc.pwd.XXXXXX"`"
else
MC_PWD_FILE="`mktemp "/tmp/mc.pwd.XXXXXX"`"
fi
@bindir@/mc -P "$MC_PWD_FILE" "$@"
if test -r "$MC_PWD_FILE"; then
MC_PWD="`cat "$MC_PWD_FILE"`"
if test -n "$MC_PWD" && test "$MC_PWD" != "$PWD" && test -d "$MC_PWD"; then
cd "$MC_PWD"
cd "$MC_PWD" || true
fi
unset MC_PWD
fi
rm -f "$MC_PWD_FILE"
unset MC_PWD_FILE
unset MC_USER

View File

@ -775,6 +775,7 @@ mc_tmpdir (void)
static const char *tmpdir = NULL;
const char *sys_tmp;
struct stat st;
gchar *template;
/* Check if already correctly initialized */
if (tmpdir != NULL && lstat (tmpdir, &st) == 0 && S_ISDIR (st.st_mode) &&
@ -789,7 +790,10 @@ mc_tmpdir (void)
sys_tmp = TMPDIR_DEFAULT;
}
g_snprintf (buffer, sizeof (buffer), "%s/mc-XXXXXX", sys_tmp);
template = g_build_filename (sys_tmp, "mc-XXXXXX", (char *) NULL);
g_strlcpy (buffer, template, sizeof (buffer));
g_free (template);
tmpdir = g_mkdtemp (buffer);
if (tmpdir != NULL)
g_setenv ("MC_TMPDIR", tmpdir, TRUE);

View File

@ -509,8 +509,7 @@ main (int argc, char *argv[])
{
int last_wd_fd;
last_wd_fd = open (mc_args__last_wd_file, O_WRONLY | O_CREAT | O_TRUNC | O_EXCL,
S_IRUSR | S_IWUSR);
last_wd_fd = open (mc_args__last_wd_file, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR);
if (last_wd_fd != -1)
{
ssize_t ret1;

View File

@ -45,6 +45,9 @@
static void
setup (void)
{
/* Ensure that tests behave consistently irrespectively of the environment */
g_unsetenv ("MC_TMPDIR");
str_init_strings (NULL);
vfs_init ();