#ifndef __ERRNO_H__
# define __ERRNO_H__

#ifdef __cplusplus
extern "C" {
#endif

/* Initialized to 0 at startup. Currently not TLS, maybe in the future if
   threads are supported. */
extern int errno;

#define EDOM          1   /* Outside of domain of math function. */
#define EILSEQ        2   /* Illegal multi-byte character sequence. */
#define ERANGE        3   /* Range error during text-to-numeric conversion. */
#define EACCES        4   /* File access denied. */
#define EEXIST        5   /* File already exists. */
#define EINVAL        6   /* Invalid argument in general; lots of uses. */
#define ENFILE        7   /* Out of file descriptors. */
#define ENOENT        8   /* File or folder does not exist. */
#define ENOMEM        9   /* System ran out of memory (RAM). */
#define EDQUOT       10   /* Out of inodes or memory space. */
#define ENOSPC       11   /* No space left on device. */
#define ENOTSUP      12   /* Operation not supported. */
#define EBADF        13   /* Invalid file descriptor. */
#define ESPIPE       14   /* File descriptor is unable to seek. */
#define EISDIR       15   /* File descriptor is a directory. */
#define ENOTDIR      16   /* File descriptor is not a directory. */
#define ENOTEMPTY    17   /* Directory is not empty. */
#define EINTR        18   /* Interrupted system call. */
#define EAGAIN       19   /* Resource temporarily unavailable. */
#define EIO          20   /* Input/Output error */
#define ENODEV       21   /* No such device */
#define ENOMEDIUM    22   /* No medium found */
#define EMEDIUMTYPE  23   /* Wrong medium type */

#ifdef __cplusplus
}
#endif

#endif /*__ERRNO_H__*/