patch-2.4.7 linux/drivers/message/fusion/ascq_tbl.sh
Next file: linux/drivers/message/fusion/isense.c
Previous file: linux/drivers/message/fusion/ascq_tbl.c
Back to the patch index
Back to the overall index
- Lines: 110
- Date:
Fri Jul 6 17:03:11 2001
- Orig file:
v2.4.6/linux/drivers/message/fusion/ascq_tbl.sh
- Orig date:
Wed Dec 31 16:00:00 1969
diff -u --recursive --new-file v2.4.6/linux/drivers/message/fusion/ascq_tbl.sh linux/drivers/message/fusion/ascq_tbl.sh
@@ -0,0 +1,109 @@
+#!/bin/sh
+#
+# ascq_tbl.sh - Translate SCSI t10.org's "asc-num.txt" file of
+# SCSI Additional Sense Code & Qualifiers (ASC/ASCQ's)
+# into something useful in C, creating "ascq_tbl.c" file.
+#
+#*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*#
+
+PREF_INFILE="t10.org/asc-num.txt" # From SCSI t10.org
+PREF_OUTFILE="ascq_tbl.c"
+
+#*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*#
+
+xlate_ascq() {
+ cat | awk '
+ BEGIN {
+ DQ = "\042";
+ OUTFILE = "'"${PREF_OUTFILE}"'";
+ TRUE = 1;
+ FALSE = 0;
+ #debug = TRUE;
+
+ # read and discard all lines up to and including the one that begins
+ # with the "magic token" of "------- -------------- ---"...
+ headers_gone = FALSE;
+ while (!headers_gone) {
+ if (getline <= 0)
+ exit 1;
+ header_line[++hdrs] = $0;
+ if (debug)
+ printf("header_line[%d] = :%s:\n", ++hdrs, $0);
+ if ($0 ~ /^------- -------------- ---/) {
+ headers_gone = TRUE;
+ }
+ }
+ outcount = 0;
+ }
+
+ (NF > 1) {
+ ++outcount;
+ if (debug)
+ printf( "DBG: %s\n", $0 );
+ ASC[outcount] = substr($0,1,2);
+ ASCQ[outcount] = substr($0,5,2);
+ devtypes = substr($0,10,14);
+ gsub(/ /, ".", devtypes);
+ DESCRIP[outcount] = substr($0,26);
+
+ if (!(devtypes in DevTypesVoodoo)) {
+ DevTypesVoodoo[devtypes] = ++voodoo;
+ DevTypesIdx[voodoo] = devtypes;
+ }
+ DEVTYPES[outcount] = DevTypesVoodoo[devtypes];
+
+ # Handle 0xNN exception stuff...
+ if (ASCQ[outcount] == "NN" || ASCQ[outcount] == "nn")
+ ASCQ[outcount] = "FF";
+ }
+
+ END {
+ printf("#ifndef SCSI_ASCQ_TBL_C_INCLUDED\n") > OUTFILE;
+ printf("#define SCSI_ASCQ_TBL_C_INCLUDED\n") >> OUTFILE;
+
+ printf("\n/* AuToMaGiCaLlY generated from: %s'"${FIN}"'%s\n", DQ, DQ) >> OUTFILE;
+ printf(" *******************************************************************************\n") >> OUTFILE;
+ for (i=1; i<=hdrs; i++) {
+ printf(" * %s\n", header_line[i]) >> OUTFILE;
+ }
+ printf(" */\n") >> OUTFILE;
+
+ printf("\n") >> OUTFILE;
+ for (i=1; i<=voodoo; i++) {
+ printf("static char SenseDevTypes%03d[] = %s%s%s;\n", i, DQ, DevTypesIdx[i], DQ) >> OUTFILE;
+ }
+
+ printf("\nstatic ASCQ_Table_t ASCQ_Table[] = {\n") >> OUTFILE;
+ for (i=1; i<=outcount; i++) {
+ printf(" {\n") >> OUTFILE;
+ printf(" 0x%s, 0x%s,\n", ASC[i], ASCQ[i]) >> OUTFILE;
+ printf(" SenseDevTypes%03d,\n", DEVTYPES[i]) >> OUTFILE;
+ printf(" %s%s%s\n", DQ, DESCRIP[i], DQ) >> OUTFILE;
+ printf(" },\n") >> OUTFILE;
+ }
+ printf( "};\n\n" ) >> OUTFILE;
+
+ printf( "static int ASCQ_TableSize = %d;\n\n", outcount ) >> OUTFILE;
+ printf( "Total of %d ASC/ASCQ records generated\n", outcount );
+ printf("\n#endif\n") >> OUTFILE;
+ close(OUTFILE);
+ }'
+ return
+}
+
+#*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*#
+
+# main()
+if [ $# -lt 1 ]; then
+ echo "INFO: No input filename supplied - using: $PREF_INFILE" >&2
+ FIN=$PREF_INFILE
+else
+ FIN="$1"
+ if [ "$FIN" != "$PREF_INFILE" ]; then
+ echo "INFO: Ok, I'll try chewing on '$FIN' for SCSI ASC/ASCQ combos..." >&2
+ fi
+ shift
+fi
+
+cat $FIN | xlate_ascq
+exit 0
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)