File: processor.py

package info (click to toggle)
mpv 0.29.1-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 11,236 kB
  • sloc: ansic: 127,742; python: 16,255; objc: 5,440; sh: 444; cpp: 258; perl: 194; ruby: 113; xml: 87; pascal: 49; makefile: 32
file content (55 lines) | stat: -rw-r--r-- 1,398 bytes parent folder | download | duplicates (8)
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
#! /usr/bin/env python
# encoding: utf-8
# WARNING! Do not edit! https://waf.io/book/index.html#_obtaining_the_waf_file

import os,sys,traceback,base64,signal
try:
	import cPickle
except ImportError:
	import pickle as cPickle
try:
	import subprocess32 as subprocess
except ImportError:
	import subprocess
try:
	TimeoutExpired=subprocess.TimeoutExpired
except AttributeError:
	class TimeoutExpired(Exception):
		pass
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)
		try:
			out,err=proc.communicate(**cargs)
		except TimeoutExpired:
			if kwargs.get('start_new_session')and hasattr(os,'killpg'):
				os.killpg(proc.pid,signal.SIGKILL)
			else:
				proc.kill()
			out,err=proc.communicate()
			exc=TimeoutExpired(proc.args,timeout=cargs['timeout'],output=out)
			exc.stderr=err
			raise exc
		ret=proc.returncode
	except Exception as 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