Francois Gouget : winetest: Create the -d directory if it does not exist already.

Alexandre Julliard julliard at winehq.org
Mon Jul 19 15:59:16 CDT 2021


Module: wine
Branch: master
Commit: dc8ef75904c0cace22f75b201c2c9f7c8b0f5cb1
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=dc8ef75904c0cace22f75b201c2c9f7c8b0f5cb1

Author: Francois Gouget <fgouget at codeweavers.com>
Date:   Mon Jul 19 15:16:59 2021 +0200

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 <fgouget at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 programs/winetest/main.c | 32 +++++++++++++++++---------------
 1 file changed, 17 insertions(+), 15 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) {
+    if (outdir)
+        strcpy( tempdir, outdir);
+    else
+    {
         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);
-        }
+        strcat( tempdir, "wct" ); /* try stable path for ZoneAlarm */
     }
-    else
-        strcpy( tempdir, outdir);
+    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);




More information about the wine-cvs mailing list