diff options
author | Bryan Kearney <bkearney@redhat.com> | 2010-03-22 08:36:07 -0400 |
---|---|---|
committer | test branch <puppet-dev@googlegroups.com> | 2010-02-17 06:50:53 -0800 |
commit | a8245d86f8d2bd94714cf1fd7654b662208faa0e (patch) | |
tree | dc91b1d561bbd2f75cfffc5cefc3f2d0b20c9c29 /lib | |
parent | 98581ad9d70b5c7a5fe65aee7117b6a92dab50fb (diff) | |
download | puppet-a8245d86f8d2bd94714cf1fd7654b662208faa0e.tar.gz puppet-a8245d86f8d2bd94714cf1fd7654b662208faa0e.tar.xz puppet-a8245d86f8d2bd94714cf1fd7654b662208faa0e.zip |
Handle path elements with ticks and spaces
Diffstat (limited to 'lib')
-rw-r--r-- | lib/puppet/provider/augeas/augeas.rb | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/puppet/provider/augeas/augeas.rb b/lib/puppet/provider/augeas/augeas.rb index 0f1503a2f..dde676c39 100644 --- a/lib/puppet/provider/augeas/augeas.rb +++ b/lib/puppet/provider/augeas/augeas.rb @@ -82,18 +82,24 @@ Puppet::Type.type(:augeas).provide(:augeas) do if f == :path start = sc.pos nbracket = 0 + inSingleTick = false + inDoubleTick = false begin - sc.skip(/([^\]\[\s\\]|\\.)+/) + sc.skip(/([^\]\[\s\\'"]|\\.)+/) ch = sc.getch nbracket += 1 if ch == "[" nbracket -= 1 if ch == "]" + inSingleTick = !inSingleTick if ch == "'" + inDoubleTick = !inDoubleTick if ch == "\"" fail("unmatched [") if nbracket < 0 - end until nbracket == 0 && (sc.eos? || ch =~ /\s/) + end until ((nbracket == 0 && !inSingleTick && !inDoubleTick && (ch =~ /\s/)) || sc.eos?) len = sc.pos - start len -= 1 unless sc.eos? unless p = sc.string[start, len] fail("missing path argument #{narg} for #{cmd}") end + # Rip off any ticks if they are there. + p = p[1, (p.size - 2)] if p[0,1] == "'" || p[0,1] == "\"" p.chomp!("/") if p[0,1] != "$" && p[0,1] != "/" argline << context + p |