aboutsummaryrefslogtreecommitdiff
path: root/Tools
diff options
context:
space:
mode:
authorBrian Feldman <green@FreeBSD.org>2001-03-13 01:53:04 +0000
committerBrian Feldman <green@FreeBSD.org>2001-03-13 01:53:04 +0000
commit9725d8378f3c2f1cf975b7fbcccee05b161b3437 (patch)
treec0f1cecee650d315733c564191c620c3a99db88b /Tools
parent3b3e0c7e50125ab4a2a67f826c55f82b8fd1f643 (diff)
downloadports-9725d8378f3c2f1cf975b7fbcccee05b161b3437.tar.gz
ports-9725d8378f3c2f1cf975b7fbcccee05b161b3437.zip
Notes
Diffstat (limited to 'Tools')
-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