| lh | 9ed821d | 2023-04-07 01:36:19 -0700 | [diff] [blame] | 1 | #! /usr/bin/env perl | 
|  | 2 | # Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. | 
|  | 3 | # | 
|  | 4 | # Licensed under the OpenSSL license (the "License").  You may not use | 
|  | 5 | # this file except in compliance with the License.  You can obtain a copy | 
|  | 6 | # in the file LICENSE in the source distribution or at | 
|  | 7 | # https://www.openssl.org/source/license.html | 
|  | 8 |  | 
|  | 9 | # On some systems, the -p option to mkdir (= also create any missing parent | 
|  | 10 | # directories) is not available. | 
|  | 11 |  | 
|  | 12 | my $arg; | 
|  | 13 |  | 
|  | 14 | foreach $arg (@ARGV) { | 
|  | 15 | $arg =~ tr|\\|/|; | 
|  | 16 | &do_mkdir_p($arg); | 
|  | 17 | } | 
|  | 18 |  | 
|  | 19 |  | 
|  | 20 | sub do_mkdir_p { | 
|  | 21 | local($dir) = @_; | 
|  | 22 |  | 
|  | 23 | $dir =~ s|/*\Z(?!\n)||s; | 
|  | 24 |  | 
|  | 25 | if (-d $dir) { | 
|  | 26 | return; | 
|  | 27 | } | 
|  | 28 |  | 
|  | 29 | if ($dir =~ m|[^/]/|s) { | 
|  | 30 | local($parent) = $dir; | 
|  | 31 | $parent =~ s|[^/]*\Z(?!\n)||s; | 
|  | 32 |  | 
|  | 33 | do_mkdir_p($parent); | 
|  | 34 | } | 
|  | 35 |  | 
|  | 36 | unless (mkdir($dir, 0777)) { | 
|  | 37 | local($err) = $!; | 
|  | 38 | if (-d $dir) { | 
|  | 39 | # We raced against another instance doing the same thing. | 
|  | 40 | return; | 
|  | 41 | } | 
|  | 42 | die "Cannot create directory $dir: $err\n"; | 
|  | 43 | } | 
|  | 44 | print "created directory `$dir'\n"; | 
|  | 45 | } |