[PATCH v2 1/4] msvcrt/tests: Add test for fopen sequential access hint

Piotr Caban piotr.caban at gmail.com
Mon Aug 2 12:02:44 CDT 2021


Hi Luke,

On 8/2/21 5:03 PM, Luke Deller wrote:
> +static void test_fopen_hints(void)
> +{
> +    char *tempf;
> +    FILE *fp;
> +    HANDLE handle;
> +    FILE_MODE_INFORMATION mode_info;
> +    IO_STATUS_BLOCK io;
> +    NTSTATUS status;
> +
> +    /* create a test file */
> +    tempf = _tempnam(".","wne");
> +    fp = fopen(tempf, "wb");
> +    ok(fp != NULL, "unable to create test file\n");
> +    fwrite("abc\n", 1, 4, fp);
> +    fclose(fp);
> +
> +    /* open test file with sequential access hint */
> +    fp = fopen(tempf, "rbS");
> +    ok(fp != NULL, "unable to open test file with sequential access hint\n");
> +
> +    /* check that sequential access hint is set on underlying file handle */
> +    handle = (HANDLE)_get_osfhandle(_fileno(fp));
> +    status = NtQueryInformationFile(handle, &io, &mode_info, sizeof(mode_info),
> +            FileModeInformation);
> +    ok(!status, "NtQueryInformationFile failed\n");
> +    ok(mode_info.Mode & FILE_SEQUENTIAL_ONLY, "handle missing hint\n");
> +
> +    /* clean up */
> +    fclose(fp);
> +    unlink(tempf);
> +    free(tempf);
> +}
It would be nice to also test
fp = fopen(tempf, "rbRS");
and
fp = fopen(tempf, "rbSR");
case.

The same applies to second patch, what happens if _O_RANDOM and 
_O_SEQUENTIAL is passed?

You will also need to mark the tests failing in wine with todo_wine or 
reorder the patches.

Thanks,
Piotr



More information about the wine-devel mailing list