]> CyberLeo.Net >> Repos - FreeBSD/releng/7.2.git/blob - usr.bin/unifdef/unifdefall.sh
Create releng/7.2 from stable/7 in preparation for 7.2-RELEASE.
[FreeBSD/releng/7.2.git] / usr.bin / unifdef / unifdefall.sh
1 #!/bin/sh
2 #
3 # remove all the #if's from a source file
4 #
5 #       $dotat: things/unifdefall.sh,v 1.9 2002/09/24 19:43:57 fanf2 Exp $
6 # $FreeBSD$
7
8 set -e
9
10 basename=`basename $0`
11 tmp=`mktemp -d -t $basename` || exit 2
12
13 unifdef -s "$@" | sort | uniq > $tmp/ctrl
14 cpp -dM "$@" | sort |
15         sed -Ee 's/^#define[    ]+(.*[^  ])[    ]*$/\1/' > $tmp/hashdefs
16 sed -Ee 's/^([A-Za-z0-9_]+).*$/\1/' $tmp/hashdefs > $tmp/alldef
17 comm -23 $tmp/ctrl $tmp/alldef > $tmp/undef
18 comm -12 $tmp/ctrl $tmp/alldef > $tmp/def
19
20 echo unifdef -k \\ > $tmp/cmd
21 sed -Ee 's/^(.*)$/-U\1 \\/' $tmp/undef >> $tmp/cmd
22 while read sym
23 do      sed -Ee '/^('"$sym"')([(][^)]*[)])?([   ]+(.*))?$/!d;s//-D\1=\4/' $tmp/hashdefs
24 done < $tmp/def |
25         sed -Ee 's/\\/\\\\/g;s/"/\\"/g;s/^/"/;s/$/" \\/' >> $tmp/cmd
26 echo '"$@"' >> $tmp/cmd
27 sh $tmp/cmd "$@"
28
29 rm -r $tmp