OrionLibC
Barry Updating libc for pipes and signals ad9b6af (3 years, 1 month ago)
#include <stdio.h>
#include <errno.h>
int errno;
const char *errorList[] = {
[ENONE] = "No error",
[EPERM] = "Operation not permitted",
[ENOENT] = "No such file or directory",
[ESRCH] = "No such process",
[EINVAL] = "Invalid argument",
[EBADF] = "Bad file descriptor",
[ENOEXEC] = "Exec format error",
[EMFILE] = "Too many open files",
[EFAULT] = "Bad address",
[EISDIR] = "Is a directory",
[ENOTDIR] = "Not a directory",
[EACCES] = "Permission denied",
[ENODEV] = "No such device",
[EEXIST] = "File exists",
[ENXIO] = "No such device or address",
[ENOTBLK] = "Block device required",
[ENOMEM] = "Cannot allocate memory",
[ECHILD] = "No child processes",
[ENOTTY] = "Inappropriate ioctl for device",
[ELOOP] = "Too many levels of symbolic links",
[ENAMETOOLONG] = "File name too long",
[EINTR] = "Interrupted system call",
};
/* Display an error message for errno */
void
perror(const char *s)
{
if (errno < 0 || errno >= (sizeof(errorList)/sizeof(errorList[0])))
return;
if (!s)
printf("%s\n", errorList[errno]);
else if (!s[0])
printf("%s\n", errorList[errno]);
else
printf("%s: %s\n", s, errorList[errno]);
}