#include        "all.h"

char    *errstr9p[MAXERR] =
{
       [Ebadspc]       "attach -- bad specifier",
       [Efid]          "unknown fid",
       [Echar]         "bad character in directory name",
       [Eopen]         "read/write -- on non open fid",
       [Ecount]        "read/write -- count too big",
       [Ealloc]        "phase error -- directory entry not allocated",
       [Eqid]          "phase error -- qid does not match",
       [Eaccess]       "access permission denied",
       [Eentry]        "directory entry not found",
       [Emode]         "open/create -- unknown mode",
       [Edir1]         "walk -- in a non-directory",
       [Edir2]         "create -- in a non-directory",
       [Ephase]        "phase error -- cannot happen",
       [Eexist]        "create/wstat -- file exists",
       [Edot]          "create/wstat -- . and .. illegal names",
       [Eempty]        "remove -- directory not empty",
       [Ebadu]         "attach -- unknown user or failed authentication",
       [Enoattach]     "attach -- system maintenance",
       [Ewstatb]       "wstat -- unknown bits in qid.type/mode",
       [Ewstatd]       "wstat -- attempt to change directory",
       [Ewstatg]       "wstat -- not in group",
       [Ewstatl]       "wstat -- attempt to make length negative",
       [Ewstatm]       "wstat -- attempt to change muid",
       [Ewstato]       "wstat -- not owner or group leader",
       [Ewstatp]       "wstat -- attempt to change qid.path",
       [Ewstatq]       "wstat -- qid.type/dir.mode mismatch",
       [Ewstatu]       "wstat -- not owner",
       [Ewstatv]       "wstat -- attempt to change qid.vers",
       [Ename]         "create/wstat -- bad character in file name",
       [Ewalk]         "walk -- too many (system wide)",
       [Eronly]        "file system read only",
       [Efull]         "file system full",
       [Eoffset]       "read/write -- offset negative",
       [Elocked]       "open/create -- file is locked",
       [Ebroken]       "read/write -- lock is broken",
       [Eauth]         "attach -- authentication failed",
       [Eauth2]        "read/write -- authentication unimplemented",
       [Etoolong]      "name too long",
       [Efidinuse]     "fid in use",
       [Econvert]      "protocol botch",
       [Eversion]      "version conversion",
       [Eauthnone]     "auth -- user 'none' requires no authentication",
       [Eauthdisabled] "auth -- authentication disabled",      /* development */
       [Eauthfile]     "auth -- out of auth files",
       [Eedge]         "at the bleeding edge",         /* development */
};

char*   wormscode[0x80] =
{
       [0x00]  "no sense",
       [0x01]  "invalid command",
       [0x02]  "recovered error",
       [0x03]  "illegal request",
       [0x06]  "unit attention",
       [0x07]  "parity error",
       [0x08]  "message reject error",
       [0x0a]  "copy aborted",
       [0x0b]  "initiator detected error",
       [0x0c]  "select re-select failed",
       [0x0e]  "miscompare",

       [0x10]  "ecc trouble occurred",
       [0x11]  "time out error",
       [0x12]  "controller error",
       [0x13]  "sony i/f II hardware/firmware error",
       [0x14]  "scsi hardware/firmware error",
       [0x15]  "rom version unmatched error",
       [0x16]  "logical block address out of range",

       [0x20]  "command not terminated",
       [0x21]  "drive interface parity error",
       [0x22]  "loading trouble",
       [0x23]  "focus trouble",
       [0x24]  "tracking trouble",
       [0x25]  "spindle trouble",
       [0x26]  "slide trouble",
       [0x27]  "skew trouble",
       [0x28]  "head lead out",
       [0x29]  "write modulation trouble",
       [0x2a]  "under laser power",
       [0x2b]  "over laser power",
       [0x2f]  "drive error",

       [0x30]  "drive power off",
       [0x31]  "no disk in drive",
       [0x32]  "drive not ready",
       [0x38]  "disk already exists in drive",
       [0x39]  "no disk in shelf",
       [0x3a]  "disk already exists in shelf",

       [0x40]  "write warning",
       [0x41]  "write error",
       [0x42]  "disk error",
       [0x43]  "cannot read disk ID",
       [0x44]  "write protect error 1",
       [0x45]  "write protect error 2",
       [0x46]  "disk warning",
       [0x47]  "alternation trouble",

       [0x50]  "specified address not found",
       [0x51]  "address block not found",
       [0x52]  "all address could not be read",
       [0x53]  "data could not be read",
       [0x54]  "uncorrectable read error",
       [0x55]  "tracking error",
       [0x56]  "write servo error",
       [0x57]  "write monitor error",
       [0x58]  "write verify error",

       [0x60]  "no data in specified address",
       [0x61]  "blank check failed",
       [0x62]  "controller diagnostics failed",
       [0x63]  "drive diagnostice failed",
       [0x64]  "diagnostice aborted",
       [0x67]  "juke diagnostice failed",
       [0x68]  "z-axis servo failed",
       [0x69]  "roter servo error",
       [0x6a]  "hook servo error",
       [0x6b]  "I/O self error",
       [0x6c]  "drive 0 error",
       [0x6d]  "drive 1 error",
       [0x6e]  "shelf error",
       [0x6f]  "carrier error",

       [0x70]  "rob made me do it",
       [0x71]  "out of range",
};

char*   tagnames[] =
{
       [Tbuck]         "Tbuck",
       [Tdir]          "Tdir",
       [Tfile]         "Tfile",
       [Tfree]         "Tfree",
       [Tind1]         "Tind1",
       [Tind2]         "Tind2",
#ifndef COMPAT32
       [Tind3]         "Tind3",
       [Tind4]         "Tind4",
       /* add more Tind tags here ... */
#endif
       [Tnone]         "Tnone",
       [Tsuper]        "Tsuper",
       [Tvirgo]        "Tvirgo",
       [Tcache]        "Tcache",
};