diff options
Diffstat (limited to 'usr.bin/unifdef/unifdefall.sh')
-rw-r--r-- | usr.bin/unifdef/unifdefall.sh | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/usr.bin/unifdef/unifdefall.sh b/usr.bin/unifdef/unifdefall.sh index 179fc93..c9a04cc 100644 --- a/usr.bin/unifdef/unifdefall.sh +++ b/usr.bin/unifdef/unifdefall.sh @@ -26,7 +26,6 @@ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # -# $dotat: unifdef/unifdefall.sh,v 1.27 2010/01/19 16:09:50 fanf2 Exp $ # $FreeBSD$ set -e @@ -36,17 +35,21 @@ if [ ! -e "$unifdef" ] then unifdef=unifdef fi -# export to the final shell command -export unifdef + +case "$@" in +"-d "*) echo DEBUGGING 1>&2 + debug=-d + shift +esac basename=$(basename "$0") tmp=$(mktemp -d "${TMPDIR:-/tmp}/$basename.XXXXXXXXXX") || exit 2 -trap 'rm -r "$tmp" || exit 1' EXIT +trap 'rm -r "$tmp" || exit 2' EXIT export LC_ALL=C # list of all controlling macros -"$unifdef" -s "$@" | sort | uniq >"$tmp/ctrl" +"$unifdef" $debug -s "$@" | sort | uniq >"$tmp/ctrl" # list of all macro definitions cpp -dM "$@" | sort | sed 's/^#define //' >"$tmp/hashdefs" # list of defined macro names @@ -58,7 +61,7 @@ comm -12 "$tmp/ctrl" "$tmp/alldef" >"$tmp/def" # and converts them to unifdef command-line arguments sed 's|.*|s/^&\\(([^)]*)\\)\\{0,1\\} /-D&=/p|' <"$tmp/def" >"$tmp/script" # create the final unifdef command -{ echo '"$unifdef" -k \' +{ echo "$unifdef" $debug -k '\' # convert the controlling undefined macros to -U arguments sed 's/.*/-U& \\/' <"$tmp/undef" # convert the controlling defined macros to quoted -D arguments @@ -66,5 +69,11 @@ sed 's|.*|s/^&\\(([^)]*)\\)\\{0,1\\} /-D&=/p|' <"$tmp/def" >"$tmp/script" sed "s/'/'\\\\''/g;s/.*/'&' \\\\/" echo '"$@"' } >"$tmp/cmd" +case $debug in +-d) for i in ctrl hashdefs alldef undef def script cmd + do echo ==== $i + cat "$tmp/$i" + done 1>&2 +esac # run the command we just created sh "$tmp/cmd" "$@" |