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=d8928b5f31bbdac23f9ec296ef28b4b10efa31d5;hp=0000000000000000000000000000000000000000;hpb=219271fd548949abce8bd75c34dd42e519418fc4;p=pdclib 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