File: mkdir-p

package info (click to toggle)
arena 1:0.3.61-5
  • links: PTS
  • area: main
  • in suites: slink
  • size: 13,904 kB
  • ctags: 16,424
  • sloc: ansic: 129,738; sh: 3,614; makefile: 1,272; perl: 1,088; cpp: 608; asm: 578
file content (101 lines) | stat: -rwxr-xr-x 1,626 bytes parent folder | download | duplicates (4)
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#! /bin/sh
# $XConsortium: mkdirhier.sh,v 1.7 94/03/24 15:46:34 gildea Exp $
# Courtesy of Paul Eggert

#
# Modified by QingLong <qinglong@Yggdrasil.com> for portability. 24-02-97.
#


newline='
'
IFS=$newline

#
# WARNING!  Some ancient shells do not understand `:=' and `:-' expansion.
#           Use just `=' instead of `:=' if you have lame one.
#: ${MKDIR:=mkdir} ${TR:=tr}
#

if test -z "${MKDIR-}" ;
 then
  MKDIR=mkdir
fi

if test -z "${TR-}" ;
 then
  TR=tr
fi


case ${1--} in
  -*) echo >&2 "mkdir-p: usage: mkdir-p directory ..."
      exit 1
esac

status=""

for directory
 do
  case $directory in
    '')
      echo >&2 "mkdir-p: empty directory name"
      status="1"
      continue
      ;;
    *"$newline"*)
      echo >&2 "mkdir-p: directory name contains a newline: \`\`$directory''"
      status="1"
      continue
      ;;
    ///*) prefix="/"      # See Posix 2.3 "path".
      ;;
    //*) prefix="//"
      ;;
    /*) prefix="/"
      ;;
    -*) prefix="./"
      ;;
    *) prefix=""
  esac
  #
  IFS=/
  set x $directory
  #
  case $2 in
    */*)
      # IFS parsing is broken
      IFS=' '
      set x `echo $directory | ${TR} / ' '`
      ;;
  esac
  #
  IFS=$newline
  shift
  #
  for filename
   do
    path="$prefix$filename"
    prefix="$path/"
    shift
    #
    test -d "$path" || \
      {
       paths=$path
       for filename
        do
         if test "$filename" != "." ;
          then
           path="$path/$filename"
           paths="$paths$newline$path"
         fi
       done
       #
       ${MKDIR} $paths || status=$?
       #
       break
      }
  done
done

exit $status