server/dep/ACE_wrappers/bin/count_lines
cipherCOM 571f510ee4 [11162] Changed ACE lib to same version but with configure script
(based on cipherCOM's repo commit d3d8934)

Signed-off-by: VladimirMangos <vladimir@getmangos.com>
2011-02-14 12:51:16 +03:00

236 lines
6.8 KiB
Perl
Executable file

eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
& eval 'exec perl -S $0 $argv:q'
if 0;
# -*- perl -*-
# $Id: count_lines 80826 2008-03-04 14:51:23Z wotte $
#
use File::Basename;
$cmd= basename($0);
if ($#ARGV < 0) {
die "Usage: $cmd module...\n";
}
@match_order = ();
%typeRE = ();
&initfiletypes;
foreach $module (@ARGV) {
if ( ! -d $module ) {
warn "$cmd: no such directory $module\n";
next;
}
open(DIRS, "find $module -type d|");
@dirs = grep {if(!/CVS/) {chop;}} <DIRS>;
close(DIRS);
open(FIND, "find $module -type f|");
@files = grep {if (!/build/
&& !/CVS/
&& !/rpc\+\+/
&& !/\.bpr$/
&& !/\.mdp$/
&& !/\.MDP$/
&& !/\.dsp$/
&& !/\.DSP$/
&& !/\.dsw$/
&& !/\.DSW$/
&& !/\.mak$/
&& !/\.MAK$/
&& !/\.o$/
&& !/\.sl$/
&& !/\.a$/) {chop;}} <FIND>;
close(FIND);
$totdirs = $#dirs;
$totfiles = $#files;
$totlines = 0;
%lines = ();
foreach $file (@files) {
$n = 0;
if (!open(IN, $file)) {
warn "$cmd: cannot open '$file' for reading\n";
next;
}
while(<IN>) {
$n++;
}
close(IN);
$lines{$file} = $n;
$totlines += $n;
}
# Define two associative arrays to keep the results for each kind
# of file.
%linespertype = ();
%filespertype = ();
foreach $type (keys %typeRE) {
$linespertype{$type} = 0;
$filespertype{$type} = 0;
}
# The file is classified and added to the corresponding variable.
FILE: while (($file, $l) = each %lines) {
foreach $type (@match_order) {
$re = $typeRE{$type};
if($file =~ m/$re/) {
$linespertype{$type} += $l;
$filespertype{$type}++;
next FILE;
}
}
print STDERR "Unmatched file: $file\n";
}
format STDOUT_TOP=
@|||
$%
Lines of code in module @<<<<<<<<<<<<<<<<<<<<
$module
Files: @>>>>>>>>
$totfiles
Directories: @>>>>>>>>
$totdirs
Lines: @>>>>>>>>
$totlines
File type lines files
---------------------------- ------------------ -----------------
.
format STDOUT=
@<<<<<<<<<<<<<<<<<<<<<<<<<<< @>>>>>>>>>>>>>>>>> @>>>>>>>>>>>>>>>>
$type, $typelines, $typefiles
.
foreach $type (@match_order) {
$typelines = $linespertype{$type};
$typefiles = $filespertype{$type};
if ($typefiles != 0) {
write;
}
}
# Forzamos un newpage para cada modulo.
$- = 0;
}
sub updateRE {
local $desc = shift;
local $re = shift;
if (exists $typeRE{$desc}) {
local $mix = $typeRE{$desc} . '|(' . $re . ')';
$typeRE{$desc} = $mix;
} else {
$typeRE{$desc} = '(' . $re . ')';
push @match_order, $desc;
}
}
sub initfiletypes {
# Here we define the regular expressions for each kind of file.
# This RE must be mutually exclusive, a file will not be counted
# twice, but it could be unproperly classified.
local %filenames =
('GNUmakefile' => 'Makefile',
'Makefile.*' => 'Makefile',
'README' => 'README files',
'COPYING' => 'Licenses',
'LICENSE.*' => 'Licenses',
'ChangeLog.*' => 'ChangeLog',
'ChangeLog-.*' => 'ChangeLog',
'.cvsignore' => 'Control CVS',
'run_test.pl' => 'Test driver',
'run_test' => 'Test driver',
'run_tests' => 'Test driver',
'run_test.sh' => 'Test driver');
local %fileexts =
('cc' => 'C++ sources',
'cpp' => 'C++ sources',
'inl' => 'C++ sources',
'i' => 'C++ sources',
'h' => 'Headers',
'hh' => 'Headers',
'c' => 'C/C++ sources',
'idl' => 'IDL sources',
'IDL' => 'IDL sources',
'pidl' => 'IDL sources',
'y' => 'yacc source',
'yy' => 'yacc source',
'l' => 'lex source',
'll' => 'lex source',
'php' => 'php script',
'pm' => 'perl script',
'pl' => 'perl script',
'perl' => 'perl script',
'py' => 'python script',
'GNU' => 'GNU make config',
'tex' => '(La)TeX',
'txt' => 'Text files',
'1' => 'man pages',
'3' => 'man pages',
'html' => 'HTML',
'bib' => 'BibTeX',
'sty' => 'TeX styles',
'bld' => 'VxWorks build file',
'am' => 'Automake file',
'icc' => 'VisualAge project files',
'icp' => 'VisualAge project files',
'vac' => 'VisualAge project files',
'vcp' => 'Microsof eMbedded Visual Tools project files',
'vcw' => 'Microsof eMbedded Visual Tools project files',
'bpr' => 'Borland project files',
'bor' => 'Borland project files',
'dsp' => 'DevStudio project files',
'DSP' => 'DevStudio project files',
'mdp' => 'MSVC project files',
'MDP' => 'MSVC project files',
'dsw' => 'MSVC workspaces',
'DSW' => 'MSVC workspaces',
'mak' => 'MSVC MAK files',
'MAK' => 'MSVC MAK files',
'java' => 'JAVA source',
'class' => 'JAVA class',
'cccc' => 'codecount output',
'gif' => 'GIF images',
'conf' => 'Svc_Config files',
'diff' => 'patches',
'zip' => 'Compressed files',
'gz' => 'Compressed files',
'EXE' => 'Win32 executable',
'shar' => 'Shar archive',
'mib' => 'MIB definition files',
'gperf' => 'GPERF input',
'phil.*'=> 'Test driver'
);
local %paths = ();
local ($desc, $reseed);
while (($reseed, $desc) = each %filenames) {
local $re = '/' . $reseed . '$';
updateRE($desc, $re);
}
while (($reseed, $desc) = each %fileexts) {
local $re = '/[^/]*\.' . $reseed . '$';
updateRE($desc, $re);
}
while (($reseed, $desc) = each %paths) {
local $re = $reseed;
updateRE($desc, $re);
}
updateRE('Others', '.*');
# while (($desc, $reseed) = each %typeRE) {
# print STDERR $desc, " ==> ", $reseed, "\n";
# }
}