summaryrefslogtreecommitdiffstats
path: root/pym/portage/util/__init__.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2010-09-25 14:56:05 -0700
committerZac Medico <zmedico@gentoo.org>2010-09-25 14:56:05 -0700
commit03cbb6c1d2a08d478dfbe8235d5e4ed47c9574ab (patch)
treeed24be7e819a135879f6127389fbe59ef91abc01 /pym/portage/util/__init__.py
parentf22d13e4ecfb472b0bfc20f19bd40c8fc4603f74 (diff)
downloadportage-03cbb6c1d2a08d478dfbe8235d5e4ed47c9574ab.tar.gz
portage-03cbb6c1d2a08d478dfbe8235d5e4ed47c9574ab.tar.bz2
portage-03cbb6c1d2a08d478dfbe8235d5e4ed47c9574ab.zip
Fix varexpand() so that it doesn't do redundant quote removal that
is already handled by shlex. This fixes a bug in getconfig() which caused it to remove backslash characters it front of quote characters in cases where bash would have preserved them when sourcing the same input.
Diffstat (limited to 'pym/portage/util/__init__.py')
-rw-r--r--pym/portage/util/__init__.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/pym/portage/util/__init__.py b/pym/portage/util/__init__.py
index 9542826b2..8ba6b6c81 100644
--- a/pym/portage/util/__init__.py
+++ b/pym/portage/util/__init__.py
@@ -656,8 +656,14 @@ def varexpand(mystring, mydict=None):
newstring=newstring+chr(0o11)
elif a=='v':
newstring=newstring+chr(0o13)
+ elif a in ('\'', '"'):
+ # Quote removal is handled by shlex.
+ newstring = newstring + mystring[pos-2:pos]
+ continue
elif a!='\n':
- #remove backslash only, as bash does: this takes care of \\ and \' and \" as well
+ # Remove backslash only, as bash does. This takes care
+ # of \\. Note that we don't handle quotes here since
+ # quote remoal is handled by shlex.
newstring=newstring+mystring[pos-1:pos]
continue
elif (mystring[pos]=="$") and (mystring[pos-1]!="\\"):