8 my $type = shift @ARGV;
9 if( $type =~ /^copy$/i ) {
12 if( $type =~ /^link$/i ) {
17 open (RPMOUT, "> filelist-rpm") or die;
27 ($line =~ m/^R...:(.*)/) && print RPMOUT $1 . "\n";
28 ($line =~ m/^..M.:(.*)/) && MakeDir( $1 );
29 ($line =~ m/^.C..:(.*)/) && ($copy) && CopyFile( $1 );
30 ($line =~ m/^.C..:(.*)/) && ($link) && LinkFile( $1 );
31 ($line =~ m/^R...:(.*)/) && ChangeAttrs( $1 );
35 my ($src, $dst) = ParseCLine( shift );
40 $dst .= "/" if ! ($dst=~m|/$|);
47 open INPUT, "<", $src or goto out1;
48 open OUTPUT, ">", $dst or goto out2;
49 while(<INPUT>){ print OUTPUT $_ }
52 print "Installed File: $dst\n";
60 my ($src, $dst) = ParseCLine( shift );
64 $dst .= "/" if ! ($dst=~m|/$|);
71 or warn "Linking $src to $dst failed $!\n";
72 print "Installed File: $dst\n";
79 $line =~ m/^(.*?)\s+(.*?)$/;
89 my @words = split( /\s+/, $line );
90 foreach my $word (@words) {
91 if( $word =~ /^\%(.*)/ ) {
92 push @directives, $word;
97 return \@retval, \@directives;
101 #R-M-: %attr(0755,root,ali) /opt/ali
104 #$line =~ m/\%attr\((.{1,5}),(\w+),(\w+)\)\s+(.*)/;
105 my ($file_ref, $directive_ref) = ParseRLine( $line );
107 my $dir = $file_ref->[0];
111 or warn "Make Dir: -->$dir<-- failed $!\n";
113 print "Made Dir: $dir\n";
118 my (undef, undef, $uid, undef) = getpwnam( $name ) ;
119 $uid = defined($uid) ? $uid : -1;
125 my (undef, undef, $gid, undef) = getgrnam( $name ) ;
126 $gid = defined($gid) ? $gid : -1;
133 my ($file_ref, $directive_ref) = ParseRLine( $line );
134 my ($attr) = grep { /^\%attr/ } @$directive_ref;
135 $attr =~ m/\%attr\((.{1,5}),(\w+),(\w+)\)/;
139 my $file = $file_ref->[0];
141 my $uid = GetUID($owner);
142 my $gid = GetGID($group);
144 chown $uid, $gid, $file;
145 chmod oct($perms), $file;