]> pd.if.org Git - pdclib/blobdiff - platform/win32/functions/_PDCLIB/_PDCLIB_w32errno.c
Initial pass at a port to win32
[pdclib] / platform / win32 / functions / _PDCLIB / _PDCLIB_w32errno.c
diff --git a/platform/win32/functions/_PDCLIB/_PDCLIB_w32errno.c b/platform/win32/functions/_PDCLIB/_PDCLIB_w32errno.c
new file mode 100644 (file)
index 0000000..5e03ef5
--- /dev/null
@@ -0,0 +1,56 @@
+/* $Id$ */\r
+\r
+/* _PDCLIB_allocpages( int const )\r
+\r
+   This file is part of the Public Domain C Library (PDCLib).\r
+   Permission is granted to use, modify, and / or redistribute at will.\r
+*/\r
+\r
+/* This is a stub implementation of _PDCLIB_allocpages\r
+*/\r
+\r
+#ifndef REGTEST\r
+#include <errno.h>\r
+#include <windows.h>\r
+\r
+void _PDCLIB_w32errno(void)\r
+{\r
+    // Not exhaustive\r
+    switch(GetLastError()) {\r
+        case ERROR_SUCCESS:\r
+            return;\r
+        case ERROR_FILE_NOT_FOUND:\r
+        case ERROR_PATH_NOT_FOUND:\r
+        case ERROR_INVALID_DRIVE:\r
+            errno = ENOENT; break;\r
+        case ERROR_TOO_MANY_OPEN_FILES:\r
+            errno = EMFILE; break;\r
+        case ERROR_ACCESS_DENIED:\r
+        case ERROR_WRITE_PROTECT:\r
+            errno = EPERM; break;\r
+        case ERROR_INVALID_HANDLE:\r
+            errno = EBADF; break;\r
+        case ERROR_NOT_ENOUGH_MEMORY:\r
+        case ERROR_OUTOFMEMORY:\r
+            errno = ENOMEM; break;\r
+        case ERROR_NOT_READY:\r
+            errno = EAGAIN; break;\r
+        case ERROR_BAD_LENGTH:\r
+            errno = EINVAL; break;\r
+        default:\r
+            // TODO: reconsider what to use here?\r
+            errno = ENOSYS; break;\r
+    }\r
+}\r
+\r
+#endif\r
+\r
+#ifdef TEST\r
+#include <_PDCLIB_test.h>\r
+\r
+int main( void )\r
+{\r
+    return TEST_RESULTS;\r
+}\r
+\r
+#endif
\ No newline at end of file