File: mkdir-p.pl

package info (click to toggle)
openssl 0.9.8c-4etch9
  • links: PTS
  • area: main
  • in suites: etch
  • size: 19,340 kB
  • ctags: 26,395
  • sloc: ansic: 203,603; perl: 18,445; makefile: 10,732; asm: 10,675; cpp: 4,379; sh: 2,925; lisp: 23
file content (34 lines) | stat: -rwxr-xr-x 550 bytes parent folder | download | duplicates (12)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/local/bin/perl

# mkdir-p.pl

# 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);
  }

  mkdir($dir, 0777) || die "Cannot create directory $dir: $!\n";
  print "created directory `$dir'\n";
}