aboutsummaryrefslogtreecommitdiffstats
path: root/lib-src
diff options
context:
space:
mode:
Diffstat (limited to 'lib-src')
-rw-r--r--lib-src/ChangeLog11
-rw-r--r--lib-src/emacsclient.c48
2 files changed, 27 insertions, 32 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 d70be8c7491..0f42f096643 100644
--- a/lib-src/emacsclient.c
+++ b/lib-src/emacsclient.c
@@ -382,8 +382,6 @@ main (argc, argv)
382 int argc; 382 int argc;
383 char **argv; 383 char **argv;
384{ 384{
385 char *system_name;
386 int system_name_length;
387 int s, i, needlf = 0; 385 int s, i, needlf = 0;
388 FILE *out, *in; 386 FILE *out, *in;
389 struct sockaddr_un server; 387 struct sockaddr_un server;
@@ -418,39 +416,24 @@ main (argc, argv)
418 server.sun_family = AF_UNIX; 416 server.sun_family = AF_UNIX;
419 417
420 { 418 {
421 char *dot;
422 system_name_length = 32;
423
424 while (1)
425 {
426 system_name = (char *) xmalloc (system_name_length + 1);
427
428 /* system_name must be null-terminated string. */
429 system_name[system_name_length] = '\0';
430
431 if (gethostname (system_name, system_name_length) == 0)
432 break;
433
434 free (system_name);
435 system_name_length *= 2;
436 }
437
438 /* We always use the non-dotted host name, for simplicity. */
439 dot = index (system_name, '.');
440 if (dot)
441 *dot = '\0';
442 }
443
444 {
445 int sock_status = 0; 419 int sock_status = 0;
446 int default_sock = !socket_name; 420 int default_sock = !socket_name;
447 int saved_errno = 0; 421 int saved_errno = 0;
448 422
449 if (default_sock) 423 char *server_name = "server";
424
425 if (socket_name && !index (socket_name, '/') && !index (socket_name, '\\'))
426 { /* socket_name is a file name component. */
427 server_name = socket_name;
428 socket_name = NULL;
429 default_sock = 1; /* Try both UIDs. */
430 }
431
432 if (default_sock)
450 { 433 {
451 socket_name = alloca (system_name_length + 100); 434 socket_name = alloca (100 + strlen (server_name));
452 sprintf (socket_name, "/tmp/emacs%d-%s/server", 435 sprintf (socket_name, "/tmp/emacs%d/%s",
453 (int) geteuid (), system_name); 436 (int) geteuid (), server_name);
454 } 437 }
455 438
456 if (strlen (socket_name) < sizeof (server.sun_path)) 439 if (strlen (socket_name) < sizeof (server.sun_path))
@@ -484,8 +467,9 @@ main (argc, argv)
484 if (pw && (pw->pw_uid != geteuid ())) 467 if (pw && (pw->pw_uid != geteuid ()))
485 { 468 {
486 /* We're running under su, apparently. */ 469 /* We're running under su, apparently. */
487 sprintf (socket_name, "/tmp/emacs%d-%s/server", 470 socket_name = alloca (100 + strlen (server_name));
488 (int) pw->pw_uid, system_name); 471 sprintf (socket_name, "/tmp/emacs%d/%s",
472 (int) pw->pw_uid, server_name);
489 473
490 if (strlen (socket_name) < sizeof (server.sun_path)) 474 if (strlen (socket_name) < sizeof (server.sun_path))
491 strcpy (server.sun_path, socket_name); 475 strcpy (server.sun_path, socket_name);