Added (source) configurable default output directory.
[pspp] / src / data / file-name.c
index c6f91b56a961c1567cf7b9a4822f8c4d5899088d..14afd60e53be5f86e01963d6f0a9aa08927e5de3 100644 (file)
@@ -411,7 +411,7 @@ fn_get_identity (const char *file_name)
   identity->device = 0;
   identity->inode = 0;
   identity->name = xstrdup (ok ? cname : file_name);
-  str_lowercase (identity->file_name);
+  str_lowercase (identity->name);
 #endif /* Windows */
 
   return identity;
@@ -452,3 +452,45 @@ fn_hash_identity (const struct file_identity *identity)
     hash ^= hsh_hash_string (identity->name);
   return hash;
 }
+
+
+
+#ifdef WINDOWS32
+
+/* Apparently windoze users like to see output dumped into their home directory,
+   not the current directory (!) */
+const char *
+default_output_path (void)
+{
+  static const char *home_dir = NULL;
+
+  /* Windows NT defines HOMEDRIVE and HOMEPATH.  But give preference
+     to HOME, because the user can change HOME.  */
+  if (home_dir == NULL)
+    {
+      const char *home_drive = getenv ("HOMEDRIVE");
+      const char *home_path = getenv ("HOMEPATH");
+
+      if (home_drive != NULL && home_path != NULL)
+       home_dir = xasprintf ("%s%s%c",
+                             home_drive, home_path, DIRECTORY_SEPARATOR);
+      else
+       home_dir = "c:/users/default/"; /* poor default */
+    }
+  return home_dir;
+}
+
+#else
+
+/* ... whereas the rest of the world just likes it to be
+   put "here" for easy access. */
+const char *
+default_output_path (void)
+{
+  static char current_dir[]  = "";
+
+  return current_dir;
+}
+
+#endif
+