xref: /plan9-contrib/sys/src/ape/lib/ap/stdio/strerror.c (revision 3e12c5d1bb89fc02707907988834ef147769ddaf)
1*3e12c5d1SDavid du Colombier /*
2*3e12c5d1SDavid du Colombier  * pANS stdio -- strerror (not really in stdio)
3*3e12c5d1SDavid du Colombier  */
4*3e12c5d1SDavid du Colombier #include <errno.h>
5*3e12c5d1SDavid du Colombier 
6*3e12c5d1SDavid du Colombier #include "iolib.h"
7*3e12c5d1SDavid du Colombier static char *_IO_errlist[] = {
8*3e12c5d1SDavid du Colombier 	"Error 0",
9*3e12c5d1SDavid du Colombier 	"Too big",
10*3e12c5d1SDavid du Colombier 	"Access denied",
11*3e12c5d1SDavid du Colombier 	"Try again",
12*3e12c5d1SDavid du Colombier 	"Bad file number",
13*3e12c5d1SDavid du Colombier 	"In use",
14*3e12c5d1SDavid du Colombier 	"No children",
15*3e12c5d1SDavid du Colombier 	"Deadlock",
16*3e12c5d1SDavid du Colombier 	"File exists",
17*3e12c5d1SDavid du Colombier 	"Bad address",
18*3e12c5d1SDavid du Colombier 	"File too large",
19*3e12c5d1SDavid du Colombier 	"Interrupted system call",
20*3e12c5d1SDavid du Colombier 	"Invalid argument",
21*3e12c5d1SDavid du Colombier 	"I/O error",
22*3e12c5d1SDavid du Colombier 	"Is a directory",
23*3e12c5d1SDavid du Colombier 	"Too many open files",
24*3e12c5d1SDavid du Colombier 	"Too many links",
25*3e12c5d1SDavid du Colombier 	"Name too long",
26*3e12c5d1SDavid du Colombier 	"File table overflow",
27*3e12c5d1SDavid du Colombier 	"No such device",
28*3e12c5d1SDavid du Colombier 	"No such file or directory",
29*3e12c5d1SDavid du Colombier 	"Exec format error",
30*3e12c5d1SDavid du Colombier 	"Not enough locks",
31*3e12c5d1SDavid du Colombier 	"Not enough memory",
32*3e12c5d1SDavid du Colombier 	"No space left on device",
33*3e12c5d1SDavid du Colombier 	"No such system call",
34*3e12c5d1SDavid du Colombier 	"Not a directory",
35*3e12c5d1SDavid du Colombier 	"Directory not empty",
36*3e12c5d1SDavid du Colombier 	"Notty",
37*3e12c5d1SDavid du Colombier 	"Nxio",
38*3e12c5d1SDavid du Colombier 	"Permission denied",
39*3e12c5d1SDavid du Colombier 	"Broken pipe",
40*3e12c5d1SDavid du Colombier 	"Read-only file system",
41*3e12c5d1SDavid du Colombier 	"Spipe",
42*3e12c5d1SDavid du Colombier 	"Srch",
43*3e12c5d1SDavid du Colombier 	"Cross-device link",
44*3e12c5d1SDavid du Colombier };
45*3e12c5d1SDavid du Colombier #define	_IO_nerr	(sizeof _IO_errlist/sizeof _IO_errlist[0])
46*3e12c5d1SDavid du Colombier char *strerror(int n){
47*3e12c5d1SDavid du Colombier 	if(n >= 0 && n < _IO_nerr)
48*3e12c5d1SDavid du Colombier 		return _IO_errlist[n];
49*3e12c5d1SDavid du Colombier 	if(n == EDOM)
50*3e12c5d1SDavid du Colombier 		return "Domain error";
51*3e12c5d1SDavid du Colombier 	else if(n == ERANGE)
52*3e12c5d1SDavid du Colombier 		return "Range error";
53*3e12c5d1SDavid du Colombier 	else
54*3e12c5d1SDavid du Colombier 		return "Unknown error";
55*3e12c5d1SDavid du Colombier }
56