mkdir.sh 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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 2.0 #
  8. # #
  9. # A copy of the License is available at #
  10. # https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html #
  11. # (with md5 checksum 84283fa8859daf213bdda5a9f8d1be1d) #
  12. # #
  13. # Glenn Fowler <gsf@research.att.com> #
  14. # #
  15. ########################################################################
  16. : mkdir for systems that do not support -p : 2002-09-01 :
  17. (command set -o posix) 2>/dev/null && set -o posix
  18. MKDIR=mkdir
  19. CHMOD=chmod
  20. mode=
  21. parents=
  22. while :
  23. do case $1 in
  24. -m) case $# in
  25. 1) echo "mkdir: -m: mode argument expected" >&2
  26. exit 1
  27. ;;
  28. esac
  29. shift
  30. mode=$1
  31. ;;
  32. -m*) mode=`echo X$1 | sed 's/X-m//'`
  33. ;;
  34. -p) parents=1
  35. ;;
  36. *) break
  37. ;;
  38. esac
  39. shift
  40. done
  41. if test "" != "$parents"
  42. then for d
  43. do if test ! -d $d
  44. then ifs=${IFS-'
  45. '}
  46. IFS=/
  47. set '' $d
  48. IFS=$ifs
  49. shift
  50. dir=$1
  51. shift
  52. if test -n "$dir" -a ! -d "$dir"
  53. then $MKDIR "$dir" || exit 1
  54. if test "" != "$mode"
  55. then $CHMOD "$mode" "$dir" || exit 1
  56. fi
  57. fi
  58. for d
  59. do dir=$dir/$d
  60. if test ! -d "$dir"
  61. then $MKDIR "$dir" || exit 1
  62. if test "" != "$mode"
  63. then $CHMOD "$mode" "$dir" || exit 1
  64. fi
  65. fi
  66. done
  67. fi
  68. done
  69. else $MKDIR "$@" || exit 1
  70. if test "" != "$mode"
  71. then for d
  72. do $CHMOD "$mode" "$d" || exit 1
  73. done
  74. fi
  75. fi
  76. exit 0