Description:
autonew skips submissions with bad problems, forbids getch, better compiler msg when preprocessing fails, reports compile error when the executable is too large (100MB)
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r132:ca6ce454fda9 - - 2 files changed: 18 inserted, 4 deleted

@@ -249,6 +249,9
249
249
250 if submissions.length != 0
250 if submissions.length != 0
251 submissions.each do |submission|
251 submissions.each do |submission|
252 + if (submission.problem == nil) or (!submission.problem.available)
253 + next
254 + end
252 if ! graded_submission_ids[submission.id]
255 if ! graded_submission_ids[submission.id]
253 runner.grade_submission(submission)
256 runner.grade_submission(submission)
254 graded_submission_ids[submission.id] = true
257 graded_submission_ids[submission.id] = true
@@ -82,7 +82,7
82 params[:prog_lang] = 'c++'
82 params[:prog_lang] = 'c++'
83 end
83 end
84
84
85 - forbidden_functions = ['system', 'fopen', 'freopen', 'open', 'remove', 'rename']
85 + forbidden_functions = ['system', 'fopen', 'freopen', 'open', 'remove', 'rename', 'getch']
86 redefine_list = []
86 redefine_list = []
87 forbidden_count = 0
87 forbidden_count = 0
88 forbidden_key = (rand(8999) + 1000).to_s
88 forbidden_key = (rand(8999) + 1000).to_s
@@ -97,17 +97,20
97 case params[:prog_lang]
97 case params[:prog_lang]
98
98
99 when "c"
99 when "c"
100 - command = "#{C_COMPILER} -E #{params[:source_file]} -o source_prep.c"
100 + command = "#{C_COMPILER} -E #{params[:source_file]} -o source_prep.c 2> #{params[:message_file]}"
101 system(command)
101 system(command)
102 + if FileTest.exist? "source_prep.c"
102 command = "#{C_COMPILER} source_prep.c #{redefine_str} -o #{params[:output_file]} #{C_OPTIONS} 2> #{params[:message_file]}"
103 command = "#{C_COMPILER} source_prep.c #{redefine_str} -o #{params[:output_file]} #{C_OPTIONS} 2> #{params[:message_file]}"
103 - puts command
104 system(command)
104 system(command)
105 + end
105
106
106 when "c++"
107 when "c++"
107 - command = "#{CPLUSPLUS_COMPILER} -E #{params[:source_file]} -o source_prep.cpp"
108 + command = "#{CPLUSPLUS_COMPILER} -E #{params[:source_file]} -o source_prep.cpp 2> #{params[:message_file]}"
108 system(command)
109 system(command)
110 + if FileTest.exist? "source_prep.cpp"
109 command = "#{CPLUSPLUS_COMPILER} #{redefine_str} source_prep.cpp -o #{params[:output_file]} #{CPLUSPLUS_OPTIONS} 2> #{params[:message_file]}"
111 command = "#{CPLUSPLUS_COMPILER} #{redefine_str} source_prep.cpp -o #{params[:output_file]} #{CPLUSPLUS_OPTIONS} 2> #{params[:message_file]}"
110 system(command)
112 system(command)
113 + end
111
114
112 when "pas"
115 when "pas"
113 command = "#{PASCAL_COMPILER} #{params[:source_file]} -ooutpas #{PASCAL_OPTIONS} > #{params[:message_file]}"
116 command = "#{PASCAL_COMPILER} #{params[:source_file]} -ooutpas #{PASCAL_OPTIONS} > #{params[:message_file]}"
@@ -125,6 +128,14
125 # Report success or failure.
128 # Report success or failure.
126 if FileTest.exists? params[:output_file]
129 if FileTest.exists? params[:output_file]
127 talk "Compilation was successful!"
130 talk "Compilation was successful!"
131 +
132 + if File.size(params[:output_file]) > 100000000
133 + talk "But the executable is too big."
134 + open(params[:message_file],"w+") do |f|
135 + f.puts "Executable is too large."
136 + end
137 + File.delete(params[:output_file])
138 + end
128 else
139 else
129 talk "ERROR: Something was wrong during the compilation!"
140 talk "ERROR: Something was wrong during the compilation!"
130 end
141 end
You need to be logged in to leave comments. Login now