/[gcl]/gcl/binutils/mkinstalldirs
ViewVC logotype

Diff of /gcl/binutils/mkinstalldirs

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

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

Legend:
Removed from v.1.1.2.1  
changed lines
  Added in v.1.1.2.1.14.1

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26