aboutsummaryrefslogtreecommitdiffstats
path: root/Tools/scripts
diff options
context:
space:
mode:
authorgreen <green@FreeBSD.org>2001-03-13 09:53:04 +0800
committergreen <green@FreeBSD.org>2001-03-13 09:53:04 +0800
commitb43c51f3309f3cf98c103e870fc79049abee836e (patch)
tree81fe0012cd85388b0876cb2a348f348941d8f5d4 /Tools/scripts
parenteb4b9b729c9016c7ec2257d7f3b468c8b4f523a0 (diff)
downloadfreebsd-ports-gnome-b43c51f3309f3cf98c103e870fc79049abee836e.tar.gz
freebsd-ports-gnome-b43c51f3309f3cf98c103e870fc79049abee836e.tar.zst
freebsd-ports-gnome-b43c51f3309f3cf98c103e870fc79049abee836e.zip
Make plist work again with new-found use of line continuation in
mtree files.
Diffstat (limited to 'Tools/scripts')
-rwxr-xr-xTools/scripts/plist25
1 files changed, 16 insertions, 9 deletions
diff --git a/Tools/scripts/plist b/Tools/scripts/plist
index 573a3ca21222..04feddf1456a 100755
--- a/Tools/scripts/plist
+++ b/Tools/scripts/plist
@@ -42,35 +42,42 @@ class Mtree
@paths = []
@curlevel = []
@strip = strip.to_i
+ @cont = false
self
end
def parse_line(line)
- line.gsub!(/^[[:space:]]*(.*?)[[:space:]]*$/, '\1')
line.chomp!
- case line
- when ''
+ spline = line.split
+ oldcont = @cont
+ @cont = line[-1, 1] == "\\"
+ case spline[0]
+ when nil
when /^[\/#]/
# ignore "command" lines and comments
when '..'
+ if oldcont
+ raise 'continued line has a .. directive?!'
+ end
if @curlevel.pop.nil?
raise '".." with no previous directory'
end
else
- line = line.split
- @curlevel.push(line[0])
- @paths.push(@curlevel.dup)
+ if !oldcont
+ @curlevel.push(spline[0])
+ @paths.push(@curlevel.dup)
+ end
end
self
end
def Mtree.read(filename)
m = Mtree.new
open(filename, 'r') {|file|
- file.each_line {|line| m.parse_line(line)}
+ file.each_line {|line| m.parse_line(line)}
}
m
end
- def paths
- @paths.collect {|path| path[@strip..-1].join('/')}
+ def paths(strip = @strip)
+ @paths.collect {|path| path[strip..-1].join('/')}
end
end