diff options
Diffstat (limited to 'roms/edk2/CryptoPkg/Library/OpensslLib/openssl/util/copy.pl')
-rw-r--r-- | roms/edk2/CryptoPkg/Library/OpensslLib/openssl/util/copy.pl | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/roms/edk2/CryptoPkg/Library/OpensslLib/openssl/util/copy.pl b/roms/edk2/CryptoPkg/Library/OpensslLib/openssl/util/copy.pl new file mode 100644 index 000000000..58ecc82c4 --- /dev/null +++ b/roms/edk2/CryptoPkg/Library/OpensslLib/openssl/util/copy.pl @@ -0,0 +1,84 @@ +#! /usr/bin/env perl +# Copyright 2005-2018 The OpenSSL Project Authors. All Rights Reserved. +# +# Licensed under the OpenSSL license (the "License"). You may not use +# this file except in compliance with the License. You can obtain a copy +# in the file LICENSE in the source distribution or at +# https://www.openssl.org/source/license.html + + +use Fcntl; + + +# copy.pl + +# Perl script 'copy' comment. On Windows the built in "copy" command also +# copies timestamps: this messes up Makefile dependencies. + +my $stripcr = 0; + +my $arg; +my @excludes = (); + +foreach $arg (@ARGV) { + if ($arg eq "-stripcr") + { + $stripcr = 1; + next; + } + if ($arg =~ /^-exclude_re=(.*)$/) + { + push @excludes, $1; + next; + } + $arg =~ s|\\|/|g; # compensate for bug/feature in cygwin glob... + $arg = qq("$arg") if ($arg =~ /\s/); # compensate for bug in 5.10... + foreach my $f (glob $arg) + { + push @filelist, $f unless grep { $f =~ /$_/ } @excludes; + } +} + +$fnum = @filelist; + +if ($fnum <= 1) + { + die "Need at least two filenames"; + } + +$dest = pop @filelist; + +if ($fnum > 2 && ! -d $dest) + { + die "Destination must be a directory"; + } + +foreach (@filelist) + { + if (-d $dest) + { + $dfile = $_; + $dfile =~ s|^.*[/\\]([^/\\]*)$|$1|; + $dfile = "$dest/$dfile"; + } + else + { + $dfile = $dest; + } + sysopen(IN, $_, O_RDONLY|O_BINARY) || die "Can't Open $_"; + sysopen(OUT, $dfile, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY) + || die "Can't Open $dfile"; + while (sysread IN, $buf, 10240) + { + if ($stripcr) + { + $buf =~ tr/\015//d; + } + syswrite(OUT, $buf, length($buf)); + } + close(IN); + close(OUT); + print "Copying: $_ to $dfile\n"; + } + + |