mkdir.sh 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #!/bin/sh
  2. ########################################################################
  3. # #
  4. # This software is part of the ast package #
  5. # Copyright (c) 1994-2011 AT&T Intellectual Property #
  6. # and is licensed under the #
  7. # Eclipse Public License, Version 1.0 #
  8. # by AT&T Intellectual Property #
  9. # #
  10. # A copy of the License is available at #
  11. # http://www.eclipse.org/org/documents/epl-v10.html #
  12. # (with md5 checksum b35adb5213ca9657e911e9befb180842) #
  13. # #
  14. # Information and Software Systems Research #
  15. # AT&T Research #
  16. # Florham Park NJ #
  17. # #
  18. # Glenn Fowler <gsf@research.att.com> #
  19. # #
  20. ########################################################################
  21. : mkdir for systems that do not support -p : 2002-09-01 :
  22. (command set -o posix) 2>/dev/null && set -o posix
  23. MKDIR=mkdir
  24. CHMOD=chmod
  25. mode=
  26. parents=
  27. while :
  28. do case $1 in
  29. -m) case $# in
  30. 1) echo "mkdir: -m: mode argument expected" >&2
  31. exit 1
  32. ;;
  33. esac
  34. shift
  35. mode=$1
  36. ;;
  37. -m*) mode=`echo X$1 | sed 's/X-m//'`
  38. ;;
  39. -p) parents=1
  40. ;;
  41. *) break
  42. ;;
  43. esac
  44. shift
  45. done
  46. if test "" != "$parents"
  47. then for d
  48. do if test ! -d $d
  49. then ifs=${IFS-'
  50. '}
  51. IFS=/
  52. set '' $d
  53. IFS=$ifs
  54. shift
  55. dir=$1
  56. shift
  57. if test -n "$dir" -a ! -d "$dir"
  58. then $MKDIR "$dir" || exit 1
  59. if test "" != "$mode"
  60. then $CHMOD "$mode" "$dir" || exit 1
  61. fi
  62. fi
  63. for d
  64. do dir=$dir/$d
  65. if test ! -d "$dir"
  66. then $MKDIR "$dir" || exit 1
  67. if test "" != "$mode"
  68. then $CHMOD "$mode" "$dir" || exit 1
  69. fi
  70. fi
  71. done
  72. fi
  73. done
  74. else $MKDIR "$@" || exit 1
  75. if test "" != "$mode"
  76. then for d
  77. do $CHMOD "$mode" "$d" || exit 1
  78. done
  79. fi
  80. fi
  81. exit 0