Trimming fixes.

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@13112 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-Macdonald 2002-03-14 10:57:42 +00:00
parent 7026a16891
commit 654effd88f
2 changed files with 40 additions and 27 deletions

View file

@ -1,3 +1,9 @@
2002-03-14 Richard Frith-Macdonald <rfm@gnu.org>
* Source/NSString.m; Bug report by Manuel Guesdon prompted me to
rewrite string trimming extensions. All the tail end trimming
was wrong.
2002-03-14 Richard Frith-Macdonald <rfm@gnu.org> 2002-03-14 Richard Frith-Macdonald <rfm@gnu.org>
* Tools/gdomap.c: Tidy a little ... fix non-static declarations. * Tools/gdomap.c: Tidy a little ... fix non-static declarations.

View file

@ -3645,17 +3645,17 @@ handle_printf_atsign (FILE *stream,
if (length > 0) if (length > 0)
{ {
unsigned location = 0; unsigned start = 0;
unichar (*caiImp)(NSString*, SEL, unsigned int); unichar (*caiImp)(NSString*, SEL, unsigned int);
caiImp = (unichar (*)())[self methodForSelector: caiSel]; caiImp = (unichar (*)())[self methodForSelector: caiSel];
while (location < length && isspace((*caiImp)(self, caiSel, location))) while (start < length && isspace((*caiImp)(self, caiSel, start)))
{ {
location++; start++;
} }
if (location > 0) if (start > 0)
{ {
return [self substringFromIndex: location]; return [self substringFromIndex: start];
} }
} }
return self; return self;
@ -3667,20 +3667,21 @@ handle_printf_atsign (FILE *stream,
if (length > 0) if (length > 0)
{ {
unsigned location = length; unsigned end = length;
unichar (*caiImp)(NSString*, SEL, unsigned int); unichar (*caiImp)(NSString*, SEL, unsigned int);
caiImp = (unichar (*)())[self methodForSelector: caiSel]; caiImp = (unichar (*)())[self methodForSelector: caiSel];
while (location > 0) while (end > 0)
{ {
if (!isspace((*caiImp)(self, caiSel, --location))) if (!isspace((*caiImp)(self, caiSel, end - 1)))
{ {
break; break;
} }
end--;
} }
if (location < length-1) if (end < length)
{ {
return [self substringToIndex: location+1]; return [self substringToIndex: end];
} }
} }
return self; return self;
@ -3703,19 +3704,25 @@ handle_printf_atsign (FILE *stream,
} }
while (end > start) while (end > start)
{ {
if (!isspace((*caiImp)(self, caiSel, --end))) if (!isspace((*caiImp)(self, caiSel, end - 1)))
{ {
break; break;
} }
end--;
} }
if (start > 0 || end < length-1) if (start > 0 || end < length)
{ {
if (start<end) if (start < end)
return [self substringFromRange: NSMakeRange(start, end + 1 - start)]; {
return [self substringFromRange:
NSMakeRange(start, end - start)];
}
else else
{
return [NSStringClass string]; return [NSStringClass string];
} }
} }
}
return self; return self;
} }
@ -3729,17 +3736,17 @@ handle_printf_atsign (FILE *stream,
if (length > 0) if (length > 0)
{ {
unsigned location = 0; unsigned start = 0;
unichar (*caiImp)(NSString*, SEL, unsigned int); unichar (*caiImp)(NSString*, SEL, unsigned int);
caiImp = (unichar (*)())[self methodForSelector: caiSel]; caiImp = (unichar (*)())[self methodForSelector: caiSel];
while (location < length && isspace((*caiImp)(self, caiSel, location))) while (start < length && isspace((*caiImp)(self, caiSel, start)))
{ {
location++; start++;
} }
if (location > 0) if (start > 0)
{ {
[self deleteCharactersInRange: NSMakeRange(0,location)]; [self deleteCharactersInRange: NSMakeRange(0, start)];
} }
} }
} }
@ -3750,29 +3757,29 @@ handle_printf_atsign (FILE *stream,
if (length > 0) if (length > 0)
{ {
unsigned location = length; unsigned end = length;
unichar (*caiImp)(NSString*, SEL, unsigned int); unichar (*caiImp)(NSString*, SEL, unsigned int);
caiImp = (unichar (*)())[self methodForSelector: caiSel]; caiImp = (unichar (*)())[self methodForSelector: caiSel];
while (location > 0) while (end > 0)
{ {
if (!isspace((*caiImp)(self, caiSel, --location))) if (!isspace((*caiImp)(self, caiSel, end - 1)))
{ {
break; break;
} }
end--;
} }
if (location < length-1) if (end < length)
{ {
[self deleteCharactersInRange: NSMakeRange((location == 0) ? 0 [self deleteCharactersInRange: NSMakeRange(end, length - end)];
: location + 1, length - ((location == 0) ? 0 : location + 1))];
} }
} }
} }
- (void) trimSpaces - (void) trimSpaces
{ {
[self trimLeadSpaces];
[self trimTailSpaces]; [self trimTailSpaces];
[self trimLeadSpaces];
} }
@end @end