X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=tools%2Fmap-symbols;h=94d3016dafc309938d3e9111b7beccb9ca813a39;hb=d9c55a4d021b4a317a25f14f89468d62592aae0b;hp=bb82a9468eded3eba5f43a15ec227d7d2a550439;hpb=0192d9f3a127c82b32131d26ed9b5fb5a90db723;p=libucw.git diff --git a/tools/map-symbols b/tools/map-symbols index bb82a946..94d3016d 100755 --- a/tools/map-symbols +++ b/tools/map-symbols @@ -4,12 +4,24 @@ use common::sense; +sub symbol { + my ($sym) = @_; + return if $sym =~ m{^(ucw|ucwlib)_}; + print "$sym\n"; +} + sub parse { my ($file) = @_; print "# $file\n"; open my $f, '<', $file or die; while (<$f>) { chomp; + # Interpret special comments + m{// NOAPI} and next; + if (m{// API: (\w+)}) { + print "$1\n"; + next; + } # Find things which look like top-level declarations s{//.*}{}; s{/\*.*}{}; @@ -32,9 +44,9 @@ sub parse { if (m{^extern [^,]*(\s+\**\w+(,\s+\**\w+)*);}) { my $x = $1; $x =~ s{[,*]}{}g; - print join("\n", grep { !/^$/ } split /\s+/, $x), "\n"; + symbol $_ for grep { !/^$/ } split /\s+/, $x; } elsif (m{( |\*)(\w+)\(}) { - print "$2\n"; + symbol($2); } else { print "??? $_\n"; }