| #! /usr/bin/env perl |
| # Copyright 2005-2018 The OpenSSL Project Authors. All Rights Reserved. |
| # |
| # Licensed under the Apache License 2.0 (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"; |
| } |
| |
| |