xref: /aoo4110/main/solenv/bin/mkdir.pl (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski: # -*- perl -*-
2*b1cdbd2cSJim Jagielskieval 'exec perl -wS $0 ${1+"$@"}'
3*b1cdbd2cSJim Jagielski    if 0;
4*b1cdbd2cSJim Jagielski#**************************************************************
5*b1cdbd2cSJim Jagielski#
6*b1cdbd2cSJim Jagielski#  Licensed to the Apache Software Foundation (ASF) under one
7*b1cdbd2cSJim Jagielski#  or more contributor license agreements.  See the NOTICE file
8*b1cdbd2cSJim Jagielski#  distributed with this work for additional information
9*b1cdbd2cSJim Jagielski#  regarding copyright ownership.  The ASF licenses this file
10*b1cdbd2cSJim Jagielski#  to you under the Apache License, Version 2.0 (the
11*b1cdbd2cSJim Jagielski#  "License"); you may not use this file except in compliance
12*b1cdbd2cSJim Jagielski#  with the License.  You may obtain a copy of the License at
13*b1cdbd2cSJim Jagielski#
14*b1cdbd2cSJim Jagielski#    http://www.apache.org/licenses/LICENSE-2.0
15*b1cdbd2cSJim Jagielski#
16*b1cdbd2cSJim Jagielski#  Unless required by applicable law or agreed to in writing,
17*b1cdbd2cSJim Jagielski#  software distributed under the License is distributed on an
18*b1cdbd2cSJim Jagielski#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
19*b1cdbd2cSJim Jagielski#  KIND, either express or implied.  See the License for the
20*b1cdbd2cSJim Jagielski#  specific language governing permissions and limitations
21*b1cdbd2cSJim Jagielski#  under the License.
22*b1cdbd2cSJim Jagielski#
23*b1cdbd2cSJim Jagielski#**************************************************************
24*b1cdbd2cSJim Jagielski#
25*b1cdbd2cSJim Jagielski# mkdir - a perl script to substitute mkdir -p
26*b1cdbd2cSJim Jagielski# accepts "/", ":", and "\" as delimiters of subdirectories
27*b1cdbd2cSJim Jagielski# options -p (for compatibility)
28*b1cdbd2cSJim Jagielski#         -mode mode
29*b1cdbd2cSJim Jagielski#
30*b1cdbd2cSJim Jagielski
31*b1cdbd2cSJim Jagielskiuse Cwd;
32*b1cdbd2cSJim Jagielski
33*b1cdbd2cSJim Jagielski$currdir = cwd;
34*b1cdbd2cSJim Jagielski
35*b1cdbd2cSJim Jagielski$MODE = 00777 ;
36*b1cdbd2cSJim Jagielski
37*b1cdbd2cSJim Jagielskiwhile ( $#ARGV >= 0 ) {
38*b1cdbd2cSJim Jagielski	if ( $ARGV[0] eq "-mode" ) {
39*b1cdbd2cSJim Jagielski		$MODE = oct $ARGV[1] ;
40*b1cdbd2cSJim Jagielski		shift @ARGV ;
41*b1cdbd2cSJim Jagielski		shift @ARGV ;
42*b1cdbd2cSJim Jagielski		}
43*b1cdbd2cSJim Jagielski	elsif ( $ARGV[0] eq "-p" ) {
44*b1cdbd2cSJim Jagielski		shift @ARGV ;
45*b1cdbd2cSJim Jagielski        # -p does not do anything, it's supported just for compatibility
46*b1cdbd2cSJim Jagielski		}
47*b1cdbd2cSJim Jagielski	else {
48*b1cdbd2cSJim Jagielski
49*b1cdbd2cSJim Jagielski        $ARGV[0] =~ s?\\|:?/?g ;
50*b1cdbd2cSJim Jagielski        @SUBDIRS = split "/", $ARGV[0] ;
51*b1cdbd2cSJim Jagielski
52*b1cdbd2cSJim Jagielski        # absolute path UNIX
53*b1cdbd2cSJim Jagielski        if ( $SUBDIRS[0] eq "" ) {
54*b1cdbd2cSJim Jagielski            chdir '/' ;
55*b1cdbd2cSJim Jagielski            shift @SUBDIRS ;
56*b1cdbd2cSJim Jagielski        }
57*b1cdbd2cSJim Jagielski        # absolute path WINDOWS
58*b1cdbd2cSJim Jagielski        if ( $#SUBDIRS > 1 ) {
59*b1cdbd2cSJim Jagielski            if ( $SUBDIRS[1] eq "" ) {
60*b1cdbd2cSJim Jagielski                if ( $SUBDIRS[0] =~ /\w/ ) {
61*b1cdbd2cSJim Jagielski                    chdir "$SUBDIRS[0]:\\" ;
62*b1cdbd2cSJim Jagielski                    shift @SUBDIRS ;
63*b1cdbd2cSJim Jagielski                    shift @SUBDIRS ;
64*b1cdbd2cSJim Jagielski                } ;
65*b1cdbd2cSJim Jagielski            } ;
66*b1cdbd2cSJim Jagielski        }
67*b1cdbd2cSJim Jagielski
68*b1cdbd2cSJim Jagielski        while (@SUBDIRS) {
69*b1cdbd2cSJim Jagielski            if ( -e $SUBDIRS[0] ) {
70*b1cdbd2cSJim Jagielski                if ( ! -d $SUBDIRS[0] ) {
71*b1cdbd2cSJim Jagielski                    die "file exists\n"
72*b1cdbd2cSJim Jagielski                }
73*b1cdbd2cSJim Jagielski            }
74*b1cdbd2cSJim Jagielski            else {
75*b1cdbd2cSJim Jagielski                mkdir $SUBDIRS[0], $MODE or die "Can't create directory $SUBDIRS[0]"
76*b1cdbd2cSJim Jagielski            }
77*b1cdbd2cSJim Jagielski            chdir $SUBDIRS[0] or die "Can't cd to $SUBDIRS[0]" ;
78*b1cdbd2cSJim Jagielski            shift @SUBDIRS ;
79*b1cdbd2cSJim Jagielski        } ;
80*b1cdbd2cSJim Jagielski
81*b1cdbd2cSJim Jagielski        shift @ARGV ;
82*b1cdbd2cSJim Jagielski    } ;
83*b1cdbd2cSJim Jagielski	chdir $currdir;
84*b1cdbd2cSJim Jagielski}
85