aboutsummaryrefslogtreecommitdiffstats
path: root/lib-src
diff options
context:
space:
mode:
authorStefan Monnier2004-01-27 23:07:13 +0000
committerStefan Monnier2004-01-27 23:07:13 +0000
commit0734b0d08d1d8d7fb50654261517624fdd3efd0e (patch)
treed355b04616965673df0ad0f361a719576f805030 /lib-src
parente8a12926bbdb40c49e68e77cc614dd743c3d4c53 (diff)
downloademacs-0734b0d08d1d8d7fb50654261517624fdd3efd0e.tar.gz
emacs-0734b0d08d1d8d7fb50654261517624fdd3efd0e.zip
(main): Don't use the hostname in the socket name.
Look for relative socket names in the /tmp dir rather than in cwd.
Diffstat (limited to 'lib-src')
-rw-r--r--lib-src/ChangeLog11
-rw-r--r--lib-src/emacsclient.c45
2 files changed, 25 insertions, 31 deletions
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog
index 3e66cba3563..6ea0e8be97a 100644
--- a/lib-src/ChangeLog
+++ b/lib-src/ChangeLog
@@ -1,8 +1,19 @@
12004-01-27 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * emacsclient.c (main): Don't use the hostname in the socket name.
4 Look for relative socket names in the /tmp dir rather than in cwd.
5
12004-01-24 Richard M. Stallman <rms@gnu.org> 62004-01-24 Richard M. Stallman <rms@gnu.org>
2 7
3 * emacsclient.c (main): Restore errno from saved_errno, 8 * emacsclient.c (main): Restore errno from saved_errno,
4 so the error message comes from socket_status. 9 so the error message comes from socket_status.
5 10
112004-01-20 Stefan Monnier <monnier@iro.umontreal.ca>
12
13 * emacsclient.c (main): Stop if socket name too long.
14 Only try su-fallback if the socket name was not explicit.
15 Check socket name length in su-fallback case as well.
16
62004-01-08 Andreas Schwab <schwab@suse.de> 172004-01-08 Andreas Schwab <schwab@suse.de>
7 18
8 * emacsclient.c (main): Save errno from socket_status. 19 * emacsclient.c (main): Save errno from socket_status.
diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c
index 3ae33f72a18..a3a73d9e067 100644
--- a/lib-src/emacsclient.c
+++ b/lib-src/emacsclient.c
@@ -299,8 +299,6 @@ main (argc, argv)
299 int argc; 299 int argc;
300 char **argv; 300 char **argv;
301{ 301{
302 char *system_name;
303 int system_name_length;
304 int s, i, needlf = 0; 302 int s, i, needlf = 0;
305 FILE *out, *in; 303 FILE *out, *in;
306 struct sockaddr_un server; 304 struct sockaddr_un server;
@@ -333,39 +331,23 @@ main (argc, argv)
333 server.sun_family = AF_UNIX; 331 server.sun_family = AF_UNIX;
334 332
335 { 333 {
336 char *dot;
337 system_name_length = 32;
338
339 while (1)
340 {
341 system_name = (char *) xmalloc (system_name_length + 1);
342
343 /* system_name must be null-terminated string. */
344 system_name[system_name_length] = '\0';
345
346 if (gethostname (system_name, system_name_length) == 0)
347 break;
348
349 free (system_name);
350 system_name_length *= 2;
351 }
352
353 /* We always use the non-dotted host name, for simplicity. */
354 dot = index (system_name, '.');
355 if (dot)
356 *dot = '\0';
357 }
358
359 {
360 int sock_status = 0; 334 int sock_status = 0;
361 int default_sock = !socket_name; 335 int default_sock = !socket_name;
362 int saved_errno; 336 int saved_errno;
337 char *server_name = "server";
338
339 if (socket_name && !index (socket_name, '/') && !index (socket_name, '\\'))
340 { /* socket_name is a file name component. */
341 server_name = socket_name;
342 socket_name = NULL;
343 default_sock = 1; /* Try both UIDs. */
344 }
363 345
364 if (default_sock) 346 if (default_sock)
365 { 347 {
366 socket_name = alloca (system_name_length + 100); 348 socket_name = alloca (100 + strlen (server_name));
367 sprintf (socket_name, "/tmp/emacs%d-%s/server", 349 sprintf (socket_name, "/tmp/emacs%d/%s",
368 (int) geteuid (), system_name); 350 (int) geteuid (), server_name);
369 } 351 }
370 352
371 if (strlen (socket_name) < sizeof (server.sun_path)) 353 if (strlen (socket_name) < sizeof (server.sun_path))
@@ -399,8 +381,9 @@ main (argc, argv)
399 if (pw && (pw->pw_uid != geteuid ())) 381 if (pw && (pw->pw_uid != geteuid ()))
400 { 382 {
401 /* We're running under su, apparently. */ 383 /* We're running under su, apparently. */
402 sprintf (socket_name, "/tmp/emacs%d-%s/server", 384 socket_name = alloca (100 + strlen (server_name));
403 (int) pw->pw_uid, system_name); 385 sprintf (socket_name, "/tmp/emacs%d/%s",
386 (int) pw->pw_uid, server_name);
404 387
405 if (strlen (socket_name) < sizeof (server.sun_path)) 388 if (strlen (socket_name) < sizeof (server.sun_path))
406 strcpy (server.sun_path, socket_name); 389 strcpy (server.sun_path, socket_name);