<?php
// define a list of programming file extensions
$countExtensions = array(
"asp",
"aspx",
"c",
"cc",
"cpp",
"h",
"htm",
"html",
"java",
"js",
"jsp",
"m",
"mm",
"php",
"pl",
"shtml"
);
if( $argc != 2 )
exit("\nUsage: linecount.php <dirname>\n\n");
$dir = $argv[1];
$countExtReg = implode($countExtensions, "|");
$lineCount = 0;
function processDir($dirname){
global $countExtReg, $lineCount;
if( !($dh = opendir($dirname)) )
return;
$oldDir = getcwd();
chdir($dirname);
while( false !== ($file = readdir($dh)) ){
// skip current and previous references
if( preg_match("/^\.|^\.\./", $file) != 0 )
continue;
// compare against programming extensions
if( preg_match("/^.*\.($countExtReg)$/i", $file) != 0 ){
echo realpath($file) . "\n";
$lines = file($file);
$lineCount += count($lines);
unset($lines);
}
if( is_dir($file) )
processDir($file);
}
closedir($dh);
chdir($oldDir);
}
if( !is_dir($dir) )
exit("\n$dir is not a directory\n");
processDir($dir);
exit("\nLine Count: $lineCount\n\n");
?>