#!/usr/bin/perl # Re-generate symbol renaming defines # (c) 2013 Martin Mares use common::sense; my %renames = (); open my $f, '<', 'tools/libucw.api' or die; my $current; while (<$f>) { chomp; if (/^#\s*(.*)/) { $current = $1; } else { push @{$renames{$current}}, $_; } } close $f; for my $g (sort keys %renames) { my @symbols = sort @{$renames{$g}}; @symbols or next; print "### $g\n"; open my $in, '<', $g or die; open my $out, '>', "$g.new" or die; my $mode = 0; my $cmt = 0; while (<$in>) { if (!$mode) { if (m{^/\*$} && !$cmt) { $cmt = 1; } elsif (m{^\s} || m{^#include\s} || m{^#define\s+_} || m{^#ifndef\s+_} || m{^\s*$} ) { # Waiting for the right spot } elsif (m{^#ifdef CONFIG_UCW_CLEAN_ABI$}) { $mode = 2; next; } else { $mode = 1; print $out "#ifdef CONFIG_UCW_CLEAN_ABI\n"; for my $sym (@symbols) { print $out "#define $sym ucw_$sym\n"; } print $out "#endif\n\n"; } } elsif ($mode == 2) { if (m{^$}) { $mode = 0; } next; } print $out "$_"; } $mode or die; close $out; close $in; rename "$g.new", $g or die; }