To-Slalom

ff portable

Jun 29th, 2021 (edited)
1,341
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 10.73 KB | None | 0 0
  1. #!/bin/sh
  2. #
  3. # This Source Code Form is subject to the terms of the Mozilla Public
  4. # License, v. 2.0. If a copy of the MPL was not distributed with this
  5. # file, You can obtain one at http://mozilla.org/MPL/2.0/.
  6.  
  7. cmdname=`basename "$0"`
  8. MOZ_SCRIPT=${0##*/}
  9. MOZ_DIST_BIN=`dirname "$0"`
  10. MOZ_DEFAULT_NAME="./${cmdname}-bin"
  11. MOZ_PROCESS="firefox"
  12. MOZ_APPRUNNER_NAME="./${MOZ_PROCESS}"
  13. MOZ_PROGRAM=""
  14. MOZ_PROFILE="$MOZ_DIST_BIN/lixo"
  15. ##
  16. ## Make PROFILE path
  17. ##
  18. if [[ ! -d "$MOZ_PROFILE" ]] ; then
  19.     mkdir -p $MOZ_PROFILE
  20. fi
  21. exitcode=1
  22. ##
  23. ## Functions
  24. ##
  25. ##########################################################################
  26. moz_usage() {
  27.     echo "Usage:  ${cmdname} [options] [program]"
  28.     echo ""
  29.     echo "  options:"
  30.     echo ""
  31.     echo "    -g                   Run in debugger."
  32.     echo "    --debug"
  33.     echo ""
  34.     echo "    -d debugger          Debugger to use."
  35.     echo "    --debugger debugger"
  36.     echo ""
  37.     echo "    -a debugger_args     Arguments passed to [debugger]."
  38.     echo "    --debugger-args debugger_args"
  39.     echo ""
  40.     echo "  Examples:"
  41.     echo ""
  42.     echo "  Run the mozilla-bin binary"
  43.     echo ""
  44.     echo "    ${cmdname} mozilla-bin"
  45.     echo ""
  46.     echo "  Debug the mozilla-bin binary in gdb"
  47.     echo ""
  48.     echo "    ${cmdname} -g mozilla-bin -d gdb"
  49.     echo ""
  50.     echo "  Run mozilla-bin under valgrind with arguments"
  51.     echo ""
  52.     echo "    ${cmdname} -g -d valgrind -a '--tool=memcheck --leak-check=full' mozilla-bin"
  53.     echo ""
  54.     return 0
  55. }
  56. ##########################################################################
  57. moz_bail() {
  58.     message=$1
  59.     echo
  60.     echo "$cmdname: $message"
  61.     echo
  62.     exit 1
  63. }
  64. ##########################################################################
  65. moz_test_binary() {
  66.     binary=$1
  67.     if [ -f "$binary" ] ; then
  68.         if [ -x "$binary" ] ; then
  69.             return 1
  70.         fi
  71.     fi
  72.     return 0
  73. }
  74. ##########################################################################
  75. moz_get_debugger() {
  76.     debuggers="ddd gdb dbx bdb native-gdb"
  77.     debugger="notfound"
  78.     done="no"
  79.     for d in $debuggers ; do
  80.         moz_test_binary /bin/which
  81.         if [ $? -eq 1 ] ; then
  82.             dpath=`which ${d}`
  83.         else
  84.             dpath=`LC_MESSAGES=C type ${d} | awk '{print $3;}' | sed -e 's/\.$//'`
  85.         fi
  86.         if [ -x "$dpath" ] ; then
  87.             debugger=$dpath
  88.             break
  89.         fi
  90.     done
  91.     echo $debugger
  92.     return 0
  93. }
  94. ##########################################################################
  95. moz_run_program() {
  96.     prog=$MOZ_PROGRAM
  97.     ##
  98.     ## Make sure the program is executable
  99.     ##
  100.     if [ ! -x "$prog" ] ; then
  101.         moz_bail "Cannot execute $prog."
  102.     fi
  103.     ##
  104.     ## Run the program
  105.     ##
  106.     if [ $(! command -v apulse &> /dev/null) ] ; then apulse="" ; else apulse="apulse" ; fi
  107.     ${apulse} "$prog" ${1+"$@"}
  108.     #exitcode=$?
  109. }
  110. ##########################################################################
  111. moz_debug_program() {
  112.     prog=$MOZ_PROGRAM
  113.     ##
  114.     ## Make sure the program is executable
  115.     ##
  116.     if [ ! -x "$prog" ] ; then
  117.         moz_bail "Cannot execute $prog."
  118.     fi
  119.     if [ -n "$moz_debugger" ] ; then
  120.         moz_test_binary /bin/which
  121.         if [ $? -eq 1 ] ; then
  122.             debugger=`which $moz_debugger`
  123.         else
  124.             debugger=`LC_MESSAGES=C type $moz_debugger | awk '{print $3;}' | sed -e 's/\.$//'`
  125.         fi
  126.     else
  127.         debugger=`moz_get_debugger`
  128.     fi
  129.     if [ -x "$debugger" ] ; then
  130.         # If you are not using ddd, gdb and know of a way to convey the arguments
  131.         # over to the prog then add that here- Gagan Saksena 03/15/00
  132.         case `basename $debugger` in
  133.             native-gdb) echo "$debugger $moz_debugger_args --args $prog" ${1+"$@"}
  134.                 exec "$debugger" $moz_debugger_args --args "$prog" ${1+"$@"}
  135.                 exitcode=$?
  136.                 ;;
  137.             gdb) echo "$debugger $moz_debugger_args --args $prog" ${1+"$@"}
  138.                 exec "$debugger" $moz_debugger_args --args "$prog" ${1+"$@"}
  139.                 exitcode=$?
  140.                 ;;
  141.             ddd) echo "$debugger $moz_debugger_args --gdb -- --args $prog" ${1+"$@"}
  142.                 exec "$debugger" $moz_debugger_args --gdb -- --args "$prog" ${1+"$@"}
  143.                 exitcode=$?
  144.                 ;;
  145.             *) echo "$debugger $moz_debugger_args $prog ${1+"$@"}"
  146.                 exec $debugger $moz_debugger_args "$prog" ${1+"$@"}
  147.                 exitcode=$?
  148.                 ;;
  149.         esac
  150.     else
  151.         moz_bail "Could not find a debugger on your system."
  152.     fi
  153. }
  154. ##########################################################################
  155. ##
  156. ## Command line arg defaults
  157. ##
  158. moz_debug=0
  159. moz_debugger=""
  160. moz_debugger_args=""
  161. ##
  162. ## Parse the command line
  163. ##
  164. while [ $# -gt 0 ] ; do
  165.     case $1 in
  166.         -g | --debug )
  167.             moz_debug=1
  168.             shift
  169.             ;;
  170.         -d | --debugger )
  171.             moz_debugger=$2;
  172.             if [ "${moz_debugger}" != "" ] ; then
  173.                 shift 2
  174.             else
  175.                 echo "-d requires an argument"
  176.                 exit 1
  177.             fi
  178.             ;;
  179.         -a | --debugger-args)
  180.             moz_debugger_args=$2;
  181.             if [ "${moz_debugger_args}" != "" ] ; then
  182.                 shift 2
  183.             else
  184.                 echo "-a requires an argument"
  185.                 exit 1
  186.             fi
  187.             ;;
  188.         *)
  189.             break ;
  190.         ;;
  191.     esac
  192. done
  193. ##
  194. ## Program name given in $1
  195. ##
  196. if [ $# -gt 0 ] ; then
  197.     MOZ_PROGRAM=$1
  198.     shift
  199. fi
  200. ##
  201. ## Program not given, try to guess a default
  202. ##
  203. if [ -z "$MOZ_PROGRAM" ] ; then
  204.     ##
  205.     ## Try this script's name with '-bin' appended
  206.     ##
  207.     if [ -x "$MOZ_DEFAULT_NAME" ] ; then
  208.         MOZ_PROGRAM=$MOZ_DEFAULT_NAME
  209.     ##
  210.     ## Try mozilla-bin
  211.     ##
  212.     elif [ -x "$MOZ_APPRUNNER_NAME" ] ; then
  213.         MOZ_PROGRAM=$MOZ_APPRUNNER_NAME
  214.     fi
  215. fi
  216. ##
  217. ## Make sure the program is executable
  218. ##
  219. if [ ! -x "$MOZ_PROGRAM" ] ; then
  220.     moz_bail "Cannot execute $MOZ_PROGRAM."
  221. fi
  222. #
  223. if [ -z "$MRE_HOME" ] ; then
  224.     MRE_HOME=$MOZ_DIST_BIN
  225. fi
  226. ##
  227. ## Set LD_LIBRARY_PATH
  228. ##
  229. ## On Solaris we use $ORIGIN (set in RUNPATH) instead of LD_LIBRARY_PATH
  230. ## to locate shared libraries.
  231. ##
  232. ## When a shared library is a symbolic link, $ORIGIN will be replaced with
  233. ## the real path (i.e., what the symbolic link points to) by the runtime
  234. ## linker.  For example, if dist/bin/libxul.so is a symbolic link to
  235. ## toolkit/library/libxul.so, $ORIGIN will be "toolkit/library" instead of "dist/bin".
  236. ## So the runtime linker will use "toolkit/library" NOT "dist/bin" to locate the
  237. ## other shared libraries that libxul.so depends on.  This only happens
  238. ## when a user (developer) tries to start firefox, thunderbird, or seamonkey
  239. ## under dist/bin. To solve the problem, we should rely on LD_LIBRARY_PATH
  240. ## to locate shared libraries.
  241. ##
  242. ## Note:
  243. ##  We test $MOZ_DIST_BIN/*.so. If any of them is a symbolic link,
  244. ##  we need to set LD_LIBRARY_PATH.
  245. ##########################################################################
  246. moz_should_set_ld_library_path() {
  247.     [ `uname -s` != "SunOS" ] && return 0
  248.     for sharedlib in $MOZ_DIST_BIN/*.so ; do
  249.         [ -h $sharedlib ] && return 0
  250.     done
  251.     return 1
  252. }
  253. if moz_should_set_ld_library_path ; then
  254.     LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARY_PATH:+":$LD_LIBRARY_PATH"}
  255. fi
  256. if [ -n "$LD_LIBRARYN32_PATH" ] ; then
  257.     LD_LIBRARYN32_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARYN32_PATH:+":$LD_LIBRARYN32_PATH"}
  258. fi
  259. if [ -n "$LD_LIBRARYN64_PATH" ] ; then
  260.     LD_LIBRARYN64_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARYN64_PATH:+":$LD_LIBRARYN64_PATH"}
  261. fi
  262. if [ -n "$LD_LIBRARY_PATH_64" ] ; then
  263.     LD_LIBRARY_PATH_64=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARY_PATH_64:+":$LD_LIBRARY_PATH_64"}
  264. fi
  265. ## Set SHLIB_PATH for HPUX
  266. SHLIB_PATH=${MOZ_DIST_BIN}:${MRE_HOME}${SHLIB_PATH:+":$SHLIB_PATH"}
  267. ## Set LIBPATH for AIX
  268. LIBPATH=${MOZ_DIST_BIN}:${MRE_HOME}${LIBPATH:+":$LIBPATH"}
  269. ## Set DYLD_LIBRARY_PATH for Mac OS X (Darwin)
  270. DYLD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MRE_HOME}${DYLD_LIBRARY_PATH:+":$DYLD_LIBRARY_PATH"}
  271. ## Solaris Xserver(Xsun) tuning - use shared memory transport if available
  272. if [ "$XSUNTRANSPORT" = "" ] ; then
  273.     XSUNTRANSPORT="shmem"
  274.     XSUNSMESIZE="512"
  275.     export XSUNTRANSPORT XSUNSMESIZE
  276. fi
  277. # Disable Gnome crash dialog
  278. GNOME_DISABLE_CRASH_DIALOG=1
  279. export GNOME_DISABLE_CRASH_DIALOG
  280.  
  281. if [ "$moz_debug" -eq 1 ] ; then
  282.     echo "  LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
  283.     if [ -n "$LD_LIBRARYN32_PATH" ] ; then
  284.         echo "LD_LIBRARYN32_PATH=$LD_LIBRARYN32_PATH"
  285.     fi
  286.     if [ -n "$LD_LIBRARYN64_PATH" ] ; then
  287.         echo "LD_LIBRARYN64_PATH=$LD_LIBRARYN64_PATH"
  288.     fi
  289.     if [ -n "$LD_LIBRARY_PATH_64" ] ; then
  290.         echo "LD_LIBRARY_PATH_64=$LD_LIBRARY_PATH_64"
  291.     fi
  292.     if [ -n "$DISPLAY" ] ; then
  293.         echo "DISPLAY=$DISPLAY"
  294.     fi
  295.     if [ -n "$FONTCONFIG_PATH" ] ; then
  296.         echo "FONTCONFIG_PATH=$FONTCONFIG_PATH"
  297.     fi
  298.     if [ -n "$MOZILLA_POSTSCRIPT_PRINTER_LIST" ] ; then
  299.         echo "MOZILLA_POSTSCRIPT_PRINTER_LIST=$MOZILLA_POSTSCRIPT_PRINTER_LIST"
  300.     fi
  301.     echo "DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH"
  302.     echo "     LIBRARY_PATH=$LIBRARY_PATH"
  303.     echo "       SHLIB_PATH=$SHLIB_PATH"
  304.     echo "          LIBPATH=$LIBPATH"
  305.     echo "       ADDON_PATH=$ADDON_PATH"
  306.     echo "      MOZ_PROGRAM=$MOZ_PROGRAM"
  307.     echo "      MOZ_TOOLKIT=$MOZ_TOOLKIT"
  308.     echo "        moz_debug=$moz_debug"
  309.     echo "     moz_debugger=$moz_debugger"
  310.     echo "moz_debugger_args=$moz_debugger_args"
  311. fi
  312. #
  313. export LD_LIBRARY_PATH
  314. export SHLIB_PATH LIBPATH LIBRARY_PATH ADDON_PATH DYLD_LIBRARY_PATH
  315.  
  316. # fuction to check if app is running
  317. check_process() {
  318.     echo "$ts: checking $1"
  319.     [ "$1" = "" ]  && return 0
  320.     [ `pgrep -n $1` ] && return 1 || return 0
  321. }
  322.  
  323. result=`ps aux | grep -i "${MOZ_SCRIPT}" | grep -v "grep" | wc -l`
  324. if [ $result -ge 1 ] ; then
  325.     echo "script is running"
  326.     if [ $moz_debug -eq 1 ] ; then
  327.         moz_debug_program ${1+"$@"}
  328.     else
  329.         moz_run_program ${1+"$@"} -profile "${MOZ_PROFILE}"
  330.     fi
  331.  
  332.     while [ 1 ] ; do
  333.         # timestamp
  334.         ts=`date +%T`
  335.         echo "$ts: begin checking..."
  336.         check_process "${MOZ_PROCESS}"
  337.         if [ $? -eq 0 ] ; then
  338.             echo "$ts: not running..."
  339.             if [[ `rm -rf ${MOZ_PROFILE}` == "" ]] ; then
  340.                 echo "${MOZ_PROFILE} deleted"
  341.                 exit 1
  342.             fi
  343.         fi
  344.         sleep 5
  345.     done
  346.     #https://stackoverflow.com/questions/16828035/linux-command-to-check-if-a-shell-script-is-running-or-not
  347. fi
  348. exit $exitcode
Add Comment
Please, Sign In to add comment