diff options
author | Brian Feldman <green@FreeBSD.org> | 2001-03-13 01:53:04 +0000 |
---|---|---|
committer | Brian Feldman <green@FreeBSD.org> | 2001-03-13 01:53:04 +0000 |
commit | 9725d8378f3c2f1cf975b7fbcccee05b161b3437 (patch) | |
tree | c0f1cecee650d315733c564191c620c3a99db88b /Tools/scripts | |
parent | 3b3e0c7e50125ab4a2a67f826c55f82b8fd1f643 (diff) |
Notes
Diffstat (limited to 'Tools/scripts')
-rwxr-xr-x | Tools/scripts/plist | 25 |
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 |