diff --git a/GSWeb.framework/GSWUtils.h b/GSWeb.framework/GSWUtils.h index e2498e3..78bbebc 100644 --- a/GSWeb.framework/GSWUtils.h +++ b/GSWeb.framework/GSWUtils.h @@ -1,6 +1,6 @@ /** GSWUtils.h - GSWeb: Utilities - Copyright (C) 1999-2003 Free Software Foundation, Inc. + Copyright (C) 1999-2004 Free Software Foundation, Inc. Written by: Manuel Guesdon Date: Jan 1999 @@ -64,6 +64,9 @@ typedef unsigned int UINT32; #define GSW_LOCK_LIMIT [NSDate dateWithTimeIntervalSinceNow:GSLOCK_DELAY_S] +GSWEB_EXPORT char* GSWIntToString(char* buffer,unsigned int bufferSize,int value,unsigned int* resultLength); +GSWEB_EXPORT NSString* GSWIntToNSString(int value); + BOOL ClassIsKindOfClass(Class classA,Class classB); GSWEB_EXPORT void diff --git a/GSWeb.framework/GSWUtils.m b/GSWeb.framework/GSWUtils.m index fad9c30..f1829a0 100644 --- a/GSWeb.framework/GSWUtils.m +++ b/GSWeb.framework/GSWUtils.m @@ -1,6 +1,6 @@ /** GSWUtils.m - GSWeb: Utilities - Copyright (C) 1999-2003 Free Software Foundation, Inc. + Copyright (C) 1999-2004 Free Software Foundation, Inc. Written by: Manuel Guesdon Date: Jan 1999 @@ -42,6 +42,54 @@ RCS_ID("$Id$") #endif #include "stacktrace.h" #include "attach.h" + + +char* GSWIntToString(char* buffer,unsigned int bufferSize,int value,unsigned int* resultLength) +{ + int origValue=value; + int i=bufferSize-1; + int j=0; + if (value<0) + value=-value; + do + { + NSCAssert2(i>0,@"Buffer not large (%d) enough for %d",bufferSize,origValue);//>0 for null term + buffer[i--]='0'+(value%10); + value=value/10; + } + while(value); + i++; + + j=0; + if (origValue<0) + { + NSCAssert2(i>0,@"Buffer not large (%d) enough for %d",bufferSize,origValue); + buffer[j++]='-'; + }; + do + { + buffer[j++]=buffer[i++]; + } + while(i %s",origValue,buffer); + return buffer; +}; + +NSString* GSWIntToNSString(int value) +{ + NSString* s=nil; + char buffer[20]; + unsigned int resultLength=0; + GSWIntToString(buffer,20,value,&resultLength); + s=[NSString stringWithCString:buffer + length:resultLength]; + //NSDebugFLog(@"value=%d [%d]==> %s ==> %@",value,resultLength,buffer,s); + return s; +}; + //-------------------------------------------------------------------- BOOL ClassIsKindOfClass(Class classA,Class classB) { @@ -84,13 +132,14 @@ BOOL boolValueFor(id anObject) //-------------------------------------------------------------------- BOOL boolValueWithDefaultFor(id anObject,BOOL defaultValue) { - int length=0; if (anObject) { if (/*anObject==BNYES ||*/ anObject==NSTYES) return YES; else if (/*anObject==BNNO ||*/ anObject==NSTNO) return NO; + else if ([anObject isKindOfClass:[NSString class]] && [anObject length]>0) + return ([anObject caseInsensitiveCompare: @"NO"]!=NSOrderedSame); else if ([anObject respondsToSelector:@selector(boolValue)]) return ([anObject boolValue]!=NO); else if ([anObject respondsToSelector:@selector(intValue)]) @@ -1555,22 +1604,22 @@ NSString* GSWGetDefaultDocRoot() if ([anObject isKindOfClass:[NSNumber class]]) { int value=[anObject intValue]; - string=[NSString stringWithFormat:@"%d",value]; + string=GSWIntToNSString(value); } else if ([anObject respondsToSelector:@selector(intValue)]) { int value=[anObject intValue]; - string=[NSString stringWithFormat:@"%d",value]; + string=GSWIntToNSString(value); } else if ([anObject respondsToSelector:@selector(floatValue)]) { int value=(int)[anObject floatValue]; - string=[NSString stringWithFormat:@"%d",value]; + string=GSWIntToNSString(value); } else if ([anObject respondsToSelector:@selector(doubleValue)]) { int value=(int)[anObject doubleValue]; - string=[NSString stringWithFormat:@"%d",value]; + string=GSWIntToNSString(value); } else {