Mercurial > emacs
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 { |