1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
#!/usr/bin/env bash
# Copyright (C) 2011 Pâris Quentin
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# This script is called when POL/POM runs a program.
[ "$PLAYONLINUX" = "" ] && exit 0
source "$PLAYONLINUX/lib/sources"
TITLE="$APPLICATION_TITLE"
send_stat()
{
# Time
delta="$(( EndTime - StartTime ))"
# vms
vms="$(POL_Config_Read VMS)"
[ "$vms" = "" ] && vms="0"
# OpenGL32
# OpenGL64
# DISTRO
POL_LoadVar_Distro
DISTRO="${DISTRO//'~'/ }"
# Script name
ScriptName="$(cat "$PACKAGE" | grep ScriptID | cut -d '=' -f2)"
# ExitCode
if [ "$(cat "$PACKAGE" | grep '\[ "$WINEDEBUG" = "-all" \] && exit 0')" = "" ]; then
ExitCode="$1"
else
ExitCode="-1"
fi
# OS (currentOS ; 0 = linux ; 1 = Mac)
[ "$POL_OS" = "Linux" ] && currentOS="0"
[ "$POL_OS" = "Mac" ] && currentOS="1"
[ "$POL_OS" = "FreeBSD" ] && currentOS="2"
# User Report = -1
# Unique anonymous id (autorisation to edit the review)
if [ ! -e "$POL_USER_ROOT/configurations/reports/$PACKAGE" ]; then
UniqId="$(perl -e 'print int(rand(10000000000000000))')"
else
UniqId="$(cat "$POL_USER_ROOT/configurations/reports/$PACKAGE")"
fi
# Wine version
Prefix="$(POL_Shortcut_GetPrefix "$PACKAGE")"
Version="$(POL_Config_PrefixRead VERSION "$Prefix")"
PArch="$(POL_Config_PrefixRead ARCH "$Prefix")"
[ "$PArch" = "x86" ] && archty="0" || archty="1"
# AMD64
[ "$AMD64_COMPATIBLE" = "True" ] && amd64_set="1" || amd64_set="0"
if [ "$ScriptName" ]; then
# Device Infos - Could also directly use POL_DetectVideoCards for full list
POL_LoadVar_Device --non-interactive
Info="$(printf "$VendorID~$DeviceID~$currentOS~$ScriptName~$amd64_set~$OpenGL32~$OpenGL64~$Version~$ExitCode~$DISTRO~$vms~$UniqId~$archty~$PACKAGE~$VERSION~$delta" | POL_base64)"
POL_Website_GET "http://www.playonlinux.com/api/s.php?data=$(POL_Website_urlencode "$Info")"
echo "$UniqId" > "$POL_USER_ROOT/configurations/reports/$PACKAGE"
fi
}
if [ "$1" ]; then
PACKAGE="$1"
else
POL_SetupWindow_Init
POL_SetupWindow_games "$(eval_gettext "Please choose a software to run")" "$TITLE"
PACKAGE="$APP_ANSWER"
POL_SetupWindow_Close
fi
cd "$POL_USER_ROOT/shortcuts"
export POL_IgnoreWineErrors="True"
$(POL_Config_Read PRE_RUNNING)
if [ "$(POL_Config_Read DONT_KILL_ON_EXIT)" = "TRUE" ]; then
export POL_DONT_REGISTER_PID="TRUE"
fi
if [ -e "$POL_USER_ROOT/configurations/pre_shortcut/$PACKAGE" ]; then
source "$POL_USER_ROOT/configurations/pre_shortcut/$PACKAGE"
fi
shift
export COMMON_NAME="$PACKAGE"
StartTime="$(date +%s)"
bash "$PACKAGE" "$@"
ExitCode="$?"
EndTime="$(date +%s)"
if [ ! "$ExitCode" = "0" ]; then
POL_SetupWindow_Init
POL_SetupWindow_wait "$(eval_gettext '$APPLICATION_TITLE debugger is starting...')" "$TITLE"
if [ ! "$(cat "$PACKAGE" | grep 'export WINEDEBUG="-all"')" = "" ]
then
POL_Debug_ErrorSilent "$(eval_gettext '$PACKAGE crashed.\nSelect its shortcut and click on "Debug" in the side panel to get more details.')"
else
POL_Debug_ErrorSilent "$(eval_gettext '$PACKAGE crashed.')"
fi
POL_SetupWindow_Close
fi
$(POL_Config_Read POST_RUNNING)
if [ "$(POL_Config_Read SEND_REPORT)" = "TRUE" ] && [ "$DEBIAN_PACKAGE" = "FALSE" ]; then
send_stat "$ExitCode"
fi
|