For bug #177591, increase shell compatibility by preserving quotes in varexpand(...
authorZac Medico <zmedico@gentoo.org>
Wed, 9 May 2007 22:59:35 +0000 (22:59 -0000)
committerZac Medico <zmedico@gentoo.org>
Wed, 9 May 2007 22:59:35 +0000 (22:59 -0000)
svn path=/main/branches/2.1.2/; revision=6510

pym/portage_util.py

index cc5a566b8f074ea70b7aa8ddcf8fd77f7e6a077f..ec359e206a8d066ff6b6ff7cc6d2cfa0b39c222a 100644 (file)
@@ -351,13 +351,13 @@ def getconfig(mycfg, tolerant=0, allow_sourcing=False, expand=True):
        
 #cache expansions of constant strings
 cexpand={}
-def varexpand(mystring,mydict={}):
+def varexpand(mystring, mydict={}):
        newstring = cexpand.get(" "+mystring, None)
        if newstring is not None:
                return newstring
 
        """
-       new variable expansion code.  Removes quotes, handles \n, etc.
+       new variable expansion code.  Preserves quotes, handles \n, etc.
        This code is used by the configfile code, as well as others (parser)
        This would be a good bunch of code to port to C.
        """
@@ -373,6 +373,7 @@ def varexpand(mystring,mydict={}):
                        if (indoub):
                                newstring=newstring+"'"
                        else:
+                               newstring += "'" # Quote removal is handled by shlex.
                                insing=not insing
                        pos=pos+1
                        continue
@@ -380,6 +381,7 @@ def varexpand(mystring,mydict={}):
                        if (insing):
                                newstring=newstring+'"'
                        else:
+                               newstring += '"' # Quote removal is handled by shlex.
                                indoub=not indoub
                        pos=pos+1
                        continue