X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=tools%2Fmap-symbols;h=94d3016dafc309938d3e9111b7beccb9ca813a39;hb=d9c55a4d021b4a317a25f14f89468d62592aae0b;hp=5e193b8fea089b9abc77206fec7c7dfb65e3a136;hpb=9d354545c76016d34b86f2831b24ce9010bc91af;p=libucw.git diff --git a/tools/map-symbols b/tools/map-symbols index 5e193b8f..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"; } @@ -63,9 +75,11 @@ my %blacklist = map { $_ => 1 } qw( charset/U-lower.h charset/U-unacc.h charset/U-upper.h + images/image-walk.h + images/scale-gen.h ); -for my $f (, , ) { +for my $f (, , , ) { next if $blacklist{$f}; parse($f); }