CROSSTABS: Fix T values for Spearman's R and Pearson's R.
[pspp] / src / libpspp / temp-file.c
index 0391ec9c01f91ff1f3384e293c2d9b41102dabc0..d121cb9e2e5fc42466aeb0f68fd42bdb5f9daf61 100644 (file)
@@ -40,6 +40,7 @@
 
 */
 
+static void cleanup (void);
 
 static struct temp_dir *temp_dir;
 struct hmapx map;
@@ -51,11 +52,35 @@ setup (void)
   temp_dir = create_temp_dir ("pspp", NULL, true);
 }
 
+static void
+initialise (void)
+{
+  if (temp_dir == NULL)
+    {
+      setup ();
+      if (temp_dir == NULL)
+        return ;
+      atexit (cleanup);
+    }
+}
+
+
+const char *
+temp_dir_name (void)
+{
+  initialise ();
+
+  if (temp_dir)
+    return temp_dir->dir_name;
+
+  return NULL;
+}
+
 static void
 cleanup (void)
 {
   struct hmapx_node *node;
-  const char *fn;
+  char *fn;
 
   cleanup_temp_dir (temp_dir);
 
@@ -74,13 +99,9 @@ create_temp_file (void)
   char *file_name;
   FILE *stream;
 
+  initialise ();
   if (temp_dir == NULL)
-    {
-      setup ();
-      if (temp_dir == NULL)
-        return NULL;
-      atexit (cleanup);
-    }
+    return NULL;
 
   file_name = xasprintf ("%s/%d", temp_dir->dir_name, idx++);
   register_temp_file (temp_dir, file_name);