tests,w32: Use GetTempPath to get the path for temporary files.
authorJustus Winter <justus@g10code.com>
Tue, 21 Mar 2017 14:52:47 +0000 (15:52 +0100)
committerJustus Winter <justus@g10code.com>
Tue, 21 Mar 2017 14:52:47 +0000 (15:52 +0100)
* tests/gpgscm/ffi.c (do_get_temp_path): New function.
(ffi_init): Make function available.
* tests/gpgscm/tests.scm (mkdtemp): Use the new function.

Fixes-commit: 06f1f163e96f1039304fd3cf565cf9de1ca45849
Signed-off-by: Justus Winter <justus@g10code.com>
tests/gpgscm/ffi.c
tests/gpgscm/tests.scm

index 34e573f..3af3328 100644 (file)
@@ -342,6 +342,24 @@ do_seek (scheme *sc, pointer args)
 }
 
 static pointer
+do_get_temp_path (scheme *sc, pointer args)
+{
+  FFI_PROLOG ();
+#ifdef HAVE_W32_SYSTEM
+  char buffer[MAX_PATH+1];
+#endif
+  FFI_ARGS_DONE_OR_RETURN (sc, args);
+
+#ifdef HAVE_W32_SYSTEM
+  if (GetTempPath (MAX_PATH+1, buffer) == 0)
+    FFI_RETURN_STRING (sc, "/temp");
+  FFI_RETURN_STRING (sc, buffer);
+#else
+  FFI_RETURN_STRING (sc, "/tmp");
+#endif
+}
+
+static pointer
 do_mkdtemp (scheme *sc, pointer args)
 {
   FFI_PROLOG ();
@@ -1352,6 +1370,7 @@ ffi_init (scheme *sc, const char *argv0, const char *scriptname,
   ffi_define_function (sc, fdopen);
   ffi_define_function (sc, close);
   ffi_define_function (sc, seek);
+  ffi_define_function (sc, get_temp_path);
   ffi_define_function_name (sc, "_mkdtemp", mkdtemp);
   ffi_define_function (sc, unlink);
   ffi_define_function (sc, unlink_recursively);
index 329a31a..a4339ca 100644 (file)
 (define (mkdtemp . components)
   (canonical-path (_mkdtemp (if (null? components)
                                (path-join
-                                (if *win32* (getenv "Temp") "/tmp")
+                                (get-temp-path)
                                 (string-append "gpgscm-" (get-isotime) "-"
                                                (basename-suffix *scriptname* ".scm")
                                                "-XXXXXX"))