summaryrefslogtreecommitdiff
path: root/lisp/server.el
diff options
context:
space:
mode:
authorMiles Bader <miles@gnu.org>2007-05-16 07:12:33 +0000
committerMiles Bader <miles@gnu.org>2007-05-16 07:12:33 +0000
commit36ab861205a8e5f930918ff4c8e62d158169a32a (patch)
tree90cd759731bae97e70754a58d07d8ca37b8e976c /lisp/server.el
parenta9683a703b3d03b2f8480f04d081fe366e94e599 (diff)
downloademacs-36ab861205a8e5f930918ff4c8e62d158169a32a.tar.gz
Rudimentary fix for environment variable handling.
* lisp/env.el (getenv): Restore David Kastrup's fix. (environment): Add optional frame parameter. * lisp/mule-cmds.el (set-locale-environment): Fix getenv call. * lisp/term/rxvt.el (rxvt-set-background-mode): Ditto. * lisp/x-win.el (x-initialize-window-system, terminal-init-xterm): Ditto. * lisp/server.el (server-with-environment): Restore the original environment. Revision: emacs@sv.gnu.org/emacs--multi-tty--0--patch-6 Creator: Karoly Lorentey <karoly@lorentey.hu>
Diffstat (limited to 'lisp/server.el')
-rw-r--r--lisp/server.el14
1 files changed, 8 insertions, 6 deletions
diff --git a/lisp/server.el b/lisp/server.el
index 2e344084d0f..15721d1af1c 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -268,19 +268,21 @@ The environment variables are then restored to their previous values.
VARS should be a list of strings.
ENV should be in the same format as `process-environment'."
(declare (indent 2))
- (let ((oldvalues (make-symbol "oldvalues"))
+ (let ((old-env (make-symbol "old-env"))
(var (make-symbol "var"))
(value (make-symbol "value"))
(pair (make-symbol "pair")))
- `(let (,oldvalues)
+ `(let ((,old-env process-environment))
(dolist (,var ,vars)
(let ((,value (server-getenv-from ,env ,var)))
- (setq ,oldvalues (cons (cons ,var (getenv ,var)) ,oldvalues))
- (setenv ,var ,value)))
+ (setq process-environment
+ (cons (if (null ,value)
+ ,var
+ (concat ,var "=" ,value))
+ process-environment))))
(unwind-protect
(progn ,@body)
- (dolist (,pair ,oldvalues)
- (setenv (car ,pair) (cdr ,pair)))))))
+ (setq process-environment ,old-env)))))
(defun server-delete-client (client &optional noframe)
"Delete CLIENT, including its buffers, terminals and frames.