On Win32, return original patch if GetShortPathName() fails (no short
authorBruce Momjian <bruce@momjian.us>
Tue, 6 Jun 2006 22:32:56 +0000 (22:32 +0000)
committerBruce Momjian <bruce@momjian.us>
Tue, 6 Jun 2006 22:32:56 +0000 (22:32 +0000)
name, path does not exist), rather than returning nothing.

Backpatch to 8.1.X.

src/bin/pg_config/pg_config.c

index 9943ddf6f830bfa167f0122933a4168e7e702bad..c582111d316eb3a37d50cfe7eb9f0155a5cc4ea6 100644 (file)
@@ -17,7 +17,7 @@
  *
  * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/bin/pg_config/pg_config.c,v 1.17 2005/10/15 02:49:37 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/pg_config/pg_config.c,v 1.17.2.1 2006/06/06 22:32:56 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -35,11 +35,6 @@ static char mypath[MAXPGPATH];
  * on Windows. We need them to use filenames without spaces, for which a
  * short filename is the safest equivalent, eg:
  *     C:/Progra~1/
- *
- * This can fail in 2 ways - if the path doesn't exist, or short names are
- * disabled. In the first case, don't return any path. In the second case,
- * we leave the path in the long form. In this case, it does still seem to
- * fix elements containing spaces which is all we actually need.
  */
 static void
 cleanup_path(char *path)
@@ -47,18 +42,12 @@ cleanup_path(char *path)
 #ifdef WIN32
    char       *ptr;
 
-   if (GetShortPathName(path, path, MAXPGPATH - 1) == 0)
-   {
-       /*
-        * Ignore ERROR_INVALID_PARAMETER as it almost certainly means that
-        * short names are disabled
-        */
-       if (GetLastError() != ERROR_INVALID_PARAMETER)
-       {
-           path[0] = '\0';
-           return;
-       }
-   }
+   /*
+    *  GetShortPathName() will fail if the path does not exist, or short names
+    *  are disabled on this file system.  In both cases, we just return the
+    *  original path.
+    */
+   GetShortPathName(path, path, MAXPGPATH - 1);
 
    /* Replace '\' with '/' */
    for (ptr = path; *ptr; ptr++)