summaryrefslogtreecommitdiff
path: root/bin/show_unused_macros.pl
diff options
context:
space:
mode:
Diffstat (limited to 'bin/show_unused_macros.pl')
-rwxr-xr-xbin/show_unused_macros.pl224
1 files changed, 0 insertions, 224 deletions
diff --git a/bin/show_unused_macros.pl b/bin/show_unused_macros.pl
deleted file mode 100755
index 820b22e602d..00000000000
--- a/bin/show_unused_macros.pl
+++ /dev/null
@@ -1,224 +0,0 @@
-eval '(exit $?0)' && eval 'exec perl -w -S $0 ${1+"$@"}'
- & eval 'exec perl -w -S $0 $argv:q'
- if 0;
-
-# ************************************************************
-# Description : Find macros in specified config files that
-# are not referenced in other config files,
-# but are referenced in the rest of the source
-# files.
-# Author : Chad Elliott
-# Create Date : 12/22/2004
-# $Id$
-# ************************************************************
-
-# ************************************************************
-# Pragmas
-# ************************************************************
-
-use strict;
-use Cwd;
-use FileHandle;
-use File::Basename;
-
-# ************************************************************
-# Data Section
-# ************************************************************
-
-my($in_comment) = undef;
-
-# ************************************************************
-# Subroutine Section
-# ************************************************************
-
-sub getline {
- my($fh) = shift;
- my($line) = $fh->getline();
-
- if (defined $line) {
- ## Remove the line feed
- $line =~ s/\n//;
-
- ## Remove one line c comments
- $line =~ s/\/\*.*\*\///;
-
- ## Check for multi lined c comments
- if ($line =~ s/\/\*.*//) {
- $in_comment = 1;
- }
- elsif ($line =~ s/.*\*\///) {
- $in_comment = 0;
- }
- elsif ($in_comment) {
- $line = '';
- }
- else {
- ## Remove c++ comments
- $line =~ s/\/\/.*//;
-
- ## Concatenate lines
- if ($line =~ s/\\\s*$//) {
- $line .= getline($fh);
- }
- }
- }
-
- return $line;
-}
-
-
-sub findMacros {
- my($defines) = shift;
- my($macros) = shift;
- my(@files) = @_;
- foreach my $file (@files) {
- my($fh) = new FileHandle();
-
- if (open($fh, $file)) {
- $in_comment = undef;
- while(defined($_ = getline($fh))) {
- if (($defines & 1) == 1 && /^\s*#\s*define\s*([^\s]+)/) {
- my($word) = $1;
- $word =~ s/\(.*//;
- if (!defined $$macros{$word}) {
- $$macros{$word} = $file;
- }
- }
- elsif (($defines & 2) == 2 && /^\s*#\s*if/) {
- foreach my $word (split(/[^\w]/, $_)) {
- if ($word =~ /^[^\d]\w+$/ &&
- $word !~ /^if([n]?def)?$/ &&
- $word !~ /^define[d]?/ &&
- $word !~ /^els(e|if)$/ && !defined $$macros{$word}) {
- $$macros{$word} = $file;
- }
- }
- }
- }
-
- close($fh);
- }
- else {
- print STDERR "Unable to open $file\n";
- exit(2);
- }
- }
-}
-
-
-sub usageAndExit {
- my($msg) = shift;
-
- if (defined $msg) {
- print STDERR "ERROR: $msg\n";
- }
-
- print STDERR 'Usage: ', basename($0), " [-I <directory>] <config headers>\n\n",
- "This script will provide a set of macros that may possibly\n",
- "be removed from ACE.\n\n",
- "It should be run under ACE_wrappers/ace and the input should\n",
- "be the config header file or files planned for removal.\n";
- exit(1);
-}
-
-
-# ************************************************************
-# Main Section
-# ************************************************************
-
-my(@files) = ();
-my(@dirs) = ('.', 'os_include', 'os_include/sys',
- 'os_include/netinet', 'os_include/net',
- 'os_include/arpa',
- );
-
-for(my $i = 0; $i <= $#ARGV; ++$i) {
- my($arg) = $ARGV[$i];
- if ($arg =~ /^-/) {
- if ($arg eq '-h') {
- usageAndExit();
- }
- elsif ($arg eq '-I') {
- ++$i;
- if (defined $ARGV[$i]) {
- push(@dirs, $ARGV[$i]);
- }
- else {
- usageAndExit('-I requires a directory parameter');
- }
- }
- else {
- usageAndExit("$arg is an unknown option");
- }
- }
- else {
- push(@files, $arg);
- }
-}
-
-if (!defined $files[0]) {
- usageAndExit();
-}
-
-## First find all of the control macros
-my(%control) = ();
-findMacros(3, \%control, @files);
-
-## Now find all of the macros from the other config files
-my(@other) = grep(!/config-all\.h|config-lite\.h/, <config-*.h>);
-
-for(my $i = 0; $i <= $#other; ++$i) {
- foreach my $file (@files) {
- if ($other[$i] eq $file) {
- splice(@other, $i, 1);
- --$i;
- last;
- }
- }
-}
-my(%other) = ();
-findMacros(3, \%other, @other);
-
-
-my(%notreferenced) = ();
-foreach my $macro (keys %control) {
- if (!defined $other{$macro}) {
- $notreferenced{$macro} = $control{$macro};
- }
-}
-
-
-## Find all other macros
-my(@all) = ();
-foreach my $dir (@dirs) {
- my($orig) = getcwd();
- if (chdir($dir)) {
- my(@more) = <*.h *.i* *.cpp>;
- if ($dir ne '.') {
- foreach my $file (@more) {
- $file = "$dir/$file";
- }
- }
- push(@all, @more);
- chdir($orig);
- }
-}
-
-for(my $i = 0; $i <= $#all; ++$i) {
- foreach my $file (@files, @other) {
- if ($all[$i] eq $file) {
- splice(@all, $i, 1);
- --$i;
- last;
- }
- }
-}
-
-my(%all) = ();
-findMacros(2, \%all, @all);
-
-foreach my $macro (sort keys %notreferenced) {
- if (defined $all{$macro}) {
- print "$macro\n";
- }
-}