Fix failure to write output file in GUI on Windows when HOMEPATH is "\".
authorBen Pfaff <blp@gnu.org>
Fri, 17 Jul 2009 03:48:18 +0000 (20:48 -0700)
committerBen Pfaff <blp@gnu.org>
Fri, 17 Jul 2009 03:55:18 +0000 (20:55 -0700)
Thanks to Michel Boaventura for reporting this problem:
http://lists.gnu.org/archive/html/pspp-dev/2009-07/msg00064.html

src/data/file-name.c

index 272e555bf89965c3ebd282531781d0c50f4f244a..642947cbc5e8e30c7da153b83400a3fe824685e9 100644 (file)
@@ -1,5 +1,5 @@
 /* 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
@@ -485,7 +485,14 @@ default_output_path (void)
       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++)