[sdk] Remove old unused error codes [crt] Implement errno
authorcoderain <coderain@sdf.org>
Mon, 23 Oct 2017 02:37:50 +0000 (04:37 +0200)
committercoderain <coderain@sdf.org>
Mon, 23 Oct 2017 02:37:50 +0000 (04:37 +0200)
crt/include/errno.h [new file with mode: 0644]
crt/include/stdlib.h
crt/src/errno.c [new file with mode: 0644]
sdk/defs.h

diff --git a/crt/include/errno.h b/crt/include/errno.h
new file mode 100644 (file)
index 0000000..67899ac
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * errno.h
+ *
+ * Copyright (C) 2017 Aleksandar Andrejevic <theflash@sdf.lonestar.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef _ERRNO_H_
+#define _ERRNO_H_
+
+#include <stdint.h>
+
+#define EPERM        1
+#define ENOENT       2
+#define ESRCH        3
+#define EINTR        4
+#define EIO          5
+#define ENXIO        6
+#define E2BIG        7
+#define ENOEXEC      8
+#define EBADF        9
+#define ECHILD       10
+#define EAGAIN       11
+#define ENOMEM       12
+#define EACCES       13
+#define EFAULT       14
+#define EBUSY        16
+#define EEXIST       17
+#define EXDEV        18
+#define ENODEV       19
+#define ENOTDIR      20
+#define EISDIR       21
+#define EINVAL       22
+#define ENFILE       23
+#define EMFILE       24
+#define ENOTTY       25
+#define EFBIG        27
+#define ENOSPC       28
+#define ESPIPE       29
+#define EROFS        30
+#define EMLINK       31
+#define EPIPE        32
+#define EDOM         33
+#define ERANGE       34
+#define EDEADLK      36
+#define EDEADLOCK    EDEADLK
+#define ENAMETOOLONG 38
+#define ENOLCK       39
+#define ENOSYS       40
+#define ENOTEMPTY    41
+#define EILSEQ       42
+#define ECANCELED    43
+#define ETIMEDOUT    44
+#define ETOOSMALL    45
+
+extern int errno;
+
+int __crt_translate_error(uint32_t status_code);
+
+#endif
+
index 6a6df69166c6654d08e4665cb3961dca3da59304..e20268ef676f9ff81d714b1458bf9d0d4df4ea15 100644 (file)
@@ -23,6 +23,7 @@
 #include <stddef.h>
 #include <stdint.h>
 #include <malloc.h>
+#include <errno.h>
 
 char *itoa(int value, char *str, int base);
 int atoi(char *str);
diff --git a/crt/src/errno.c b/crt/src/errno.c
new file mode 100644 (file)
index 0000000..0c63fc8
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+ * errno.c
+ *
+ * Copyright (C) 2017 Aleksandar Andrejevic <theflash@sdf.lonestar.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <errno.h>
+#include <monolithium.h>
+
+int errno = 0;
+
+int __crt_translate_error(uint32_t status_code)
+{
+    switch (status_code)
+    {
+    case ERR_NOTFOUND:
+        return ENOENT;
+
+    case ERR_FORBIDDEN:
+        return EACCES;
+
+    case ERR_INVALID:
+        return EINVAL;
+
+    case ERR_EXISTS:
+        return EEXIST;
+
+    case ERR_NOMEMORY:
+        return ENOMEM;
+
+    case ERR_HARDWARE:
+        return EIO;
+
+    case ERR_BUSY:
+        return EAGAIN;
+
+    case ERR_WRITEPROT:
+        return EROFS;
+
+    case ERR_NOSYSCALL:
+        return ENOSYS;
+
+    case ERR_TIMEOUT:
+        return ETIMEDOUT;
+
+    case ERR_BADPTR:
+        return EFAULT;
+
+    case ERR_CANCELED:
+        return ECANCELED;
+
+    case ERR_ISDIR:
+        return EISDIR;
+
+    case ERR_ISNOTDIR:
+        return ENOTDIR;
+
+    case ERR_DISKFULL:
+        return ENOSPC;
+
+    case ERR_BEYOND:
+        return ENXIO;
+
+    case ERR_SMALLBUF:
+        return ETOOSMALL;
+
+    default:
+        return 0;
+    }
+}
index 62c01eea83dcd394bb3f84427d255db902625a2f..7c3088f21553354844d3055e1136d557aa400ee2 100644 (file)
 #define ERR_NOMEMORY  0xE0000005
 #define ERR_HARDWARE  0xE0000006
 #define ERR_BUSY      0xE0000007
-#define ERR_NOMEDIA   0xE0000008
-#define ERR_NOTRESP   0xE0000009
-#define ERR_WRITEPROT 0xE000000A
-#define ERR_NOSYSCALL 0xE000000B
-#define ERR_TIMEOUT   0xE000000C
-#define ERR_BADPTR    0xE000000D
-#define ERR_CANCELED  0xE000000E
-#define ERR_ISDIR     0xE000000F
-#define ERR_ISNOTDIR  0xE0000010
-#define ERR_DISKFULL  0xE0000011
-#define ERR_MEDIACHG  0xE0000012
-#define ERR_BEYOND    0xE0000013
-#define ERR_SMALLBUF  0xE0000014
-#define ERR_NOMORE    0xE0000015
-#define MAX_ERR       0xE0000016
+#define ERR_WRITEPROT 0xE0000008
+#define ERR_NOSYSCALL 0xE0000009
+#define ERR_TIMEOUT   0xE000000A
+#define ERR_BADPTR    0xE000000B
+#define ERR_CANCELED  0xE000000C
+#define ERR_ISDIR     0xE000000D
+#define ERR_ISNOTDIR  0xE000000E
+#define ERR_DISKFULL  0xE000000F
+#define ERR_BEYOND    0xE0000010
+#define ERR_SMALLBUF  0xE0000011
+#define ERR_NOMORE    0xE0000012
+#define MAX_ERR       0xE0000013
 
 #define MAX_PATH 16384