diff lib-src/gnuclient.c @ 464:5aa1854ad537 r21-2-47

Import from CVS: tag r21-2-47
author cvs
date Mon, 13 Aug 2007 11:45:51 +0200
parents 0784d089fdc9
children 7039e6323819
line wrap: on
line diff
--- a/lib-src/gnuclient.c	Mon Aug 13 11:44:39 2007 +0200
+++ b/lib-src/gnuclient.c	Mon Aug 13 11:45:51 2007 +0200
@@ -48,6 +48,10 @@
  * ../etc/gnuserv.README relative to the directory containing this file)
  */
 
+#ifdef  CYGWIN
+extern void cygwin_conv_to_posix_path(const char *path, char *posix_path);
+#endif
+
 #include "gnuserv.h"
 
 char gnuserv_version[] = "gnuclient version " GNUSERV_VERSION;
@@ -189,35 +193,26 @@
   /* fullpath - returned full pathname */
   /* filename - filename to expand */
 {
+#ifdef  CYGWIN
+  char cygwinFilename[MAXPATHLEN+1];
+#endif
+
   int len;
+  fullpath[0] = '\0';
 
-  fullpath[0] = '\0';
+#ifdef  CYGWIN
+  /*
+    If we're in cygwin, just convert it and let the unix stuff handle it.
+  */
+  cygwin_conv_to_posix_path(filename, cygwinFilename);
+  filename = cygwinFilename;
+#endif
 
   if (filename[0] && filename[0] == '/')
      {
        /* Absolute (unix-style) pathname.  Do nothing */
        strcat (fullpath, filename);
      }
-#ifdef  CYGWIN
-  else if (filename[0] && filename[0] == '\\' &&
-           filename[1] && filename[1] == '\\')
-    {
-      /* This path includes the server name (something like
-         "\\server\path"), so we assume it's absolute.  Do nothing to
-         it. */
-      strcat (fullpath, filename);
-    }
-  else if (filename[0] &&
-           filename[1] && filename[1] == ':' &&
-           filename[2] && filename[2] == '\\')
-    {
-      /* Absolute pathname with drive letter.  Convert "<drive>:"
-         to "//<drive>/". */
-      strcat (fullpath, "//");
-      strncat (fullpath, filename, 1);
-      strcat (fullpath, &filename[2]);
-    }
-#endif
   else
     {
       /* Assume relative Unix style path.  Get the current directory