]>
Commit | Line | Data |
---|---|---|
1 | #! /usr/bin/env perl | |
2 | # Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. | |
3 | # | |
4 | # Licensed under the Apache License 2.0 (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 | } |