diff options
author | Miles Bader <miles@gnu.org> | 2007-05-16 07:12:33 +0000 |
---|---|---|
committer | Miles Bader <miles@gnu.org> | 2007-05-16 07:12:33 +0000 |
commit | 36ab861205a8e5f930918ff4c8e62d158169a32a (patch) | |
tree | 90cd759731bae97e70754a58d07d8ca37b8e976c /lisp/server.el | |
parent | a9683a703b3d03b2f8480f04d081fe366e94e599 (diff) | |
download | emacs-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.el | 14 |
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. |