diff options
| author | Noam Postavsky | 2016-08-06 09:51:15 -0400 |
|---|---|---|
| committer | Noam Postavsky | 2016-08-06 16:16:02 -0400 |
| commit | ff400557e8d28d53d745f04268a35fb3e3e3ddf8 (patch) | |
| tree | 80cb00184fa15fa0017371199a86eefd86820124 | |
| parent | b593ea1f9b7068c03fe6527a3cb6d5e1b2cd9736 (diff) | |
| download | emacs-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.el | 37 |
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. | ||
| 3179 | More 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 | ||