changeset 24084:c0b0893dd5a6

(main): Eliminate arbitrary limit on length of system_name. (xmalloc): Define unconditionally.
author Richard M. Stallman <rms@gnu.org>
date Sat, 16 Jan 1999 21:45:10 +0000
parents 33b162fe4507
children 8dc3b068c0db
files lib-src/emacsclient.c
diffstat 1 files changed, 17 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/lib-src/emacsclient.c	Sat Jan 16 21:44:56 1999 +0000
+++ b/lib-src/emacsclient.c	Sat Jan 16 21:45:10 1999 +0000
@@ -146,7 +146,6 @@
   return copy;
 }
 
-#ifdef C_ALLOCA
 /* Like malloc but get fatal error if memory is exhausted.  */
 
 char *
@@ -161,7 +160,6 @@
   }
   return result;
 }
-#endif /* C_ALLOCA */
 
 #if !defined (HAVE_SOCKETS) && !defined (HAVE_SYSVIPC)
 
@@ -194,7 +192,8 @@
      int argc;
      char **argv;
 {
-  char system_name[32];
+  char *system_name;
+  int system_name_length;
   int s, i;
   FILE *out, *in;
   struct sockaddr_un server;
@@ -223,10 +222,22 @@
 #ifndef SERVER_HOME_DIR
   {
     struct stat statbfr;
+    system_name_length = 32;
 
-    gethostname (system_name, sizeof (system_name));
-    /* system_name must be null-terminated string */
-    system_name[sizeof (system_name) - 1] = '\0';
+    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;
+      }
+
     sprintf (server.sun_path, "/tmp/esrv%d-%s", geteuid (), system_name);
 
     if (stat (server.sun_path, &statbfr) == -1)