Difference between revisions of "C.php"

From Organic Design wiki
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");
+
fwrite($handle, "$article\n");
    fclose($handle);
+
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

<?

  1. 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'); ?>