Guest User

Untitled

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