emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: emacs client/server mode hardcodes /tmp path


From: Ulrich Mueller
Subject: Re: emacs client/server mode hardcodes /tmp path
Date: Wed, 29 Oct 2008 08:51:57 +0100

>>>>> On Tue, 28 Oct 2008, Stefan Monnier wrote:

> Yes, I think we should obey TMPDIR (of course consistently between
> emacsclient.c and server.el).

A patch is included below.

Ulrich


2008-10-29  Ulrich Mueller  <address@hidden>

        * emacsclient.c (set_local_socket): Use TMPDIR (default /tmp)
        instead of hardcoded /tmp.

2008-10-29  Ulrich Mueller  <address@hidden>

        * server.el (server-socket-dir): Use TMPDIR (default /tmp) instead
        of hardcoded /tmp.

--- lib-src/emacsclient.c       13 Oct 2008 02:32:51 -0000      1.133
+++ lib-src/emacsclient.c       29 Oct 2008 07:42:54 -0000
@@ -1128,6 +1128,7 @@
     int default_sock = !socket_name;
     int saved_errno = 0;
     char *server_name = "server";
+    char *tmpdir;
 
     if (socket_name && !index (socket_name, '/') && !index (socket_name, '\\'))
       { /* socket_name is a file name component.  */
@@ -1138,9 +1139,12 @@
 
     if (default_sock)
       {
-       socket_name = alloca (100 + strlen (server_name));
-       sprintf (socket_name, "/tmp/emacs%d/%s",
-                (int) geteuid (), server_name);
+       tmpdir = egetenv ("TMPDIR");
+       if (!tmpdir)
+         tmpdir = "/tmp";
+       socket_name = alloca (96 + strlen (tmpdir) + strlen (server_name));
+       sprintf (socket_name, "%s/emacs%d/%s",
+                tmpdir, (int) geteuid (), server_name);
       }
 
     if (strlen (socket_name) < sizeof (server.sun_path))
@@ -1174,9 +1178,10 @@
            if (pw && (pw->pw_uid != geteuid ()))
              {
                /* We're running under su, apparently. */
-               socket_name = alloca (100 + strlen (server_name));
-               sprintf (socket_name, "/tmp/emacs%d/%s",
-                        (int) pw->pw_uid, server_name);
+               socket_name = alloca (96 + strlen (tmpdir)
+                                     + strlen (server_name));
+               sprintf (socket_name, "%s/emacs%d/%s",
+                        tmpdir, (int) pw->pw_uid, server_name);
 
                if (strlen (socket_name) < sizeof (server.sun_path))
                  strcpy (server.sun_path, socket_name);
--- lisp/server.el      24 Oct 2008 09:39:32 -0000      1.169
+++ lisp/server.el      29 Oct 2008 07:42:56 -0000
@@ -202,7 +202,8 @@
 
 (defvar server-name "server")
 
-(defvar server-socket-dir (format "/tmp/emacs%d" (user-uid))
+(defvar server-socket-dir
+  (format "%s/emacs%d" (or (getenv "TMPDIR") "/tmp") (user-uid))
   "The directory in which to place the server socket.")
 
 (defun server-clients-with (property value)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]