| #! /usr/bin/env perl |
| # Copyright 1999-2021 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 |
| |
| # On some systems, the -p option to mkdir (= also create any missing parent |
| # directories) is not available. |
| |
| my $arg; |
| |
| foreach $arg (@ARGV) { |
| $arg =~ tr|\\|/|; |
| &do_mkdir_p($arg); |
| } |
| |
| |
| sub do_mkdir_p { |
| local($dir) = @_; |
| |
| $dir =~ s|/*\Z(?!\n)||s; |
| |
| if (-d $dir) { |
| return; |
| } |
| |
| if ($dir =~ m|[^/]/|s) { |
| local($parent) = $dir; |
| $parent =~ s|[^/]*\Z(?!\n)||s; |
| |
| do_mkdir_p($parent); |
| } |
| |
| unless (mkdir($dir, 0777)) { |
| local($err) = $!; |
| if (-d $dir) { |
| # We raced against another instance doing the same thing. |
| return; |
| } |
| die "Cannot create directory $dir: $err\n"; |
| } |
| print "created directory `$dir'\n"; |
| } |