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