comparison lib-src/emacsclient.c @ 99209:01e8c1513572

* server.el, emacsclient.c: Use TMPDIR (default /tmp) instead of hardcoded /tmp.
author Juanma Barranquero <lekktu@gmail.com>
date Wed, 29 Oct 2008 10:42:31 +0000
parents d63a9c87e0ac
children e0e326adf3bc
comparison
equal deleted inserted replaced
99208:45165d7f6e05 99209:01e8c1513572
1126 { 1126 {
1127 int sock_status = 0; 1127 int sock_status = 0;
1128 int default_sock = !socket_name; 1128 int default_sock = !socket_name;
1129 int saved_errno = 0; 1129 int saved_errno = 0;
1130 char *server_name = "server"; 1130 char *server_name = "server";
1131 char *tmpdir;
1131 1132
1132 if (socket_name && !index (socket_name, '/') && !index (socket_name, '\\')) 1133 if (socket_name && !index (socket_name, '/') && !index (socket_name, '\\'))
1133 { /* socket_name is a file name component. */ 1134 { /* socket_name is a file name component. */
1134 server_name = socket_name; 1135 server_name = socket_name;
1135 socket_name = NULL; 1136 socket_name = NULL;
1136 default_sock = 1; /* Try both UIDs. */ 1137 default_sock = 1; /* Try both UIDs. */
1137 } 1138 }
1138 1139
1139 if (default_sock) 1140 if (default_sock)
1140 { 1141 {
1141 socket_name = alloca (100 + strlen (server_name)); 1142 tmpdir = egetenv ("TMPDIR");
1142 sprintf (socket_name, "/tmp/emacs%d/%s", 1143 if (!tmpdir)
1143 (int) geteuid (), server_name); 1144 tmpdir = "/tmp";
1145 socket_name = alloca (32 + strlen (tmpdir) + strlen (server_name));
1146 sprintf (socket_name, "%s/emacs%d/%s",
1147 tmpdir, (int) geteuid (), server_name);
1144 } 1148 }
1145 1149
1146 if (strlen (socket_name) < sizeof (server.sun_path)) 1150 if (strlen (socket_name) < sizeof (server.sun_path))
1147 strcpy (server.sun_path, socket_name); 1151 strcpy (server.sun_path, socket_name);
1148 else 1152 else
1172 struct passwd *pw = getpwnam (user_name); 1176 struct passwd *pw = getpwnam (user_name);
1173 1177
1174 if (pw && (pw->pw_uid != geteuid ())) 1178 if (pw && (pw->pw_uid != geteuid ()))
1175 { 1179 {
1176 /* We're running under su, apparently. */ 1180 /* We're running under su, apparently. */
1177 socket_name = alloca (100 + strlen (server_name)); 1181 socket_name = alloca (32 + strlen (tmpdir)
1178 sprintf (socket_name, "/tmp/emacs%d/%s", 1182 + strlen (server_name));
1179 (int) pw->pw_uid, server_name); 1183 sprintf (socket_name, "%s/emacs%d/%s",
1184 tmpdir, (int) pw->pw_uid, server_name);
1180 1185
1181 if (strlen (socket_name) < sizeof (server.sun_path)) 1186 if (strlen (socket_name) < sizeof (server.sun_path))
1182 strcpy (server.sun_path, socket_name); 1187 strcpy (server.sun_path, socket_name);
1183 else 1188 else
1184 { 1189 {