Beispiel #1
0
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);
}
Beispiel #2
0
    $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);