`errno` is a userland concept; the kernel returns negative error numbers that libc then turns into -1 and sets errno. Thus the correct manpage is errno(3).
As a long time emacs user, I appreciated the inclusion of EMACS as an error code. When I moved from TECO to gnu emacs in to 80s, elisp was an advance. Now I have a perpetual todo item... "rewrite emacs in fennel or janet or even minimalisp."
18 comments:
`errno` is a userland concept; the kernel returns negative error numbers that libc then turns into -1 and sets errno. Thus the correct manpage is errno(3).
OpenBSD up to 5.9 had errno(2) symlinked to intro(2), describing error codes:
https://man.freebsd.org/cgi/man.cgi?query=errno&apropos=0&se...
Also, your statements about the kernel and libc are OS specific.
Why does libc do this instead of simply returning that same negative number?
Legacy. It's always been this way and it can't change without breaking everything.
POSIX, basically. It was already a convention by the time linux/glibc implemented it.
As a long time emacs user, I appreciated the inclusion of EMACS as an error code. When I moved from TECO to gnu emacs in to 80s, elisp was an advance. Now I have a perpetual todo item... "rewrite emacs in fennel or janet or even minimalisp."
"What was deluxe is now debris..."
> #define EAI 201 /* hallucination */
If only AI threw an error when it hallucinates.
Nah it would just hallucinate this error all the time
It would hallucinate error codes that don't exist.
Missed one...
#define EKNOWBETTER 231 # ignoring prompt
#define ESYCOPHANT 200 /* user asserted 2+2=5; model concurred */
I often ran into an error where multimodal models would refuse to operate in transcription mode due to some system prompt.
207 is a bald move
what about ETHOS : Error it's Mythos? lol!
ETHOS is generally reserved for a certain type of error involving slab memory and complex logic though.
Let's hope that reference is not too obscure...