Difference between revisions of "C.php"
(make default binary incase it doesn't compile) |
m |
||
Line 16: | Line 16: | ||
# Put a tmp executable msg in out file incase it doesn't compile | # Put a tmp executable msg in out file incase it doesn't compile | ||
if ($handle = fopen($out, 'w+')) { | if ($handle = fopen($out, 'w+')) { | ||
− | fwrite($handle, '#!/bin/sh | + | fwrite($handle, '#!/bin/sh\necho "\n\nNothing compiled!\n"'); |
fclose($handle); | fclose($handle); | ||
} | } |
Revision as of 00:02, 8 July 2006
<?
- 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';
# Put a tmp executable msg in out file incase it doesn't compile if ($handle = fopen($out, 'w+')) { fwrite($handle, '#!/bin/sh\necho "\n\nNothing compiled!\n"'); fclose($handle); }
# 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'); ?>