[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
mingw: wrong behaviour in path manipulating methods
From: |
Michael Scheibler |
Subject: |
mingw: wrong behaviour in path manipulating methods |
Date: |
Thu, 15 Mar 2001 14:18:53 +0100 |
NSString's path manipulation methods always assume that two path separators
together have to be stripped to one, but on Windows it is correct to use
\\server\path\file.ext (or //server/path/file.ext on MinGW)
I found three methods where it is wrongly stripped and altered them:
1. stringByStandardizingPath
if (r.location + r.length + 1 <= length
&& pathSepMember((*caiImp)(s, caiSel, r.location + 1)) == YES)
{
> #if defined(__MINGW__)
> if (r.location)
> {
> [s deleteCharactersInRange: r];
> }
> else
> {
> r.location++;
> }
> #else
[s deleteCharactersInRange: r];
> #endif /* (__MINGW__) */
}
2. isAbsolutePath
#if defined(__MINGW__)
if ([self indexOfString: @":"] == NSNotFound)
{
const char *cpath = [self fileSystemRepresentation];
if (isalpha(cpath[0]) && cpath[1] == ':')
return YES;
else
< return NO
> return (cpath[0] == cpath[1] && (cpath[0] == '/' || cpath[0] ==
'\\'));
}
else
return YES;
#else
3. stringByAppendingPathComponent
if (length > 0)
{
> #if defined(__MINGW__)
> #define _PATH_SEARCH_END 1
> #else
> #define _PATH_SEARCH_END 0
> #endif
aLength = length - 1;
< while (aLength > 0)
> while (aLength > _PATH_SEARCH_END)
> #undef _PATH_SEARCH_END
{
if (pathSepMember(buf[aLength]) == YES)
{
if (pathSepMember(buf[aLength-1]) == YES)
{
unsigned pos;
Michael
- mingw: wrong behaviour in path manipulating methods,
Michael Scheibler <=