summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Heuer <kwzh@gnu.org>1995-06-19 22:54:58 +0000
committerKarl Heuer <kwzh@gnu.org>1995-06-19 22:54:58 +0000
commit5402169506a60e77d12259c5a68769c47d5d4e9c (patch)
treeeeead1988ecd7c9537316ed0329fe96418b8ef70
parent9478941d7bea114cc0c9ba4f955eb882ba568875 (diff)
downloademacs-5402169506a60e77d12259c5a68769c47d5d4e9c.tar.gz
(shell-directory-tracker): Check for terminator after
cd, pushd, or popd, so that we don't try to do directory tracking on things like "cdump". Don't use \\s patterns inside brackets.
-rw-r--r--lisp/shell.el16
1 files changed, 11 insertions, 5 deletions
diff --git a/lisp/shell.el b/lisp/shell.el
index 2f297cb588d..abb580b47ff 100644
--- a/lisp/shell.el
+++ b/lisp/shell.el
@@ -450,20 +450,26 @@ Environment variables are expanded, see function `substitute-in-file-name'."
(if shell-dirtrackp
;; We fail gracefully if we think the command will fail in the shell.
(condition-case chdir-failure
- (let ((start (progn (string-match "^[;\\s ]*" str) ; skip whitespace
+ (let ((start (progn (string-match "^[; \t]*" str) ; skip whitespace
(match-end 0)))
end cmd arg1)
(while (string-match shell-command-regexp str start)
(setq end (match-end 0)
cmd (comint-arguments (substring str start end) 0 0)
arg1 (comint-arguments (substring str start end) 1 1))
- (cond ((eq (string-match shell-popd-regexp cmd) 0)
+ (cond ((string-match (concat "\\`\\(" shell-popd-regexp
+ "\\)\\($\\|[ \t]\\)")
+ cmd)
(shell-process-popd (substitute-in-file-name arg1)))
- ((eq (string-match shell-pushd-regexp cmd) 0)
+ ((string-match (concat "\\`\\(" shell-pushd-regexp
+ "\\)\\($\\|[ \t]\\)")
+ cmd)
(shell-process-pushd (substitute-in-file-name arg1)))
- ((eq (string-match shell-cd-regexp cmd) 0)
+ ((string-match (concat "\\`\\(" shell-cd-regexp
+ "\\)\\($\\|[ \t]\\)")
+ cmd)
(shell-process-cd (substitute-in-file-name arg1))))
- (setq start (progn (string-match "[;\\s ]*" str end) ; skip again
+ (setq start (progn (string-match "[; \t]*" str end) ; skip again
(match-end 0)))))
(error "Couldn't cd"))))