diff options
| author | Stefan Monnier | 2004-01-27 23:07:13 +0000 |
|---|---|---|
| committer | Stefan Monnier | 2004-01-27 23:07:13 +0000 |
| commit | 0734b0d08d1d8d7fb50654261517624fdd3efd0e (patch) | |
| tree | d355b04616965673df0ad0f361a719576f805030 /lib-src | |
| parent | e8a12926bbdb40c49e68e77cc614dd743c3d4c53 (diff) | |
| download | emacs-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/ChangeLog | 11 | ||||
| -rw-r--r-- | lib-src/emacsclient.c | 45 |
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 @@ | |||
| 1 | 2004-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 | |||
| 1 | 2004-01-24 Richard M. Stallman <rms@gnu.org> | 6 | 2004-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 | ||
| 11 | 2004-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 | |||
| 6 | 2004-01-08 Andreas Schwab <schwab@suse.de> | 17 | 2004-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); |