| #! /usr/bin/perl -w |
| # -*- perl -*- |
| # Generated from ifnames.in; do not edit by hand. |
| |
| eval 'case $# in 0) exec /usr/bin/perl -S "$0";; *) exec /usr/bin/perl -S "$0" "$@";; esac' |
| if 0; |
| |
| # ifnames - print the identifiers used in C preprocessor conditionals |
| |
| # Copyright (C) 1994, 1995, 1999, 2000, 2001, 2002, 2003, 2005, 2006, |
| # 2007, 2008, 2009 Free Software Foundation, Inc. |
| |
| # This program is free software: you can redistribute it and/or modify |
| # it under the terms of the GNU General Public License as published by |
| # the Free Software Foundation, either version 3 of the License, or |
| # (at your option) any later version. |
| |
| # This program is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| # GNU General Public License for more details. |
| |
| # You should have received a copy of the GNU General Public License |
| # along with this program. If not, see <http://www.gnu.org/licenses/>. |
| |
| # Reads from stdin if no files are given. |
| # Writes to stdout. |
| |
| # Written by David MacKenzie <djm@gnu.ai.mit.edu> |
| # and Paul Eggert <eggert@twinsun.com>. |
| |
| BEGIN |
| { |
| my $pkgdatadir = $ENV{'autom4te_perllibdir'} || '/usr/local/google/apenwarr/athena/out.mstc/host/usr/share/autoconf'; |
| unshift @INC, $pkgdatadir; |
| |
| # Override SHELL. On DJGPP SHELL may not be set to a shell |
| # that can handle redirection and quote arguments correctly, |
| # e.g.: COMMAND.COM. For DJGPP always use the shell that configure |
| # has detected. |
| $ENV{'SHELL'} = '/bin/sh' if ($^O eq 'dos'); |
| } |
| |
| use Autom4te::General; |
| use Autom4te::XFile; |
| use Autom4te::FileUtils; |
| |
| # $HELP |
| # ----- |
| $help = "Usage: $0 [OPTION]... [FILE]... |
| |
| Scan all of the C source FILES (or the standard input, if none are |
| given) and write to the standard output a sorted list of all the |
| identifiers that appear in those files in `#if', `#elif', `#ifdef', or |
| `#ifndef' directives. Print each identifier on a line, followed by a |
| space-separated list of the files in which that identifier occurs. |
| |
| -h, --help print this help, then exit |
| -V, --version print version number, then exit |
| |
| Report bugs to <bug-autoconf\@gnu.org>. |
| GNU Autoconf home page: <http://www.gnu.org/software/autoconf/>. |
| General help using GNU software: <http://www.gnu.org/gethelp/>. |
| "; |
| |
| |
| # $VERSION |
| # -------- |
| $version = "ifnames (GNU Autoconf) 2.65 |
| Copyright (C) 2009 Free Software Foundation, Inc. |
| License GPLv3+/Autoconf: GNU GPL version 3 or later |
| <http://gnu.org/licenses/gpl.html>, <http://gnu.org/licenses/exceptions.html> |
| This is free software: you are free to change and redistribute it. |
| There is NO WARRANTY, to the extent permitted by law. |
| |
| Written by David J. MacKenzie and Paul Eggert. |
| "; |
| |
| |
| # &parse_args () |
| # -------------- |
| # Process any command line arguments. |
| sub parse_args () |
| { |
| getopt (); |
| } |
| |
| |
| # %OCCURRENCE |
| # ----------- |
| my %occurrence; |
| |
| |
| # &scan_file ($FILE-NAME) |
| # ----------------------- |
| sub scan_file ($) |
| { |
| my ($file_name) = @_; |
| my $file = new Autom4te::XFile ("< " . open_quote ($file_name)); |
| while ($_ = $file->getline) |
| { |
| # Continuation lines. |
| $_ .= $file->getline |
| while (s/\\$//); |
| |
| # Preprocessor directives. |
| if (s/^\s*\#\s*(if|ifdef|ifndef|elif)\s+//) |
| { |
| # Remove comments. Not perfect, but close enough. |
| s(/\*.*?\*/)(); |
| s(/\*.*)(); |
| s(//.*)(); |
| foreach my $word (split (/\W+/)) |
| { |
| next |
| if $word eq 'defined' || $word !~ /^[a-zA-Z_]/; |
| $occurrence{$word}{$file_name} = 1; |
| } |
| } |
| } |
| } |
| |
| |
| ## ------ ## |
| ## Main. ## |
| ## ------ ## |
| |
| parse_args(); |
| foreach (@ARGV) |
| { |
| scan_file ($_); |
| } |
| foreach (sort keys %occurrence) |
| { |
| print "$_ ", join (' ', sort keys %{$occurrence{$_}}), "\n"; |
| } |
| |
| ### Setup "GNU" style for perl-mode and cperl-mode. |
| ## Local Variables: |
| ## perl-indent-level: 2 |
| ## perl-continued-statement-offset: 2 |
| ## perl-continued-brace-offset: 0 |
| ## perl-brace-offset: 0 |
| ## perl-brace-imaginary-offset: 0 |
| ## perl-label-offset: -2 |
| ## cperl-indent-level: 2 |
| ## cperl-brace-offset: 0 |
| ## cperl-continued-brace-offset: 0 |
| ## cperl-label-offset: -2 |
| ## cperl-extra-newline-before-brace: t |
| ## cperl-merge-trailing-else: nil |
| ## cperl-continued-statement-offset: 2 |
| ## End: |