summaryrefslogtreecommitdiff
path: root/solenv/bin/mkdir.pl
diff options
context:
space:
mode:
Diffstat (limited to 'solenv/bin/mkdir.pl')
-rwxr-xr-xsolenv/bin/mkdir.pl65
1 files changed, 65 insertions, 0 deletions
diff --git a/solenv/bin/mkdir.pl b/solenv/bin/mkdir.pl
new file mode 100755
index 000000000000..85c2cc78f199
--- /dev/null
+++ b/solenv/bin/mkdir.pl
@@ -0,0 +1,65 @@
+: # -*- perl -*-
+eval 'exec perl -wS $0 ${1+"$@"}'
+ if 0;
+#
+# mkdir - a perl script to substitute mkdir -p
+# accepts "/", ":", and "\" as delimiters of subdirectories
+# options -p (for compatibility)
+# -mode mode
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+
+use Cwd;
+
+$currdir = cwd;
+
+$MODE = 00777 ;
+
+while ( $#ARGV >= 0 ) {
+ if ( $ARGV[0] eq "-mode" ) {
+ $MODE = oct $ARGV[1] ;
+ shift @ARGV ;
+ shift @ARGV ;
+ }
+ elsif ( $ARGV[0] eq "-p" ) {
+ shift @ARGV ;
+ # -p does not do anything, it's supported just for compatibility
+ }
+ else {
+
+ $ARGV[0] =~ s?\\|:?/?g ;
+ @SUBDIRS = split "/", $ARGV[0] ;
+
+ # absolute path UNIX
+ if ( $SUBDIRS[0] eq "" ) {
+ chdir '/' ;
+ shift @SUBDIRS ;
+ }
+ # absolute path WINDOWS
+ if ( $#SUBDIRS > 1 ) {
+ if ( $SUBDIRS[1] eq "" ) {
+ if ( $SUBDIRS[0] =~ /\w/ ) {
+ chdir "$SUBDIRS[0]:\\" ;
+ shift @SUBDIRS ;
+ shift @SUBDIRS ;
+ } ;
+ } ;
+ }
+
+ while (@SUBDIRS) {
+ if ( -e $SUBDIRS[0] ) {
+ if ( ! -d $SUBDIRS[0] ) {
+ die "file exists\n"
+ }
+ }
+ else {
+ mkdir $SUBDIRS[0], $MODE or die "Can't create directory $SUBDIRS[0]"
+ }
+ chdir $SUBDIRS[0] or die "Can't cd to $SUBDIRS[0]" ;
+ shift @SUBDIRS ;
+ } ;
+
+ shift @ARGV ;
+ } ;
+ chdir $currdir;
+}