Difference between revisions of "C.php"

From Organic Design wiki
m
(send args to gcc later)
Line 7: Line 7:
 
$htdocs = $_SERVER['DOCUMENT_ROOT'];
 
$htdocs = $_SERVER['DOCUMENT_ROOT'];
 
if (!ereg( "\\/$", $htdocs)) $htdocs .= '/';
 
if (!ereg( "\\/$", $htdocs)) $htdocs .= '/';
 +
 +
# Make args from query string
 +
$args = '';
  
 
$src = $htdocs.'wiki/source.c';
 
$src = $htdocs.'wiki/source.c';
Line 28: Line 31:
 
$article .= "\n\nExecuting compiled result:\n";
 
$article .= "\n\nExecuting compiled result:\n";
 
$now = microtime();
 
$now = microtime();
$article .= shell_exec("$out 2>&1");
+
$article .= shell_exec("$out $args 2>&1");
 
$article .= "Execution took " . (microtime() - $now) . " usec\n";
 
$article .= "Execution took " . (microtime() - $now) . " usec\n";
 
}
 
}
 
else xwMessage('Permission denied: Only admin can compile and execute C articles', 'red');
 
else xwMessage('Permission denied: Only admin can compile and execute C articles', 'red');
 
?>
 
?>

Revision as of 11:35, 6 July 2006

<?

  1. C compiler for XmlWiki Environment
  2. 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 .= '/';

# Make args from query string $args = ;

$src = $htdocs.'wiki/source.c'; $gcc = '/usr/bin/gcc'; // diagnostics please $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'); ?>