extern_c.php   [plain text]


<?php

function scan_dir($dir) {
	if (!is_dir($dir)) return;

	foreach (glob("$dir/*") as $file) {
		if (is_dir($file)) {
			if (basename($file) != "CVS") {
				scan_dir($file);
			}
		} else if (fnmatch("*.h", $file)) {
			scan_file($file); 
		}
	}
}
	
function scan_file($file) {
	$flag = false;
	
	foreach (file($file) as $nr => $line) {
		if (ereg("^[[:space:]]*BEGIN_EXTERN_C", $line)) {
#		    echo "$file:".($nr+1)." $line";
			$flag = true;
		} else if (ereg("^[[:space:]]*END_EXTERN_C", $line)) {
#		    echo "$file:".($nr+1)." $line";
			$flag = false;
		} else if (  (ereg("^[[:space:]]*PHPAPI[[:space:]]*", $line)) 
					 ||(ereg("^[[:space:]]*ZEND_API[[:space:]]*", $line))) {
		  if (strstr($line,"(")) { 
			  if (!$flag) echo "$file:".($nr+1)." $line";
		  }
		}
	}
}

array_shift($_SERVER["argv"]);

if (count($_SERVER["argv"])) {
	foreach ($_SERVER["argv"] as $dir) {
		scan_dir($dir);
	}
} else {
	scan_dir(".");
}
?>