#!/usr/bin/perl # Scott Harrison # November 2000 # Read in loncapa tags and metagroup tags # -------------------------------------------- Read in command line arguments my ($file,$mode)=@ARGV; # -------------------------------------------- Read in master data file open IN,"<$file"; my @lines=; close IN; my $info=join('',@lines); my $info2=$info; # value to allow for meta data group retrieval my %ihash; # big data storage object while ($info=~/\/isg) { my $keystring=$1; my %hash=map {my ($key,$value)=split(/\=(?!")|\=(?=\s*"[^"]*"[^"]*$)/); $value=~s/^"//; $value=~s/"$//; (uc($key),$value);} split(/\s+(?=\w+\s*\=)/,$keystring); if (uc($hash{'TYPE'}) eq "OWNERSHIP") { $info{$hash{'TYPE'}}{$hash{'CATEGORY'}}{'CHMOD'}=$hash{'CHMOD'}; $info{$hash{'TYPE'}}{$hash{'CATEGORY'}}{'CHOWN'}=$hash{'CHOWN'}; } elsif (uc($hash{'TYPE'}) eq "DEVOWNERSHIP") { $info{$hash{'TYPE'}}{$hash{'CATEGORY'}}{'CHMOD'}=$hash{'CHMOD'}; $info{$hash{'TYPE'}}{$hash{'CATEGORY'}}{'CHOWN'}=$hash{'CHOWN'}; } elsif (uc($hash{'TYPE'}) eq "RPM") { $hash{'VALUE'}=~s/\\n/\n/g; $info{$hash{'TYPE'}}{$hash{'NAME'}}=$hash{'VALUE'}; } elsif (uc($hash{'TYPE'}) eq "DIRECTORY") { $info{$hash{'TYPE'}}{$hash{'DIST'}}{$hash{'TARGET'}}{'CATEGORY'}=$hash{'CATEGORY'}; $info{$hash{'TYPE'}}{$hash{'DIST'}}{$hash{'TARGET'}}{'DESCRIPTION'}=$hash{'DESCRIPTION'} if $hash{'DESCRIPTION'}; } elsif (uc($hash{'TYPE'}) eq "LOCATION") { $info{$hash{'TYPE'}}{$hash{'DIST'}}{$hash{'TARGET'}}{'CATEGORY'}=$hash{'CATEGORY'}; $info{$hash{'TYPE'}}{$hash{'DIST'}}{$hash{'TARGET'}}{'SOURCE'}=$hash{'SOURCE'}; # get surrounding metagroup information my $ckeystring=$keystring; $ckeystring=~s/(SOURCE\=\"[^"]*)\*/$1\\\*/g; $info2=~/.*\<(?:metagroup|metasupergroup)\>(.*?)\(.*?)\<\/(?:metagroup|metasupergroup)\>/is; my $data=$1.$2; my @meta=('description','build','dependencies','files','note'); foreach my $m (@meta) { if ($data=~/\<($m)\>(.*?)\<\/$m\>/sgi) { my ($key,$value)=($1,$2); $info{$hash{'TYPE'}}{$hash{'DIST'}}{$hash{'TARGET'}}{$key}=$value; # print "$key\n\n$value\n\n\n\n"; } } } else { warn("WARNING: this tag text will be ignored since it cannot be understood\n---> $keystring\n"); } }