Guest User

Untitled

a guest
May 11th, 2020
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.25 KB | None | 0 0
  1. import sys
  2. import app
  3. import dbg
  4. import os
  5.  
  6. sys.path.append("lib")
  7.  
  8. class TraceFile:
  9. def write(self, msg):
  10. dbg.Trace(msg)
  11.  
  12. class TraceErrorFile:
  13. def write(self, msg):
  14. dbg.TraceError(msg)
  15. dbg.RegisterExceptionString(msg)
  16.  
  17. class LogBoxFile:
  18. def __init__(self):
  19. self.stderrSave = sys.stderr
  20. self.msg = ""
  21.  
  22. def __del__(self):
  23. self.restore()
  24.  
  25. def restore(self):
  26. sys.stderr = self.stderrSave
  27.  
  28. def write(self, msg):
  29. self.msg = self.msg + msg
  30.  
  31. def show(self):
  32. dbg.LogBox(self.msg,"Error")
  33.  
  34. sys.stdout = TraceFile()
  35. sys.stderr = TraceErrorFile()
  36.  
  37. #
  38. # pack file support (must move to system.py, systemrelease.pyc)
  39. #
  40.  
  41. import marshal
  42. import imp
  43. import pack
  44.  
  45. class pack_file_iterator(object):
  46. def __init__(self, packfile):
  47. self.pack_file = packfile
  48.  
  49. def next(self):
  50. tmp = self.pack_file.readline()
  51. if tmp:
  52. return tmp
  53. raise StopIteration
  54.  
  55. _chr = __builtins__.chr
  56.  
  57. class pack_file(object):
  58.  
  59. def __init__(self, filename, mode = 'rb'):
  60. assert mode in ('r', 'rb')
  61. if not pack.Exist(filename):
  62. raise IOError, 'No file or directory'
  63. self.data = pack.Get(filename)
  64. if mode == 'r':
  65. self.data=_chr(10).join(self.data.split(_chr(13)+_chr(10)))
  66.  
  67. def __iter__(self):
  68. return pack_file_iterator(self)
  69.  
  70. def read(self, len = None):
  71. if not self.data:
  72. return ''
  73. if len:
  74. tmp = self.data[:len]
  75. self.data = self.data[len:]
  76. return tmp
  77. else:
  78. tmp = self.data
  79. self.data = ''
  80. return tmp
  81.  
  82. def readline(self):
  83. return self.read(self.data.find(_chr(10))+1)
  84.  
  85. def readlines(self):
  86. return [x for x in self]
  87.  
  88. __builtins__.pack_open = pack_open = pack_file
  89.  
  90. _ModuleType = type(sys)
  91.  
  92. old_import = __import__
  93. def _process_result(code, fqname):
  94. # did get_code() return an actual module? (rather than a code object)
  95. is_module = isinstance(code, _ModuleType)
  96.  
  97. # use the returned module, or create a new one to exec code into
  98. if is_module:
  99. module = code
  100. else:
  101. module = imp.new_module(fqname)
  102.  
  103. # insert additional values into the module (before executing the code)
  104. #module.__dict__.update(values)
  105.  
  106. # the module is almost ready... make it visible
  107. sys.modules[fqname] = module
  108.  
  109. # execute the code within the module's namespace
  110. if not is_module:
  111. exec code in module.__dict__
  112.  
  113. # fetch from sys.modules instead of returning module directly.
  114. # also make module's __name__ agree with fqname, in case
  115. # the "exec code in module.__dict__" played games on us.
  116. module = sys.modules[fqname]
  117. module.__name__ = fqname
  118. return module
  119.  
  120. module_do = lambda x:None
  121.  
  122. def __pack_import(name,globals=None,locals=None,fromlist=None):
  123. if name in sys.modules:
  124. return sys.modules[name]
  125.  
  126. filename = name + '.py'
  127.  
  128. if pack.Exist(filename):
  129. dbg.Trace('importing from pack %s\\n' % name)
  130.  
  131. newmodule = _process_result(compile(pack_file(filename,'r').read(),filename,'exec'),name)
  132.  
  133. module_do(newmodule)
  134. return newmodule
  135. #return imp.load_module(name, pack_file(filename,'r'),filename,('.py','r',imp.PY_SOURCE))
  136. else:
  137. dbg.Trace('importing from lib %s\\n' % name)
  138. return old_import(name,globals,locals,fromlist)
  139.  
  140. def splitext(p):
  141. root, ext = '', ''
  142. for c in p:
  143. if c in ['/']:
  144. root, ext = root + ext + c, ''
  145. elif c == '.':
  146. if ext:
  147. root, ext = root + ext, c
  148. else:
  149. ext = c
  150. elif ext:
  151. ext = ext + c
  152. else:
  153. root = root + c
  154. return root, ext
  155.  
  156. class PythonExecutioner:
  157.  
  158. def Run(kPESelf, sFileName, kDict):
  159. if kPESelf.__IsCompiledFile__(sFileName):
  160. kCode=kPESelf.__LoadCompiledFile__(sFileName)
  161. else:
  162. kCode=kPESelf.__LoadTextFile__(sFileName)
  163.  
  164. exec(kCode, kDict)
  165.  
  166. def __IsCompiledFile__(kPESelf, sFileName):
  167.  
  168. sBase, sExt = splitext(sFileName)
  169. sExt=sExt.lower()
  170.  
  171. if sExt==".pyc" or sExt==".pyo":
  172. return 1
  173. else:
  174. return 0
  175.  
  176. def __LoadTextFile__(kPESelf, sFileName):
  177. sText=pack_open(sFileName,'r').read()
  178. return compile(sText, sFileName, "exec")
  179.  
  180. def __LoadCompiledFile__(kPESelf, sFileName):
  181. kFile=pack_open(sFileName)
  182.  
  183. if kFile.read(4)!=imp.get_magic():
  184. raise
  185.  
  186. kFile.read(4)
  187.  
  188. kData=kFile.read()
  189. return marshal.loads(kData)
  190.  
  191. def execfile(fileName, dict):
  192. kPE=PythonExecutioner()
  193. kPE.Run(fileName, dict)
  194.  
  195. def exec_add_module_do(mod):
  196. global execfile
  197. mod.__dict__['execfile'] = execfile
  198.  
  199. import __builtin__
  200. __builtin__.__import__ = __pack_import
  201. module_do = exec_add_module_do
  202.  
  203. """
  204. #
  205. # PSYCO installation (must move to system.py, systemrelease.pyc)
  206. #
  207. try:
  208. import psyco
  209. #from psyco.classes import *
  210.  
  211. def bind_me(bindable_list):
  212. try:
  213. for x in bindable_list:
  214. try:
  215. psyco.bind(x)
  216. except:
  217. pass
  218. except:
  219. pass
  220.  
  221. _prev_psyco_old_module_do = module_do
  222. def module_bind(module):
  223. _prev_psyco_old_module_do(module)
  224. #print 'start binding' + str(module)
  225. try:
  226. psyco.bind(module)
  227. except:
  228. pass
  229. for x in module.__dict__.itervalues():
  230. try:
  231. psyco.bind(x)
  232. except:
  233. pass
  234. #print 'end binding'
  235.  
  236. dbg.Trace("PSYCO installed\\n")
  237.  
  238. except Exception, msg:
  239. bind_me = lambda x:None
  240. dbg.Trace("No PSYCO support : %s\\n" % msg)
  241. """
  242.  
  243. def GetExceptionString(excTitle):
  244. (excType, excMsg, excTraceBack)=sys.exc_info()
  245. excText=""
  246. excText+=_chr(10)
  247.  
  248. import traceback
  249. traceLineList=traceback.extract_tb(excTraceBack)
  250.  
  251. for traceLine in traceLineList:
  252. if traceLine[3]:
  253. excText+="%s(line:%d) %s - %s" % (traceLine[0], traceLine[1], traceLine[2], traceLine[3])
  254. else:
  255. excText+="%s(line:%d) %s" % (traceLine[0], traceLine[1], traceLine[2])
  256.  
  257. excText+=_chr(10)
  258.  
  259. excText+=_chr(10)
  260. excText+="%s - %s:%s" % (excTitle, excType, excMsg)
  261. excText+=_chr(10)
  262.  
  263. return excText
  264.  
  265. def ShowException(excTitle):
  266. excText=GetExceptionString(excTitle)
  267. dbg.TraceError(excText)
  268. app.Abort()
  269.  
  270. return 0
  271.  
  272. def RunMainScript(name):
  273. try:
  274. execfile(name, __main__.__dict__)
  275. except RuntimeError, msg:
  276. msg = str(msg)
  277.  
  278. import locale
  279. if locale.error:
  280. msg = locale.error.get(msg, msg)
  281.  
  282. dbg.LogBox(msg)
  283. app.Abort()
  284.  
  285. except:
  286. msg = GetExceptionString("Run")
  287. dbg.LogBox(msg)
  288. app.Abort()
  289.  
  290. import debugInfo
  291. debugInfo.SetDebugMode(__DEBUG__)
  292.  
  293. loginMark = "-cs"
  294.  
  295. app.__COMMAND_LINE__ = __COMMAND_LINE__
  296. RunMainScript("prototype.py")
Add Comment
Please, Sign In to add comment