From 576bce32675146e772183647c4750c1f5f9b7de7 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 19 Mar 2011 11:30:56 +0200 Subject: [PATCH] Fix emerge.el on MS-Windows and MS-DOS. lisp/emerge.el (emerge-metachars): Separate value for ms-dos and windows-nt systems. (emerge-protect-metachars): Quote correctly for ms-dos and windows-nt systems. --- lisp/ChangeLog | 7 +++++++ lisp/emerge.el | 23 ++++++++++++++--------- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 5bd208ba3c8..602b60c6aac 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2011-03-19 Eli Zaretskii + + * emerge.el (emerge-metachars): Separate value for ms-dos and + windows-nt systems. + (emerge-protect-metachars): Quote correctly for ms-dos and + windows-nt systems. + 2011-03-15 Ralph Schleicher * info.el (info-initialize): Replace all uses of `:' with diff --git a/lisp/emerge.el b/lisp/emerge.el index 997077aa08f..ffae5529e1c 100644 --- a/lisp/emerge.el +++ b/lisp/emerge.el @@ -3187,21 +3187,26 @@ See also `auto-save-file-name-p'." ;; Metacharacters that have to be protected from the shell when executing ;; a diff/diff3 command. -(defcustom emerge-metachars "[ \t\n!\"#$&'()*;<=>?[\\^`{|~]" - "Characters that must be quoted with \\ when used in a shell command line. +(defcustom emerge-metachars + (if (memq system-type '(ms-dos windows-nt)) + "[ \t\"<>|?*^&=]" + "[ \t\n!\"#$&'()*;<=>?[\\^`{|~]") + "Characters that must be quoted when used in a shell command line. More precisely, a [...] regexp to match any one such character." :type 'regexp :group 'emerge) ;; Quote metacharacters (using \) when executing a diff/diff3 command. (defun emerge-protect-metachars (s) - (let ((limit 0)) - (while (string-match emerge-metachars s limit) - (setq s (concat (substring s 0 (match-beginning 0)) - "\\" - (substring s (match-beginning 0)))) - (setq limit (1+ (match-end 0))))) - s) + (if (memq system-type '(ms-dos windows-nt)) + (shell-quote-argument s) + (let ((limit 0)) + (while (string-match emerge-metachars s limit) + (setq s (concat (substring s 0 (match-beginning 0)) + "\\" + (substring s (match-beginning 0)))) + (setq limit (1+ (match-end 0))))) + s)) (provide 'emerge) -- 2.39.2