#include <stdio.h>
#include <string.h>
#include <errno.h>
+#include <limits.h>
+
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
-#ifdef _POSIX_VERSION
-#include <limits.h> /* for PATH_MAX */
-#else
-#include <sys/param.h> /* for MAXPATHLEN */
+
+#if defined (HAVE_SYS_PARAM_H)
+#include <sys/param.h>
#endif
-#ifdef WINDOWSNT
+#ifdef WIN32_NATIVE
#include <direct.h>
#endif
#endif
/* Make a copy of the source path since we may need to modify it. */
- strcpy(copy_path, path);
+ strcpy (copy_path, path);
path = copy_path;
max_path = copy_path + PATH_MAX - 2;
-#ifdef WINDOWSNT
+#ifdef WIN32_NATIVE
/*
** In NT we have two different cases: (1) the path name begins
** with a drive letter, e.g., "C:"; and (2) the path name begins
continue;
}
- if (path[1] == '.')
+ /* Handle ".." */
+ if (path[1] == '.' &&
+ (path[2] == '\0' || path[2] == '/'))
{
- if (path[2] == '\0' || path[2] == '/')
- {
- path += 2;
-
- /* Ignore ".." at root. */
- if (new_path == resolved_path + 1)
- continue;
-
- /* Handle ".." by backing up. */
- while ((--new_path)[-1] != '/')
- ;
- continue;
- }
+ path += 2;
+
+ /* Ignore ".." at root. */
+ if (new_path == resolved_path + 1)
+ continue;
+
+ /* Handle ".." by backing up. */
+ while ((--new_path)[-1] != '/')
+ ;
+ continue;
}
}
#ifdef S_IFLNK
/* See if latest pathname component is a symlink. */
*new_path = '\0';
- n = readlink(resolved_path, link_path, PATH_MAX - 1);
+ n = readlink (resolved_path, link_path, PATH_MAX - 1);
if (n < 0)
{