X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=platform%2Fwin32%2Ffunctions%2F_PDCLIB%2F_PDCLIB_open.c;h=af1ee52843ea64a5211aff17aa7865efeb5f9a7e;hb=c5d49235e09fbd58416f10dec2799e61cf3431c8;hp=bfdb8975c49bfb9726306749e7a1a1444670f390;hpb=d8928b5f31bbdac23f9ec296ef28b4b10efa31d5;p=pdclib diff --git a/platform/win32/functions/_PDCLIB/_PDCLIB_open.c b/platform/win32/functions/_PDCLIB/_PDCLIB_open.c index bfdb897..af1ee52 100644 --- a/platform/win32/functions/_PDCLIB/_PDCLIB_open.c +++ b/platform/win32/functions/_PDCLIB/_PDCLIB_open.c @@ -16,8 +16,11 @@ #include <_PDCLIB_glue.h> #include +extern const _PDCLIB_fileops_t _PDCLIB_fileops; + void _PDCLIB_w32errno(void); -HANDLE _PDCLIB_open( char const * const filename, unsigned int mode ) +bool _PDCLIB_open( _PDCLIB_fd_t * pFd, const _PDCLIB_fileops_t ** pOps, + char const * const filename, unsigned int mode ) { DWORD desiredAccess; DWORD creationDisposition; @@ -51,7 +54,7 @@ HANDLE _PDCLIB_open( char const * const filename, unsigned int mode ) break; default: /* Invalid mode */ errno = EINVAL; - return NULL; + return false; } HANDLE fd = CreateFileA(filename, desiredAccess, @@ -59,8 +62,23 @@ HANDLE _PDCLIB_open( char const * const filename, unsigned int mode ) NULL, creationDisposition, FILE_ATTRIBUTE_NORMAL, NULL); if(fd == INVALID_HANDLE_VALUE) { +#if 0 + DWORD dw = GetLastError(); + char* msgBuf; + FormatMessage( + FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, + dw, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + (LPSTR) &msgBuf, + 0, NULL ); + + fprintf(stderr, "Error: %s\n", msgBuf); +#endif _PDCLIB_w32errno(); - return NULL; + return false; } if(mode & _PDCLIB_FAPPEND) { @@ -70,11 +88,13 @@ HANDLE _PDCLIB_open( char const * const filename, unsigned int mode ) if(!ok) { _PDCLIB_w32errno(); CloseHandle(fd); - return NULL; + return false; } } - return fd; + pFd->pointer = fd; + *pOps = &_PDCLIB_fileops; + return true; } #endif