2009-10-22 Atsushi Enomoto <atsushi@ximian.com>
[mono.git] / mono / utils / mono-path.c
index f13c9b04c829e8257e4aece046bb89fc6e35f162..99e82ce71ae337ebee7efad7fead01fc6d7ec23d 100644 (file)
 
 #include "mono-path.h"
 
+/* Embedded systems lack MAXSYMLINKS */
+#ifndef MAXSYMLINKS
+#define MAXSYMLINKS 3
+#endif
+
 /* Resolves '..' and '.' references in a path. If the path provided is relative,
  * it will be relative to the current directory */
 gchar *
@@ -67,6 +72,11 @@ mono_path_canonicalize (const char *path)
                lastpos = pos + 1;
                pos = strchr (lastpos, G_DIR_SEPARATOR);
        }
+
+#ifdef PLATFORM_WIN32 /* For UNC paths the first '\' is removed. */
+       if (*(lastpos-1) == G_DIR_SEPARATOR && *(lastpos-2) == G_DIR_SEPARATOR)
+               lastpos = lastpos-1;
+#endif
        
        if (dest != lastpos) strcpy (dest, lastpos);
        return g_strreverse (abspath);
@@ -79,7 +89,7 @@ mono_path_canonicalize (const char *path)
 gchar *
 mono_path_resolve_symlinks (const char *path)
 {
-#if PLATFORM_WIN32
+#if defined(PLATFORM_NO_SYMLINKS)
        return mono_path_canonicalize (path);
 #else
        char *p, *concat, *dir;