-#ifdef __OS2__
- APIRET rc;
- ULONG action;
- ULONG newsize = 0;
- ULONG fileAttr = 0;
- ULONG openAction = 0;
- ULONG openMode = 0;
-
- if ((modeType == 1) || (modeType == 4) || (modeType == 7)
- || (modeType == 10))
- {
- openAction |= OPEN_ACTION_FAIL_IF_NEW;
- openAction |= OPEN_ACTION_OPEN_IF_EXISTS;
- }
- else if ((modeType == 2) || (modeType == 5) || (modeType == 8)
- || (modeType == 11))
- {
- openAction |= OPEN_ACTION_CREATE_IF_NEW;
- openAction |= OPEN_ACTION_REPLACE_IF_EXISTS;
- }
- else if ((modeType == 3) || (modeType == 6) || (modeType == 9)
- || (modeType == 12))
- {
- openAction |= OPEN_ACTION_CREATE_IF_NEW;
- openAction |= OPEN_ACTION_OPEN_IF_EXISTS;
- }
- openMode |= OPEN_SHARE_DENYWRITE;
- if ((modeType == 1) || (modeType == 4))
- {
- openMode |= OPEN_ACCESS_READONLY;
- }
- else if ((modeType == 2) || (modeType == 3) || (modeType == 5)
- || (modeType == 6))
- {
- openMode |= OPEN_ACCESS_WRITEONLY;
- }
- else
- {
- openMode |= OPEN_ACCESS_READWRITE;
- }
- if ((strlen(fnm) == 2)
- && (fnm[1] == ':')
- && (openMode == OPEN_ACCESS_READONLY))
- {
- openMode |= OPEN_FLAGS_DASD;
- }
- rc = DosOpen((PSZ)fnm,
- &myfile->hfile,
- &action,
- newsize,
- fileAttr,
- openAction,
- openMode,
- NULL);
- if (rc != 0)
- {
- err = 1;
- errno = rc;
- }
-#endif
-#ifdef __MSDOS__
- int mode;
- int errind;
-
- if ((modeType == 1) || (modeType == 4))
- {
- mode = 0;
- }
- else if ((modeType == 2) || (modeType == 5))
- {
- mode = 1;
- }
- else
- {
- mode = 2;
- }
- myfile->hfile = __open(fnm, mode, &errind);
- if (errind)
- {
- err = 1;
- errno = myfile->hfile;
- }
+#ifndef REGTEST
+ TESTCASE( filemode( "r" ) == _PDCLIB_FREAD );
+ TESTCASE( filemode( "w" ) == _PDCLIB_FWRITE );
+ TESTCASE( filemode( "a" ) == _PDCLIB_FAPPEND );
+ TESTCASE( filemode( "r+" ) == ( _PDCLIB_FREAD | _PDCLIB_FRW ) );
+ TESTCASE( filemode( "w+" ) == ( _PDCLIB_FWRITE | _PDCLIB_FRW ) );
+ TESTCASE( filemode( "a+" ) == ( _PDCLIB_FAPPEND | _PDCLIB_FRW ) );
+ TESTCASE( filemode( "rb" ) == ( _PDCLIB_FREAD | _PDCLIB_FBIN ) );
+ TESTCASE( filemode( "wb" ) == ( _PDCLIB_FWRITE | _PDCLIB_FBIN ) );
+ TESTCASE( filemode( "ab" ) == ( _PDCLIB_FAPPEND | _PDCLIB_FBIN ) );
+ TESTCASE( filemode( "r+b" ) == ( _PDCLIB_FREAD | _PDCLIB_FRW | _PDCLIB_FBIN ) );
+ TESTCASE( filemode( "w+b" ) == ( _PDCLIB_FWRITE | _PDCLIB_FRW | _PDCLIB_FBIN ) );
+ TESTCASE( filemode( "a+b" ) == ( _PDCLIB_FAPPEND | _PDCLIB_FRW | _PDCLIB_FBIN ) );
+ TESTCASE( filemode( "rb+" ) == ( _PDCLIB_FREAD | _PDCLIB_FRW | _PDCLIB_FBIN ) );
+ TESTCASE( filemode( "wb+" ) == ( _PDCLIB_FWRITE | _PDCLIB_FRW | _PDCLIB_FBIN ) );
+ TESTCASE( filemode( "ab+" ) == ( _PDCLIB_FAPPEND | _PDCLIB_FRW | _PDCLIB_FBIN ) );
+ TESTCASE( fopen( NULL, NULL ) == NULL );
+ TESTCASE( fopen( NULL, "w" ) == NULL );
+ TESTCASE( fopen( "", NULL ) == NULL );
+ TESTCASE( fopen( "", "w" ) == NULL );
+ TESTCASE( fopen( "foo", "" ) == NULL );
+ TESTCASE( fopen( "testfile", "wq" ) == NULL ); /* Illegal mode */
+ TESTCASE( fopen( "testfile", "wr" ) == NULL ); /* Illegal mode */
+ TESTCASE( fopen( "testfile", "w" ) != NULL );
+ system( "rm testfile" );
+#else
+ puts( " NOTEST fopen() test driver is PDCLib-specific." );