X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=platform%2Fwin32%2Ffunctions%2F_PDCLIB%2F_PDCLIB_w32errno.c;fp=platform%2Fwin32%2Ffunctions%2F_PDCLIB%2F_PDCLIB_w32errno.c;h=5e03ef53a6b4737a56a67a0d050c098a1170b451;hb=950d2e48042173a75188b0a2dbe219ed91ff47cf;hp=0000000000000000000000000000000000000000;hpb=10f020f1a39804bbef8cd1cf35ef7c9a8e75c7d6;p=pdclib.old diff --git a/platform/win32/functions/_PDCLIB/_PDCLIB_w32errno.c b/platform/win32/functions/_PDCLIB/_PDCLIB_w32errno.c new file mode 100644 index 0000000..5e03ef5 --- /dev/null +++ b/platform/win32/functions/_PDCLIB/_PDCLIB_w32errno.c @@ -0,0 +1,56 @@ +/* $Id$ */ + +/* _PDCLIB_allocpages( int const ) + + This file is part of the Public Domain C Library (PDCLib). + Permission is granted to use, modify, and / or redistribute at will. +*/ + +/* This is a stub implementation of _PDCLIB_allocpages +*/ + +#ifndef REGTEST +#include +#include + +void _PDCLIB_w32errno(void) +{ + // Not exhaustive + switch(GetLastError()) { + case ERROR_SUCCESS: + return; + case ERROR_FILE_NOT_FOUND: + case ERROR_PATH_NOT_FOUND: + case ERROR_INVALID_DRIVE: + errno = ENOENT; break; + case ERROR_TOO_MANY_OPEN_FILES: + errno = EMFILE; break; + case ERROR_ACCESS_DENIED: + case ERROR_WRITE_PROTECT: + errno = EPERM; break; + case ERROR_INVALID_HANDLE: + errno = EBADF; break; + case ERROR_NOT_ENOUGH_MEMORY: + case ERROR_OUTOFMEMORY: + errno = ENOMEM; break; + case ERROR_NOT_READY: + errno = EAGAIN; break; + case ERROR_BAD_LENGTH: + errno = EINVAL; break; + default: + // TODO: reconsider what to use here? + errno = ENOSYS; break; + } +} + +#endif + +#ifdef TEST +#include <_PDCLIB_test.h> + +int main( void ) +{ + return TEST_RESULTS; +} + +#endif \ No newline at end of file