diff lib-src/emacsclient.c @ 83031:1d2f73785d9d

Merged in changes from CVS HEAD Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-57 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-58 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-59 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-60 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-61 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-62 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-63 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-64 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-65 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-66 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-67 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-68 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-69 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-71
author Karoly Lorentey <lorentey@elte.hu>
date Mon, 02 Feb 2004 19:19:08 +0000
parents 895e130cc8da 132739917566
children 03a73693678e
line wrap: on
line diff
--- a/lib-src/emacsclient.c	Mon Jan 26 21:22:42 2004 +0000
+++ b/lib-src/emacsclient.c	Mon Feb 02 19:19:08 2004 +0000
@@ -382,8 +382,6 @@
      int argc;
      char **argv;
 {
-  char *system_name;
-  int system_name_length;
   int s, i, needlf = 0;
   FILE *out, *in;
   struct sockaddr_un server;
@@ -418,39 +416,24 @@
   server.sun_family = AF_UNIX;
 
   {
-    char *dot;
-    system_name_length = 32;
-
-    while (1)
-      {
-	system_name = (char *) xmalloc (system_name_length + 1);
-
-	/* system_name must be null-terminated string.  */
-	system_name[system_name_length] = '\0';
-
- 	if (gethostname (system_name, system_name_length) == 0)
-	  break;
-
-	free (system_name);
-	system_name_length *= 2;
-      }
-
-    /* We always use the non-dotted host name, for simplicity.  */
-    dot = index (system_name, '.');
-    if (dot)
-      *dot = '\0';
-  }
-
-  {
     int sock_status = 0;
     int default_sock = !socket_name;
     int saved_errno = 0;
     
-    if (default_sock)
+     char *server_name = "server";
+ 
+     if (socket_name && !index (socket_name, '/') && !index (socket_name, '\\'))
+       { /* socket_name is a file name component.  */
+ 	server_name = socket_name;
+ 	socket_name = NULL;
+ 	default_sock = 1;	/* Try both UIDs.  */
+       }
+
+     if (default_sock)
       {
-	socket_name = alloca (system_name_length + 100);
-	sprintf (socket_name, "/tmp/emacs%d-%s/server",
-		 (int) geteuid (), system_name);
+ 	socket_name = alloca (100 + strlen (server_name));
+ 	sprintf (socket_name, "/tmp/emacs%d/%s",
+ 		 (int) geteuid (), server_name);
       }
 
     if (strlen (socket_name) < sizeof (server.sun_path))
@@ -484,8 +467,9 @@
 	    if (pw && (pw->pw_uid != geteuid ()))
 	      {
 		/* We're running under su, apparently. */
-		sprintf (socket_name, "/tmp/emacs%d-%s/server",
-			 (int) pw->pw_uid, system_name);
+		socket_name = alloca (100 + strlen (server_name));
+		sprintf (socket_name, "/tmp/emacs%d/%s",
+			 (int) pw->pw_uid, server_name);
 
 		if (strlen (socket_name) < sizeof (server.sun_path))
 		  strcpy (server.sun_path, socket_name);