Tidyups and fix in mingw drive handling

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@20911 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-Macdonald 2005-03-15 09:30:56 +00:00
parent 7602f504b2
commit daaa1f5dd7
4 changed files with 32 additions and 6 deletions

View file

@ -9,6 +9,8 @@
* Source/GNUmakefile: ditto
* Source/Additions/GNUmakefile: Build GSFunctions.m
* Source/Additions/GSFunctions.m: New file for extra functions.
* Source/NSString.m: ([stringByExpandingTildeInPath]) Improve handling
of paths containing mingw drives.
2005-03-14 Adam Fedor <fedor@gnu.org>

View file

@ -3586,10 +3586,23 @@ static NSFileManager *fm = nil;
first_slash_range = [self rangeOfCharacterFromSet: pathSeps()
options: NSLiteralSearch
range: ((NSRange){0, length})];
if (first_slash_range.length == 0)
{
first_slash_range.location = length;
}
/*
* Anything beginning '~' followed by a single letter is assumed
* to be a windows drive specification.
*/
if (first_slash_range.location == 2 && isalpha([self characterAtIndex: 1]))
{
return IMMUTABLE(self);
}
if (first_slash_range.location != 1)
{
/* It is of the form `~username/blah/...' */
/* It is of the form `~username/blah/...' or '~username' */
int uname_len;
NSString *uname;
@ -3608,13 +3621,21 @@ static NSFileManager *fm = nil;
}
else
{
/* It is of the form `~/blah/...' */
/* It is of the form `~/blah/...' or is '~' */
homedir = NSHomeDirectory ();
}
if (homedir != nil)
{
return [homedir stringByAppendingPathComponent:
[self substringFromIndex: first_slash_range.location]];
if (first_slash_range.location < length)
{
return [homedir stringByAppendingPathComponent:
[self substringFromIndex: first_slash_range.location]];
}
else
{
return IMMUTABLE(homedir);
}
}
else
{

View file

@ -723,8 +723,9 @@ static NSString *pathForUser(NSString *user)
*/
- (id) initWithUser: (NSString*)userName
{
NSString *path = pathForUser(userName);
NSString *path;
path = pathForUser(userName);
return [self initWithContentsOfFile: path];
}

View file

@ -130,6 +130,7 @@ NSString *
Win32GetUserProfileDirectory(NSString *loginName)
{
NSString *s;
if ([loginName isEqual: NSUserName()] == YES)
{
[gnustep_global_lock lock];
@ -161,7 +162,8 @@ Win32GetUserProfileDirectory(NSString *loginName)
else
{
s = nil;
NSLog(@"Not implemented! Can't determine other user home directories in Win32.");
NSLog(@"Trying to get home for '%@' when user is '%@'", loginName, NSUserName());
NSLog(@"Can't determine other user home directories in Win32.");
}
if ([s length] == 0 && [loginName length] != 1)