mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 10:30:25 -08:00
Quote file name commands in eshell.
* lisp/eshell/esh-arg.el (eshell-quote-argument): New function. * lisp/eshell/esh-ext.el (eshell-invoke-batch-file): * lisp/eshell/em-unix.el (eshell/cat, eshell/du): Use it to quote the first arg to eshell-parse-command. Fixes: debbugs:10523
This commit is contained in:
parent
8c6e192092
commit
93376c5baf
4 changed files with 25 additions and 3 deletions
|
|
@ -1,3 +1,11 @@
|
|||
2012-01-28 Chong Yidong <cyd@gnu.org>
|
||||
|
||||
* eshell/esh-arg.el (eshell-quote-argument): New function.
|
||||
|
||||
* eshell/esh-ext.el (eshell-invoke-batch-file):
|
||||
* eshell/em-unix.el (eshell/cat, eshell/du): Use it to quote the
|
||||
first arg to eshell-parse-command (Bug#10523).
|
||||
|
||||
2012-01-28 Drew Adams <drew.adams@oracle.com>
|
||||
|
||||
* net/ange-ftp.el (ange-ftp-canonize-filename): Check, that
|
||||
|
|
|
|||
|
|
@ -599,7 +599,7 @@ symlink, then revert to the system's definition of cat."
|
|||
(let ((ext-cat (eshell-search-path "cat")))
|
||||
(if ext-cat
|
||||
(throw 'eshell-replace-command
|
||||
(eshell-parse-command ext-cat args))
|
||||
(eshell-parse-command (eshell-quote-argument ext-cat) args))
|
||||
(if eshell-in-pipeline-p
|
||||
(error "Eshell's `cat' does not work in pipelines")
|
||||
(error "Eshell's `cat' cannot display one of the files given"))))
|
||||
|
|
@ -855,7 +855,7 @@ external command."
|
|||
(file-remote-p (expand-file-name arg) 'method) "ftp")
|
||||
(throw 'have-ange-path t))))))
|
||||
(throw 'eshell-replace-command
|
||||
(eshell-parse-command ext-du args))
|
||||
(eshell-parse-command (eshell-quote-argument ext-du) args))
|
||||
(eshell-eval-using-options
|
||||
"du" args
|
||||
'((?a "all" nil show-all
|
||||
|
|
|
|||
|
|
@ -202,6 +202,18 @@ If POS is nil, the location of point is checked."
|
|||
(or (= pos (point-max))
|
||||
(memq (char-after pos) eshell-delimiter-argument-list))))
|
||||
|
||||
(defun eshell-quote-argument (string)
|
||||
"Return STRING with magic characters quoted.
|
||||
Magic characters are those in `eshell-special-chars-outside-quoting'."
|
||||
(let ((index 0))
|
||||
(mapconcat (lambda (c)
|
||||
(prog1
|
||||
(or (eshell-quote-backslash string index)
|
||||
(char-to-string c))
|
||||
(setq index (1+ index))))
|
||||
string
|
||||
"")))
|
||||
|
||||
;; Argument parsing
|
||||
|
||||
(defun eshell-parse-arguments (beg end)
|
||||
|
|
|
|||
|
|
@ -108,7 +108,9 @@ wholly ignored."
|
|||
;; argument...
|
||||
(setcar args (subst-char-in-string ?/ ?\\ (car args)))
|
||||
(throw 'eshell-replace-command
|
||||
(eshell-parse-command eshell-windows-shell-file (cons "/c" args))))
|
||||
(eshell-parse-command
|
||||
(eshell-quote-argument eshell-windows-shell-file)
|
||||
(cons "/c" args))))
|
||||
|
||||
(defcustom eshell-interpreter-alist
|
||||
(if (eshell-under-windows-p)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue