]> pd.if.org Git - pdclib/blobdiff - platform/win32/functions/_PDCLIB/_PDCLIB_open.c
Removed SVN keyword tags.
[pdclib] / platform / win32 / functions / _PDCLIB / _PDCLIB_open.c
index a6ac387c8842dc1f476c376ac37d7f213554ade4..13affa3ca3a44ea0408ebff1f840d7aa9d354736 100644 (file)
@@ -1,5 +1,3 @@
-/* $Id$ */
-
 /* _PDCLIB_open( char const * const, int )
 
    This file is part of the Public Domain C Library (PDCLib).
 #include <_PDCLIB_glue.h>
 #include <windows.h>
 
+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 +52,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, 
@@ -75,7 +76,7 @@ HANDLE _PDCLIB_open( char const * const filename, unsigned int mode )
         fprintf(stderr, "Error: %s\n", msgBuf);
 #endif
         _PDCLIB_w32errno();
-        return NULL;
+        return false;
     }
 
     if(mode & _PDCLIB_FAPPEND) {
@@ -85,11 +86,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