function Process($srcdir, $dstdir_root) { global $VERBOSE; printf("Generating code image %s => %s\n", $srcdir, $dstdir_root); $h_dir = opendir($srcdir); if ($h_dir == FALSE) { exit(-1); } if (!file_exists($dstdir_root)) { mkdir($dstdir_root); } while (($file = readdir($h_dir)) !== false) { if ($file == "." || $file == ".." || $file == "queue" || $file == "config") { continue; } $dir = CreateFullPath($srcdir, $file); $dstdir = CreateFullPath($dstdir_root, $file); $dstdir_code = CreateFullPath($dstdir, "code"); $dstdir_callgrind = CreateFullPath($dstdir, "callgrind"); $dstdir_massif = CreateFullPath($dstdir, "massif"); if (filetype($dir) != "dir") { continue; } if (!file_exists($dstdir)) { mkdir($dstdir); } if (!file_exists($dstdir_code)) { mkdir($dstdir_code); } // if ( !file_exists($dstdir_massif)) // mkdir($dstdir_massif); if (!file_exists($dstdir_callgrind)) { mkdir($dstdir_callgrind); } if (($compilable = IsCodeCompilable($dir)) == false) { printf("[{$dir}] is not compilable !\n"); } if ($compilable) { $code_filename = "current/code"; } else { $code_filename = "notexistabcde"; } $code_file = CreateFullPath($dir, $code_filename); TextFileToImage($code_file, 14, $dstdir_code, 2); $valgrind_massif = CreateFullPath($dir, "current/valgrind.massif_out_ms_print.report.final"); if ($compilable && file_exists($valgrind_massif)) { $dstfile_valgrind_massif = CreateFullPath($dstdir, "valgrind.massif_out_ms_print.report.final"); if (filemtime($valgrind_massif) > filemtime($dstfile_valgrind_massif)) { printf("copying %s => %s\n", $valgrind_massif, $dstdir); copy($valgrind_massif, $dstfile_valgrind_massif); } } if ($compilable) { $valgrind_callgrind = CreateFullPath($dir, "current/valgrind.callgrind_detail.report.final"); } else { $valgrind_callgrind = CreateFullPath($dir, "notlikelytoexist"); } TextFileToImage($valgrind_callgrind, 14, $dstdir_callgrind, 2); //echo "filename: $file : filetype: " . filetype($HOMEWORK_DIR ."/" . $file) . "<br/>"; } closedir($h_dir); }
$code_file = "/tmp/dummy_shouild_not_exist"; $ds = 0; if ($argc >= 4) { $code_file = CreateFullPath($dir, "code"); $k = 1; do { if (!file_exists($code_file)) { break; } $ds = CalcTextFileDissim($code_file, $argv[3]); if ($ds < 0 || $ds > 0.3) { break; } $code_file = CreateFullPath($dir, "code.{$k}"); $k++; } while (1); } if (!file_exists($code_file)) { $code_file = CreateFullPath($dir, "code"); } if (!file_exists($code_file)) { continue; } $queue_file = CreateFullPath(CreateFullPath($HOMEWORK_DIR, "queue"), $file); printf("Processing %s (ds=%f)\n", $code_file, $ds); system("sudo -u apache ln -s {$code_file} {$queue_file}"); proc_close(proc_open("sudo -u apache {$HOMEWORK_INSPECTOR} {$file} {$HW_NAME}" . " > /dev/null 2>&1 &", array(), $foo)); // sleep(40); //echo "filename: $file : filetype: " . filetype($HOMEWORK_DIR ."/" . $file) . "<br/>"; } closedir($h_dir);