hardcoded /tmp instead of TMPDIR
Oskar Liljeblad
oskar at osk.mine.nu
Thu Sep 5 20:16:55 UTC 2002
According to the bug report at
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=142179&repeatmerged=yes
MC does not use $TMP. (The reporter must have meant $TMPDIR.)
I did a grep (with MC of course :) for files with /tmp and
found one place in subshell.c. This patch ought to fix it. I tested
it (with tcsh as shell of course) and it works fine.
Oskar Liljeblad (oskar at osk.mine.nu)
-------------- next part --------------
--- subshell.c.orig 2002-09-05 21:59:39.000000000 +0200
+++ subshell.c 2002-09-05 22:12:31.000000000 +0200
@@ -337,9 +337,8 @@
int pty_slave = -1;
/* Braindead tcsh can't redirect output to a file descriptor? */
- char tcsh_fifo[sizeof "/tmp/mc.pipe.1234567890"];
+ char *tcsh_fifo = NULL;
-
#ifdef SYNC_PTY_SIDES
/* Used to wait for a SIGUSR1 signal from the subprocess */
sigset_t sigusr1_mask, old_mask;
@@ -401,11 +400,20 @@
if (subshell_type == TCSH)
{
- g_snprintf (tcsh_fifo, sizeof (tcsh_fifo), "/tmp/mc.pipe.%d", getpid ());
+ char *tmpdir;
+
+ tmpdir = getenv("TMPDIR");
+ if (!tmpdir) {
+ tmpdir = TMPDIR_DEFAULT;
+ }
+
+ tcsh_fifo = g_strdup_printf("%s/mc.pipe.%d", tmpdir, getpid ());
+ printf("--> %s <--\r\n", tcsh_fifo);
if (mkfifo (tcsh_fifo, 0600) == -1)
{
perror (__FILE__": mkfifo");
use_subshell = FALSE;
+ g_free (tcsh_fifo);
return;
}
@@ -417,6 +425,7 @@
fprintf (stderr, _("Couldn't open named pipe %s\n"), tcsh_fifo);
perror (__FILE__": open");
use_subshell = FALSE;
+ g_free (tcsh_fifo);
return;
}
}
@@ -511,6 +520,7 @@
"set echo_style=both;"
"alias precmd 'echo $cwd:q >>%s;kill -STOP $$'\n",
tcsh_fifo);
+ g_free (tcsh_fifo);
write_it:
write (subshell_pty, precmd, strlen (precmd));
@@ -704,10 +714,17 @@
if (quit && subshell_type == TCSH)
{
+ char *tmpdir;
+
+ tmpdir = getenv("TMPDIR");
+ if (!tmpdir) {
+ tmpdir = TMPDIR_DEFAULT;
+ }
+
/* We abuse of pty_buffer here, but it doesn't matter at this stage */
- g_snprintf (pty_buffer, pty_buffer_size, "/tmp/mc.pipe.%d", getpid ());
+ g_snprintf (pty_buffer, pty_buffer_size, "%s/mc.pipe.%d", tmpdir, getpid ());
if (unlink (pty_buffer) == -1)
- perror (__FILE__": couldn't remove named pipe /tmp/mc.pipe.NNN");
+ perror (__FILE__": couldn't remove named pipe mc.pipe.NNN from tmpdir");
}
g_free (subshell_prompt);
More information about the mc-devel
mailing list