#!/bin/sh
#
# extract magic pieces from irix/cmd/hinv/hinv.c
#
# $Id: mk-hinv-helper,v 1.3 1997/04/29 06:25:25 chatz Exp $

if [ $# != 1 ]
then
    echo "Usage: $0 -DIRIX6_2|-DIRIX6_3|-DIRIX6_4|-DIRIX6_5"
    exit 1
fi

rm -f hinv-helper.c

if [ $1 = "-DIRIX6_2" ]
then
    cp hinv-6_2.c hinv-helper.c
elif [ $1 = "-DIRIX6_3" ]
then
    cp hinv-6_3.c hinv-helper.c
elif [ $1 = "-DIRIX6_4" ]
then
    cp hinv-6_4.c hinv-helper.c
elif [ $1 = "-DIRIX6_5" ]
then
    cp hinv-6_5.c hinv-helper.c
else
    echo "Usage: $0 -DIRIX6_2|-DIRIX6_3|-DIRIX6_4|-DIRIX6_5"
    exit 1
fi

if [ ! -f hinv-helper.c ]
then
    echo "$0: Failed to generate hinv-helper.c"
    exit 1
fi

chmod u+w hinv-helper.c

ex - <<'End-of-File' hinv-helper.c
$a
START GOOD STUFF
.
g/struct imp_tbl {/.,/};/m$
$a

.
g/union rev_id {/.,/};/m$
g/define[ 	][ 	]*ri_/m$
$a

.
g/struct imp_tbl cpu_imp_tbl/.,/};/m$
$a

.
g/^imp_name(/-,/^}/m$
1,/START GOOD STUFF/d
g/ Processor Chip"/s/"MIPS /"/
g/ Processor Chip"/s//"/
g/"Unknown CPU type."/s//"unknown"/
g/"Unknown implementation"/s//"unknown"/
/struct imp_tbl cpu_imp_tbl/s/^/static /
/^imp_name(/-s/^/static /
$a

char *
hinv_cpu_type(unsigned int rev)
{
    union rev_id ri;
    ri.ri_uint = rev;
    return imp_name(ri, cpu_imp_tbl);
}
.
1i
/*
 * Made from irix/cmd/hinv/hinv.c using irix/lib/libirixpmda/mk-hinv-helper
 */
#include <ctype.h>
#include <invent.h>
#include <sys/types.h>
#include <sys/sbd.h>

.
w
q
End-of-File
