ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/src/Utilities/AddDir.pm
(Generate patch)

Comparing COMP/SCRAM/src/Utilities/AddDir.pm (file contents):
Revision 1.8 by sashby, Wed Feb 2 11:10:18 2005 UTC vs.
Revision 1.13 by muzaffar, Tue Nov 6 14:13:53 2007 UTC

# Line 1 | Line 1
1 + =head1 NAME
2 +
3 + Utilities::AddDir - Utility functions for creating or copying directories.
4 +
5 + =head1 SYNOPSIS
6 +
7 +        &Utilities::AddDir::adddir($dir);
8 +        &Utilities::AddDir::copydir($src,$dest);
9 +        &Utilities::AddDir::copydirwithskip($src,$dest,@files_to_skip);
10 +
11 + =head1 METHODS
12 +
13 + =over
14 +
15 + =cut
16 +
17   package AddDir;
18   require 5.001;
19   require Exporter;
20   use Cwd;
21   @ISA    = qw(Exporter);
22 < @EXPORT = qw(adddir copydir);
22 > @EXPORT = qw(adddir copydir copydirwithskip);
23  
24 + =item   C<adddir($dir)>
25 +
26 + Create a new directory.
27 +
28 + =cut
29  
30   sub adddir {
31   my $indir=shift;
# Line 19 | Line 40 | sub adddir {
40   foreach $dirname ( @dir ) {
41    next if ( $dirname eq "" );
42    if ( ! -e $dirname ) {
43 <   mkdir ( $dirname , 0775) ||
43 >   mkdir ( $dirname , 0755) ||
44                  die "cannot make directory ".$dirname." $!\n";
45     print $i." ".$dirname."\n" if $debug;
46    }
# Line 28 | Line 49 | sub adddir {
49   chdir $startdir;
50   }
51  
52 +
53 + =item   C<copydir($src, $dest)>
54 +
55 + Copy a directory $src and contents to $dest.
56 +
57 + =cut
58 +
59   sub copydir
60     {
61     my $src=shift;
# Line 54 | Line 82 | sub copydir
82           else
83              {
84              copy($src."/".$file,$dest."/".$file);
85 <            if ( -x $src."/".$file || -X $src."/".$file ) {chmod(0775,$dest."/".$file);}
85 >            if ( -x $src."/".$file || -X $src."/".$file ) {chmod(0755,$dest."/".$file);}
86              }
87           }
88        undef $dh;
# Line 65 | Line 93 | sub copydir
93        }
94     }
95  
96 + =item   C<copydirwithskip($src, $dest, @files_to_skip)>
97 +
98 + Recursively copy a directory $src to $dest. All files
99 + in @files_to_skip will be skipped.
100 +
101 + =cut
102 +
103   sub copydirwithskip
104     {
105     my $src=shift;
106     my $dest=shift;
107 <   my ($filetoskip)=@_;
107 >   my $filetoskip=shift || [];
108    
109     use DirHandle;
110     use File::Copy;
# Line 87 | Line 122 | sub copydirwithskip
122           {
123           next if $file=~/^\.\.?/;
124           # Skip backup files and x~ files:
125 <         next if $file =~ /.*bak$/;
125 >         next if $file =~ /.*\.bak$/;
126           next if $file =~ /.*~$/;
127  
128 <         if ($file eq $filetoskip)
128 >         my $skip=0;
129 >         foreach my $fskip (@$filetoskip)
130 >            {
131 >            my $fullfile = "${src}/${file}";
132 >            if ($fullfile eq $fskip)
133 >               {
134 >               $skip = 1;
135 >               last;
136 >               }
137 >            }
138 >         if ($skip)
139              {
140              next;
141              }
142          
143           if ( -d $src."/".$file )
144              {
145 <            copydir($src."/".$file,$dest."/".$file);
145 >            copydirwithskip($src."/".$file,$dest."/".$file,$filetoskip);
146              }
147           else
148              {
149              copy($src."/".$file,$dest."/".$file);
150 <            if ( -x $src."/".$file || -X $src."/".$file ) {chmod(0775,$dest."/".$file);}
150 >            if ( -x $src."/".$file || -X $src."/".$file ) {chmod(0755,$dest."/".$file);}
151              }
152           }
153        undef $dh;
# Line 112 | Line 157 | sub copydirwithskip
157        die "Attempt to open a non-existent directory ($src). Exitting\n";
158        }
159     }
160 +
161 + =back
162 +
163 + =head1 AUTHOR
164 +
165 + Originally written by Christopher Williams.
166 +
167 + =head1 MAINTAINER
168 +
169 + Shaun ASHBY
170 +
171 + =cut
172 +

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines