File: processor.py

package info (click to toggle)
showq 0.4.1%2Bgit20161215~dfsg0-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 1,340 kB
  • sloc: python: 13,081; cpp: 5,067; makefile: 37
file content (40 lines) | stat: -rwxr-xr-x 1,004 bytes parent folder | download | duplicates (2)
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
#! /usr/bin/env python
# encoding: utf-8
# WARNING! Do not edit! https://waf.io/book/index.html#_obtaining_the_waf_file

import sys,traceback,base64
try:
	import cPickle
except ImportError:
	import pickle as cPickle
try:
	import subprocess32 as subprocess
except ImportError:
	import subprocess
def run():
	txt=sys.stdin.readline().strip()
	if not txt:
		sys.exit(1)
	[cmd,kwargs,cargs]=cPickle.loads(base64.b64decode(txt))
	cargs=cargs or{}
	ret=1
	out,err,ex,trace=(None,None,None,None)
	try:
		proc=subprocess.Popen(cmd,**kwargs)
		out,err=proc.communicate(**cargs)
		ret=proc.returncode
	except(OSError,ValueError,Exception),e:
		exc_type,exc_value,tb=sys.exc_info()
		exc_lines=traceback.format_exception(exc_type,exc_value,tb)
		trace=str(cmd)+'\n'+''.join(exc_lines)
		ex=e.__class__.__name__
	tmp=[ret,out,err,ex,trace]
	obj=base64.b64encode(cPickle.dumps(tmp))
	sys.stdout.write(obj.decode())
	sys.stdout.write('\n')
	sys.stdout.flush()
while 1:
	try:
		run()
	except KeyboardInterrupt:
		break