#include <errno.h>
#include <string.h>
#include <stdlib.h>
+#ifdef HAVE_UNISTD_H
#include <unistd.h>
+#endif
/* This is only needed for the mono_path_canonicalize code, MAXSYMLINKS, could be moved */
+#ifdef HAVE_SYS_PARAM_H
#include <sys/param.h>
+#endif
#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 *
g_free (tmpdir);
}
+#ifdef PLATFORM_WIN32
+ g_strdelimit (abspath, "/", '\\');
+#endif
abspath = g_strreverse (abspath);
backc = 0;
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);
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;