mirror of
https://github.com/Harshit-Dhanwalkar/AsciiCam.git
synced 2026-06-09 10:25:12 +02:00
41 lines
1 KiB
C
41 lines
1 KiB
C
#include "nl_errno.h"
|
|
#include "nl_syscall.h"
|
|
#include <stddef.h>
|
|
|
|
int errno = 0;
|
|
|
|
static void _ewrite(const char *s, size_t n) { __sc3(1, 2, (long)s, (long)n); }
|
|
|
|
static size_t _slen(const char *s) {
|
|
const char *p = s;
|
|
while (*p)
|
|
p++;
|
|
return (size_t)(p - s);
|
|
}
|
|
|
|
static const struct {
|
|
int code;
|
|
const char *msg;
|
|
} _errtab[] = {
|
|
{1, "Operation not permitted"}, {2, "No such file or directory"},
|
|
{9, "Bad file descriptor"}, {12, "Out of memory"},
|
|
{13, "Permission denied"}, {16, "Device or resource busy"},
|
|
{19, "No such device"}, {22, "Invalid argument"},
|
|
{28, "No space left on device"}, {32, "Broken pipe"},
|
|
{110, "Connection timed out"}, {0, (const char *)0}};
|
|
|
|
void nl_perror(const char *msg) {
|
|
const char *estr = "Unknown error";
|
|
for (int i = 0; _errtab[i].msg; i++) {
|
|
if (_errtab[i].code == errno) {
|
|
estr = _errtab[i].msg;
|
|
break;
|
|
}
|
|
}
|
|
if (msg && msg[0]) {
|
|
_ewrite(msg, _slen(msg));
|
|
_ewrite(": ", 2);
|
|
}
|
|
_ewrite(estr, _slen(estr));
|
|
_ewrite("\n", 1);
|
|
}
|