refactor code so it can run in a chroot without having to have /dev/mounted
MFC After: 1 week
This commit is contained in:
parent
7f3d351951
commit
ce3b9e3aea
@ -1,19 +1,56 @@
|
||||
#!/bin/sh
|
||||
# $FreeBSD$
|
||||
|
||||
# Grrr, this should use stdin and stdout, but is encrufted for compatibility.
|
||||
|
||||
usage()
|
||||
{
|
||||
echo "usage: genassym [-o outfile] objfile"
|
||||
exit 1
|
||||
}
|
||||
|
||||
outfile=/dev/stdout
|
||||
|
||||
work()
|
||||
{
|
||||
${NM:='nm'} "$1" | ${AWK:='awk'} '
|
||||
/ C .*sign$/ {
|
||||
sign = substr($1, length($1) - 3, 4)
|
||||
sub("^0*", "", sign)
|
||||
if (sign != "")
|
||||
sign = "-"
|
||||
}
|
||||
/ C .*w0$/ {
|
||||
w0 = substr($1, length($1) - 3, 4)
|
||||
}
|
||||
/ C .*w1$/ {
|
||||
w1 = substr($1, length($1) - 3, 4)
|
||||
}
|
||||
/ C .*w2$/ {
|
||||
w2 = substr($1, length($1) - 3, 4)
|
||||
}
|
||||
/ C .*w3$/ {
|
||||
w3 = substr($1, length($1) - 3, 4)
|
||||
w = w3 w2 w1 w0
|
||||
sub("^0*", "", w)
|
||||
if (w == "")
|
||||
w = "0"
|
||||
sub("w3$", "", $3)
|
||||
# This still has minor problems representing INT_MIN, etc.
|
||||
# E.g.,
|
||||
# with 32-bit 2''s complement ints, this prints -0x80000000,
|
||||
# which has the wrong type (unsigned int).
|
||||
printf("#define\t%s\t%s0x%s\n", $3, sign, w)
|
||||
} '
|
||||
}
|
||||
|
||||
|
||||
#
|
||||
#MAIN PROGGRAM
|
||||
#
|
||||
use_outfile="no"
|
||||
while getopts "o:" option
|
||||
do
|
||||
case "$option" in
|
||||
o) outfile="$OPTARG";;
|
||||
o) outfile="$OPTARG"
|
||||
use_outfile="yes";;
|
||||
*) usage;;
|
||||
esac
|
||||
done
|
||||
@ -23,32 +60,10 @@ case $# in
|
||||
*) usage;;
|
||||
esac
|
||||
|
||||
${NM:='nm'} "$1" | ${AWK:='awk'} '
|
||||
/ C .*sign$/ {
|
||||
sign = substr($1, length($1) - 3, 4)
|
||||
sub("^0*", "", sign)
|
||||
if (sign != "")
|
||||
sign = "-"
|
||||
}
|
||||
/ C .*w0$/ {
|
||||
w0 = substr($1, length($1) - 3, 4)
|
||||
}
|
||||
/ C .*w1$/ {
|
||||
w1 = substr($1, length($1) - 3, 4)
|
||||
}
|
||||
/ C .*w2$/ {
|
||||
w2 = substr($1, length($1) - 3, 4)
|
||||
}
|
||||
/ C .*w3$/ {
|
||||
w3 = substr($1, length($1) - 3, 4)
|
||||
w = w3 w2 w1 w0
|
||||
sub("^0*", "", w)
|
||||
if (w == "")
|
||||
w = "0"
|
||||
sub("w3$", "", $3)
|
||||
# This still has minor problems representing INT_MIN, etc. E.g.,
|
||||
# with 32-bit 2''s complement ints, this prints -0x80000000, which
|
||||
# has the wrong type (unsigned int).
|
||||
printf("#define\t%s\t%s0x%s\n", $3, sign, w)
|
||||
}
|
||||
' 3>"$outfile" >&3 3>&-
|
||||
if [ "$use_outfile" = "yes" ]
|
||||
then
|
||||
work $1 3>"$outfile" >&3 3>&-
|
||||
else
|
||||
work $1
|
||||
fi
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user