/[pcre]/code/trunk/mkinstalldirs
ViewVC logotype

Diff of /code/trunk/mkinstalldirs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 97 by nigel, Fri Mar 2 13:10:43 2007 UTC revision 98 by ph10, Mon Mar 5 15:55:02 2007 UTC
# Line 1  Line 1 
1  #! /bin/sh  #! /bin/sh
2  # mkinstalldirs --- make directory hierarchy  # mkinstalldirs --- make directory hierarchy
 # Author: Noah Friedman <friedman@prep.ai.mit.edu>  
 # Created: 1993-05-16  
 # Public domain  
3    
4  # $Id$  scriptversion=2006-05-11.19
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  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  for file
60  do  do
61     set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`    if test -d "$file"; then
62     shift      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=  for file
108     for d  do
109     do    case $file in
110       pathcomp="$pathcomp$d"      /*) pathcomp=/ ;;
111       case "$pathcomp" in      *)  pathcomp= ;;
112         -* ) pathcomp=./$pathcomp ;;    esac
113       esac    oIFS=$IFS
114      IFS=/
115       if test ! -d "$pathcomp"; then    set fnord $file
116          echo "mkdir $pathcomp"    shift
117      IFS=$oIFS
118          mkdir "$pathcomp" || lasterr=$?  
119      for d
120          if test ! -d "$pathcomp"; then    do
121            errstatus=$lasterr      test "x$d" = x && continue
122          fi  
123       fi      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/"      pathcomp=$pathcomp/
149     done    done
150  done  done
151    
152  exit $errstatus  exit $errstatus
153    
154  # mkinstalldirs ends here  # 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-end: "$"
161    # End:

Legend:
Removed from v.97  
changed lines
  Added in v.98

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12