Difference between revisions of "C.php"
m (merge streams) |
({{legacy}}) |
||
(22 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
− | <? | + | {{legacy}} |
+ | <php><? | ||
# C compiler for XmlWiki Environment | # C compiler for XmlWiki Environment | ||
− | xwSetProperty($properties,'language','TEXT'); | + | # Licensed under LGPL: www.gnu.org/copyleft/lesser.html |
− | $server = $_SERVER['HTTP_HOST']; | + | if ($GLOBALS['xwIsAdmin']) { |
− | $htdocs = $_SERVER['DOCUMENT_ROOT']; | + | xwSetProperty($properties,'language','TEXT'); |
− | if ( !ereg( "\\/$", $htdocs ) ) $htdocs .= '/'; | + | $server = $_SERVER['HTTP_HOST']; |
+ | $htdocs = $_SERVER['DOCUMENT_ROOT']; | ||
+ | if (!ereg( "\\/$", $htdocs)) $htdocs .= '/'; | ||
+ | $args = $_REQUEST['args']; | ||
+ | $src = $htdocs.'wiki/source.c'; | ||
+ | $gcc = '/usr/bin/gcc'; | ||
+ | $out = $htdocs.'wiki/a.out'; | ||
+ | $stdout = $htdocs.'wiki/a.stdout'; | ||
+ | $stderr = $htdocs.'wiki/a.stderr'; | ||
− | + | # Write the source to tmp file source | |
− | + | if ($handle = fopen($src, 'w+')) { | |
− | if ($ | + | 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 " . (microtime() - $now) . " usec\n"; | |
− | + | $article .= file_get_contents($stdout).file_get_contents($stderr); | |
− | + | $article .= "\n\nExecuting compiled result:\n"; | |
− | $article = "Compiling using $gcc | + | $now = microtime(); |
− | shell_exec("$gcc $src 1>$stdout 2>$stderr"); | + | $article .= shell_exec("$out $args 2>&1"); |
− | $article .= file_get_contents($stdout).file_get_contents($stderr); | + | $article .= "Execution took " . (microtime() - $now) . " usec\n"; |
− | $article .= "\n\nExecuting compiled result:\n"; | + | } |
− | $article .= shell_exec("$out 2>&1"); | + | else xwMessage('Permission denied: Only admin can compile and execute C articles', 'red'); |
− | ?> | + | ?></php> |
Latest revision as of 09:39, 14 March 2009
<php><?
- C compiler for XmlWiki Environment
- Licensed under LGPL: www.gnu.org/copyleft/lesser.html
if ($GLOBALS['xwIsAdmin']) { xwSetProperty($properties,'language','TEXT'); $server = $_SERVER['HTTP_HOST']; $htdocs = $_SERVER['DOCUMENT_ROOT']; if (!ereg( "\\/$", $htdocs)) $htdocs .= '/'; $args = $_REQUEST['args']; $src = $htdocs.'wiki/source.c'; $gcc = '/usr/bin/gcc'; $out = $htdocs.'wiki/a.out'; $stdout = $htdocs.'wiki/a.stdout'; $stderr = $htdocs.'wiki/a.stderr';
# Write the source to tmp file source 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 " . (microtime() - $now) . " usec\n"; $article .= file_get_contents($stdout).file_get_contents($stderr); $article .= "\n\nExecuting compiled result:\n"; $now = microtime(); $article .= shell_exec("$out $args 2>&1"); $article .= "Execution took " . (microtime() - $now) . " usec\n"; } else xwMessage('Permission denied: Only admin can compile and execute C articles', 'red'); ?></php>