1: #!/usr/bin/perl
2:
3: # Scott Harrison
4: # May 2001
5: # 06/19/2001 - Scott Harrison
6:
7: use HTML::TokeParser;
8:
9: my $target = shift @ARGV;
10: my $dist = shift @ARGV;
11:
12: my @parsecontents = <>;
13: my $parsestring = join('',@parsecontents);
14: my $outstring;
15:
16: $outstring = &xmlparse($parsestring,$target,$dist);
17: print $outstring;
18:
19: # -------------------------- Parse for an input string and specific target mode
20: sub xmlparse {
21: my ($parsestring,$target,$dist)=@_;
22: my $outtext = '';
23: my $parser = HTML::TokeParser->new($parsestring);
24: $parser->xml_mode('1');
25: # strategy: grab first and pass well-parsed information to info-handler subroutines
26: # There should be errors if bad file format.
27: # Unlike other XML-handling strategies we use, this script should
28: # terminate if the XML is bad.
29: # grab first (and only) lpml section
30: # grab target(s) root
31: # grab source root
32: # grab categories
33: # foreach category
34: # attributes: name and type
35: # grab chown
36: # grab chmod
37: # parse user name and group name
38: # grab rpm (remember to replace \n with real new lines)
39: # grab rpmSummary
40: # grab rpmName
41: # grab rpmVersion
42: # grab rpmRelease
43: # grab rpmVendor
44: # grab rpmBuildRoot
45: # grab rpmCopyright
46: # grab rpmGroup
47: # grab rpmSource
48: # grab rpmAutoReqProv
49: # grab rpmdescription
50: # grab rpmpre
51: # grab directories
52: # foreach directory
53: # grab targetdir(s)
54: # grab categoryname
55: # grab (optional) description
56: # grab files
57: # foreach file|link|link|fileglob
58: # grab source
59: # grab target(s)
60: # grab categoryname
61: # grab description
62: # grab note
63: }
64:
65: __END__
66:
67: while (my $token = $p->get_tag("category")) {
68: my $url = $token->[1]{name} . $token->[1]{type};
69: my $chmodtoken=$p->get_tag("chmod");
70: my $text = $p->get_trimmed_text("/chmod");
71: print "CHMOD: $text\n";
72: my $text = $p->get_trimmed_text("/category");
73: print "$url\t$text\t".join(" ",@{$token->[2]})."\n";
74: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>