Difference between revisions of "C.php"
m |
(compilation timer) |
||
Line 21: | Line 21: | ||
// Compile & excecute | // Compile & excecute | ||
− | $article = "Compiling using $gcc | + | $article = "Compiling using $gcc\n"; |
+ | $now = microtime(); | ||
shell_exec("$gcc $src 1>$stdout 2>$stderr"); | shell_exec("$gcc $src 1>$stdout 2>$stderr"); | ||
+ | $article .= "Compilation took " . ($now - microtime()) / 1000 . " seconds\n"; | ||
$article .= file_get_contents($stdout).file_get_contents($stderr); | $article .= file_get_contents($stdout).file_get_contents($stderr); | ||
$article .= "\n\nExecuting compiled result:\n"; | $article .= "\n\nExecuting compiled result:\n"; |
Revision as of 10:16, 24 June 2006
<?
- C compiler for XmlWiki Environment
if ($GLOBALS['xwIsAdmin']) { xwSetProperty($properties,'language','TEXT'); $server = $_SERVER['HTTP_HOST']; $htdocs = $_SERVER['DOCUMENT_ROOT']; if (!ereg( "\\/$", $htdocs)) $htdocs .= '/';
$src = $htdocs.'wiki/source.c'; $gcc = '/usr/bin/gcc'; // diagnostics please if ($switches = $_REQUEST['switches']) $gcc .= " $switches"; $out = $htdocs.'wiki/a.out'; $stdout = $htdocs.'wiki/a.stdout'; $stderr = $htdocs.'wiki/a.stderr';
// Write the source to tmp file source.c if ($handle = fopen($src, 'w+')) { fwrite($handle, "$article\n"); fclose($handle); }
// Compile & excecute $article = "Compiling using $gcc\n"; $now = microtime(); shell_exec("$gcc $src 1>$stdout 2>$stderr"); $article .= "Compilation took " . ($now - microtime()) / 1000 . " seconds\n"; $article .= file_get_contents($stdout).file_get_contents($stderr); $article .= "\n\nExecuting compiled result:\n"; $article .= shell_exec("$out 2>&1"); } else xwMessage('Sorry, only admin can compile and execute C articles', 'red'); ?>