aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNoam Postavsky2016-08-06 09:51:15 -0400
committerNoam Postavsky2016-08-06 16:16:02 -0400
commitff400557e8d28d53d745f04268a35fb3e3e3ddf8 (patch)
tree80cb00184fa15fa0017371199a86eefd86820124
parentb593ea1f9b7068c03fe6527a3cb6d5e1b2cd9736 (diff)
downloademacs-ff400557e8d28d53d745f04268a35fb3e3e3ddf8.tar.gz
emacs-ff400557e8d28d53d745f04268a35fb3e3e3ddf8.zip
Make emerge always use shell-quote-argument
* lisp/vc/emerge.el (emerge-metachars): Obsolete. (emerge-protect-metachars): Delete. (emerge-make-diff-list, emerge-make-diff3-list): Replace all calls to `emerge-protect-metachars' with `shell-quote-argument' so that shell quoting is done the same on all system types (Bug #6136). Also shell quote `emerge-diff-program' and `emerge-diff3-program'.
-rw-r--r--lisp/vc/emerge.el37
1 files changed, 12 insertions, 25 deletions
diff --git a/lisp/vc/emerge.el b/lisp/vc/emerge.el
index de25cbafb0d..058b15c206d 100644
--- a/lisp/vc/emerge.el
+++ b/lisp/vc/emerge.el
@@ -621,9 +621,10 @@ This is *not* a user option, since Emerge uses it for its own processing.")
621 (erase-buffer) 621 (erase-buffer)
622 (shell-command 622 (shell-command
623 (format "%s %s %s %s" 623 (format "%s %s %s %s"
624 emerge-diff-program emerge-diff-options 624 (shell-quote-argument emerge-diff-program)
625 (emerge-protect-metachars file-A) 625 emerge-diff-options
626 (emerge-protect-metachars file-B)) 626 (shell-quote-argument file-A)
627 (shell-quote-argument file-B))
627 t)) 628 t))
628 (emerge-prepare-error-list emerge-diff-ok-lines-regexp) 629 (emerge-prepare-error-list emerge-diff-ok-lines-regexp)
629 (emerge-convert-diffs-to-markers 630 (emerge-convert-diffs-to-markers
@@ -792,10 +793,11 @@ This is *not* a user option, since Emerge uses it for its own processing.")
792 (erase-buffer) 793 (erase-buffer)
793 (shell-command 794 (shell-command
794 (format "%s %s %s %s %s" 795 (format "%s %s %s %s %s"
795 emerge-diff3-program emerge-diff-options 796 (shell-quote-argument emerge-diff3-program)
796 (emerge-protect-metachars file-A) 797 emerge-diff-options
797 (emerge-protect-metachars file-ancestor) 798 (shell-quote-argument file-A)
798 (emerge-protect-metachars file-B)) 799 (shell-quote-argument file-ancestor)
800 (shell-quote-argument file-B))
799 t)) 801 t))
800 (emerge-prepare-error-list emerge-diff3-ok-lines-regexp) 802 (emerge-prepare-error-list emerge-diff3-ok-lines-regexp)
801 (emerge-convert-diffs-to-markers 803 (emerge-convert-diffs-to-markers
@@ -3171,26 +3173,11 @@ See also `auto-save-file-name-p'."
3171 3173
3172;; Metacharacters that have to be protected from the shell when executing 3174;; Metacharacters that have to be protected from the shell when executing
3173;; a diff/diff3 command. 3175;; a diff/diff3 command.
3174(defcustom emerge-metachars 3176(defcustom emerge-metachars nil
3175 (if (memq system-type '(ms-dos windows-nt)) 3177 "Obsolete, emerge now uses `shell-quote-argument'."
3176 "[ \t\"<>|?*^&=]"
3177 "[ \t\n!\"#$&'()*;<=>?[\\^`{|~]")
3178 "Characters that must be quoted when used in a shell command line.
3179More precisely, a [...] regexp to match any one such character."
3180 :type 'regexp 3178 :type 'regexp
3181 :group 'emerge) 3179 :group 'emerge)
3182 3180(make-obsolete-variable 'emerge-metachars nil "25.2")
3183;; Quote metacharacters (using \) when executing a diff/diff3 command.
3184(defun emerge-protect-metachars (s)
3185 (if (memq system-type '(ms-dos windows-nt))
3186 (shell-quote-argument s)
3187 (let ((limit 0))
3188 (while (string-match emerge-metachars s limit)
3189 (setq s (concat (substring s 0 (match-beginning 0))
3190 "\\"
3191 (substring s (match-beginning 0))))
3192 (setq limit (1+ (match-end 0)))))
3193 s))
3194 3181
3195(provide 'emerge) 3182(provide 'emerge)
3196 3183