def main(CONFIG):
	arr = []
	for i in range(CONFIG.count):
		[status, error] = run (i, CONFIG)
		arr.append(status)
		if error:
			break;

	update.status ('END', SUBID, status)

	return arr
def run (testnum, CONFIG):
	[TIMELIM, MEMLIM] = CONFIG.get_limits(testnum)
	INPUT_COMMAND = CONFIG.input_command(testnum)

	update.status ('RUN', SUBID, -1, testnum)

	stdin = os.popen (JAILER + ' ' + str (testnum) + ' ' + str(TIMELIM) + ' ' + INPUT_COMMAND , 'r')

	status = time = mem = ret = score = -1

	while True:
		line = stdin.readline()

		if not line:	break

		result = line.strip().split(' ')

		if result[0].isdigit():
			score = int (result[0])
		elif result[0] == "result":
			time = float (result[1])
			mem = int (result[2])
			ret = int (result[3])

	if ret > 127:		status = 6 + ret - 128		# signal
	elif ret > 124:		status = 5			# unexpected
	elif ret == 124:	status = 2			# time
	elif ret != 0:		status = 4			# runtime
	elif mem > MEMLIM:	status = 3			# memory
	elif time > TIMELIM:	status = 2			# time
	elif score <= 0:	status = 1			# wrong
	else:			status = 0			# correct

	os.system(LOGGER + " LOG error {0} {1} {2} {3} {4} {5} {6}".format(SUBID, status, testnum, time, mem, ret, score))

	error = update.status ('RUN', SUBID, status, testnum)

	return [status, error]
# Reading user's code options from env
USER = os.getenv("USER")
SUBID = os.getenv("SUBID")
PROBLEM = os.getenv("PROBLEM")
LANGUAGE = os.getenv('LANGUAGE')

# Reading problem specific options from problem config
CONFIG = config.parse()

# Initializing log
prefix = SUBID + ':' + USER + ':' + PROBLEM + ':' + LANGUAGE + ': '
logmsg = ''

# Start compiling
update.status ('COMPILE', SUBID, -1)
compret = os.system (COMPILER + ' ' + LANGUAGE)
compret /= 256

update.status ('COMPILE', SUBID, compret)

if compret == 124:		# Compile time limit exceeded, refer to Gnu timeout manual
	logmsg = 'Compile time limit exceeded'
elif compret:			# Unspecified Compilation error
	logmsg = 'Compilation error'
else:
	# Start running
	update.status ('RUN', SUBID, -1, -1);
	arr = run.main (CONFIG)

	charstat = 'CWTMRU'	# [ correct, wrong, time, memory, runtime, unexpected ]