On 10/7/21 9:21 PM, Ted Lyngmo wrote:
Oh, ok, so something like this would make it available for the correct Windows version?
case 't': *open_flags |= _O_TEXT; *open_flags &= ~_O_BINARY; break;
- #if _MSVCR_VER>=140
+ case 'x': + *open_flags |= _O_EXCL; + break;
- #endif
case 'D': *open_flags |= _O_TEMPORARY; break;
Yes, this will add support for 'x' mode only to ucrtbase.
In order to test the changes with ucrtbase.dll the tests needs to go into dlls/ucrtbase/tests.
Ok, so should I move or copy this test case into "dlls/ucrtbase/tests/printf.c" (which is the only test suite using fopen in ucrtbase)?
dlls/ucrtbase/tests/misc.c looks like a better place for the test.
static void test_fopen_exclusive( void ) { static const char * const testfile = "fileexcl.tst"; FILE *fp;
fp = fopen(testfile, "wx"); ok(fp != NULL, "creating file with mode wx failed\n"); if(fp) fclose(fp);
There's no need for if(fp) check. You can just call fclose.
fp = fopen(testfile, "wx"); ok(fp == NULL, "overwrote existing file with mode wx\n"); if(fp) fclose(fp);
There's no need to close fp (you have just tested that it's NULL).
Should I guard that test case with #if _MSVCR_VER>=140 too?
No.
Please also change the commit message to something like: ucrtbase: Add support for x mode in fopen.
Thanks, Piotr