
1: #!/usr/local/bin/perl 2: 3: use Fcntl; 4: 5: 6: # copy.pl 7: 8: # Perl script 'copy' comment. On Windows the built in "copy" command also 9: # copies timestamps: this messes up Makefile dependencies. 10: 11: my $arg; 12: 13: foreach $arg (@ARGV) { 14: $arg =~ s|\\|/|g; # compensate for bug/feature in cygwin glob... 15: foreach (glob $arg) 16: { 17: push @filelist, $_; 18: } 19: } 20: 21: $fnum = @filelist; 22: 23: if ($fnum <= 1) 24: { 25: die "Need at least two filenames"; 26: } 27: 28: $dest = pop @filelist; 29: 30: if ($fnum > 2 && ! -d $dest) 31: { 32: die "Destination must be a directory"; 33: } 34: 35: foreach (@filelist) 36: { 37: if (-d $dest) 38: { 39: $dfile = $_; 40: $dfile =~ s|^.*[/\\]([^/\\]*)$|$1|; 41: $dfile = "$dest/$dfile"; 42: } 43: else 44: { 45: $dfile = $dest; 46: } 47: sysopen(IN, $_, O_RDONLY|O_BINARY) || die "Can't Open $_"; 48: sysopen(OUT, $dfile, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY) 49: || die "Can't Open $dfile"; 50: while (sysread IN, $buf, 10240) 51: { 52: syswrite(OUT, $buf, length($buf)); 53: } 54: close(IN); 55: close(OUT); 56: print "Copying: $_ to $dfile\n"; 57: } 58: 59: