GNU bug report logs - #6136
Emerge doesn't handle file names with spaces on MS Windows

Previous Next

Package: emacs;

Reported by: Joakim Hårsman <joakim.harsman <at> gmail.com>

Date: Fri, 7 May 2010 19:30:02 UTC

Severity: normal

Fixed in versions 23.3.90, 25.2

Done: npostavs <at> users.sourceforge.net

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Joakim Hårsman <joakim.harsman <at> gmail.com>
To: 6136 <at> debbugs.gnu.org
Subject: bug#6136: Emerge doesn't handle file names with spaces on MS Windows
Date: Fri, 7 May 2010 21:19:36 +0200
If any of the file names supplied to Emerge (e.g to
emerge-files-with-ancestor) has spaces in in its path and Emacs is
running on MS Windows, the merge fails.

The problem is the way Emerge passes the file names to diff, it tries
to escape spaces (and other metchars) with backslashes, but that
doesn't work on MS Windows since the backslash is a path separator
there.

If I change the definition of emerge-protect-metachars to the
following it works:

(defun emerge-protect-metachars (s)
  (if (member system-type '(windows-nt ms-dos))
      (emerge-protect-metachars-win s)
    (emerge-protect-metachars-nix s)))

(defun emerge-protect-metachars-nix (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)

(defun emerge-protect-metachars-win (s)
  (concat "\"" s "\""))


Here's some output which might be useful:
GNU Emacs 23.1.1 (i386-mingw-nt5.1.2600) of 2009-07-30 on SOFT-MJASON





This bug report was last modified 8 years and 293 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.