Description:
merge
Commit status:
[Not Reviewed]
References:
merge algo
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r168:c9a21e293d3e - - 2 files changed: 10 inserted, 3 deleted

@@ -101,29 +101,36
101 system(command)
101 system(command)
102
102
103 when "pas"
103 when "pas"
104 command = "#{PASCAL_COMPILER} #{params[:source_file]} -ooutpas #{PASCAL_OPTIONS} > #{params[:message_file]}"
104 command = "#{PASCAL_COMPILER} #{params[:source_file]} -ooutpas #{PASCAL_OPTIONS} > #{params[:message_file]}"
105 system(command)
105 system(command)
106 FileUtils.mv("output", params[:output_file])
106 FileUtils.mv("output", params[:output_file])
107
107
108 when "java"
108 when "java"
109 #rename the file to the public class name
109 #rename the file to the public class name
110
110
111 #get the class name
111 #get the class name
112 classname = 'DUMMY'
112 classname = 'DUMMY'
113 + source = Array.new
113 File.foreach(params[:source_file]) do |line|
114 File.foreach(params[:source_file]) do |line|
114 md = /\s*public\s*class\s*(\w*)/.match(line)
115 md = /\s*public\s*class\s*(\w*)/.match(line)
115 classname=md[1] if md
116 classname=md[1] if md
117 + source << line unless line =~ /\s*package\s*\w+\s*\;/
116 end
118 end
117 - system("cp #{params[:source_file]} #{classname}.java")
119 + File.open("#{classname}.java","w") do |file|
120 + source.each do |s|
121 + file.puts s
122 + end
123 + end
124 + #system("cp #{params[:source_file]} #{classname}.java")
118 command = "#{JAVA_COMPILER} #{classname}.java 2> #{params[:message_file]}"
125 command = "#{JAVA_COMPILER} #{classname}.java 2> #{params[:message_file]}"
119 system(command)
126 system(command)
120 if File.exists?(classname + ".class")
127 if File.exists?(classname + ".class")
121 File.open(params[:output_file],"w") {|file| file.write("#{classname}")}
128 File.open(params[:output_file],"w") {|file| file.write("#{classname}")}
122 end
129 end
123 if classname == 'DUMMY'
130 if classname == 'DUMMY'
124 File.open(params[:message_file],"w") {|file| file.write("Cannot find any public class in the source code\n")}
131 File.open(params[:message_file],"w") {|file| file.write("Cannot find any public class in the source code\n")}
125 end
132 end
126
133
127 when "ruby"
134 when "ruby"
128 command = "#{RUBY_INTERPRETER} -c #{params[:source_file]} 2> #{params[:message_file]}"
135 command = "#{RUBY_INTERPRETER} -c #{params[:source_file]} 2> #{params[:message_file]}"
129 if system(command)
136 if system(command)
@@ -82,26 +82,26
82 "#{problem_home}/script/box")
82 "#{problem_home}/script/box")
83 end
83 end
84
84
85 # Hide PROBLEM_HOME
85 # Hide PROBLEM_HOME
86 ENV['PROBLEM_HOME'] = nil
86 ENV['PROBLEM_HOME'] = nil
87 ENV['SOURCE_NAME'] = nil
87 ENV['SOURCE_NAME'] = nil
88
88
89 # Run the program.
89 # Run the program.
90 #run_command = "/usr/bin/time -f \"#{time_output_format}\" 2>run_result #{problem_home}/script/box_new -a 2 -f -t #{time_limit} -m #{mem_limit} -i #{input_file_name} -o output.txt #{program_name}"
90 #run_command = "/usr/bin/time -f \"#{time_output_format}\" 2>run_result #{problem_home}/script/box_new -a 2 -f -t #{time_limit} -m #{mem_limit} -i #{input_file_name} -o output.txt #{program_name}"
91 #
91 #
92
92
93 JAVA_OPTION = "-s set_robust_list -s futex -s clone -s getppid -s clone -s wait4 -p /usr/bin/ -p ./"
93 JAVA_OPTION = "-s set_robust_list -s futex -s clone -s getppid -s clone -s wait4 -p /usr/bin/ -p ./"
94 - RUBY_OPTION = "-p /usr/lib64/ -p /lib64/ -p /dev/urandom -p #{sandbox_dir}/#{program_name} -s set_robust_list -s sched_getaffinity -s clock_gettime -s sigaltstack -s pipe2 -s clone -s futex -s openat"
94 + RUBY_OPTION = "-p /usr/lib64/ -p /usr/local/lib/ -p /lib64/ -p /dev/urandom -p #{sandbox_dir}/#{program_name} -p #{sandbox_dir}/ -s set_robust_list -s sched_getaffinity -s clock_gettime -s sigaltstack -s pipe2 -s clone -s futex -s openat -s pipe"
95 - PYTHON_OPTION = "-p /usr/lib64/ -p /lib64/ -p /usr/bin/ -p /usr/local/lib64/ -p /usr/local/lib/ -p #{sandbox_dir}/#{program_name} -p ./#{program_name} -p #{sandbox_dir}/#{source_name} -s set_robust_list -s openat -s recvmsg -s connect -s socket -s sendto -E PYTHONNOUSERSITE=yes"
95 + PYTHON_OPTION = "-p /usr/lib64/ -p /lib64/ -p /usr/bin/ -p /usr/local/lib64/ -p /usr/local/lib/ -p #{sandbox_dir}/#{program_name} -p ./#{program_name} -p #{sandbox_dir}/#{source_name} -s set_robust_list -s openat -s recvmsg -s connect -s socket -s sendto -s futex -E PYTHONNOUSERSITE=yes"
96 PHP_OPTION = "-p /usr/lib64/ -p/lib64/ -p /usr/bin/ -p #{sandbox_dir}/#{program_name} -p ./#{program_name} -p /usr/share/ -s setfsuid -s setfsgid -s openat -s set_robust_list -s futex "
96 PHP_OPTION = "-p /usr/lib64/ -p/lib64/ -p /usr/bin/ -p #{sandbox_dir}/#{program_name} -p ./#{program_name} -p /usr/share/ -s setfsuid -s setfsgid -s openat -s set_robust_list -s futex "
97
97
98 case language
98 case language
99 when "java"
99 when "java"
100 # for java, extract the classname
100 # for java, extract the classname
101 # wne have to add additional systemcall and we don't check the mem limit (dunno how to fix...)
101 # wne have to add additional systemcall and we don't check the mem limit (dunno how to fix...)
102 classname = 'DUMMY'
102 classname = 'DUMMY'
103 File.open(program_name,"r").each do |line|
103 File.open(program_name,"r").each do |line|
104 classname = line
104 classname = line
105 end
105 end
106 #for java, we cannot really check the memory limit...
106 #for java, we cannot really check the memory limit...
107 run_command = "#{problem_home}/script/box -a 3 -f -T -t #{time_limit} #{JAVA_OPTION} -i #{input_file_name} -o output.txt /usr/bin/java #{classname} 2>run_result"
107 run_command = "#{problem_home}/script/box -a 3 -f -T -t #{time_limit} #{JAVA_OPTION} -i #{input_file_name} -o output.txt /usr/bin/java #{classname} 2>run_result"
You need to be logged in to leave comments. Login now