/* Translations for common UNIX errno values */
#define EPERM		1	/* Operation not permitted */
#define ENOENT		2	/* No such file or directory */
#define ESRCH		3	/* No such process */
#define EINTR		4	/* Interrupted system call */
#define EIO		5	/* Input/output error */
#define ENXIO		6	/* Device not configured */
#define E2BIG		7	/* Argument list too long */
#define ENOEXEC		8	/* Exec format error */
#define EBADF		9	/* Bad file descriptor */
#define ECHILD		10	/* No child processes */
#define EDEADLK		11	/* Resource deadlock avoided */
#define ENOMEM		12	/* Cannot allocate memory */
#define EACCES		13	/* Permission denied */
#define EFAULT		14	/* Bad address */
#define ENOTBLK		15	/* Not a block device */
#define EBUSY		16	/* Device busy */
#define EEXIST		17	/* File exists */
#define EXDEV		18	/* Cross-device link */
#define ENODEV		19	/* Operation not supported by device */
#define ENOTDIR		20	/* Not a directory */
#define EISDIR		21	/* Is a directory */
#define EINVAL		22	/* Invalid argument */
#define ENFILE		23	/* Too many open files in system */
#define EMFILE		24	/* Too many open files */
#define ENOTTY		25	/* Inappropriate ioctl for device */
#define ETXTBSY		26	/* Text file busy */
#define EFBIG		27	/* File too large */
#define ENOSPC		28	/* No space left on device */
#define ESPIPE		29	/* Illegal seek */
#define EROFS		30	/* Read-only file system */
#define EMLINK		31	/* Too many links */
#define EPIPE		32	/* Broken pipe */
#define EDOM		33	/* Numerical argument out of domain */
#define ERANGE		34	/* Result too large */
#define EAGAIN		35	/* Resource temporarily unavailable */
#define EALREADY	37	/* Operation already in progress */
#define ENOSYS		38	/* Function not implemented */
#define EPROTONOSUPPORT	43	/* Protocol not supported */
#define EOPNOTSUPP	45	/* Operation not supported */
#define ENOBUFS		55	/* No buffer space available */
#define ENOTCONN	57	/* Socket is not connected */
#define ESHUTDOWN	58	/* Can't send after socket shutdown */
#define ETOOMANYREFS	59	/* Too many references: can't splice */
#define ETIMEDOUT	60	/* Operation timed out */
#define ELOOP		62	/* Too many levels of symbolic links */
#define ENAMETOOLONG	63	/* File name too long */
#define ENOTEMPTY	66	/* Directory not empty */
#define EDQUOT		69	/* Disc quota exceeded */

/* Coda client <-> server specific errors */
#define VSALVAGE	101	/* Volume needs salvage */
#define VNOVNODE	102	/* Bad vnode number quoted */
#define VNOVOL		103	/* Volume does not exist or not online */
#define VVOLEXISTS	104	/* Volume already exists */
#define VNOSERVICE	105	/* Volume is not in service */
#define VOFFLINE	106	/* Volume is off line */
#define VONLINE		107	/* Volume is already on line */
#define VBUSY		110	/* Volume temporarily unavailable */
#define VMOVED		111	/* Volume has moved */
#define VNOSERVER	112	/* File server lwp is not running */
#define VLOGSTALE	113	/* CML head previously reintegrated */
#define EVOLUME		158	/* Volume error */
#define EINCOMPATIBLE	198	/* Version vectors are incompatible */
#define EINCONS		199	/* File is inconsistent */
#define VFAIL		200	/* Unknown Coda error */

/* Advice monitor related errors, we should really not use these anymore */
// #define CAEFAIL		300	/* Unknown error related to the Advice Monitor */
// #define CAEVERSIONSKEW	301	/* Version skew between Venus and the Advice Monitor */
#define CAENOSUCHUSER		302	/* Advice Monitor attempted to connect on behalf of an unknown user */
#define CAENOTVALID		303	/* Advice Monitor attempted to test liveness of an invalid connection */
#define CAENOASR		304	/* Advice Monitor returned the result of an ASR, but not ASR is pending */
#define CAEUNEXPECTEDASR	305	/* Advice Monitor returned the result of the wrong ASR */
// #define CAEASRINPROGRESS	306	/* Venus requested an ASR while another one is in progress */
#define CAEADVICEPENDING	307	/* Advice Monitor requested a new connection while a request is pending */
#define CAENOSERVERS		308	/* No servers are known to Venus */

