/* PSPP - a program for statistical analysis.
- Copyright (C) 1997-9, 2000, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1997-9, 2000, 2006, 2007, 2009 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
if (!ds_is_empty (&file) && !ISSLASH (ds_last (&file)))
ds_put_char (&file, '/');
ds_put_cstr (&file, base_name);
+ ds_relocate (&file);
/* Check whether file exists. */
if (fn_exists (ds_cstr (&file)))
unsigned int
fn_hash_identity (const struct file_identity *identity)
{
- unsigned int hash = identity->device ^ identity->inode;
+ unsigned int hash = hash_int (identity->device, identity->inode);
if (identity->name != NULL)
- hash ^= hsh_hash_string (identity->name);
+ hash = hash_string (identity->name, hash);
return hash;
}
-
-
-#ifdef WINDOWS32
+#ifdef WIN32
/* 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;
+ static char *path = NULL;
- /* Windows NT defines HOMEDRIVE and HOMEPATH. But give preference
- to HOME, because the user can change HOME. */
- if (home_dir == NULL)
+ if ( path == NULL)
{
- const char *home_drive = getenv ("HOMEDRIVE");
- const char *home_path = getenv ("HOMEPATH");
+ /* Windows NT defines HOMEDRIVE and HOMEPATH. But give preference
+ to HOME, because the user can change HOME. */
- 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 */
+ const char *home_dir = getenv ("HOME");
+ int i;
+
+ 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",
+ home_drive, home_path);
+ }
+
+ if (home_dir == NULL)
+ home_dir = "c:/users/default"; /* poor default */
+
+ path = xasprintf ("%s%c", home_dir, '/');
+
+
+ for(i = 0; i < strlen (path); i++)
+ if (path[i] == '\\') path[i] = '/';
}
- return home_dir;
+
+ return path;
}
#else