Difference between revisions of "C.php"
m (merge streams) |
(error if not admin) |
||
| Line 1: | Line 1: | ||
<? | <? | ||
# C compiler for XmlWiki Environment | # C compiler for XmlWiki Environment | ||
| − | xwSetProperty($properties,'language','TEXT'); | + | if ($xwIsAdmin) { |
| − | $server = $_SERVER['HTTP_HOST']; | + | xwSetProperty($properties,'language','TEXT'); |
| − | $htdocs = $_SERVER['DOCUMENT_ROOT']; | + | $server = $_SERVER['HTTP_HOST']; |
| − | if ( !ereg( "\\/$", $htdocs ) ) $htdocs .= '/'; | + | $htdocs = $_SERVER['DOCUMENT_ROOT']; |
| + | if (!ereg( "\\/$", $htdocs)) $htdocs .= '/'; | ||
| − | $src = $htdocs.'wiki/source.c'; | + | $src = $htdocs.'wiki/source.c'; |
| − | $gcc = '/usr/bin/gcc'; // diagnostics please | + | $gcc = '/usr/bin/gcc'; // diagnostics please |
| − | if ($switches = $_REQUEST['switches']) $gcc .= " $switches"; | + | if ($switches = $_REQUEST['switches']) $gcc .= " $switches"; |
| − | $out = $htdocs.'wiki/a.out'; | + | $out = $htdocs.'wiki/a.out'; |
| − | $stdout = $htdocs.'wiki/a.stdout'; | + | $stdout = $htdocs.'wiki/a.stdout'; |
| − | $stderr = $htdocs.'wiki/a.stderr'; | + | $stderr = $htdocs.'wiki/a.stderr'; |
| − | // Write the source to tmp file source.c | + | // Write the source to tmp file source.c |
| − | if ($handle = fopen($src, 'w+')) { | + | if ($handle = fopen($src, 'w+')) { |
| − | + | fwrite($handle, "$article\n"); | |
| − | + | fclose($handle); | |
| − | + | } | |
| − | // Compile & excecute | + | // Compile & excecute |
| − | $article = "Compiling using $gcc\n\n"; | + | $article = "Compiling using $gcc\n\n"; |
| − | shell_exec("$gcc $src 1>$stdout 2>$stderr"); | + | shell_exec("$gcc $src 1>$stdout 2>$stderr"); |
| − | $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"; |
| − | $article .= shell_exec("$out 2>&1"); | + | $article .= shell_exec("$out 2>&1"); |
| + | } | ||
| + | else xwMessage('Sorry, only admin can compile and execute C', 'red'); | ||
?> | ?> | ||
Revision as of 07:18, 24 June 2006
<?
- C compiler for XmlWiki Environment
if ($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\n"; shell_exec("$gcc $src 1>$stdout 2>$stderr"); $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', 'red'); ?>



