%{ #include #include #include #include #include #include #include #include #include #include #include #include #include #include %} function nfs4error:string(err:long) %{ static struct { int nfserr; char *string; } nfs_errtbl[] = { { NFS4_OK, "Success" }, { NFS4ERR_PERM, "NFS4ERR_PERM" }, { NFS4ERR_NOENT, "NFS4ERR_NOENT" }, { NFS4ERR_IO, "NFS4ERR_IO" }, { NFS4ERR_NXIO, "NFS4ERR_NXIO" }, { NFS4ERR_ACCESS, "NFS4ERR_ACCESS" }, { NFS4ERR_EXIST, "NFS4ERR_EXIST" }, { NFS4ERR_XDEV, "NFS4ERR_XDEV" }, { NFS4ERR_NOTDIR, "NFS4ERR_NOTDIR" }, { NFS4ERR_ISDIR, "NFS4ERR_ISDIR" }, { NFS4ERR_INVAL, "NFS4ERR_INVAL" }, { NFS4ERR_FBIG, "NFS4ERR_FBIG" }, { NFS4ERR_NOSPC, "NFS4ERR_NOSPC" }, { NFS4ERR_ROFS, "NFS4ERR_ROFS" }, { NFS4ERR_MLINK, "NFS4ERR_MLINK" }, { NFS4ERR_NAMETOOLONG, "NFS4ERR_NAMETOOLONG" }, { NFS4ERR_NOTEMPTY, "NFS4ERR_NOTEMPTY" }, { NFS4ERR_DQUOT, "NFS4ERR_DQUOT" }, { NFS4ERR_STALE, "NFS4ERR_STALE" }, { NFS4ERR_BADHANDLE, "NFS4ERR_BADHANDLE" }, { NFS4ERR_BADOWNER, "NFS4ERR_BADOWNER" }, { NFS4ERR_BADNAME, "NFS4ERR_BADNAME" }, { NFS4ERR_BAD_COOKIE, "NFS4ERR_BAD_COOKIE" }, { NFS4ERR_NOTSUPP, "NFS4ERR_NOTSUPP" }, { NFS4ERR_TOOSMALL, "NFS4ERR_TOOSMALL" }, { NFS4ERR_SERVERFAULT, "NFS4ERR_SERVERFAULT" }, { NFS4ERR_BADTYPE, "NFS4ERR_BADTYPE" }, { NFS4ERR_LOCKED, "NFS4ERR_LOCKED" }, { NFS4ERR_RESOURCE, "NFS4ERR_RESOURCE" }, { NFS4ERR_SYMLINK, "NFS4ERR_SYMLINK" }, { NFS4ERR_OP_ILLEGAL, "NFS4ERR_OP_ILLEGAL" }, { NFS4ERR_DEADLOCK, "NFS4ERR_DEADLOCK" }, { NFS4ERR_WRONGSEC, "NFS4ERR_WRONGSEC" }, /* FIXME: this needs * to be handled by a * middle-layer. */ { -1, "Bad Error Code" } }; int i; int tabsz = (sizeof(nfs_errtbl)/sizeof(nfs_errtbl[0])); for (i = 0; i < tabsz; i++) { if (nfs_errtbl[i].nfserr == THIS->err) { break; } } if (i == tabsz) snprintf(THIS->__retvalue, MAXSTRINGLEN, "nfs4err %d", ntohl(THIS->err)); else snprintf(THIS->__retvalue, MAXSTRINGLEN, "nfs4err %d(%s)", nfs_errtbl[i].nfserr, nfs_errtbl[i].string); %}