From baf969486bef0be775bb27de605ecace0ef47879 Mon Sep 17 00:00:00 2001 From: rfm Date: Sun, 25 Jan 2009 07:01:46 +0000 Subject: [PATCH] Tidied last fix git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@27674 72102866-910b-0410-8b05-ffd578937521 --- Source/NSString.m | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/Source/NSString.m b/Source/NSString.m index 35fd0f67d..a895c060c 100644 --- a/Source/NSString.m +++ b/Source/NSString.m @@ -4072,30 +4072,24 @@ static NSFileManager *fm = nil; } r.length = l - r.location; } + // Remove trailing ('.') component. + if (l > root && (*caiImp)(s, caiSel, l-1) == '.' + && pathSepMember((*caiImp)(s, caiSel, l-2)) == YES) + { + l--; + [s deleteCharactersInRange: NSMakeRange(l, 1)]; + } // Condense ('/./') sequences. r = (NSRange){root, l-root}; while ((r = [s rangeOfString: @"." options: 0 range: r]).length == 1) { if (r.location > 0 - && pathSepMember((*caiImp)(s, caiSel, r.location-1)) == YES) + && pathSepMember((*caiImp)(s, caiSel, r.location-1)) == YES + && pathSepMember((*caiImp)(s, caiSel, r.location+1)) == YES) { - unsigned pos = NSMaxRange(r); - - if (pos == l) - { - [s deleteCharactersInRange: r]; - l -= r.length; - } - else if (pathSepMember((*caiImp)(s, caiSel, pos)) == YES) - { - r.length++; - [s deleteCharactersInRange: r]; - l -= r.length; - } - else - { - r.location++; - } + r.length++; + [s deleteCharactersInRange: r]; + l -= r.length; } else {