From: Jay Soffian Date: Mon, 07 Jun 2010 05:10:32 GMT Subject: Re: [PATCH] Put quotes around branch names to prevent special characters from being interpreted by the shell. Message-ID: In-Reply-To: <20100606215505.GB6993@coredump.intra.peff.net> On Sun, Jun 6, 2010 at 5:55 PM, Jeff King wrote: > On Fri, Jun 04, 2010 at 11:53:20AM -0400, Benjamin C Meyer wrote: > >> Perforce branch names with spaces (and other special characters) were >> causing issues. >> [...] >> -            details = p4Cmd("branch -o %s" % info["branch"]) >> +            details = p4Cmd("branch -o \"%s\"" % info["branch"]) > > Won't this still fail if your branch name contains quotation marks or > backslashes? Does python have some equivalent to perl's quotemeta to > just shell-escape the problematic characters from commands import mkarg mkarg(arg) will enclose arg in single quotes if it contains none; else it will enclose arg in double quotes and backslash escape shell meta characters (any of \ $ " `). BTW, quotemeta is technically intended for use with regular expressions, isn't it? > (or even a way of just > using a straight list in p4Cmd and avoiding the shell altogether)? The subprocess module. > I know those characters may not be common, but if we are going to quote, > perhaps we should make it foolproof. +1. j.