User input
Enter your program:
|
---
|
inputs/program.c|fst
*/
if($_POST['example'] != "(analyze my program)")
{
//preexisting example?
$ourFileName = "input/".$_POST['example'];
$ourFileHandle = fopen($ourFileName, 'w') or die("can't open file");
fwrite($ourFileHandle, $loaded_program);
}
else
{
//program entered by the user?
if($_POST['input_type'] == "c_program")
$ourFileName = "input/main.c";
else
$ourFileName = "input/main_with_cr.fst";
$ourFileHandle = fopen($ourFileName, 'w') or die("can't open file");
fwrite($ourFileHandle, $_POST['program']);
if($_POST['input_type'] != "c_program")
//.fst? => convert it in the right format for aspic
{
$ourFileName = "input/main.fst";
exec("sed -e 's/\r//' /var/www/rank/input/main_with_cr.fst > /var/www/rank/input/main.fst",$result);
}
}
fclose($ourFileHandle);
/*
* Save Text edit zone --> inputs/last_text_edit.txt
*/
$ourFileHandle = fopen("input/last_text_edit.txt", 'w') or die("can't open last_text_edit.txt");
fwrite($ourFileHandle, $_POST['program']);
fclose($ourFileHandle);
/*
* Run the tool
*/
if($_POST['input_type'] == "c_program")
{
//Step 1: C2FSM
exec("echo \"*****************\" >>/var/www/rank/input/errors",$result);
exec("echo \"C2Fsm\" >/var/www/rank/input/errors",$result);
//1a) Produce the pdf file
exec("(cd /var/www/rank/input; /home/chris/rank/C2Fsm/bin/c2fsm /var/www/rank/".$ourFileName." -dot -cut -nodiv -int)",$result);
//1b) Produce the .fst file
exec("(cd /var/www/rank/input; /home/chris/rank/C2Fsm/bin/c2fsm /var/www/rank/".$ourFileName." -fst -cut -nodiv -int 2>>/var/www/rank/input/errors >>/var/www/rank/input/errors)",$result);
//2) Run Aspic
exec("echo \"*****************\" >>/var/www/rank/input/errors",$result);
exec("echo \"Aspic\" >>/var/www/rank/input/errors",$result);
$fst_file=str_replace(".c",".fst",$ourFileName);
exec("(cd /var/www/rank/input; /home/chris/rank/aspic64 -ranking -delay 1 /var/www/rank/".$fst_file." 2>>/var/www/rank/input/errors)",$result);
//3) Run RanK
exec("echo \"*****************\" >>/var/www/rank/input/errors",$result);
exec("echo \"RanK\" >>/var/www/rank/input/errors",$result);
//3a) Collect the options
$rank_options = "";
if(isset($_POST['option_wcet']))
$rank_options = $rank_options."-wcet ";
if(isset($_POST['option_cut']))
$rank_options = $rank_options."-cut ";
if(isset($_POST['option_transitions']))
$rank_options = $rank_options."-t ";
$fstb_file=str_replace(".c",".fstb",$ourFileName);
//3b) Launch rank
exec("(cd /var/www/rank/input; timeout -k 30 30 /home/chris/rank/rank ".$rank_options."/var/www/rank/".$fstb_file." >/var/www/rank/input/result 2>>/var/www/rank/input/errors)",$result);
}
else
{
//
// Input = .fst automaton (copy/paste without c2fsm)
//
$fst_file=$ourFileName;
//1) Run Aspic
exec("echo \"*****************\" >>/var/www/rank/input/errors",$result);
exec("echo \"Aspic\" >>/var/www/rank/input/errors",$result);
exec("(cd /var/www/rank/input; timeout -k 30 30 /home/chris/rank/aspic64 -ranking -delay 1 /var/www/rank/".$fst_file." 2>>/var/www/rank/input/errors)",$result);
//2) Run RanK
exec("echo \"*****************\" >>/var/www/rank/input/errors",$result);
exec("echo \"RanK\" >>/var/www/rank/input/errors",$result);
//2a) Collect the options
$rank_options = "";
if(isset($_POST['option_wcet']))
$rank_options = $rank_options."-wcet ";
if(isset($_POST['option_cut']))
$rank_options = $rank_options."-cut ";
if(isset($_POST['option_transitions']))
$rank_options = $rank_options."-t ";
$fstb_file=str_replace(".fst",".fstb",$ourFileName);
//2b) Launch rank
exec("(cd /var/www/rank/input; timeout -k 30 30 /home/chris/rank/rank ".$rank_options."/var/www/rank/".$fstb_file." >/var/www/rank/input/result 2>>/var/www/rank/input/errors)",$result);
}
/*
* Write the result on the web page
*/
if($_POST['input_type'] == "c_program")
{
$pdf_file=str_replace(".c",".pdf",$ourFileName);
$pdf_up_file=str_replace("input/","",$pdf_file);
}
$fst_up_file=str_replace("input/","",$fst_file);
$fstb_up_file=str_replace("input/","",$fstb_file);
exec("cp /var/www/rank/".$fst_file." /var/www/rank/");
exec("cp /var/www/rank/".$fstb_file." /var/www/rank/");
exec("cp /var/www/rank/".$pdf_file." /var/www/rank/");
//Display the result (if exists)
echo "Result report";
if($_POST['input_type'] == "c_program")
{
//add a link to the .pdf file
echo "C2Fsm report";
echo "Integer interpreted automaton [.pdf,";
echo ".fst]";
}
echo "Aspic report";
echo "Linear relation analysis [.fstb]";
echo "RanK report";
$lines_result = file("/var/www/rank/input/result");
foreach ($lines_result as $line_num => $line) {
echo htmlspecialchars($line) . " \n";
}
//Display the errors
echo "Errors and warnings";
$lines = file("/var/www/rank/input/errors");
foreach ($lines as $line_num => $line) {
echo htmlspecialchars($line) . " \n";
}
//Display the shell output (optional)
/*
echo "Console";
foreach ($result as $i => $value) {
echo $result[$i] . ". ";
}
*/
//Delete tool's outputs
exec("rm /var/www/rank/input/errors");
exec("rm /var/www/rank/input/result");
exec("rm /var/www/rank/".$outFileName);
exec("rm /var/www/rank/".$fst_file);
exec("rm /var/www/rank/".$pdf_file);
exec("rm /var/www/rank/".$fstb_file);
?>
|