xref: /plan9/sys/src/cmd/usb/disk/mkscsierrs (revision 906943f9f6b8411972abb5e3a03ed19f74be7ccc)
1*906943f9SDavid du Colombier#!/bin/rc
2*906943f9SDavid du Colombier
3*906943f9SDavid du Colombiercat <<EOF
4*906943f9SDavid du Colombier#include <u.h>
5*906943f9SDavid du Colombier#include <libc.h>
6*906943f9SDavid du Colombier
7*906943f9SDavid du Colombiertypedef struct Err Err;
8*906943f9SDavid du Colombierstruct Err
9*906943f9SDavid du Colombier{
10*906943f9SDavid du Colombier	int n;
11*906943f9SDavid du Colombier	char *s;
12*906943f9SDavid du Colombier};
13*906943f9SDavid du Colombier
14*906943f9SDavid du Colombierstatic Err scsierrs[] = {
15*906943f9SDavid du ColombierEOF
16*906943f9SDavid du Colombier
17*906943f9SDavid du Colombiergrep '^[0-9a-c][0-9a-c][0-9a-c][0-9a-c][ 	]' /sys/lib/scsicodes |
18*906943f9SDavid du Colombier	sed -e 's/^(....) (.*)/	{0x\1,	"\2"},\n/'
19*906943f9SDavid du Colombiercat <<EOF
20*906943f9SDavid du Colombier};
21*906943f9SDavid du Colombier
22*906943f9SDavid du Colombierchar*
23*906943f9SDavid du Colombierscsierrmsg(int n)
24*906943f9SDavid du Colombier{
25*906943f9SDavid du Colombier	int i;
26*906943f9SDavid du Colombier
27*906943f9SDavid du Colombier	for(i = 0; i < nelem(scsierrs); i++)
28*906943f9SDavid du Colombier		if(scsierrs[i].n == n)
29*906943f9SDavid du Colombier			return scsierrs[i].s;
30*906943f9SDavid du Colombier	return "scsi error";
31*906943f9SDavid du Colombier}
32*906943f9SDavid du ColombierEOF
33