diff lib-src/emacsclient.c @ 83403:51eb0aa362f3

Store client's environment in terminal parameters, not server parameters. * lisp/loadup.el: Don't load server. * lisp/ldefs-boot.el: Update. * lib-src/emacsclient.c (main): Send environment only when a new display is created. * lisp/server.el (server-save-buffers-kill-display): Add autoload cookie. Move stuff not specific to server into `save-buffers-kill-display'. * lisp/files.el (save-buffers-kill-display): New function. (ctl-x-map): Bind it to C-x C-c. * lisp/frame.el (terminal-getenv): New function. * lisp/international/mule-cmds.el (set-locale-environment): Use it. * lisp/frame.el (with-terminal-environment): New macro. * lisp/server.el (server-getenv, server-with-client-environment): Remove. (server-getenv-from, server-with-environment): New functions. (server-process-filter): Change syntax of environment variables. Put environment into terminal parameters, not client parameters. * lisp/term/rxvt.el: Don't require server. (rxvt-set-background-mode): Use terminal-getenv, not server-getenv. * lisp/term/x-win.el (x-initialize-window-system): Ditto. * lisp/term/xterm.el (terminal-init-xterm): Ditto. git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-443
author Karoly Lorentey <lorentey@elte.hu>
date Sat, 19 Nov 2005 19:17:56 +0000
parents f4766b398a30
children b98066f4aa10
line wrap: on
line diff
--- a/lib-src/emacsclient.c	Sat Nov 19 13:23:31 2005 +0000
+++ b/lib-src/emacsclient.c	Sat Nov 19 19:17:56 2005 +0000
@@ -695,26 +695,19 @@
   fprintf (out, "-version %s ", VERSION);
 
   /* Send over our environment. */
-  {
-    extern char **environ;
-    int i;
-    for (i = 0; environ[i]; i++)
-      {
-        char *name = xstrdup (environ[i]);
-        char *value = strchr (name, '=');
-        if (value && strlen (value) > 1)
-          {
-            *value++ = 0;
-            fprintf (out, "-env ");
-            quote_argument (name, out);
-            fprintf (out, " ");
-            quote_argument (value, out);
-            fprintf (out, " ");
-            fflush (out);
-          }
-        free (name);
-      }
-  }
+  if (!current_frame)
+    {
+      extern char **environ;
+      int i;
+      for (i = 0; environ[i]; i++)
+        {
+          char *name = xstrdup (environ[i]);
+          char *value = strchr (name, '=');
+          fprintf (out, "-env ");
+          quote_argument (environ[i], out);
+          fprintf (out, " ");
+        }
+    }
 
  retry:
   if (nowait)