OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [drivers/] [message/] [fusion/] [ascq_tbl.sh] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
#!/bin/sh
2
#
3
#  ascq_tbl.sh - Translate SCSI t10.org's "asc-num.txt" file of
4
#                SCSI Additional Sense Code & Qualifiers (ASC/ASCQ's)
5
#                into something useful in C, creating "ascq_tbl.c" file.
6
#
7
#*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*#
8
 
9
PREF_INFILE="t10.org/asc-num.txt"       # From SCSI t10.org
10
PREF_OUTFILE="ascq_tbl.c"
11
 
12
#*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*#
13
 
14
xlate_ascq() {
15
        cat | awk '
16
        BEGIN {
17
                DQ = "\042";
18
                OUTFILE = "'"${PREF_OUTFILE}"'";
19
                TRUE = 1;
20
                FALSE = 0;
21
                #debug = TRUE;
22
 
23
                #  read and discard all lines up to and including the one that begins
24
                #  with the "magic token" of "-------  --------------  ---"...
25
                headers_gone = FALSE;
26
                while (!headers_gone) {
27
                        if (getline <= 0)
28
                                exit 1;
29
                        header_line[++hdrs] = $0;
30
                        if (debug)
31
                                printf("header_line[%d] = :%s:\n", ++hdrs, $0);
32
                        if ($0 ~ /^-------  --------------  ---/) {
33
                                headers_gone = TRUE;
34
                        }
35
                }
36
                outcount = 0;
37
        }
38
 
39
        (NF > 1) {
40
                ++outcount;
41
                if (debug)
42
                        printf( "DBG: %s\n", $0 );
43
                ASC[outcount] = substr($0,1,2);
44
                ASCQ[outcount] = substr($0,5,2);
45
                devtypes = substr($0,10,14);
46
                gsub(/ /, ".", devtypes);
47
                DESCRIP[outcount] = substr($0,26);
48
 
49
                if (!(devtypes in DevTypesVoodoo)) {
50
                        DevTypesVoodoo[devtypes] = ++voodoo;
51
                        DevTypesIdx[voodoo] = devtypes;
52
                }
53
                DEVTYPES[outcount] = DevTypesVoodoo[devtypes];
54
 
55
                #  Handle 0xNN exception stuff...
56
                if (ASCQ[outcount] == "NN" || ASCQ[outcount] == "nn")
57
                        ASCQ[outcount] = "FF";
58
        }
59
 
60
        END {
61
                printf("#ifndef SCSI_ASCQ_TBL_C_INCLUDED\n") > OUTFILE;
62
                printf("#define SCSI_ASCQ_TBL_C_INCLUDED\n") >> OUTFILE;
63
 
64
                printf("\n/* AuToMaGiCaLlY generated from: %s'"${FIN}"'%s\n", DQ, DQ) >> OUTFILE;
65
                printf(" *******************************************************************************\n") >> OUTFILE;
66
                for (i=1; i<=hdrs; i++) {
67
                        printf(" * %s\n", header_line[i]) >> OUTFILE;
68
                }
69
                printf(" */\n") >> OUTFILE;
70
 
71
                printf("\n") >> OUTFILE;
72
                for (i=1; i<=voodoo; i++) {
73
                        printf("static char SenseDevTypes%03d[] = %s%s%s;\n", i, DQ, DevTypesIdx[i], DQ) >> OUTFILE;
74
                }
75
 
76
                printf("\nstatic ASCQ_Table_t ASCQ_Table[] = {\n") >> OUTFILE;
77
                for (i=1; i<=outcount; i++) {
78
                        printf("  {\n") >> OUTFILE;
79
                        printf("    0x%s, 0x%s,\n", ASC[i], ASCQ[i]) >> OUTFILE;
80
                        printf("    SenseDevTypes%03d,\n", DEVTYPES[i]) >> OUTFILE;
81
                        printf("    %s%s%s\n", DQ, DESCRIP[i], DQ) >> OUTFILE;
82
                        printf("  },\n") >> OUTFILE;
83
                }
84
                printf( "};\n\n" ) >> OUTFILE;
85
 
86
                printf( "static int ASCQ_TableSize = %d;\n\n", outcount ) >> OUTFILE;
87
                printf( "Total of %d ASC/ASCQ records generated\n", outcount );
88
                printf("\n#endif\n") >> OUTFILE;
89
                close(OUTFILE);
90
        }'
91
        return
92
}
93
 
94
#*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*#
95
 
96
# main()
97
if [ $# -lt 1 ]; then
98
        echo "INFO: No input filename supplied - using: $PREF_INFILE" >&2
99
        FIN=$PREF_INFILE
100
else
101
        FIN="$1"
102
        if [ "$FIN" != "$PREF_INFILE" ]; then
103
                echo "INFO: Ok, I'll try chewing on '$FIN' for SCSI ASC/ASCQ combos..." >&2
104
        fi
105
        shift
106
fi
107
 
108
cat $FIN | xlate_ascq
109
exit 0

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.