-
Notifications
You must be signed in to change notification settings - Fork 0
/
debug
executable file
·83 lines (66 loc) · 2.36 KB
/
debug
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
#!/usr/bin/python
# This file is part of Atarashii.
#
# Atarashii 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 3 of the License, or
# (at your option) any later version.
#
# Atarashii 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
# Atarashii. If not, see <http://www.gnu.org/licenses/>.
# Debug Mode Started -----------------------------------------------------------
# ------------------------------------------------------------------------------
import sys
import os
PATH = os.path.join(sys.path[0], "atarashii/usr/share/pyshared")
# Import Atarashii -------------------------------------------------------------
sys.path.insert(0, PATH)
try:
import atarashii
except:
if sys.path[0] == PATH:
sys.path.pop(0)
sys.exit(os.EX_TEMPFAIL)
# Check what we should start ----------------------------------------------------
sys.path.pop(0)
arg = ""
if len(sys.argv) == 2:
arg = sys.argv[1]
# Application
if arg == "main":
atarashii.debug(sys.path[0])
# Crash Wrapper
else:
if arg == "auto":
import time
time.sleep(3)
# Wrap arround crazy random GDK and XOrg Erros ^.^"
import subprocess
restart_max = 2
restart_count = 0
while True:
print "Starting Atarashii..."
error = subprocess.call(["./debug", "main"])
if error == os.EX_UNAVAILABLE:
print "Atarashii is already running"
break
elif error == os.EX_TEMPFAIL:
print "Importing Atarashii failed"
break
# Detect normal exit
elif error in (os.EX_OK, -15, -9):
print "Atarashii has been closed with status %d" % error
break
else:
atarashii.crash(error)
if restart_count >= restart_max:
break
restart_count += 1
print "Atarashii crashed with %d! Restart #%d/%d" \
% (error, restart_count, restart_max)
exit(error)