#include <errno.h> #include <string.h> int errno = 0; char* strerror(int error) { static char buffer[100]; buffer[0] = 0; switch (error) { case ENOMEM: strcpy(buffer, "Cannot allocate memory"); break; case EINVAL: strcpy(buffer, "Invalid argument"); break; case EISDIR: strcpy(buffer, "Is a directory"); break; case ENOTDIR: strcpy(buffer, "Not a directory"); break; case ENOENT: strcpy(buffer, "No such file or directory"); break; case EIO: strcpy(buffer, "Input/output error"); break; case ENOTSUP: strcpy(buffer, "Operation not supported"); break; case EBADF: strcpy(buffer, "Bad file descriptor"); break; case EEXISTS: strcpy(buffer, "File exists"); break; case ENOTEMPTY: strcpy(buffer, "Directory not empty"); break; case ENAMETOOLONG: strcpy(buffer, "Filename too long"); break; case ENOBUFS: strcpy(buffer, "No buffer space available"); break; default: { // FIXME: sprintf //sprintf(buffer, "Unknown error %d", error); strcpy(buffer, "Unknown error"); errno = EINVAL; break; } } return buffer; }