The R Project SVN R

Rev

Rev 28188 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 28188 Rev 31143
Line 1... Line 1...
1
#! /bin/sh
1
#! /bin/sh
2
# mkinstalldirs --- make directory hierarchy
2
# mkinstalldirs --- make directory hierarchy
3
 
3
 
4
scriptversion=2003-11-08.23
4
scriptversion=2004-02-15.20
5
 
5
 
6
# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
6
# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
7
# Created: 1993-05-16
7
# Created: 1993-05-16
8
# Public domain.
8
# Public domain.
9
#
9
#
Line 64... Line 64...
64
 
64
 
65
case $# in
65
case $# in
66
  0) exit 0 ;;
66
  0) exit 0 ;;
67
esac
67
esac
68
 
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.
69
case $dirmode in
75
case $dirmode in
70
  '')
76
  '')
71
    if mkdir -p -- . 2>/dev/null; then
77
    if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
72
      echo "mkdir -p -- $*"
78
      echo "mkdir -p -- $*"
73
      exec mkdir -p -- "$@"
79
      exec mkdir -p -- "$@"
74
    else
80
    else
75
      # On NextStep and OpenStep, the `mkdir' command does not
81
      # On NextStep and OpenStep, the `mkdir' command does not
76
      # recognize any option.  It will interpret all options as
82
      # recognize any option.  It will interpret all options as
77
      # directories to create, and then abort because `.' already
83
      # directories to create, and then abort because `.' already
78
      # exists.
84
      # exists.
79
      test -d ./-p && rmdir ./-p
85
      test -d ./-p && rmdir ./-p
80
      test -d ./-- && rmdir ./--
86
      test -d ./--version && rmdir ./--version
81
    fi
87
    fi
82
    ;;
88
    ;;
83
  *)
89
  *)
84
    if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
90
    if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
-
 
91
       test ! -d ./--version; then
85
      echo "mkdir -m $dirmode -p -- $*"
92
      echo "mkdir -m $dirmode -p -- $*"
86
      exec mkdir -m "$dirmode" -p -- "$@"
93
      exec mkdir -m "$dirmode" -p -- "$@"
87
    else
94
    else
88
      # Clean up after NextStep and OpenStep mkdir.
95
      # Clean up after NextStep and OpenStep mkdir.
89
      for d in ./-m ./-p ./-- "./$dirmode";
96
      for d in ./-m ./-p ./--version "./$dirmode";
90
      do
97
      do
91
        test -d $d && rmdir $d
98
        test -d $d && rmdir $d
92
      done
99
      done
93
    fi
100
    fi
94
    ;;
101
    ;;