xref: /freebsd/crypto/openssl/util/copy.pl (revision 9a14aa017b21c292740c00ee098195cd46642730)
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 $stripcr = 0;
12
13my $arg;
14
15foreach $arg (@ARGV) {
16	if ($arg eq "-stripcr")
17		{
18		$stripcr = 1;
19		next;
20		}
21	$arg =~ s|\\|/|g;	# compensate for bug/feature in cygwin glob...
22	foreach (glob $arg)
23		{
24		push @filelist, $_;
25		}
26}
27
28$fnum = @filelist;
29
30if ($fnum <= 1)
31	{
32	die "Need at least two filenames";
33	}
34
35$dest = pop @filelist;
36
37if ($fnum > 2 && ! -d $dest)
38	{
39	die "Destination must be a directory";
40	}
41
42foreach (@filelist)
43	{
44	if (-d $dest)
45		{
46		$dfile = $_;
47		$dfile =~ s|^.*[/\\]([^/\\]*)$|$1|;
48		$dfile = "$dest/$dfile";
49		}
50	else
51		{
52		$dfile = $dest;
53		}
54	sysopen(IN, $_, O_RDONLY|O_BINARY) || die "Can't Open $_";
55	sysopen(OUT, $dfile, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY)
56					|| die "Can't Open $dfile";
57	while (sysread IN, $buf, 10240)
58		{
59		if ($stripcr)
60			{
61			$buf =~ tr/\015//d;
62			}
63		syswrite(OUT, $buf, length($buf));
64		}
65	close(IN);
66	close(OUT);
67	print "Copying: $_ to $dfile\n";
68	}
69
70
71