/* 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
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;
}
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, '/');
-
+ /* Copy home_dir into path. Add a slash at the end but
+ only if there isn't already one there, because Windows
+ treats // specially. */
+ if (home_dir[0] == '\0'
+ || strchr ("/\\", home_dir[strlen (home_dir) - 1]) == NULL)
+ path = xasprintf ("%s%c", home_dir, '/');
+ else
+ path = xstrdup (home_dir);
for(i = 0; i < strlen (path); i++)
if (path[i] == '\\') path[i] = '/';