app.sh 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #!/bin/sh
  2. #
  3. # resolve symlinks
  4. #
  5. PRG=$0
  6. while [ -h "$PRG" ]; do
  7. ls=`ls -ld "$PRG"`
  8. link=`expr "$ls" : '^.*-> \(.*\)$' 2>/dev/null`
  9. if expr "$link" : '^/' 2> /dev/null >/dev/null; then
  10. PRG="$link"
  11. else
  12. PRG="`dirname "$PRG"`/$link"
  13. fi
  14. done
  15. progdir=`dirname "$PRG"`
  16. APPNAME=`basename "$0"`
  17. if [ -f "$progdir/../etc/$APPNAME".conf ] ; then
  18. . "$progdir/../etc/$APPNAME".conf
  19. fi
  20. # XXX does not correctly deal with spaces in non-userdir params
  21. args=""
  22. case "`uname`" in
  23. Darwin*)
  24. userdir="${default_mac_userdir}"
  25. ;;
  26. *)
  27. userdir="${default_userdir}"
  28. ;;
  29. esac
  30. while [ $# -gt 0 ] ; do
  31. case "$1" in
  32. --userdir) shift; if [ $# -gt 0 ] ; then userdir="$1"; fi
  33. ;;
  34. *) args="$args \"$1\""
  35. ;;
  36. esac
  37. shift
  38. done
  39. if [ -f "${userdir}/etc/$APPNAME".conf ] ; then
  40. . "${userdir}/etc/$APPNAME".conf
  41. fi
  42. if [ -n "$jdkhome" -a \! -d "$jdkhome" -a -d "$progdir/../$jdkhome" ]; then
  43. # #74333: permit jdkhome to be defined as relative to app dir
  44. jdkhome="$progdir/../$jdkhome"
  45. fi
  46. readClusters() {
  47. if [ -x /usr/ucb/echo ]; then
  48. echo=/usr/ucb/echo
  49. else
  50. echo=echo
  51. fi
  52. while read X; do
  53. if [ "$X" \!= "" ]; then
  54. $echo "$progdir/../$X"
  55. fi
  56. done
  57. }
  58. clusters=`(cat "$progdir/../etc/$APPNAME".clusters; echo) | readClusters | tr '\012' ':'`
  59. if [ ! -z "$extra_clusters" ] ; then
  60. clusters="$clusters:$extra_clusters"
  61. fi
  62. nbexec=`echo "$progdir"/../platform*/lib/nbexec`
  63. case "`uname`" in
  64. Darwin*)
  65. eval exec sh '"$nbexec"' \
  66. --jdkhome '"$jdkhome"' \
  67. -J-Dcom.apple.mrj.application.apple.menu.about.name='"$APPNAME"' \
  68. -J-Xdock:name='"$APPNAME"' \
  69. '"-J-Xdock:icon=$progdir/../../$APPNAME.icns"' \
  70. --clusters '"$clusters"' \
  71. --userdir '"${userdir}"' \
  72. ${default_options} \
  73. "$args"
  74. ;;
  75. *)
  76. sh=sh
  77. # #73162: Ubuntu uses the ancient Bourne shell, which does not implement trap well.
  78. if [ -x /bin/bash ]
  79. then
  80. sh=/bin/bash
  81. fi
  82. eval exec $sh '"$nbexec"' \
  83. --jdkhome '"$jdkhome"' \
  84. --clusters '"$clusters"' \
  85. --userdir '"${userdir}"' \
  86. ${default_options} \
  87. "$args"
  88. exit 1
  89. ;;
  90. esac