}
+/*
+ *---------------------------------------------------------------------------
+ *
+ * FileFindLastDirsep --
+ *
+ * Return a pointer to the last directory separator.
+ *
+ * Results:
+ * NULL No directory separator found
+ * !NULL Pointer to the last directory separator
+ *
+ * Side effects:
+ * None
+ *
+ *---------------------------------------------------------------------------
+ */
+
+static char *
+FileFindLastDirsep(const char *pathName, // IN:
+ size_t len) // IN:
+{
+ char *p;
+
+ ASSERT(pathName != NULL);
+
+ p = (char *) pathName + len;
+
+ while (p-- != pathName) {
+ if (File_IsDirsep(*p)) {
+ return p;
+ }
+ }
+
+ return NULL;
+}
+
+
/*
*---------------------------------------------------------------------------
*
*/
#if defined(_WIN32)
- while ((i > 1) && (('/' == dir2[i - 1]) ||
- ('\\' == dir2[i - 1]))) {
+ while ((i > 1) && File_IsDirsep(dir2[i - 1])) {
#else
- while ((i > 0) && ('/' == dir2[i - 1])) {
+ while ((i > 0) && File_IsDirsep(dir2[i - 1])) {
#endif
i--;
}
memcpy(result, pathName, pathNameLen + 1);
- p = strrchr(result, DIRSEPC);
+ p = FileFindLastDirsep(result, pathNameLen);
if (p == NULL) {
p = strrchr(result, '.');
} else {
result = Util_SafeStrdup(pathName);
- p = strrchr(result, DIRSEPC);
+ p = FileFindLastDirsep(result, strlen(pathName));
if (p == NULL) {
p = strrchr(result, '.');
} else {
Bool File_DoesVolumeSupportAcls(const char *pathName);
+/*
+ *---------------------------------------------------------------------------
+ *
+ * File_IsDirsep --
+ *
+ * Is the argument character a directory separator?
+ *
+ * Results:
+ * TRUE Yes
+ * FALSE No
+ *
+ * Side effects:
+ * None
+ *
+ *---------------------------------------------------------------------------
+ */
+
+static INLINE Bool
+File_IsDirsep(int c) // IN:
+{
+#if defined(_WIN32)
+ return (c == '/') || (c == '\\'); // Until util.h dependencies work out
+#else
+ return c == '/';
+#endif
+}
+
+
#if defined(__cplusplus)
} // extern "C"
#endif