Index: src/OFString.m ================================================================== --- src/OFString.m +++ src/OFString.m @@ -1975,23 +1975,15 @@ pool = objc_autoreleasePoolPush(); characters = [self characters]; -#if !defined(_WIN32) && !defined(__DJGPP__) - if (characters[length - 1] == OF_PATH_DELIMITER) -#else - if (characters[length - 1] == '/' || characters[length - 1] == '\\') -#endif + if (OF_IS_PATH_DELIMITER(characters[length - 1])) length--; for (i = 0; i < length; i++) { -#if !defined(_WIN32) && !defined(__DJGPP__) - if (characters[i] == OF_PATH_DELIMITER) { -#else - if (characters[i] == '/' || characters[i] == '\\') { -#endif + if (OF_IS_PATH_DELIMITER(characters[i])) { [ret addObject: [self substringWithRange: of_range(last, i - last)]]; last = i + 1; } @@ -2018,23 +2010,15 @@ pool = objc_autoreleasePoolPush(); characters = [self characters]; -#if !defined(_WIN32) && !defined(__DJGPP__) - if (characters[length - 1] == OF_PATH_DELIMITER) -#else - if (characters[length - 1] == '/' || characters[length - 1] == '\\') -#endif + if (OF_IS_PATH_DELIMITER(characters[length - 1])) length--; for (i = length - 1; i >= 0; i--) { -#if !defined(_WIN32) && !defined(__DJGPP__) - if (characters[i] == OF_PATH_DELIMITER) { -#else - if (characters[i] == '/' || characters[i] == '\\') { -#endif + if (OF_IS_PATH_DELIMITER(characters[i])) { i++; break; } } @@ -2081,38 +2065,26 @@ pool = objc_autoreleasePoolPush(); characters = [self characters]; -#if !defined(_WIN32) && !defined(__DJGPP__) - if (characters[length - 1] == OF_PATH_DELIMITER) -#else - if (characters[length - 1] == '/' || characters[length - 1] == '\\') -#endif + if (OF_IS_PATH_DELIMITER(characters[length - 1])) length--; if (length == 0) { objc_autoreleasePoolPop(pool); return [self substringWithRange: of_range(0, 1)]; } for (i = length - 1; i >= 1; i--) { -#if !defined(_WIN32) && !defined(__DJGPP__) - if (characters[i] == OF_PATH_DELIMITER) { -#else - if (characters[i] == '/' || characters[i] == '\\') { -#endif + if (OF_IS_PATH_DELIMITER(characters[i])) { objc_autoreleasePoolPop(pool); return [self substringWithRange: of_range(0, i)]; } } -#if !defined(_WIN32) && !defined(__DJGPP__) - if (characters[0] == OF_PATH_DELIMITER) { -#else - if (characters[0] == '/' || characters[0] == '\\') { -#endif + if (OF_IS_PATH_DELIMITER(characters[0])) { objc_autoreleasePoolPop(pool); return [self substringWithRange: of_range(0, 1)]; } objc_autoreleasePoolPop(pool); Index: src/OFString_UTF8.m ================================================================== --- src/OFString_UTF8.m +++ src/OFString_UTF8.m @@ -1094,24 +1094,15 @@ if (pathCStringLength == 0) return ret; pool = objc_autoreleasePoolPush(); -#if !defined(_WIN32) && !defined(__DJGPP__) - if (_s->cString[pathCStringLength - 1] == OF_PATH_DELIMITER) -#else - if (_s->cString[pathCStringLength - 1] == '/' || - _s->cString[pathCStringLength - 1] == '\\') -#endif + if (OF_IS_PATH_DELIMITER(_s->cString[pathCStringLength - 1])) pathCStringLength--; for (i = 0; i < pathCStringLength; i++) { -#if !defined(_WIN32) && !defined(__DJGPP__) - if (_s->cString[i] == OF_PATH_DELIMITER) { -#else - if (_s->cString[i] == '/' || _s->cString[i] == '\\') { -#endif + if (OF_IS_PATH_DELIMITER(_s->cString[i])) { [ret addObject: [OFString stringWithUTF8String: _s->cString + last length: i - last]]; last = i + 1; } @@ -1133,24 +1124,15 @@ ssize_t i; if (pathCStringLength == 0) return @""; -#if !defined(_WIN32) && !defined(__DJGPP__) - if (_s->cString[pathCStringLength - 1] == OF_PATH_DELIMITER) -#else - if (_s->cString[pathCStringLength - 1] == '/' || - _s->cString[pathCStringLength - 1] == '\\') -#endif + if (OF_IS_PATH_DELIMITER(_s->cString[pathCStringLength - 1])) pathCStringLength--; for (i = pathCStringLength - 1; i >= 0; i--) { -#if !defined(_WIN32) && !defined(__DJGPP__) - if (_s->cString[i] == OF_PATH_DELIMITER) { -#else - if (_s->cString[i] == '/' || _s->cString[i] == '\\') { -#endif + if (OF_IS_PATH_DELIMITER(_s->cString[i])) { i++; break; } } @@ -1170,36 +1152,23 @@ size_t i, pathCStringLength = _s->cStringLength; if (pathCStringLength == 0) return @""; -#if !defined(_WIN32) && !defined(__DJGPP__) - if (_s->cString[pathCStringLength - 1] == OF_PATH_DELIMITER) -#else - if (_s->cString[pathCStringLength - 1] == '/' || - _s->cString[pathCStringLength - 1] == '\\') -#endif + if (OF_IS_PATH_DELIMITER(_s->cString[pathCStringLength - 1])) pathCStringLength--; if (pathCStringLength == 0) return [OFString stringWithUTF8String: _s->cString length: 1]; for (i = pathCStringLength - 1; i >= 1; i--) -#if !defined(_WIN32) && !defined(__DJGPP__) - if (_s->cString[i] == OF_PATH_DELIMITER) -#else - if (_s->cString[i] == '/' || _s->cString[i] == '\\') -#endif + if (OF_IS_PATH_DELIMITER(_s->cString[i])) return [OFString stringWithUTF8String: _s->cString length: i]; -#if !defined(_WIN32) && !defined(__DJGPP__) - if (_s->cString[0] == OF_PATH_DELIMITER) -#else - if (_s->cString[0] == '/' || _s->cString[0] == '\\') -#endif + if (OF_IS_PATH_DELIMITER(_s->cString[0])) return [OFString stringWithUTF8String: _s->cString length: 1]; return @"."; } Index: src/macros.h ================================================================== --- src/macros.h +++ src/macros.h @@ -114,13 +114,15 @@ } #if !defined(_WIN32) && !defined(__DJGPP__) # define OF_PATH_DELIMITER '/' # define OF_PATH_DELIMITER_STRING @"/" +# define OF_IS_PATH_DELIMITER(c) (c == '/') #else # define OF_PATH_DELIMITER '\\' # define OF_PATH_DELIMITER_STRING @"\\" +# define OF_IS_PATH_DELIMITER(c) (c == '\\' || c == '/') #endif #define OF_PATH_CURRENT_DIRECTORY @"." #define OF_PATH_PARENT_DIRECTORY @".." extern id objc_getProperty(id, SEL, ptrdiff_t, BOOL);