xref: /freebsd/crypto/openssl/util/copy.pl (revision 1e413cf93298b5b97441a21d9a50fdcd0ee9945e)
1#!/usr/local/bin/perl
2
3use 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
11my $arg;
12
13foreach $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
23if ($fnum <= 1)
24	{
25	die "Need at least two filenames";
26	}
27
28$dest = pop @filelist;
29
30if ($fnum > 2 && ! -d $dest)
31	{
32	die "Destination must be a directory";
33	}
34
35foreach (@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
60