From dc8ef75904c0cace22f75b201c2c9f7c8b0f5cb1 Mon Sep 17 00:00:00 2001 From: Francois Gouget Date: Mon, 19 Jul 2021 15:16:59 +0200 Subject: [PATCH] winetest: Create the -d directory if it does not exist already. 'winetest.exe' automatically creates '%TEMP%\wct' (or an alternative new directory). 'winetext.exe -x DIR' automatically creates DIR. 'winetest.exe -d DIR' now automatically creates DIR too. In all cases newly created directories are removed after the tests. Signed-off-by: Francois Gouget Signed-off-by: Alexandre Julliard --- programs/winetest/main.c | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/programs/winetest/main.c b/programs/winetest/main.c index 81c7de2a020..fa773e28d4f 100644 --- a/programs/winetest/main.c +++ b/programs/winetest/main.c @@ -1024,6 +1024,7 @@ run_tests (char *logname, char *outdir) DWORD strsize; SECURITY_ATTRIBUTES sa; char tmppath[MAX_PATH], tempdir[MAX_PATH+4]; + BOOL newdir; DWORD needed; HMODULE kernel32; @@ -1064,22 +1065,23 @@ run_tests (char *logname, char *outdir) if (logfile == INVALID_HANDLE_VALUE) report (R_FATAL, "Could not open logfile: %u", GetLastError()); - /* try stable path for ZoneAlarm */ - if (!outdir) { - strcpy( tempdir, tmppath ); - strcat( tempdir, "wct" ); - - if (!CreateDirectoryA( tempdir, NULL )) - { - if (!GetTempFileNameA( tmppath, "wct", 0, tempdir )) - report (R_FATAL, "Can't name temporary dir (check %%TEMP%%)."); - DeleteFileA( tempdir ); - if (!CreateDirectoryA( tempdir, NULL )) - report (R_FATAL, "Could not create directory: %s", tempdir); - } - } - else + if (outdir) strcpy( tempdir, outdir); + else + { + strcpy( tempdir, tmppath ); + strcat( tempdir, "wct" ); /* try stable path for ZoneAlarm */ + } + newdir = CreateDirectoryA( tempdir, NULL ); + if (!newdir && !outdir) + { + if (!GetTempFileNameA( tmppath, "wct", 0, tempdir )) + report (R_FATAL, "Can't name temporary dir (check %%TEMP%%)."); + DeleteFileA( tempdir ); + newdir = CreateDirectoryA( tempdir, NULL ); + } + if (!newdir && (!outdir || GetLastError() != ERROR_ALREADY_EXISTS)) + report (R_FATAL, "Could not create directory %s (%d)", tempdir, GetLastError()); report (R_DIR, tempdir); @@ -1172,7 +1174,7 @@ run_tests (char *logname, char *outdir) report (R_STATUS, "Cleaning up - %u failures", failures); CloseHandle( logfile ); logfile = 0; - if (!outdir) + if (newdir) remove_dir (tempdir); heap_free(wine_tests); heap_free(curpath);