ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/hopm/trunk/mkinstalldirs
(Generate patch)

Comparing hopm/trunk/mkinstalldirs (file contents):
Revision 5052 by michael, Mon Dec 22 11:56:03 2014 UTC vs.
Revision 5059 by michael, Mon Dec 22 13:43:00 2014 UTC

# Line 1 | Line 1
1   #! /bin/sh
2   # mkinstalldirs --- make directory hierarchy
3 # Author: Noah Friedman <friedman@prep.ai.mit.edu>
4 # Created: 1993-05-16
5 # Public domain
3  
4 < # $Id: mkinstalldirs,v 1.1 2002/05/26 04:55:49 andy Exp $
4 > scriptversion=2009-04-28.21; # UTC
5  
6 + # Original author: Noah Friedman <friedman@prep.ai.mit.edu>
7 + # Created: 1993-05-16
8 + # Public domain.
9 + #
10 + # This file is maintained in Automake, please report
11 + # bugs to <bug-automake@gnu.org> or send patches to
12 + # <automake-patches@gnu.org>.
13 +
14 + nl='
15 + '
16 + IFS=" ""        $nl"
17   errstatus=0
18 + dirmode=
19 +
20 + usage="\
21 + Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
22 +
23 + Create each directory DIR (with mode MODE, if specified), including all
24 + leading file name components.
25 +
26 + Report bugs to <bug-automake@gnu.org>."
27 +
28 + # process command line arguments
29 + while test $# -gt 0 ; do
30 +  case $1 in
31 +    -h | --help | --h*)         # -h for help
32 +      echo "$usage"
33 +      exit $?
34 +      ;;
35 +    -m)                         # -m PERM arg
36 +      shift
37 +      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
38 +      dirmode=$1
39 +      shift
40 +      ;;
41 +    --version)
42 +      echo "$0 $scriptversion"
43 +      exit $?
44 +      ;;
45 +    --)                         # stop option processing
46 +      shift
47 +      break
48 +      ;;
49 +    -*)                         # unknown option
50 +      echo "$usage" 1>&2
51 +      exit 1
52 +      ;;
53 +    *)                          # first non-opt arg
54 +      break
55 +      ;;
56 +  esac
57 + done
58  
59   for file
60   do
61 <   set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
62 <   shift
61 >  if test -d "$file"; then
62 >    shift
63 >  else
64 >    break
65 >  fi
66 > done
67 >
68 > case $# in
69 >  0) exit 0 ;;
70 > esac
71 >
72 > # Solaris 8's mkdir -p isn't thread-safe.  If you mkdir -p a/b and
73 > # mkdir -p a/c at the same time, both will detect that a is missing,
74 > # one will create a, then the other will try to create a and die with
75 > # a "File exists" error.  This is a problem when calling mkinstalldirs
76 > # from a parallel make.  We use --version in the probe to restrict
77 > # ourselves to GNU mkdir, which is thread-safe.
78 > case $dirmode in
79 >  '')
80 >    if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
81 >      echo "mkdir -p -- $*"
82 >      exec mkdir -p -- "$@"
83 >    else
84 >      # On NextStep and OpenStep, the 'mkdir' command does not
85 >      # recognize any option.  It will interpret all options as
86 >      # directories to create, and then abort because '.' already
87 >      # exists.
88 >      test -d ./-p && rmdir ./-p
89 >      test -d ./--version && rmdir ./--version
90 >    fi
91 >    ;;
92 >  *)
93 >    if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
94 >       test ! -d ./--version; then
95 >      echo "mkdir -m $dirmode -p -- $*"
96 >      exec mkdir -m "$dirmode" -p -- "$@"
97 >    else
98 >      # Clean up after NextStep and OpenStep mkdir.
99 >      for d in ./-m ./-p ./--version "./$dirmode";
100 >      do
101 >        test -d $d && rmdir $d
102 >      done
103 >    fi
104 >    ;;
105 > esac
106  
107 <   pathcomp=
108 <   for d
109 <   do
110 <     pathcomp="$pathcomp$d"
111 <     case "$pathcomp" in
112 <       -* ) pathcomp=./$pathcomp ;;
113 <     esac
114 <
115 <     if test ! -d "$pathcomp"; then
116 <        echo "mkdir $pathcomp"
117 <
118 <        mkdir "$pathcomp" || lasterr=$?
119 <
120 <        if test ! -d "$pathcomp"; then
121 <          errstatus=$lasterr
122 <        fi
123 <     fi
107 > for file
108 > do
109 >  case $file in
110 >    /*) pathcomp=/ ;;
111 >    *)  pathcomp= ;;
112 >  esac
113 >  oIFS=$IFS
114 >  IFS=/
115 >  set fnord $file
116 >  shift
117 >  IFS=$oIFS
118 >
119 >  for d
120 >  do
121 >    test "x$d" = x && continue
122 >
123 >    pathcomp=$pathcomp$d
124 >    case $pathcomp in
125 >      -*) pathcomp=./$pathcomp ;;
126 >    esac
127 >
128 >    if test ! -d "$pathcomp"; then
129 >      echo "mkdir $pathcomp"
130 >
131 >      mkdir "$pathcomp" || lasterr=$?
132 >
133 >      if test ! -d "$pathcomp"; then
134 >        errstatus=$lasterr
135 >      else
136 >        if test ! -z "$dirmode"; then
137 >          echo "chmod $dirmode $pathcomp"
138 >          lasterr=
139 >          chmod "$dirmode" "$pathcomp" || lasterr=$?
140 >
141 >          if test ! -z "$lasterr"; then
142 >            errstatus=$lasterr
143 >          fi
144 >        fi
145 >      fi
146 >    fi
147  
148 <     pathcomp="$pathcomp/"
149 <   done
148 >    pathcomp=$pathcomp/
149 >  done
150   done
151  
152   exit $errstatus
153  
154 < # mkinstalldirs ends here
154 > # Local Variables:
155 > # mode: shell-script
156 > # sh-indentation: 2
157 > # eval: (add-hook 'write-file-hooks 'time-stamp)
158 > # time-stamp-start: "scriptversion="
159 > # time-stamp-format: "%:y-%02m-%02d.%02H"
160 > # time-stamp-time-zone: "UTC"
161 > # time-stamp-end: "; # UTC"
162 > # End:

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines