Add portable shell-quoting function; teach mq to use it.
--- a/hgext/mq.py Sun Aug 06 16:03:02 2006 +0200
+++ b/hgext/mq.py Sat Aug 05 15:23:26 2006 -0700
@@ -272,8 +272,8 @@
patchfile: file name of patch'''
try:
pp = util.find_in_path('gpatch', os.environ.get('PATH', ''), 'patch')
- f = os.popen("%s -d '%s' -p1 --no-backup-if-mismatch < '%s'" %
- (pp, repo.root, patchfile))
+ f = os.popen("%s -d %s -p1 --no-backup-if-mismatch < %s" %
+ (pp, util.shellquote(repo.root), util.shellquote(patchfile)))
except:
self.ui.warn("patch failed, unable to continue (try -v)\n")
return (None, [], False)
--- a/mercurial/util.py Sun Aug 06 16:03:02 2006 +0200
+++ b/mercurial/util.py Sat Aug 05 15:23:26 2006 -0700
@@ -611,6 +611,9 @@
def samestat(s1, s2):
return False
+ def shellquote(s):
+ return '"%s"' % s.replace('"', '\\"')
+
def explain_exit(code):
return _("exited with status %d") % code, code
@@ -700,6 +703,9 @@
else:
raise
+ def shellquote(s):
+ return "'%s'" % s.replace("'", "'\\''")
+
def testpid(pid):
'''return False if pid dead, True if running or not sure'''
try: