From 8fd2c06ddd5f9e54c6e548a0742f6358364df93c Mon Sep 17 00:00:00 2001 From: Hugo Melder Date: Mon, 28 Oct 2024 03:52:44 -0700 Subject: [PATCH 01/21] Implement NSDate as a small object (tagged pointer) - clang/libobjc2 only (#451) * Implement GSSmallObject Class * Remove private concrete class access * Change secondary bias * NSDate: Get interval from rhs object in comparison * Add prefix to CONCRETE_CLASS_NAME macro --- ChangeLog | 17 +- Source/NSCalendarDate.m | 9 +- Source/NSDate.m | 1192 ++++++++++++++++++---------- Source/NSDatePrivate.h | 41 + Source/NSTimer.m | 7 +- Tests/base/NSFileManager/general.m | 3 +- 6 files changed, 832 insertions(+), 437 deletions(-) create mode 100644 Source/NSDatePrivate.h diff --git a/ChangeLog b/ChangeLog index 810a8a15e..4be99f770 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,7 +3,22 @@ * Source/NSFileManager.m: Create an NSError object when we fail to copy because the destination item already exists. -2024-09-23: Hugo Melder +2024-10-10: Hugo Melder + + * Source/NSDate.m: + * Source/NSDatePrivate.h: + NSDate is now a small object in slot 6, when configuring GNUstep with the + clang/libobjc2 toolchain. This is done by compressing the binary64 fp + holding the seconds since reference date (because someone at Apple thought + it would be a good idea to represent a time interval as a fp). Note that + this assumes that IEEE 754 is used. + * Source/NSCalendarDate.m: + Remove access to the NSDate private concrete Class + and implement -timeIntervalSinceReferenceDate instead. + Previously, all methods of the concrete date class were + added to NSCalendarDate via GSObjCAddClassBehavior. + +2024-23-09: Hugo Melder * Headers/Foundation/NSThread.h: * Source/NSString.m: diff --git a/Source/NSCalendarDate.m b/Source/NSCalendarDate.m index 895248e37..5f8a52abc 100644 --- a/Source/NSCalendarDate.m +++ b/Source/NSCalendarDate.m @@ -58,9 +58,6 @@ @interface GSTimeZone : NSObject // Help the compiler @class GSAbsTimeZone; @interface GSAbsTimeZone : NSObject // Help the compiler @end -@class NSGDate; -@interface NSGDate : NSObject // Help the compiler -@end #define DISTANT_FUTURE 63113990400.0 @@ -396,7 +393,6 @@ + (void) initialize absAbrIMP = (NSString* (*)(id,SEL,id)) [absClass instanceMethodForSelector: abrSEL]; - GSObjCAddClassBehavior(self, [NSGDate class]); [pool release]; } } @@ -463,6 +459,11 @@ + (id) dateWithYear: (NSInteger)year return AUTORELEASE(d); } +- (NSTimeInterval) timeIntervalSinceReferenceDate +{ + return _seconds_since_ref; +} + /** * Creates and returns a new NSCalendarDate object by taking the * value of the receiver and adding the interval in seconds specified. diff --git a/Source/NSDate.m b/Source/NSDate.m index 5f632f0ca..b71bbb65f 100644 --- a/Source/NSDate.m +++ b/Source/NSDate.m @@ -1,10 +1,11 @@ /** Implementation for NSDate for GNUStep - Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 2024 Free Software Foundation, Inc. Written by: Jeremy Bettis Rewritten by: Scott Christley - Date: March 1995 Modifications by: Richard Frith-Macdonald + Small Object Optimization by: Hugo Melder + Date: September 2024 This file is part of the GNUstep Base Library. @@ -39,9 +40,13 @@ #import "Foundation/NSScanner.h" #import "Foundation/NSTimeZone.h" #import "Foundation/NSUserDefaults.h" +#import "Foundation/NSHashTable.h" #import "GNUstepBase/GSObjCRuntime.h" #import "GSPrivate.h" +#import "GSPThread.h" + +#import "NSDatePrivate.h" #include @@ -54,38 +59,595 @@ #define NAN 0x7fffffffffffffff #endif -GS_DECLARE const NSTimeInterval NSTimeIntervalSince1970 = 978307200.0; +GS_DECLARE const NSTimeInterval NSTimeIntervalSince1970 = 978307200.0; + +static BOOL debug = NO; +static Class abstractClass = nil; +static Class concreteClass = nil; +static Class calendarClass = nil; + +static gs_mutex_t classLock = GS_MUTEX_INIT_STATIC; + +// Singleton instances for distantPast and distantFuture +static id _distantPast = nil; +static id _distantFuture = nil; + +/** + * Compression of IEEE 754 double-precision floating-point numbers + * + * libobjc2 just like Apple's Objective-C runtime implement small + * object classes, or tagged pointers in the case of Apple's runtime, + * to store a 60-bit payload and 4-bit metadata in a 64-bit pointer. + * This avoids constructing a full object on the heap. + * + * NSDate stores the time as a double-precision floating-point number + * representing the number of seconds since the reference date, the + * Cocoa epoch (2001-01-01 00:00:00 UTC). This is a 64-bit value. + * This poses a problem for small object classes, as the time value + * is too large to fit in the 60-bit payload. + * + * To solve this problem, we look at the range of values that we + * need to acurately represent. Idealy, this would include dates + * before distant past and beyond distant future. + * + * After poking around with __NSTaggedDate, here is the algorithm + * for constructing its payload: + * + * Sign and mantissa are not touched. The exponent is compressed. + * Compression: + * 1. Take the 11-bit unsigned exponent and sign-extend it to a 64-bit signed integer. + * 2. Subtract a new secondary bias of 0x3EF from the exponent. + * 3. Truncate the result to a 7-bit signed integer. + * + * The order of operations is important. The biased exponent of a + * double-precision floating-point number is in range [0, 2047] (including + * special values). Sign-extending and subtracting the secondary bias results + * in a value in range [-1007, 1040]. Truncating this to a 7-bit signed integer + * further reduces the range to [-64, 63]. + * + * When unbiasing the compressed 7-bit signed exponent with 0x3EF, we + * get a biased exponent in range [943, 1070]. We have effectively shifted + * the value range in order to represent values from + * (-1)^0 * 2^(943 - 1023) * 1.048576 = 8.673617379884035e-25 + * to (-1)^0 * 2^(1070 - 1023) * 1.048576 = 147573952589676.4 + * + * This encodes all dates for a few million years beyond distantPast and + * distantFuture, except within about 1e-25 second of the reference date. + * + * So how does decompression work? + * 1. Sign extend the 7-bit signed exponent to a 64-bit signed integer. + * 2. Add the secondary bias of 0x3EF to the exponent. + * 3. Cast the result to an unsigned 11-bit integer. + * + * Note that we only use the least-significant 3-bits for the tag in + * libobjc2, contrary to Apple's runtime which uses the most-significant + * 4-bits. + * + * We'll thus use 8-bits for the exponent. + */ + +#if USE_SMALL_DATE + +// 1-5 are already used by NSNumber and GSString +#define SMALL_DATE_MASK 6 +#define EXPONENT_BIAS 0x3EF + +#define GET_INTERVAL(obj) decompressTimeInterval((uintptr_t)obj) +#define SET_INTERVAL(obj, interval) (obj = (id)(compressTimeInterval(interval) | SMALL_DATE_MASK)) + +#define IS_CONCRETE_CLASS(obj) isSmallDate(obj) + +#define CREATE_SMALL_DATE(interval) (id)(compressTimeInterval(interval) | SMALL_DATE_MASK) + +union CompressedDouble { + uintptr_t data; + struct { + uintptr_t tag : 3; // placeholder for tag bits + uintptr_t fraction : 52; + intptr_t exponent : 8; // signed! + uintptr_t sign : 1; + }; +}; + +union DoubleBits { + double val; + struct { + uintptr_t fraction : 52; + uintptr_t exponent : 11; + uintptr_t sign : 1; + }; +}; + +static __attribute__((always_inline)) uintptr_t compressTimeInterval(NSTimeInterval interval) { + union CompressedDouble c; + union DoubleBits db; + intptr_t exponent; + + db.val = interval; + c.fraction = db.fraction; + c.sign = db.sign; + + // 1. Cast 11-bit unsigned exponent to 64-bit signed + exponent = db.exponent; + // 2. Subtract secondary Bias first + exponent -= EXPONENT_BIAS; + // 3. Truncate to 8-bit signed + c.exponent = exponent; + c.tag = 0; + + return c.data; +} + +static __attribute__((always_inline)) NSTimeInterval decompressTimeInterval(uintptr_t compressed) { + union CompressedDouble c; + union DoubleBits d; + intptr_t biased_exponent; + + c.data = compressed; + d.fraction = c.fraction; + d.sign = c.sign; + + // 1. Sign Extend 8-bit to 64-bit + biased_exponent = c.exponent; + // 2. Add secondary Bias + biased_exponent += 0x3EF; + // Cast to 11-bit unsigned exponent + d.exponent = biased_exponent; + + return d.val; +} + +static __attribute__((always_inline)) BOOL isSmallDate(id obj) { + // Do a fast check if the object is also a small date. + // libobjc2 guarantees that the classes are 16-byte (word) aligned. + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wdeprecated-objc-pointer-introspection" + return !!((uintptr_t)obj & SMALL_DATE_MASK); + #pragma clang diagnostic pop +} + +// Populated in +[GSSmallDate load] +static BOOL useSmallDate; + + +#else +#define GET_INTERVAL(obj) ((NSGDate*)obj)->_seconds_since_ref +#define SET_INTERVAL(obj, interval) (((NSGDate*)obj)->_seconds_since_ref = interval) + +#define IS_CONCRETE_CLASS(obj) ([obj isKindOfClass: concreteClass]) + +@interface GSDateSingle : NSGDate +@end + +@interface GSDatePast : GSDateSingle +@end + +@interface GSDateFuture : GSDateSingle +@end + +#endif + +@implementation DATE_CONCRETE_CLASS_NAME + +#if USE_SMALL_DATE + ++ (void) load +{ + useSmallDate = objc_registerSmallObjectClass_np(self, SMALL_DATE_MASK); + // If this fails, someone else has already registered a small object class for this slot. + if (unlikely(useSmallDate == NO)) + { + [NSException raise: NSInternalInconsistencyException format: @"Failed to register GSSmallDate small object class"]; + } +} + +// Overwrite default memory management methods + ++ (id) alloc +{ + return (id)SMALL_DATE_MASK; +} + ++ (id) allocWithZone: (NSZone*)aZone +{ + return (id)SMALL_DATE_MASK; +} + +- (id) copy +{ + return self; +} + +- (id) copyWithZone: (NSZone*)aZone +{ + return self; +} + +- (id) retain +{ + return self; +} + +- (NSUInteger) retainCount +{ + return UINT_MAX; +} + +- (id) autorelease +{ + return self; +} + +- (oneway void) release +{ + return; +} + +// NSObject(MemoryFootprint) informal protocol + +- (NSUInteger) sizeInBytesExcluding: (NSHashTable*)exclude +{ + if (0 == NSHashGet(exclude, self)) + { + return 0; + } + return 8; +} + +- (NSUInteger) sizeOfContentExcluding: (NSHashTable*)exclude +{ + return 0; +} + +- (NSUInteger) sizeOfInstance +{ + return 0; +} + +#else + ++ (void) initialize +{ + if (self == [NSDate class]) + { + [self setVersion: 1]; + } +} + +#endif + +// NSDate initialization + +- (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs +{ + if (isnan(secs)) + { + [NSException raise: NSInvalidArgumentException + format: @"[%@-%@] interval is not a number", + NSStringFromClass([self class]), NSStringFromSelector(_cmd)]; + } + +#if USE_SMALL_DATE == 0 && GS_SIZEOF_VOIDP == 4 + if (secs <= DISTANT_PAST) + { + secs = DISTANT_PAST; + } + else if (secs >= DISTANT_FUTURE) + { + secs = DISTANT_FUTURE; + } +#endif + +#if USE_SMALL_DATE == 0 + _seconds_since_ref = secs; + return self; +#else + return CREATE_SMALL_DATE(secs); +#endif +} + +- (id) initWithCoder: (NSCoder*)coder +{ + double secondsSinceRef; + if ([coder allowsKeyedCoding]) + { + secondsSinceRef = [coder decodeDoubleForKey: @"NS.time"]; + } + else + { + [coder decodeValueOfObjCType: @encode(NSTimeInterval) + at: &secondsSinceRef]; + } + +#if USE_SMALL_DATE == 0 + _seconds_since_ref = secondsSinceRef; + return self; +#else + return CREATE_SMALL_DATE(secondsSinceRef); +#endif +} + +// NSDate Hashing, Comparison and Equality + +- (NSUInteger) hash +{ + #if USE_SMALL_DATE + return (NSUInteger)self; + #else + return (NSUInteger)GET_INTERVAL(self); + #endif +} + +- (NSComparisonResult) compare: (NSDate*)otherDate +{ + double selfTime = GET_INTERVAL(self); + double otherTime; + + if (otherDate == self) + { + return NSOrderedSame; + } + if (unlikely(otherDate == nil)) + { + [NSException raise: NSInvalidArgumentException + format: @"nil argument for compare:"]; + } + + if (IS_CONCRETE_CLASS(otherDate)) + { + otherTime = GET_INTERVAL(otherDate); + } else { + otherTime = [otherDate timeIntervalSinceReferenceDate]; + } + + if (selfTime > otherTime) + { + return NSOrderedDescending; + } + if (selfTime < otherTime) + { + return NSOrderedAscending; + } + return NSOrderedSame; +} + +- (BOOL) isEqual: (id)other +{ + double selfTime = GET_INTERVAL(self); + double otherTime; + + if (other == self) + { + return YES; + } + + if (IS_CONCRETE_CLASS(other)) + { + otherTime = GET_INTERVAL(other); + } else if ([other isKindOfClass: abstractClass]) + { + otherTime = [other timeIntervalSinceReferenceDate]; + } else { + return NO; + } + + return selfTime == otherTime; +} + +- (BOOL) isEqualToDate: (NSDate*)other +{ + return [self isEqual: other]; +} + +- (NSDate*) laterDate: (NSDate*)otherDate +{ + double selfTime; + double otherTime; + + if (unlikely(otherDate == nil)) + { + [NSException raise: NSInvalidArgumentException + format: @"nil argument for laterDate:"]; + } + + selfTime = GET_INTERVAL(self); + if (IS_CONCRETE_CLASS(otherDate)) + { + otherTime = GET_INTERVAL(otherDate); + } else { + otherTime = [otherDate timeIntervalSinceReferenceDate]; + } + + // If the receiver and anotherDate represent the same date, returns the receiver. + if (selfTime <= otherTime) + { + return otherDate; + } + + return self; +} + +- (NSDate*) earlierDate: (NSDate*)otherDate +{ + double selfTime; + double otherTime; + + if (unlikely(otherDate == nil)) + { + [NSException raise: NSInvalidArgumentException + format: @"nil argument for earlierDate:"]; + } + + selfTime = GET_INTERVAL(self); + if (IS_CONCRETE_CLASS(otherDate)) + { + otherTime = GET_INTERVAL(otherDate); + } else { + otherTime = [otherDate timeIntervalSinceReferenceDate]; + } + + // If the receiver and anotherDate represent the same date, returns the receiver. + if (selfTime >= otherTime) + { + return otherDate; + } + + return self; +} + +- (void) encodeWithCoder: (NSCoder*)coder +{ + double time = GET_INTERVAL(self); + if ([coder allowsKeyedCoding]) + { + [coder encodeDouble:time forKey:@"NS.time"]; + } + else + { + [coder encodeValueOfObjCType: @encode(NSTimeInterval) + at: &time]; + } +} + +// NSDate Accessors + +- (NSTimeInterval) timeIntervalSince1970 +{ + return GET_INTERVAL(self) + NSTimeIntervalSince1970; +} + +- (NSTimeInterval) timeIntervalSinceDate: (NSDate*)otherDate +{ + double otherTime; + if (unlikely(otherDate == nil)) + { + [NSException raise: NSInvalidArgumentException + format: @"nil argument for timeIntervalSinceDate:"]; + } + + if (IS_CONCRETE_CLASS(otherDate)) + { + otherTime = GET_INTERVAL(otherDate); + } else { + otherTime = [otherDate timeIntervalSinceReferenceDate]; + } + + return GET_INTERVAL(self) - otherTime; +} + +- (NSTimeInterval) timeIntervalSinceNow +{ + return GET_INTERVAL(self) - GSPrivateTimeNow(); +} + +- (NSTimeInterval) timeIntervalSinceReferenceDate +{ + return GET_INTERVAL(self); +} + +@end + +#if USE_SMALL_DATE == 0 +/* + * This abstract class represents a date of which there can be only + * one instance. + */ +@implementation GSDateSingle + ++ (void) initialize +{ + if (self == [GSDateSingle class]) + { + [self setVersion: 1]; + GSObjCAddClassBehavior(self, [NSGDate class]); + } +} + +- (id) autorelease +{ + return self; +} + +- (oneway void) release +{ +} + +- (id) retain +{ + return self; +} + ++ (id) allocWithZone: (NSZone*)z +{ + [NSException raise: NSInternalInconsistencyException + format: @"Attempt to allocate fixed date"]; + return nil; +} + +- (id) copyWithZone: (NSZone*)z +{ + return self; +} + +- (void) dealloc +{ + [NSException raise: NSInternalInconsistencyException + format: @"Attempt to deallocate fixed date"]; + GSNOSUPERDEALLOC; +} + +- (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs +{ + return self; +} + +@end + +@implementation GSDatePast + ++ (id) allocWithZone: (NSZone*)z +{ + if (_distantPast == nil) + { + id obj = NSAllocateObject(self, 0, NSDefaultMallocZone()); + + _distantPast = [obj init]; + } + return _distantPast; +} + +- (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs +{ + SET_INTERVAL(self, DISTANT_PAST); + return self; +} + +@end - -static BOOL debug = NO; -static Class abstractClass = nil; -static Class concreteClass = nil; -static Class calendarClass = nil; +@implementation GSDateFuture -/** - * Our concrete base class - NSCalendar date must share the ivar layout. - */ -@interface NSGDate : NSDate ++ (id) allocWithZone: (NSZone*)z { -@public - NSTimeInterval _seconds_since_ref; -} -@end + if (_distantFuture == nil) + { + id obj = NSAllocateObject(self, 0, NSDefaultMallocZone()); -@interface GSDateSingle : NSGDate -@end + _distantFuture = [obj init]; + } + return _distantFuture; +} -@interface GSDatePast : GSDateSingle -@end +- (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs +{ + SET_INTERVAL(self, DISTANT_FUTURE); + return self; +} -@interface GSDateFuture : GSDateSingle @end -static id _distantPast = nil; -static id _distantFuture = nil; +#endif // USE_SMALL_DATE == 0 - static NSString* findInArray(NSArray *array, unsigned pos, NSString *str) { @@ -106,17 +668,10 @@ @interface GSDateFuture : GSDateSingle static inline NSTimeInterval otherTime(NSDate* other) { - Class c; - - if (other == nil) + if (unlikely(other == nil)) [NSException raise: NSInvalidArgumentException format: @"other time nil"]; - if (GSObjCIsInstance(other) == NO) - [NSException raise: NSInvalidArgumentException format: @"other time bad"]; - c = object_getClass(other); - if (c == concreteClass || c == calendarClass) - return ((NSGDate*)other)->_seconds_since_ref; - else - return [other timeIntervalSinceReferenceDate]; + + return [other timeIntervalSinceReferenceDate]; } /** @@ -135,7 +690,7 @@ + (void) initialize { [self setVersion: 1]; abstractClass = self; - concreteClass = [NSGDate class]; + concreteClass = [DATE_CONCRETE_CLASS_NAME class]; calendarClass = [NSCalendarDate class]; } } @@ -144,7 +699,11 @@ + (id) alloc { if (self == abstractClass) { + #if USE_SMALL_DATE + return [DATE_CONCRETE_CLASS_NAME alloc]; // alloc is overridden to return a small object + #else return NSAllocateObject(concreteClass, 0, NSDefaultMallocZone()); + #endif } return NSAllocateObject(self, 0, NSDefaultMallocZone()); } @@ -153,7 +712,11 @@ + (id) allocWithZone: (NSZone*)z { if (self == abstractClass) { + #if USE_SMALL_DATE + return [DATE_CONCRETE_CLASS_NAME alloc]; // alloc is overridden to return a small object + #else return NSAllocateObject(concreteClass, 0, z); + #endif } return NSAllocateObject(self, 0, z); } @@ -885,8 +1448,7 @@ + (instancetype) dateWithNaturalLanguageString: (NSString*)string } else { - return [self dateWithTimeIntervalSinceReferenceDate: - otherTime(theDate)]; + return [self dateWithTimeIntervalSinceReferenceDate: otherTime(theDate)]; } } @@ -923,7 +1485,16 @@ + (instancetype) distantPast { if (_distantPast == nil) { - _distantPast = [GSDatePast allocWithZone: 0]; + GS_MUTEX_LOCK(classLock); + if (_distantPast == nil) + { + #if USE_SMALL_DATE + _distantPast = CREATE_SMALL_DATE(DISTANT_PAST); + #else + _distantPast = [GSDatePast allocWithZone: 0]; + #endif + } + GS_MUTEX_UNLOCK(classLock); } return _distantPast; } @@ -932,7 +1503,16 @@ + (instancetype) distantFuture { if (_distantFuture == nil) { - _distantFuture = [GSDateFuture allocWithZone: 0]; + GS_MUTEX_LOCK(classLock); + if (_distantFuture == nil) + { + #if USE_SMALL_DATE + _distantFuture = CREATE_SMALL_DATE(DISTANT_FUTURE); + #else + _distantFuture = [GSDateFuture allocWithZone: 0]; + #endif + } + GS_MUTEX_UNLOCK(classLock); } return _distantFuture; } @@ -1008,270 +1588,51 @@ - (NSString*) description d = [d initWithTimeIntervalSinceReferenceDate: otherTime(self)]; s = [d description]; RELEASE(d); - return s; -} - -- (NSString*) descriptionWithCalendarFormat: (NSString*)format - timeZone: (NSTimeZone*)aTimeZone - locale: (NSDictionary*)l -{ - // Easiest to just have NSCalendarDate do the work for us - NSString *s; - NSCalendarDate *d = [calendarClass alloc]; - id f; - - d = [d initWithTimeIntervalSinceReferenceDate: otherTime(self)]; - if (!format) - { - f = [d calendarFormat]; - } - else - { - f = format; - } - if (aTimeZone) - { - [d setTimeZone: aTimeZone]; - } - s = [d descriptionWithCalendarFormat: f locale: l]; - RELEASE(d); - return s; -} - -- (NSString *) descriptionWithLocale: (id)locale -{ - // Easiest to just have NSCalendarDate do the work for us - NSString *s; - NSCalendarDate *d = [calendarClass alloc]; - - d = [d initWithTimeIntervalSinceReferenceDate: otherTime(self)]; - s = [d descriptionWithLocale: locale]; - RELEASE(d); - return s; -} - -- (NSDate*) earlierDate: (NSDate*)otherDate -{ - if (otherTime(self) > otherTime(otherDate)) - { - return otherDate; - } - return self; -} - -- (void) encodeWithCoder: (NSCoder*)coder -{ - NSTimeInterval interval = [self timeIntervalSinceReferenceDate]; - - if ([coder allowsKeyedCoding]) - { - [coder encodeDouble: interval forKey: @"NS.time"]; - } - [coder encodeValueOfObjCType: @encode(NSTimeInterval) at: &interval]; -} - -- (NSUInteger) hash -{ - return (NSUInteger)[self timeIntervalSinceReferenceDate]; -} - -- (instancetype) initWithCoder: (NSCoder*)coder -{ - NSTimeInterval interval; - id o; - - if ([coder allowsKeyedCoding]) - { - interval = [coder decodeDoubleForKey: @"NS.time"]; - } - else - { - [coder decodeValueOfObjCType: @encode(NSTimeInterval) at: &interval]; - } - if (interval == DISTANT_PAST) - { - o = RETAIN([abstractClass distantPast]); - } - else if (interval == DISTANT_FUTURE) - { - o = RETAIN([abstractClass distantFuture]); - } - else - { - o = [concreteClass allocWithZone: NSDefaultMallocZone()]; - o = [o initWithTimeIntervalSinceReferenceDate: interval]; - } - DESTROY(self); - return o; -} - -- (instancetype) init -{ - return [self initWithTimeIntervalSinceReferenceDate: GSPrivateTimeNow()]; -} - -- (instancetype) initWithString: (NSString*)description -{ - // Easiest to just have NSCalendarDate do the work for us - NSCalendarDate *d = [calendarClass alloc]; - - d = [d initWithString: description]; - if (nil == d) - { - DESTROY(self); - return nil; - } - else - { - self = [self initWithTimeIntervalSinceReferenceDate: otherTime(d)]; - RELEASE(d); - return self; - } -} - -- (instancetype) initWithTimeInterval: (NSTimeInterval)secsToBeAdded - sinceDate: (NSDate*)anotherDate -{ - if (anotherDate == nil) - { - NSLog(@"initWithTimeInterval:sinceDate: given nil date"); - DESTROY(self); - return nil; - } - // Get the other date's time, add the secs and init thyself - return [self initWithTimeIntervalSinceReferenceDate: - otherTime(anotherDate) + secsToBeAdded]; -} - -- (instancetype) initWithTimeIntervalSince1970: (NSTimeInterval)seconds -{ - return [self initWithTimeIntervalSinceReferenceDate: - seconds - NSTimeIntervalSince1970]; -} - -- (instancetype) initWithTimeIntervalSinceNow: (NSTimeInterval)secsToBeAdded -{ - // Get the current time, add the secs and init thyself - return [self initWithTimeIntervalSinceReferenceDate: - GSPrivateTimeNow() + secsToBeAdded]; -} - -- (instancetype) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs -{ - [self subclassResponsibility: _cmd]; - return self; -} - -- (BOOL) isEqual: (id)other -{ - if (other != nil - && [other isKindOfClass: abstractClass] - && otherTime(self) == otherTime(other)) - { - return YES; - } - return NO; -} - -- (BOOL) isEqualToDate: (NSDate*)other -{ - if (other != nil - && otherTime(self) == otherTime(other)) - { - return YES; - } - return NO; -} - -- (NSDate*) laterDate: (NSDate*)otherDate -{ - if (otherTime(self) < otherTime(otherDate)) - { - return otherDate; - } - return self; -} - -- (id) replacementObjectForPortCoder: (NSPortCoder*)aCoder -{ - if ([aCoder isByref] == NO) - { - return self; - } - return [super replacementObjectForPortCoder: aCoder]; -} - -- (NSTimeInterval) timeIntervalSince1970 -{ - return otherTime(self) + NSTimeIntervalSince1970; -} - -- (NSTimeInterval) timeIntervalSinceDate: (NSDate*)otherDate -{ - if (nil == otherDate) - { -#ifndef NAN - return nan(""); -#else - return NAN; -#endif - } - return otherTime(self) - otherTime(otherDate); -} - -- (NSTimeInterval) timeIntervalSinceNow -{ - return otherTime(self) - GSPrivateTimeNow(); -} - -- (NSTimeInterval) timeIntervalSinceReferenceDate -{ - [self subclassResponsibility: _cmd]; - return 0; -} - -@end - -@implementation NSGDate - -+ (void) initialize -{ - if (self == [NSDate class]) - { - [self setVersion: 1]; - } + return s; } -- (NSComparisonResult) compare: (NSDate*)otherDate +- (NSString*) descriptionWithCalendarFormat: (NSString*)format + timeZone: (NSTimeZone*)aTimeZone + locale: (NSDictionary*)l { - if (otherDate == self) - { - return NSOrderedSame; - } - if (otherDate == nil) + // Easiest to just have NSCalendarDate do the work for us + NSString *s; + NSCalendarDate *d = [calendarClass alloc]; + id f; + + d = [d initWithTimeIntervalSinceReferenceDate: otherTime(self)]; + if (!format) { - [NSException raise: NSInvalidArgumentException - format: @"nil argument for compare:"]; + f = [d calendarFormat]; } - if (_seconds_since_ref > otherTime(otherDate)) + else { - return NSOrderedDescending; + f = format; } - if (_seconds_since_ref < otherTime(otherDate)) + if (aTimeZone) { - return NSOrderedAscending; + [d setTimeZone: aTimeZone]; } - return NSOrderedSame; + s = [d descriptionWithCalendarFormat: f locale: l]; + RELEASE(d); + return s; +} + +- (NSString *) descriptionWithLocale: (id)locale +{ + // Easiest to just have NSCalendarDate do the work for us + NSString *s; + NSCalendarDate *d = [calendarClass alloc]; + + d = [d initWithTimeIntervalSinceReferenceDate: otherTime(self)]; + s = [d descriptionWithLocale: locale]; + RELEASE(d); + return s; } - (NSDate*) earlierDate: (NSDate*)otherDate { - if (otherDate == nil) - { - [NSException raise: NSInvalidArgumentException - format: @"nil argument for earlierDate:"]; - } - if (_seconds_since_ref > otherTime(otherDate)) + if (otherTime(self) > otherTime(otherDate)) { return otherDate; } @@ -1280,221 +1641,198 @@ - (NSDate*) earlierDate: (NSDate*)otherDate - (void) encodeWithCoder: (NSCoder*)coder { + NSTimeInterval interval = [self timeIntervalSinceReferenceDate]; + if ([coder allowsKeyedCoding]) { - [coder encodeDouble:_seconds_since_ref forKey:@"NS.time"]; - } - else - { - [coder encodeValueOfObjCType: @encode(NSTimeInterval) - at: &_seconds_since_ref]; + [coder encodeDouble: interval forKey: @"NS.time"]; } + [coder encodeValueOfObjCType: @encode(NSTimeInterval) at: &interval]; } - (NSUInteger) hash { - return (unsigned)_seconds_since_ref; + return (NSUInteger)[self timeIntervalSinceReferenceDate]; } -- (id) initWithCoder: (NSCoder*)coder +- (instancetype) initWithCoder: (NSCoder*)coder { + NSTimeInterval interval; + id o; + if ([coder allowsKeyedCoding]) { - _seconds_since_ref = [coder decodeDoubleForKey: @"NS.time"]; + interval = [coder decodeDoubleForKey: @"NS.time"]; } else { - [coder decodeValueOfObjCType: @encode(NSTimeInterval) - at: &_seconds_since_ref]; + [coder decodeValueOfObjCType: @encode(NSTimeInterval) at: &interval]; } - return self; -} - -- (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs -{ - if (isnan(secs)) + if (interval == DISTANT_PAST) { - [NSException raise: NSInvalidArgumentException - format: @"[%@-%@] interval is not a number", - NSStringFromClass([self class]), NSStringFromSelector(_cmd)]; + o = RETAIN([abstractClass distantPast]); } - -#if GS_SIZEOF_VOIDP == 4 - if (secs <= DISTANT_PAST) + else if (interval == DISTANT_FUTURE) { - secs = DISTANT_PAST; + o = RETAIN([abstractClass distantFuture]); } - else if (secs >= DISTANT_FUTURE) + else { - secs = DISTANT_FUTURE; + o = [concreteClass allocWithZone: NSDefaultMallocZone()]; + o = [o initWithTimeIntervalSinceReferenceDate: interval]; } -#endif - _seconds_since_ref = secs; - return self; + DESTROY(self); + return o; } -- (BOOL) isEqual: (id)other +- (instancetype) init { - if (other != nil - && [other isKindOfClass: abstractClass] - && _seconds_since_ref == otherTime(other)) - { - return YES; - } - return NO; + return [self initWithTimeIntervalSinceReferenceDate: GSPrivateTimeNow()]; } -- (BOOL) isEqualToDate: (NSDate*)other +- (instancetype) initWithString: (NSString*)description { - if (other != nil - && _seconds_since_ref == otherTime(other)) - { - return YES; - } - return NO; -} + // Easiest to just have NSCalendarDate do the work for us + NSCalendarDate *d = [calendarClass alloc]; -- (NSDate*) laterDate: (NSDate*)otherDate -{ - if (otherDate == nil) + d = [d initWithString: description]; + if (nil == d) { - [NSException raise: NSInvalidArgumentException - format: @"nil argument for laterDate:"]; + DESTROY(self); + return nil; } - if (_seconds_since_ref < otherTime(otherDate)) + else { - return otherDate; + self = [self initWithTimeIntervalSinceReferenceDate: otherTime(d)]; + RELEASE(d); + return self; } - return self; -} - -- (NSTimeInterval) timeIntervalSince1970 -{ - return _seconds_since_ref + NSTimeIntervalSince1970; } -- (NSTimeInterval) timeIntervalSinceDate: (NSDate*)otherDate +- (instancetype) initWithTimeInterval: (NSTimeInterval)secsToBeAdded + sinceDate: (NSDate*)anotherDate { - if (otherDate == nil) + if (anotherDate == nil) { - [NSException raise: NSInvalidArgumentException - format: @"nil argument for timeIntervalSinceDate:"]; + NSLog(@"initWithTimeInterval:sinceDate: given nil date"); + DESTROY(self); + return nil; } - return _seconds_since_ref - otherTime(otherDate); + // Get the other date's time, add the secs and init thyself + return [self initWithTimeIntervalSinceReferenceDate: otherTime(anotherDate) + secsToBeAdded]; } -- (NSTimeInterval) timeIntervalSinceNow +- (instancetype) initWithTimeIntervalSince1970: (NSTimeInterval)seconds { - return _seconds_since_ref - GSPrivateTimeNow(); + return [self initWithTimeIntervalSinceReferenceDate: + seconds - NSTimeIntervalSince1970]; } -- (NSTimeInterval) timeIntervalSinceReferenceDate +- (instancetype) initWithTimeIntervalSinceNow: (NSTimeInterval)secsToBeAdded { - return _seconds_since_ref; + // Get the current time, add the secs and init thyself + return [self initWithTimeIntervalSinceReferenceDate: + GSPrivateTimeNow() + secsToBeAdded]; } -@end +- (instancetype) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs +{ + [self subclassResponsibility: _cmd]; + return self; +} - +- (BOOL) isEqual: (id)other +{ + if (other == nil) + { + return NO; + } -/* - * This abstract class represents a date of which there can be only - * one instance. - */ -@implementation GSDateSingle + if (self == other) + { + return YES; + } -+ (void) initialize -{ - if (self == [GSDateSingle class]) + if ([other isKindOfClass: abstractClass]) { - [self setVersion: 1]; - GSObjCAddClassBehavior(self, [NSGDate class]); + double selfTime = [self timeIntervalSinceReferenceDate]; + return selfTime == otherTime(other); } -} -- (id) autorelease -{ - return self; + return NO; } -- (oneway void) release +- (BOOL) isEqualToDate: (NSDate*)other { -} + double selfTime; + double otherTime; + if (other == nil) + { + return NO; + } -- (id) retain -{ - return self; -} + selfTime = [self timeIntervalSinceReferenceDate]; + otherTime = [other timeIntervalSinceReferenceDate]; + if (selfTime == otherTime) + { + return YES; + } -+ (id) allocWithZone: (NSZone*)z -{ - [NSException raise: NSInternalInconsistencyException - format: @"Attempt to allocate fixed date"]; - return nil; + return NO; } -- (id) copyWithZone: (NSZone*)z +- (NSDate*) laterDate: (NSDate*)otherDate { + double selfTime; + if (otherDate == nil) + { + return nil; + } + + selfTime = [self timeIntervalSinceReferenceDate]; + if (selfTime < otherTime(otherDate)) + { + return otherDate; + } return self; } -- (void) dealloc +- (id) replacementObjectForPortCoder: (NSPortCoder*)aCoder { - [NSException raise: NSInternalInconsistencyException - format: @"Attempt to deallocate fixed date"]; - GSNOSUPERDEALLOC; + if ([aCoder isByref] == NO) + { + return self; + } + return [super replacementObjectForPortCoder: aCoder]; } -- (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs +- (NSTimeInterval) timeIntervalSince1970 { - return self; + return otherTime(self) + NSTimeIntervalSince1970; } -@end - - - -@implementation GSDatePast - -+ (id) allocWithZone: (NSZone*)z +- (NSTimeInterval) timeIntervalSinceDate: (NSDate*)otherDate { - if (_distantPast == nil) + if (nil == otherDate) { - id obj = NSAllocateObject(self, 0, NSDefaultMallocZone()); - - _distantPast = [obj init]; +#ifndef NAN + return nan(""); +#else + return NAN; +#endif } - return _distantPast; -} - -- (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs -{ - _seconds_since_ref = DISTANT_PAST; - return self; + return [self timeIntervalSinceReferenceDate] - otherTime(otherDate); } -@end - - -@implementation GSDateFuture - -+ (id) allocWithZone: (NSZone*)z +- (NSTimeInterval) timeIntervalSinceNow { - if (_distantFuture == nil) - { - id obj = NSAllocateObject(self, 0, NSDefaultMallocZone()); - - _distantFuture = [obj init]; - } - return _distantFuture; + return [self timeIntervalSinceReferenceDate] - GSPrivateTimeNow(); } -- (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs +- (NSTimeInterval) timeIntervalSinceReferenceDate { - _seconds_since_ref = DISTANT_FUTURE; - return self; + [self subclassResponsibility: _cmd]; + return 0; } @end - - diff --git a/Source/NSDatePrivate.h b/Source/NSDatePrivate.h new file mode 100644 index 000000000..07075d748 --- /dev/null +++ b/Source/NSDatePrivate.h @@ -0,0 +1,41 @@ +/** NSDate Private Interface + Copyright (C) 2024 Free Software Foundation, Inc. + + Written by: Hugo Melder + + This file is part of the GNUstep Base Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110 USA. +*/ + +#import + +#if defined(OBJC_SMALL_OBJECT_SHIFT) && (OBJC_SMALL_OBJECT_SHIFT == 3) +#define USE_SMALL_DATE 1 +#define DATE_CONCRETE_CLASS_NAME GSSmallDate +#else +#define USE_SMALL_DATE 0 +#define DATE_CONCRETE_CLASS_NAME NSGDate +#endif + +@interface DATE_CONCRETE_CLASS_NAME : NSDate +#if USE_SMALL_DATE == 0 +{ +@public + NSTimeInterval _seconds_since_ref; +} +#endif +@end \ No newline at end of file diff --git a/Source/NSTimer.m b/Source/NSTimer.m index 1444f46c2..1646c124c 100644 --- a/Source/NSTimer.m +++ b/Source/NSTimer.m @@ -35,9 +35,8 @@ #import "Foundation/NSRunLoop.h" #import "Foundation/NSInvocation.h" -@class NSGDate; -@interface NSGDate : NSObject // Help the compiler -@end +#import "NSDatePrivate.h" + static Class NSDate_class; /** @@ -58,7 +57,7 @@ + (void) initialize { if (self == [NSTimer class]) { - NSDate_class = [NSGDate class]; + NSDate_class = [DATE_CONCRETE_CLASS_NAME class]; } } diff --git a/Tests/base/NSFileManager/general.m b/Tests/base/NSFileManager/general.m index 6acebd310..fb2ca6ee4 100644 --- a/Tests/base/NSFileManager/general.m +++ b/Tests/base/NSFileManager/general.m @@ -12,7 +12,7 @@ #ifdef EQ #undef EQ #endif -#define EPSILON (FLT_EPSILON*100) +#define EPSILON (DBL_EPSILON*100) #define EQ(x,y) ((x >= y - EPSILON) && (x <= y + EPSILON)) @interface MyHandler : NSObject @@ -204,6 +204,7 @@ int main() NSTimeInterval ot, nt; ot = [[oa fileCreationDate] timeIntervalSinceReferenceDate]; nt = [[na fileCreationDate] timeIntervalSinceReferenceDate]; + NSLog(@"ot = %f, nt = %f", ot, nt); PASS(EQ(ot, nt), "copy creation date equals original") ot = [[oa fileModificationDate] timeIntervalSinceReferenceDate]; nt = [[na fileModificationDate] timeIntervalSinceReferenceDate]; From 316537d67a6797f682651ad1e77c5d9f0b4ebad3 Mon Sep 17 00:00:00 2001 From: rfm Date: Mon, 28 Oct 2024 11:21:47 +0000 Subject: [PATCH 02/21] Make files closer to gnustep coding style (automated fixups using uncrustify) --- Source/NSURLSession.m | 859 +++++++++--------- Source/NSURLSessionConfiguration.m | 158 ++-- Source/NSURLSessionPrivate.h | 89 +- Source/NSURLSessionTask.m | 1304 +++++++++++++++------------- Source/NSURLSessionTaskPrivate.h | 128 +-- 5 files changed, 1335 insertions(+), 1203 deletions(-) diff --git a/Source/NSURLSession.m b/Source/NSURLSession.m index dd47cb6f9..3453458ab 100644 --- a/Source/NSURLSession.m +++ b/Source/NSURLSession.m @@ -1,32 +1,32 @@ /** - NSURLSession.m - - Copyright (C) 2017-2024 Free Software Foundation, Inc. - - Written by: Hugo Melder - Date: May 2024 - Author: Hugo Melder - - This file is part of GNUStep-base - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - If you are interested in a warranty or support for this source code, - contact Scott Christley for more information. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. -*/ + * NSURLSession.m + * + * Copyright (C) 2017-2024 Free Software Foundation, Inc. + * + * Written by: Hugo Melder + * Date: May 2024 + * Author: Hugo Melder + * + * This file is part of GNUStep-base + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * If you are interested in a warranty or support for this source code, + * contact Scott Christley for more information. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110 USA. + */ #import "NSURLSessionPrivate.h" #import "NSURLSessionTaskPrivate.h" @@ -42,7 +42,7 @@ #import "GSPThread.h" /* For nextSessionIdentifier() */ #import "GSDispatch.h" /* For dispatch compatibility */ -NSString *GS_NSURLSESSION_DEBUG_KEY = @"NSURLSession"; +NSString * GS_NSURLSESSION_DEBUG_KEY = @"NSURLSession"; /* We need a globably unique label for the NSURLSession workQueues. */ @@ -63,15 +63,18 @@ /* CURLMOPT_TIMERFUNCTION: Callback to receive timer requests from libcurl */ static int -timer_callback(CURLM *multi, /* multi handle */ - long timeout_ms, /* timeout in number of ms */ - void *clientp) /* private callback pointer */ +timer_callback(CURLM * multi, /* multi handle */ + long timeout_ms, /* timeout in number of ms */ + void * clientp) /* private callback pointer */ { - NSURLSession *session = (NSURLSession *) clientp; + NSURLSession * session = (NSURLSession *)clientp; - NSDebugLLog(GS_NSURLSESSION_DEBUG_KEY, - @"Timer Callback for Session %@: multi=%p timeout_ms=%ld", - session, multi, timeout_ms); + NSDebugLLog( + GS_NSURLSESSION_DEBUG_KEY, + @"Timer Callback for Session %@: multi=%p timeout_ms=%ld", + session, + multi, + timeout_ms); /* * if timeout_ms is -1, just delete the timer @@ -82,42 +85,46 @@ if (timeout_ms == -1) [session _suspendTimer]; else - [session _setTimer:timeout_ms]; + [session _setTimer: timeout_ms]; return 0; } /* CURLMOPT_SOCKETFUNCTION: libcurl requests socket monitoring using this * callback */ static int -socket_callback(CURL *easy, /* easy handle */ +socket_callback(CURL * easy, /* easy handle */ curl_socket_t s, /* socket */ - int what, /* describes the socket */ - void *clientp, /* private callback pointer */ - void *socketp) /* private socket pointer */ + int what, /* describes the socket */ + void * clientp, /* private callback pointer */ + void * socketp) /* private socket pointer */ { - NSURLSession *session = clientp; - const char *whatstr[] = {"none", "IN", "OUT", "INOUT", "REMOVE"}; + NSURLSession * session = clientp; + const char * whatstr[] = { "none", "IN", "OUT", "INOUT", "REMOVE" }; - NSDebugLLog(GS_NSURLSESSION_DEBUG_KEY, - @"Socket Callback for Session %@: socket=%d easy:%p what=%s", - session, s, easy, whatstr[what]); + NSDebugLLog( + GS_NSURLSESSION_DEBUG_KEY, + @"Socket Callback for Session %@: socket=%d easy:%p what=%s", + session, + s, + easy, + whatstr[what]); if (NULL == socketp) { - return [session _addSocket:s easyHandle:easy what:what]; + return [session _addSocket: s easyHandle: easy what: what]; } else if (CURL_POLL_REMOVE == what) { - [session _removeSocket:(struct SourceInfo *) socketp]; + [session _removeSocket: (struct SourceInfo *)socketp]; return 0; } else { - return [session _setSocket:s - sources:(struct SourceInfo *) socketp - what:what]; + return [session _setSocket: s + sources: (struct SourceInfo *)socketp + what: what]; } -} +} /* socket_callback */ #pragma mark - NSURLSession Implementation @@ -130,7 +137,7 @@ @implementation NSURLSession * Event creation and deletion is driven by the various callbacks * registered during initialisation of the multi handle. */ - CURLM *_multiHandle; + CURLM * _multiHandle; /* A serial work queue for timer and socket sources * created on libcurl's behalf. */ @@ -165,15 +172,15 @@ @implementation NSURLSession /* List of active tasks. Access is synchronised via the _workQueue. */ - NSMutableArray *_tasks; + NSMutableArray * _tasks; /* PEM encoded blob of one or more certificates. * * See GSCACertificateFilePath in NSUserDefaults.h */ - NSData *_certificateBlob; + NSData * _certificateBlob; /* Path to PEM encoded CA certificate file. */ - NSString *_certificatePath; + NSString * _certificatePath; /* The task identifier for the next task */ @@ -183,59 +190,62 @@ @implementation NSURLSession gs_mutex_t _taskLock; } -+ (NSURLSession *)sharedSession ++ (NSURLSession *) sharedSession { - static NSURLSession *session = nil; + static NSURLSession * session = nil; static dispatch_once_t predicate; - dispatch_once(&predicate, ^{ - NSURLSessionConfiguration *configuration = + dispatch_once( + &predicate, + ^{ + NSURLSessionConfiguration * configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; - session = [[NSURLSession alloc] initWithConfiguration:configuration - delegate:nil - delegateQueue:nil]; - [session _setSharedSession:YES]; + session = [[NSURLSession alloc] initWithConfiguration: configuration + delegate: nil + delegateQueue: nil]; + [session _setSharedSession: YES]; }); return session; } -+ (NSURLSession *)sessionWithConfiguration: ++ (NSURLSession *) sessionWithConfiguration: (NSURLSessionConfiguration *)configuration { - NSURLSession *session; + NSURLSession * session; - session = [[NSURLSession alloc] initWithConfiguration:configuration - delegate:nil - delegateQueue:nil]; + session = [[NSURLSession alloc] initWithConfiguration: configuration + delegate: nil + delegateQueue: nil]; return AUTORELEASE(session); } -+ (NSURLSession *)sessionWithConfiguration: - (NSURLSessionConfiguration *)configuration - delegate:(id)delegate - delegateQueue:(NSOperationQueue *)queue ++ (NSURLSession *) sessionWithConfiguration: + (NSURLSessionConfiguration *)configuration + delegate: (id)delegate + delegateQueue: (NSOperationQueue *)queue { - NSURLSession *session; + NSURLSession * session; - session = [[NSURLSession alloc] initWithConfiguration:configuration - delegate:delegate - delegateQueue:queue]; + session = [[NSURLSession alloc] initWithConfiguration: configuration + delegate: delegate + delegateQueue: queue]; return AUTORELEASE(session); } -- (instancetype)initWithConfiguration:(NSURLSessionConfiguration *)configuration - delegate:(id)delegate - delegateQueue:(NSOperationQueue *)queue +- (instancetype) initWithConfiguration: (NSURLSessionConfiguration *) + configuration + delegate: (id)delegate + delegateQueue: (NSOperationQueue *)queue { self = [super init]; if (self) { - NSString *queueLabel; - NSString *caPath; + NSString * queueLabel; + NSString * caPath; NSUInteger sessionIdentifier; /* To avoid a retain cycle in blocks referencing this object */ @@ -243,8 +253,8 @@ - (instancetype)initWithConfiguration:(NSURLSessionConfiguration *)configuration sessionIdentifier = nextSessionIdentifier(); queueLabel = [[NSString alloc] - initWithFormat:@"org.gnustep.NSURLSession.WorkQueue%ld", - sessionIdentifier]; + initWithFormat: @"org.gnustep.NSURLSession.WorkQueue%ld", + sessionIdentifier]; ASSIGN(_delegate, delegate); ASSIGNCOPY(_configuration, configuration); @@ -266,17 +276,24 @@ - (instancetype)initWithConfiguration:(NSURLSessionConfiguration *)configuration return nil; } - dispatch_source_set_cancel_handler(_timer, ^{ - dispatch_release(this->_timer); - }); + dispatch_source_set_cancel_handler( + _timer, + ^{ + dispatch_release(this->_timer); + }); // Called after timeout set by libcurl is reached - dispatch_source_set_event_handler(_timer, ^{ - // TODO: Check for return values - curl_multi_socket_action(this->_multiHandle, CURL_SOCKET_TIMEOUT, 0, - &this->_stillRunning); - [this _checkForCompletion]; - }); + dispatch_source_set_event_handler( + _timer, + ^{ + // TODO: Check for return values + curl_multi_socket_action( + this->_multiHandle, + CURL_SOCKET_TIMEOUT, + 0, + &this->_stillRunning); + [this _checkForCompletion]; + }); /* Use the provided delegateQueue if available */ if (queue) @@ -289,7 +306,7 @@ - (instancetype)initWithConfiguration:(NSURLSessionConfiguration *)configuration * delegate callbacks and is orthogonal to the workQueue. */ _delegateQueue = [[NSOperationQueue alloc] init]; - [_delegateQueue setMaxConcurrentOperationCount:1]; + [_delegateQueue setMaxConcurrentOperationCount: 1]; } /* libcurl Configuration */ @@ -304,25 +321,28 @@ - (instancetype)initWithConfiguration:(NSURLSessionConfiguration *)configuration curl_multi_setopt(_multiHandle, CURLMOPT_TIMERDATA, self); // Configure Multi Handle - curl_multi_setopt(_multiHandle, CURLMOPT_MAX_HOST_CONNECTIONS, - [_configuration HTTPMaximumConnectionsPerHost]); + curl_multi_setopt( + _multiHandle, + CURLMOPT_MAX_HOST_CONNECTIONS, + [_configuration HTTPMaximumConnectionsPerHost]); /* Check if GSCACertificateFilePath is set */ caPath = [[NSUserDefaults standardUserDefaults] - objectForKey:GSCACertificateFilePath]; + objectForKey: GSCACertificateFilePath]; if (caPath) { NSDebugMLLog( GS_NSURLSESSION_DEBUG_KEY, @"Found a GSCACertificateFilePath entry in UserDefaults"); - _certificateBlob = [[NSData alloc] initWithContentsOfFile:caPath]; + _certificateBlob = [[NSData alloc] initWithContentsOfFile: caPath]; if (!_certificateBlob) { - NSDebugMLLog(GS_NSURLSESSION_DEBUG_KEY, - @"Could not open file at GSCACertificateFilePath=%@", - caPath); + NSDebugMLLog( + GS_NSURLSESSION_DEBUG_KEY, + @"Could not open file at GSCACertificateFilePath=%@", + caPath); } else { @@ -332,26 +352,26 @@ - (instancetype)initWithConfiguration:(NSURLSessionConfiguration *)configuration } return self; -} +} /* initWithConfiguration */ #pragma mark - Private Methods -- (NSData *)_certificateBlob +- (NSData *) _certificateBlob { return _certificateBlob; } -- (NSString *)_certificatePath +- (NSString *) _certificatePath { return _certificatePath; } -- (void)_setSharedSession:(BOOL)flag +- (void) _setSharedSession: (BOOL)flag { _isSharedSession = flag; } -- (NSInteger)_nextTaskIdentifier +- (NSInteger) _nextTaskIdentifier { NSInteger identifier; @@ -363,36 +383,44 @@ - (NSInteger)_nextTaskIdentifier return identifier; } -- (void)_resumeTask:(NSURLSessionTask *)task +- (void) _resumeTask: (NSURLSessionTask *)task { - dispatch_async(_workQueue, ^{ + dispatch_async( + _workQueue, + ^{ CURLMcode code; - CURLM *multiHandle = _multiHandle; + CURLM * multiHandle = _multiHandle; code = curl_multi_add_handle(multiHandle, [task _easyHandle]); - NSDebugMLLog(GS_NSURLSESSION_DEBUG_KEY, - @"Added task=%@ easy=%p to multi=%p with return value %d", - task, [task _easyHandle], multiHandle, code); + NSDebugMLLog( + GS_NSURLSESSION_DEBUG_KEY, + @"Added task=%@ easy=%p to multi=%p with return value %d", + task, + [task _easyHandle], + multiHandle, + code); }); } -- (void)_addHandle:(CURL *)easy +- (void) _addHandle: (CURL *)easy { curl_multi_add_handle(_multiHandle, easy); } -- (void)_removeHandle:(CURL *)easy +- (void) _removeHandle: (CURL *)easy { curl_multi_remove_handle(_multiHandle, easy); } -- (void)_setTimer:(NSInteger)timeoutMs +- (void) _setTimer: (NSInteger)timeoutMs { - dispatch_source_set_timer(_timer, - dispatch_time(DISPATCH_TIME_NOW, - timeoutMs * NSEC_PER_MSEC), - DISPATCH_TIME_FOREVER, // don't repeat - timeoutMs * 0.05); // 5% leeway + dispatch_source_set_timer( + _timer, + dispatch_time( + DISPATCH_TIME_NOW, + timeoutMs * NSEC_PER_MSEC), + DISPATCH_TIME_FOREVER, // don't repeat + timeoutMs * 0.05); // 5% leeway if (_isTimerSuspended) { @@ -401,7 +429,7 @@ - (void)_setTimer:(NSInteger)timeoutMs } } -- (void)_suspendTimer +- (void) _suspendTimer { if (!_isTimerSuspended) { @@ -410,19 +438,21 @@ - (void)_suspendTimer } } -- (dispatch_queue_t)_workQueue +- (dispatch_queue_t) _workQueue { return _workQueue; } /* This method is called when receiving CURL_POLL_REMOVE in socket_callback. * We cancel all active dispatch sources and release the SourceInfo structure - * previously allocated in _addSocket:easyHandle:what: + * previously allocated in _addSocket: easyHandle: what: */ -- (void)_removeSocket:(struct SourceInfo *)sources +- (void) _removeSocket: (struct SourceInfo *)sources { - NSDebugMLLog(GS_NSURLSESSION_DEBUG_KEY, @"Remove socket with SourceInfo: %p", - sources); + NSDebugMLLog( + GS_NSURLSESSION_DEBUG_KEY, + @"Remove socket with SourceInfo: %p", + sources); if (sources->readSocket) { @@ -442,23 +472,28 @@ - (void)_removeSocket:(struct SourceInfo *)sources * (socketp) in socket_callback is NULL, meaning we first need to * allocate our SourceInfo structure. */ -- (int)_addSocket:(curl_socket_t)socket easyHandle:(CURL *)easy what:(int)what +- (int) _addSocket: (curl_socket_t)socket easyHandle: (CURL *)easy what: (int) + what { - struct SourceInfo *info; + struct SourceInfo * info; - NSDebugMLLog(GS_NSURLSESSION_DEBUG_KEY, @"Add Socket: %d easy: %p", socket, - easy); + NSDebugMLLog( + GS_NSURLSESSION_DEBUG_KEY, + @"Add Socket: %d easy: %p", + socket, + easy); /* Allocate a new SourceInfo structure on the heap */ if (!(info = calloc(1, sizeof(struct SourceInfo)))) { - NSDebugMLLog(GS_NSURLSESSION_DEBUG_KEY, - @"Failed to allocate SourceInfo structure!"); + NSDebugMLLog( + GS_NSURLSESSION_DEBUG_KEY, + @"Failed to allocate SourceInfo structure!"); return -1; } /* We can now configure the dispatch sources */ - if (-1 == [self _setSocket:socket sources:info what:what]) + if (-1 == [self _setSocket: socket sources: info what: what]) { NSDebugMLLog(GS_NSURLSESSION_DEBUG_KEY, @"Failed to setup sockets!"); return -1; @@ -466,11 +501,11 @@ - (int)_addSocket:(curl_socket_t)socket easyHandle:(CURL *)easy what:(int)what /* Assign the SourceInfo for access in subsequent socket_callback calls */ curl_multi_assign(_multiHandle, socket, info); return 0; -} +} /* _addSocket */ -- (int)_setSocket:(curl_socket_t)socket - sources:(struct SourceInfo *)sources - what:(int)what +- (int) _setSocket: (curl_socket_t)socket + sources: (struct SourceInfo *)sources + what: (int)what { /* Create a Reading Dispatch Source that listens on socket */ if (CURL_POLL_IN == what || CURL_POLL_INOUT == what) @@ -486,30 +521,38 @@ - (int)_setSocket:(curl_socket_t)socket NSDebugMLLog( GS_NSURLSESSION_DEBUG_KEY, @"Creating a reading dispatch source: socket=%d sources=%p what=%d", - socket, sources, what); - - sources->readSocket = dispatch_source_create(DISPATCH_SOURCE_TYPE_READ, - socket, 0, _workQueue); + socket, + sources, + what); + + sources->readSocket = dispatch_source_create( + DISPATCH_SOURCE_TYPE_READ, + socket, + 0, + _workQueue); if (!sources->readSocket) { - NSDebugMLLog(GS_NSURLSESSION_DEBUG_KEY, - @"Unable to create dispatch source for read socket!"); + NSDebugMLLog( + GS_NSURLSESSION_DEBUG_KEY, + @"Unable to create dispatch source for read socket!"); return -1; } - dispatch_source_set_event_handler(sources->readSocket, ^{ - int action; - - action = CURL_CSELECT_IN; - curl_multi_socket_action(_multiHandle, socket, action, &_stillRunning); - - /* Check if the transfer is complete */ - [self _checkForCompletion]; - /* When _stillRunning reaches zero, all transfers are complete/done */ - if (_stillRunning <= 0) - { - [self _suspendTimer]; - } - }); + dispatch_source_set_event_handler( + sources->readSocket, + ^{ + int action; + + action = CURL_CSELECT_IN; + curl_multi_socket_action(_multiHandle, socket, action, &_stillRunning); + + /* Check if the transfer is complete */ + [self _checkForCompletion]; + /* When _stillRunning reaches zero, all transfers are complete/done */ + if (_stillRunning <= 0) + { + [self _suspendTimer]; + } + }); dispatch_resume(sources->readSocket); } @@ -528,51 +571,59 @@ - (int)_setSocket:(curl_socket_t)socket NSDebugMLLog( GS_NSURLSESSION_DEBUG_KEY, @"Creating a writing dispatch source: socket=%d sources=%p what=%d", - socket, sources, what); - - sources->writeSocket = dispatch_source_create(DISPATCH_SOURCE_TYPE_WRITE, - socket, 0, _workQueue); + socket, + sources, + what); + + sources->writeSocket = dispatch_source_create( + DISPATCH_SOURCE_TYPE_WRITE, + socket, + 0, + _workQueue); if (!sources->writeSocket) { - NSDebugMLLog(GS_NSURLSESSION_DEBUG_KEY, - @"Unable to create dispatch source for write socket!"); + NSDebugMLLog( + GS_NSURLSESSION_DEBUG_KEY, + @"Unable to create dispatch source for write socket!"); return -1; } - dispatch_source_set_event_handler(sources->writeSocket, ^{ - int action; + dispatch_source_set_event_handler( + sources->writeSocket, + ^{ + int action; - action = CURL_CSELECT_OUT; - curl_multi_socket_action(_multiHandle, socket, action, &_stillRunning); + action = CURL_CSELECT_OUT; + curl_multi_socket_action(_multiHandle, socket, action, &_stillRunning); - /* Check if the tranfer is complete */ - [self _checkForCompletion]; + /* Check if the tranfer is complete */ + [self _checkForCompletion]; - /* When _stillRunning reaches zero, all transfers are complete/done */ - if (_stillRunning <= 0) - { - [self _suspendTimer]; - } - }); + /* When _stillRunning reaches zero, all transfers are complete/done */ + if (_stillRunning <= 0) + { + [self _suspendTimer]; + } + }); dispatch_resume(sources->writeSocket); } return 0; -} +} /* _setSocket */ /* Called by a socket event handler or by a firing timer set by timer_callback. * * The socket event handler is executed on the _workQueue. */ -- (void)_checkForCompletion +- (void) _checkForCompletion { - CURLMsg *msg; - int msgs_left; - CURL *easyHandle; - CURLcode res; - char *eff_url = NULL; - NSURLSessionTask *task = nil; + CURLMsg * msg; + int msgs_left; + CURL * easyHandle; + CURLcode res; + char * eff_url = NULL; + NSURLSessionTask * task = nil; /* Ask the multi handle if there are any messages from the individual * transfers. @@ -592,10 +643,11 @@ - (void)_checkForCompletion rc = curl_easy_getinfo(easyHandle, CURLINFO_PRIVATE, &task); if (CURLE_OK != rc) { - NSDebugMLLog(GS_NSURLSESSION_DEBUG_KEY, - @"Failed to retrieve task from easy handle %p using " - @"CURLINFO_PRIVATE", - easyHandle); + NSDebugMLLog( + GS_NSURLSESSION_DEBUG_KEY, + @"Failed to retrieve task from easy handle %p using " + @"CURLINFO_PRIVATE", + easyHandle); } rc = curl_easy_getinfo(easyHandle, CURLINFO_EFFECTIVE_URL, &eff_url); if (CURLE_OK != rc) @@ -607,10 +659,13 @@ - (void)_checkForCompletion easyHandle); } - NSDebugMLLog(GS_NSURLSESSION_DEBUG_KEY, - @"Transfer finished for Task %@ with effective url %s " - @"and CURLcode: %s", - task, eff_url, curl_easy_strerror(res)); + NSDebugMLLog( + GS_NSURLSESSION_DEBUG_KEY, + @"Transfer finished for Task %@ with effective url %s " + @"and CURLcode: %s", + task, + eff_url, + curl_easy_strerror(res)); curl_multi_remove_handle(_multiHandle, easyHandle); @@ -619,296 +674,308 @@ - (void)_checkForCompletion RETAIN(self); RETAIN(task); - [_tasks removeObject:task]; - [task _transferFinishedWithCode:res]; + [_tasks removeObject: task]; + [task _transferFinishedWithCode: res]; RELEASE(task); - /* Send URLSession:didBecomeInvalidWithError: to delegate if this + /* Send URLSession: didBecomeInvalidWithError: to delegate if this * session was invalidated */ if (_invalidated && [_tasks count] == 0 && - [_delegate respondsToSelector:@selector(URLSession: - didBecomeInvalidWithError:)]) + [_delegate respondsToSelector: @selector(URLSession: + didBecomeInvalidWithError + :)]) { [_delegateQueue addOperationWithBlock:^{ - /* We only support explicit Invalidation for now. Error is set - * to nil in this case. */ - [_delegate URLSession:self didBecomeInvalidWithError:nil]; - }]; + /* We only support explicit Invalidation for now. Error is set + * to nil in this case. */ + [_delegate URLSession: self didBecomeInvalidWithError: nil]; + }]; } RELEASE(self); } } -} +} /* _checkForCompletion */ /* Adds task to _tasks and updates the delegate */ -- (void)_didCreateTask:(NSURLSessionTask *)task +- (void) _didCreateTask: (NSURLSessionTask *)task { - dispatch_async(_workQueue, ^{ - [_tasks addObject:task]; + dispatch_async( + _workQueue, + ^{ + [_tasks addObject: task]; }); - if ([_delegate respondsToSelector:@selector(URLSession:didCreateTask:)]) + if ([_delegate respondsToSelector: @selector(URLSession:didCreateTask:)]) { [_delegateQueue addOperationWithBlock:^{ - [(id) _delegate URLSession:self - didCreateTask:task]; - }]; + [(id) _delegate URLSession: self + didCreateTask : task]; + }]; } } #pragma mark - Public API -- (void)finishTasksAndInvalidate +- (void) finishTasksAndInvalidate { if (_isSharedSession) { return; } - dispatch_async(_workQueue, ^{ + dispatch_async( + _workQueue, + ^{ _invalidated = YES; }); } -- (void)invalidateAndCancel +- (void) invalidateAndCancel { if (_isSharedSession) { return; } - dispatch_async(_workQueue, ^{ + dispatch_async( + _workQueue, + ^{ _invalidated = YES; /* Cancel all tasks */ - for (NSURLSessionTask *task in _tasks) - { - [task cancel]; - } + for (NSURLSessionTask * task in _tasks) + { + [task cancel]; + } }); } -- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request +- (NSURLSessionDataTask *) dataTaskWithRequest: (NSURLRequest *)request { - NSURLSessionDataTask *task; - NSInteger identifier; + NSURLSessionDataTask * task; + NSInteger identifier; identifier = [self _nextTaskIdentifier]; - task = [[NSURLSessionDataTask alloc] initWithSession:self - request:request - taskIdentifier:identifier]; + task = [[NSURLSessionDataTask alloc] initWithSession: self + request: request + taskIdentifier: identifier]; /* We use the session delegate by default. NSURLSessionTaskDelegate * is a purely optional protocol. */ - [task setDelegate:(id) _delegate]; + [task setDelegate: (id)_delegate]; - [task _setProperties:GSURLSessionUpdatesDelegate]; + [task _setProperties: GSURLSessionUpdatesDelegate]; - [self _didCreateTask:task]; + [self _didCreateTask: task]; return AUTORELEASE(task); } -- (NSURLSessionDataTask *)dataTaskWithURL:(NSURL *)url +- (NSURLSessionDataTask *) dataTaskWithURL: (NSURL *)url { - NSURLRequest *request; + NSURLRequest * request; - request = [NSURLRequest requestWithURL:url]; - return [self dataTaskWithRequest:request]; + request = [NSURLRequest requestWithURL: url]; + return [self dataTaskWithRequest: request]; } -- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request - fromFile:(NSURL *)fileURL +- (NSURLSessionUploadTask *) uploadTaskWithRequest: (NSURLRequest *)request + fromFile: (NSURL *)fileURL { - NSURLSessionUploadTask *task; - NSInputStream *stream; - NSInteger identifier; + NSURLSessionUploadTask * task; + NSInputStream * stream; + NSInteger identifier; identifier = [self _nextTaskIdentifier]; - stream = [NSInputStream inputStreamWithURL:fileURL]; - task = [[NSURLSessionUploadTask alloc] initWithSession:self - request:request - taskIdentifier:identifier]; + stream = [NSInputStream inputStreamWithURL: fileURL]; + task = [[NSURLSessionUploadTask alloc] initWithSession: self + request: request + taskIdentifier: identifier]; /* We use the session delegate by default. NSURLSessionTaskDelegate * is a purely optional protocol. */ - [task setDelegate:(id) _delegate]; + [task setDelegate: (id)_delegate]; [task - _setProperties:GSURLSessionUpdatesDelegate | GSURLSessionHasInputStream]; - [task _setBodyStream:stream]; - [task _enableUploadWithSize:0]; + _setProperties: GSURLSessionUpdatesDelegate | GSURLSessionHasInputStream]; + [task _setBodyStream: stream]; + [task _enableUploadWithSize: 0]; - [self _didCreateTask:task]; + [self _didCreateTask: task]; return AUTORELEASE(task); -} +} /* uploadTaskWithRequest */ -- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request - fromData:(NSData *)bodyData +- (NSURLSessionUploadTask *) uploadTaskWithRequest: (NSURLRequest *)request + fromData: (NSData *)bodyData { - NSURLSessionUploadTask *task; - NSInteger identifier; + NSURLSessionUploadTask * task; + NSInteger identifier; identifier = [self _nextTaskIdentifier]; - task = [[NSURLSessionUploadTask alloc] initWithSession:self - request:request - taskIdentifier:identifier]; + task = [[NSURLSessionUploadTask alloc] initWithSession: self + request: request + taskIdentifier: identifier]; /* We use the session delegate by default. NSURLSessionTaskDelegate * is a purely optional protocol. */ - [task setDelegate:(id) _delegate]; - [task _setProperties:GSURLSessionUpdatesDelegate]; - [task _enableUploadWithData:bodyData]; + [task setDelegate: (id)_delegate]; + [task _setProperties: GSURLSessionUpdatesDelegate]; + [task _enableUploadWithData: bodyData]; - [self _didCreateTask:task]; + [self _didCreateTask: task]; return AUTORELEASE(task); } -- (NSURLSessionUploadTask *)uploadTaskWithStreamedRequest: +- (NSURLSessionUploadTask *) uploadTaskWithStreamedRequest: (NSURLRequest *)request { - NSURLSessionUploadTask *task; - NSInteger identifier; + NSURLSessionUploadTask * task; + NSInteger identifier; identifier = [self _nextTaskIdentifier]; - task = [[NSURLSessionUploadTask alloc] initWithSession:self - request:request - taskIdentifier:identifier]; + task = [[NSURLSessionUploadTask alloc] initWithSession: self + request: request + taskIdentifier: identifier]; /* We use the session delegate by default. NSURLSessionTaskDelegate * is a purely optional protocol. */ - [task setDelegate:(id) _delegate]; + [task setDelegate: (id)_delegate]; [task - _setProperties:GSURLSessionUpdatesDelegate | GSURLSessionHasInputStream]; - [task _enableUploadWithSize:0]; + _setProperties: GSURLSessionUpdatesDelegate | GSURLSessionHasInputStream]; + [task _enableUploadWithSize: 0]; - [self _didCreateTask:task]; + [self _didCreateTask: task]; return AUTORELEASE(task); } -- (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request +- (NSURLSessionDownloadTask *) downloadTaskWithRequest: (NSURLRequest *)request { - NSURLSessionDownloadTask *task; - NSInteger identifier; + NSURLSessionDownloadTask * task; + NSInteger identifier; identifier = [self _nextTaskIdentifier]; - task = [[NSURLSessionDownloadTask alloc] initWithSession:self - request:request - taskIdentifier:identifier]; + task = [[NSURLSessionDownloadTask alloc] initWithSession: self + request: request + taskIdentifier: identifier]; /* We use the session delegate by default. NSURLSessionTaskDelegate * is a purely optional protocol. */ - [task setDelegate:(id) _delegate]; + [task setDelegate: (id)_delegate]; [task - _setProperties:GSURLSessionWritesDataToFile | GSURLSessionUpdatesDelegate]; + _setProperties: GSURLSessionWritesDataToFile | GSURLSessionUpdatesDelegate]; - [self _didCreateTask:task]; + [self _didCreateTask: task]; return AUTORELEASE(task); } -- (NSURLSessionDownloadTask *)downloadTaskWithURL:(NSURL *)url +- (NSURLSessionDownloadTask *) downloadTaskWithURL: (NSURL *)url { - NSURLRequest *request; + NSURLRequest * request; - request = [NSURLRequest requestWithURL:url]; - return [self downloadTaskWithRequest:request]; + request = [NSURLRequest requestWithURL: url]; + return [self downloadTaskWithRequest: request]; } -- (NSURLSessionDownloadTask *)downloadTaskWithResumeData:(NSData *)resumeData +- (NSURLSessionDownloadTask *) downloadTaskWithResumeData: (NSData *)resumeData { - return [self notImplemented:_cmd]; + return [self notImplemented: _cmd]; } -- (void)getTasksWithCompletionHandler: - (void (^)(NSArray *dataTasks, - NSArray *uploadTasks, - NSArray *downloadTasks)) - completionHandler +- (void) getTasksWithCompletionHandler: + (void (^)( + NSArray * dataTasks, + NSArray * uploadTasks, + NSArray * downloadTasks)) + completionHandler { - dispatch_async(_workQueue, ^{ - NSMutableArray *dataTasks; - NSMutableArray *uploadTasks; - NSMutableArray *downloadTasks; - NSInteger numberOfTasks; + dispatch_async( + _workQueue, + ^{ + NSMutableArray * dataTasks; + NSMutableArray * uploadTasks; + NSMutableArray * downloadTasks; + NSInteger numberOfTasks; Class dataTaskClass; Class uploadTaskClass; Class downloadTaskClass; numberOfTasks = [_tasks count]; - dataTasks = [NSMutableArray arrayWithCapacity:numberOfTasks / 2]; - uploadTasks = [NSMutableArray arrayWithCapacity:numberOfTasks / 2]; - downloadTasks = [NSMutableArray arrayWithCapacity:numberOfTasks / 2]; + dataTasks = [NSMutableArray arrayWithCapacity: numberOfTasks / 2]; + uploadTasks = [NSMutableArray arrayWithCapacity: numberOfTasks / 2]; + downloadTasks = [NSMutableArray arrayWithCapacity: numberOfTasks / 2]; dataTaskClass = [NSURLSessionDataTask class]; uploadTaskClass = [NSURLSessionUploadTask class]; downloadTaskClass = [NSURLSessionDownloadTask class]; - for (NSURLSessionTask *task in _tasks) + for (NSURLSessionTask * task in _tasks) + { + if ([task isKindOfClass: dataTaskClass]) + { + [dataTasks addObject: (NSURLSessionDataTask *)task]; + } + else if ([task isKindOfClass: uploadTaskClass]) + { + [uploadTasks addObject: (NSURLSessionUploadTask *)task]; + } + else if ([task isKindOfClass: downloadTaskClass]) { - if ([task isKindOfClass:dataTaskClass]) - { - [dataTasks addObject:(NSURLSessionDataTask *) task]; - } - else if ([task isKindOfClass:uploadTaskClass]) - { - [uploadTasks addObject:(NSURLSessionUploadTask *) task]; - } - else if ([task isKindOfClass:downloadTaskClass]) - { - [downloadTasks addObject:(NSURLSessionDownloadTask *) task]; - } + [downloadTasks addObject: (NSURLSessionDownloadTask *)task]; } + } completionHandler(dataTasks, uploadTasks, downloadTasks); }); -} +} /* getTasksWithCompletionHandler */ -- (void)getAllTasksWithCompletionHandler: - (void (^)(NSArray<__kindof NSURLSessionTask *> *tasks))completionHandler +- (void) getAllTasksWithCompletionHandler: + (void (^)(NSArray<__kindof NSURLSessionTask *> * tasks))completionHandler { - dispatch_async(_workQueue, ^{ + dispatch_async( + _workQueue, + ^{ completionHandler(_tasks); }); } #pragma mark - Getter and Setter -- (NSOperationQueue *)delegateQueue +- (NSOperationQueue *) delegateQueue { return _delegateQueue; } -- (id)delegate +- (id) delegate { return _delegate; } -- (NSURLSessionConfiguration *)configuration +- (NSURLSessionConfiguration *) configuration { return AUTORELEASE([_configuration copy]); } -- (NSString *)sessionDescription +- (NSString *) sessionDescription { return _sessionDescription; } -- (void)setSessionDescription:(NSString *)sessionDescription +- (void) setSessionDescription: (NSString *)sessionDescription { ASSIGNCOPY(_sessionDescription, sessionDescription); } -- (void)dealloc +- (void) dealloc { RELEASE(_delegateQueue); RELEASE(_delegate); @@ -919,7 +986,7 @@ - (void)dealloc curl_multi_cleanup(_multiHandle); -#if defined(HAVE_DISPATCH_CANCEL) +#if defined(HAVE_DISPATCH_CANCEL) dispatch_cancel(_timer); #else dispatch_source_cancel(_timer); @@ -935,131 +1002,131 @@ - (void)dealloc NSURLSession (NSURLSessionAsynchronousConvenience) - (NSURLSessionDataTask *) - dataTaskWithRequest:(NSURLRequest *)request - completionHandler:(GSNSURLSessionDataCompletionHandler)completionHandler + dataTaskWithRequest: (NSURLRequest *)request + completionHandler: (GSNSURLSessionDataCompletionHandler)completionHandler { - NSURLSessionDataTask *task; - NSInteger identifier; + NSURLSessionDataTask * task; + NSInteger identifier; identifier = [self _nextTaskIdentifier]; - task = [[NSURLSessionDataTask alloc] initWithSession:self - request:request - taskIdentifier:identifier]; - [task setDelegate:(id) _delegate]; - [task _setCompletionHandler:completionHandler]; - [task _enableAutomaticRedirects:YES]; - [task _setProperties:GSURLSessionStoresDataInMemory | - GSURLSessionHasCompletionHandler]; + task = [[NSURLSessionDataTask alloc] initWithSession: self + request: request + taskIdentifier: identifier]; + [task setDelegate: (id)_delegate]; + [task _setCompletionHandler: completionHandler]; + [task _enableAutomaticRedirects: YES]; + [task _setProperties: GSURLSessionStoresDataInMemory | + GSURLSessionHasCompletionHandler]; - [self _didCreateTask:task]; + [self _didCreateTask: task]; return AUTORELEASE(task); } -- (NSURLSessionDataTask *)dataTaskWithURL:(NSURL *)url - completionHandler: - (GSNSURLSessionDataCompletionHandler)completionHandler +- (NSURLSessionDataTask *) dataTaskWithURL: (NSURL *)url + completionHandler: + (GSNSURLSessionDataCompletionHandler)completionHandler { - NSURLRequest *request = [NSURLRequest requestWithURL:url]; + NSURLRequest * request = [NSURLRequest requestWithURL: url]; - return [self dataTaskWithRequest:request completionHandler:completionHandler]; + return [self dataTaskWithRequest: request completionHandler: completionHandler]; } - (NSURLSessionUploadTask *) - uploadTaskWithRequest:(NSURLRequest *)request - fromFile:(NSURL *)fileURL - completionHandler:(GSNSURLSessionDataCompletionHandler)completionHandler + uploadTaskWithRequest: (NSURLRequest *)request + fromFile: (NSURL *)fileURL + completionHandler: (GSNSURLSessionDataCompletionHandler)completionHandler { - NSURLSessionUploadTask *task; - NSInputStream *stream; - NSInteger identifier; + NSURLSessionUploadTask * task; + NSInputStream * stream; + NSInteger identifier; identifier = [self _nextTaskIdentifier]; - stream = [NSInputStream inputStreamWithURL:fileURL]; - task = [[NSURLSessionUploadTask alloc] initWithSession:self - request:request - taskIdentifier:identifier]; - [task setDelegate:(id) _delegate]; - - [task _setProperties:GSURLSessionStoresDataInMemory - | GSURLSessionHasInputStream | - GSURLSessionHasCompletionHandler]; - [task _setCompletionHandler:completionHandler]; - [task _enableAutomaticRedirects:YES]; - [task _setBodyStream:stream]; - [task _enableUploadWithSize:0]; - - [self _didCreateTask:task]; + stream = [NSInputStream inputStreamWithURL: fileURL]; + task = [[NSURLSessionUploadTask alloc] initWithSession: self + request: request + taskIdentifier: identifier]; + [task setDelegate: (id)_delegate]; + + [task _setProperties: GSURLSessionStoresDataInMemory + | GSURLSessionHasInputStream | + GSURLSessionHasCompletionHandler]; + [task _setCompletionHandler: completionHandler]; + [task _enableAutomaticRedirects: YES]; + [task _setBodyStream: stream]; + [task _enableUploadWithSize: 0]; + + [self _didCreateTask: task]; return AUTORELEASE(task); -} +} /* uploadTaskWithRequest */ - (NSURLSessionUploadTask *) - uploadTaskWithRequest:(NSURLRequest *)request - fromData:(NSData *)bodyData - completionHandler:(GSNSURLSessionDataCompletionHandler)completionHandler + uploadTaskWithRequest: (NSURLRequest *)request + fromData: (NSData *)bodyData + completionHandler: (GSNSURLSessionDataCompletionHandler)completionHandler { - NSURLSessionUploadTask *task; - NSInteger identifier; + NSURLSessionUploadTask * task; + NSInteger identifier; identifier = [self _nextTaskIdentifier]; - task = [[NSURLSessionUploadTask alloc] initWithSession:self - request:request - taskIdentifier:identifier]; - [task setDelegate:(id) _delegate]; + task = [[NSURLSessionUploadTask alloc] initWithSession: self + request: request + taskIdentifier: identifier]; + [task setDelegate: (id)_delegate]; - [task _setProperties:GSURLSessionStoresDataInMemory | - GSURLSessionHasCompletionHandler]; - [task _setCompletionHandler:completionHandler]; - [task _enableAutomaticRedirects:YES]; - [task _enableUploadWithData:bodyData]; + [task _setProperties: GSURLSessionStoresDataInMemory | + GSURLSessionHasCompletionHandler]; + [task _setCompletionHandler: completionHandler]; + [task _enableAutomaticRedirects: YES]; + [task _enableUploadWithData: bodyData]; - [self _didCreateTask:task]; + [self _didCreateTask: task]; return AUTORELEASE(task); } -- (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request - completionHandler: - (GSNSURLSessionDownloadCompletionHandler) - completionHandler +- (NSURLSessionDownloadTask *) downloadTaskWithRequest: (NSURLRequest *)request + completionHandler: + (GSNSURLSessionDownloadCompletionHandler) + completionHandler { - NSURLSessionDownloadTask *task; - NSInteger identifier; + NSURLSessionDownloadTask * task; + NSInteger identifier; identifier = [self _nextTaskIdentifier]; - task = [[NSURLSessionDownloadTask alloc] initWithSession:self - request:request - taskIdentifier:identifier]; + task = [[NSURLSessionDownloadTask alloc] initWithSession: self + request: request + taskIdentifier: identifier]; - [task setDelegate:(id) _delegate]; + [task setDelegate: (id)_delegate]; - [task _setProperties:GSURLSessionWritesDataToFile | - GSURLSessionHasCompletionHandler]; - [task _enableAutomaticRedirects:YES]; - [task _setCompletionHandler:completionHandler]; + [task _setProperties: GSURLSessionWritesDataToFile | + GSURLSessionHasCompletionHandler]; + [task _enableAutomaticRedirects: YES]; + [task _setCompletionHandler: completionHandler]; - [self _didCreateTask:task]; + [self _didCreateTask: task]; return AUTORELEASE(task); } - (NSURLSessionDownloadTask *) - downloadTaskWithURL:(NSURL *)url - completionHandler:(GSNSURLSessionDownloadCompletionHandler)completionHandler + downloadTaskWithURL: (NSURL *)url + completionHandler: (GSNSURLSessionDownloadCompletionHandler)completionHandler { - NSURLRequest *request = [NSURLRequest requestWithURL:url]; + NSURLRequest * request = [NSURLRequest requestWithURL: url]; - return [self downloadTaskWithRequest:request - completionHandler:completionHandler]; + return [self downloadTaskWithRequest: request + completionHandler: completionHandler]; } - (NSURLSessionDownloadTask *) - downloadTaskWithResumeData:(NSData *)resumeData - completionHandler: - (GSNSURLSessionDownloadCompletionHandler)completionHandler + downloadTaskWithResumeData: (NSData *)resumeData + completionHandler: + (GSNSURLSessionDownloadCompletionHandler)completionHandler { - return [self notImplemented:_cmd]; + return [self notImplemented: _cmd]; } @end diff --git a/Source/NSURLSessionConfiguration.m b/Source/NSURLSessionConfiguration.m index 49068389b..3de770538 100644 --- a/Source/NSURLSessionConfiguration.m +++ b/Source/NSURLSessionConfiguration.m @@ -1,32 +1,32 @@ /** - NSURLSessionConfiguration.m - - Copyright (C) 2017-2024 Free Software Foundation, Inc. - - Written by: Hugo Melder - Date: May 2024 - Author: Hugo Melder - - This file is part of GNUStep-base - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - If you are interested in a warranty or support for this source code, - contact Scott Christley for more information. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. -*/ + * NSURLSessionConfiguration.m + * + * Copyright (C) 2017-2024 Free Software Foundation, Inc. + * + * Written by: Hugo Melder + * Date: May 2024 + * Author: Hugo Melder + * + * This file is part of GNUStep-base + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * If you are interested in a warranty or support for this source code, + * contact Scott Christley for more information. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110 USA. + */ #import "Foundation/NSURLSession.h" #import "Foundation/NSHTTPCookie.h" @@ -35,9 +35,9 @@ @implementation NSURLSessionConfiguration -static NSURLSessionConfiguration *def = nil; +static NSURLSessionConfiguration * def = nil; -+ (void)initialize ++ (void) initialize { if (nil == def) { @@ -45,26 +45,27 @@ + (void)initialize } } -+ (NSURLSessionConfiguration *)defaultSessionConfiguration ++ (NSURLSessionConfiguration *) defaultSessionConfiguration { return AUTORELEASE([def copy]); } -+ (NSURLSessionConfiguration *)ephemeralSessionConfiguration ++ (NSURLSessionConfiguration *) ephemeralSessionConfiguration { // return default session since we don't store any data on disk anyway return AUTORELEASE([def copy]); } -+ (NSURLSessionConfiguration *)backgroundSessionConfigurationWithIdentifier: ++ (NSURLSessionConfiguration *) backgroundSessionConfigurationWithIdentifier: (NSString *)identifier { - NSURLSessionConfiguration *configuration = [def copy]; + NSURLSessionConfiguration * configuration = [def copy]; + configuration->_identifier = [identifier copy]; return AUTORELEASE(configuration); } -- (instancetype)init +- (instancetype) init { if (nil != (self = [super init])) { @@ -83,7 +84,7 @@ - (instancetype)init return self; } -- (void)dealloc +- (void) dealloc { DESTROY(_identifier); DESTROY(_HTTPAdditionalHeaders); @@ -94,190 +95,191 @@ - (void)dealloc [super dealloc]; } -- (NSString *)identifier +- (NSString *) identifier { return _identifier; } -- (NSURLCache *)URLCache +- (NSURLCache *) URLCache { return _URLCache; } -- (void)setURLCache:(NSURLCache *)cache +- (void) setURLCache: (NSURLCache *)cache { ASSIGN(_URLCache, cache); } -- (void)setURLCredentialStorage:(NSURLCredentialStorage *)storage +- (void) setURLCredentialStorage: (NSURLCredentialStorage *)storage { ASSIGN(_URLCredentialStorage, storage); } -- (NSURLRequestCachePolicy)requestCachePolicy +- (NSURLRequestCachePolicy) requestCachePolicy { return _requestCachePolicy; } -- (void)setRequestCachePolicy:(NSURLRequestCachePolicy)policy +- (void) setRequestCachePolicy: (NSURLRequestCachePolicy)policy { _requestCachePolicy = policy; } -- (NSArray *)protocolClasses +- (NSArray *) protocolClasses { return _protocolClasses; } -- (NSTimeInterval)timeoutIntervalForRequest +- (NSTimeInterval) timeoutIntervalForRequest { return _timeoutIntervalForRequest; } -- (void)setTimeoutIntervalForRequest:(NSTimeInterval)interval +- (void) setTimeoutIntervalForRequest: (NSTimeInterval)interval { _timeoutIntervalForRequest = interval; } -- (NSTimeInterval)timeoutIntervalForResource +- (NSTimeInterval) timeoutIntervalForResource { return _timeoutIntervalForResource; } -- (void)setTimeoutIntervalForResource:(NSTimeInterval)interval +- (void) setTimeoutIntervalForResource: (NSTimeInterval)interval { _timeoutIntervalForResource = interval; } -- (NSInteger)HTTPMaximumConnectionsPerHost +- (NSInteger) HTTPMaximumConnectionsPerHost { return _HTTPMaximumConnectionsPerHost; } -- (void)setHTTPMaximumConnectionsPerHost:(NSInteger)n +- (void) setHTTPMaximumConnectionsPerHost: (NSInteger)n { _HTTPMaximumConnectionsPerHost = n; } -- (NSInteger)HTTPMaximumConnectionLifetime +- (NSInteger) HTTPMaximumConnectionLifetime { return _HTTPMaximumConnectionLifetime; } -- (void)setHTTPMaximumConnectionLifetime:(NSInteger)n +- (void) setHTTPMaximumConnectionLifetime: (NSInteger)n { _HTTPMaximumConnectionLifetime = n; } -- (BOOL)HTTPShouldUsePipelining +- (BOOL) HTTPShouldUsePipelining { return _HTTPShouldUsePipelining; } -- (void)setHTTPShouldUsePipelining:(BOOL)flag +- (void) setHTTPShouldUsePipelining: (BOOL)flag { _HTTPShouldUsePipelining = flag; } -- (NSHTTPCookieAcceptPolicy)HTTPCookieAcceptPolicy +- (NSHTTPCookieAcceptPolicy) HTTPCookieAcceptPolicy { return _HTTPCookieAcceptPolicy; } -- (void)setHTTPCookieAcceptPolicy:(NSHTTPCookieAcceptPolicy)policy +- (void) setHTTPCookieAcceptPolicy: (NSHTTPCookieAcceptPolicy)policy { _HTTPCookieAcceptPolicy = policy; } -- (NSHTTPCookieStorage *)HTTPCookieStorage +- (NSHTTPCookieStorage *) HTTPCookieStorage { return _HTTPCookieStorage; } -- (void)setHTTPCookieStorage:(NSHTTPCookieStorage *)storage +- (void) setHTTPCookieStorage: (NSHTTPCookieStorage *)storage { ASSIGN(_HTTPCookieStorage, storage); } -- (BOOL)HTTPShouldSetCookies +- (BOOL) HTTPShouldSetCookies { return _HTTPShouldSetCookies; } -- (void)setHTTPShouldSetCookies:(BOOL)flag +- (void) setHTTPShouldSetCookies: (BOOL)flag { _HTTPShouldSetCookies = flag; } -- (NSDictionary *)HTTPAdditionalHeaders +- (NSDictionary *) HTTPAdditionalHeaders { return _HTTPAdditionalHeaders; } -- (void)setHTTPAdditionalHeaders:(NSDictionary *)headers +- (void) setHTTPAdditionalHeaders: (NSDictionary *)headers { ASSIGN(_HTTPAdditionalHeaders, headers); } -- (NSURLRequest *)configureRequest:(NSURLRequest *)request +- (NSURLRequest *) configureRequest: (NSURLRequest *)request { - return [self setCookiesOnRequest:request]; + return [self setCookiesOnRequest: request]; } -- (NSURLRequest *)setCookiesOnRequest:(NSURLRequest *)request +- (NSURLRequest *) setCookiesOnRequest: (NSURLRequest *)request { - NSMutableURLRequest *r = AUTORELEASE([request mutableCopy]); + NSMutableURLRequest * r = AUTORELEASE([request mutableCopy]); if (_HTTPShouldSetCookies) { if (nil != _HTTPCookieStorage && nil != [request URL]) { - NSArray *cookies = [_HTTPCookieStorage cookiesForURL:[request URL]]; + NSArray * cookies = [_HTTPCookieStorage cookiesForURL: [request URL]]; if (nil != cookies && [cookies count] > 0) { - NSDictionary *cookiesHeaderFields; - NSString *cookieValue; + NSDictionary * cookiesHeaderFields; + NSString * cookieValue; cookiesHeaderFields = - [NSHTTPCookie requestHeaderFieldsWithCookies:cookies]; - cookieValue = [cookiesHeaderFields objectForKey:@"Cookie"]; + [NSHTTPCookie requestHeaderFieldsWithCookies: cookies]; + cookieValue = [cookiesHeaderFields objectForKey: @"Cookie"]; if (nil != cookieValue && [cookieValue length] > 0) { - [r setValue:cookieValue forHTTPHeaderField:@"Cookie"]; + [r setValue: cookieValue forHTTPHeaderField: @"Cookie"]; } } } } return AUTORELEASE([r copy]); -} +} /* setCookiesOnRequest */ -- (NSURLCredentialStorage *)URLCredentialStorage +- (NSURLCredentialStorage *) URLCredentialStorage { return _URLCredentialStorage; } -- (id)copyWithZone:(NSZone *)zone +- (id) copyWithZone: (NSZone *)zone { - NSURLSessionConfiguration *copy = [[[self class] alloc] init]; + NSURLSessionConfiguration * copy = [[[self class] alloc] init]; if (copy) { copy->_identifier = [_identifier copy]; copy->_URLCache = [_URLCache copy]; copy->_URLCredentialStorage = [_URLCredentialStorage copy]; - copy->_protocolClasses = [_protocolClasses copyWithZone:zone]; + copy->_protocolClasses = [_protocolClasses copyWithZone: zone]; copy->_HTTPMaximumConnectionsPerHost = _HTTPMaximumConnectionsPerHost; copy->_HTTPShouldUsePipelining = _HTTPShouldUsePipelining; copy->_HTTPCookieAcceptPolicy = _HTTPCookieAcceptPolicy; copy->_HTTPCookieStorage = [_HTTPCookieStorage retain]; copy->_HTTPShouldSetCookies = _HTTPShouldSetCookies; - copy->_HTTPAdditionalHeaders = [_HTTPAdditionalHeaders copyWithZone:zone]; + copy->_HTTPAdditionalHeaders = + [_HTTPAdditionalHeaders copyWithZone: zone]; copy->_timeoutIntervalForRequest = _timeoutIntervalForRequest; copy->_timeoutIntervalForResource = _timeoutIntervalForResource; } return copy; -} +} /* copyWithZone */ @end \ No newline at end of file diff --git a/Source/NSURLSessionPrivate.h b/Source/NSURLSessionPrivate.h index b4beb684a..08c65344a 100644 --- a/Source/NSURLSessionPrivate.h +++ b/Source/NSURLSessionPrivate.h @@ -1,32 +1,32 @@ /** - NSURLSessionPrivate.h - - Copyright (C) 2017-2024 Free Software Foundation, Inc. - - Written by: Hugo Melder - Date: May 2024 - Author: Hugo Melder - - This file is part of GNUStep-base - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - If you are interested in a warranty or support for this source code, - contact Scott Christley for more information. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. -*/ + * NSURLSessionPrivate.h + * + * Copyright (C) 2017-2024 Free Software Foundation, Inc. + * + * Written by: Hugo Melder + * Date: May 2024 + * Author: Hugo Melder + * + * This file is part of GNUStep-base + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * If you are interested in a warranty or support for this source code, + * contact Scott Christley for more information. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110 USA. + */ #import "common.h" @@ -35,7 +35,7 @@ #import #import -extern NSString *GS_NSURLSESSION_DEBUG_KEY; +extern NSString * GS_NSURLSESSION_DEBUG_KEY; /* libcurl may request a full-duplex socket configuration with * CURL_POLL_INOUT, but libdispatch distinguishes between a read and write @@ -50,7 +50,8 @@ struct SourceInfo dispatch_source_t writeSocket; }; -typedef NS_ENUM(NSInteger, GSURLSessionProperties) { +typedef NS_ENUM(NSInteger, GSURLSessionProperties) +{ GSURLSessionStoresDataInMemory = (1 << 0), GSURLSessionWritesDataToFile = (1 << 1), GSURLSessionUpdatesDelegate = (1 << 2), @@ -59,32 +60,32 @@ typedef NS_ENUM(NSInteger, GSURLSessionProperties) { }; @interface -NSURLSession (Private) + NSURLSession(Private) - (dispatch_queue_t)_workQueue; -- (NSData *)_certificateBlob; -- (NSString *)_certificatePath; +-(NSData *)_certificateBlob; +-(NSString *)_certificatePath; /* Adds the internal easy handle to the multi handle. * Modifications are performed on the workQueue. */ -- (void)_resumeTask:(NSURLSessionTask *)task; +-(void)_resumeTask: (NSURLSessionTask *)task; /* The following methods must only be called from within callbacks dispatched on * the workQueue.*/ -- (void)_setTimer:(NSInteger)timeout; -- (void)_suspendTimer; +-(void)_setTimer: (NSInteger)timeout; +-(void)_suspendTimer; /* Required for manual redirects. */ -- (void)_addHandle:(CURL *)easy; -- (void)_removeHandle:(CURL *)easy; - -- (void)_removeSocket:(struct SourceInfo *)sources; -- (int)_addSocket:(curl_socket_t)socket easyHandle:(CURL *)easy what:(int)what; -- (int)_setSocket:(curl_socket_t)socket - sources:(struct SourceInfo *)sources - what:(int)what; +-(void)_addHandle: (CURL *)easy; +-(void)_removeHandle: (CURL *)easy; + +-(void)_removeSocket: (struct SourceInfo *)sources; +-(int)_addSocket: (curl_socket_t)socket easyHandle: (CURL *)easy what: (int)what; +-(int)_setSocket: (curl_socket_t)socket + sources: (struct SourceInfo *)sources + what: (int)what; @end diff --git a/Source/NSURLSessionTask.m b/Source/NSURLSessionTask.m index 0c5208b7c..7c4dea175 100644 --- a/Source/NSURLSessionTask.m +++ b/Source/NSURLSessionTask.m @@ -1,31 +1,31 @@ /** - NSURLSessionTask.m - - Copyright (C) 2017-2024 Free Software Foundation, Inc. - - Written by: Hugo Melder - Date: May 2024 - - This file is part of GNUStep-base - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - If you are interested in a warranty or support for this source code, - contact Scott Christley for more information. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. -*/ + * NSURLSessionTask.m + * + * Copyright (C) 2017-2024 Free Software Foundation, Inc. + * + * Written by: Hugo Melder + * Date: May 2024 + * + * This file is part of GNUStep-base + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * If you are interested in a warranty or support for this source code, + * contact Scott Christley for more information. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110 USA. + */ #import "NSURLSessionPrivate.h" #include @@ -68,19 +68,19 @@ @interface _GSMutableInsensitiveDictionary : NSMutableDictionary /* Initialised in +[NSURLSessionTask initialize] */ static Class dataTaskClass; static Class downloadTaskClass; -static SEL didReceiveDataSel; -static SEL didReceiveResponseSel; -static SEL didCompleteWithErrorSel; -static SEL didFinishDownloadingToURLSel; -static SEL didWriteDataSel; -static SEL needNewBodyStreamSel; -static SEL willPerformHTTPRedirectionSel; - -static NSString *taskTransferDataKey = @"transferData"; -static NSString *taskTemporaryFileLocationKey = @"tempFileLocation"; -static NSString *taskTemporaryFileHandleKey = @"tempFileHandle"; -static NSString *taskInputStreamKey = @"inputStream"; -static NSString *taskUploadData = @"uploadData"; +static SEL didReceiveDataSel; +static SEL didReceiveResponseSel; +static SEL didCompleteWithErrorSel; +static SEL didFinishDownloadingToURLSel; +static SEL didWriteDataSel; +static SEL needNewBodyStreamSel; +static SEL willPerformHTTPRedirectionSel; + +static NSString * taskTransferDataKey = @"transferData"; +static NSString * taskTemporaryFileLocationKey = @"tempFileLocation"; +static NSString * taskTemporaryFileHandleKey = @"tempFileHandle"; +static NSString * taskInputStreamKey = @"inputStream"; +static NSString * taskUploadData = @"uploadData"; /* Translate WinSock2 Error Codes */ #ifdef _WIN32 @@ -89,59 +89,61 @@ @interface _GSMutableInsensitiveDictionary : NSMutableDictionary { switch (err) { - case WSAEADDRINUSE: - err = EADDRINUSE; - break; - case WSAEADDRNOTAVAIL: - err = EADDRNOTAVAIL; - break; - case WSAEINPROGRESS: - err = EINPROGRESS; - break; - case WSAECONNRESET: - err = ECONNRESET; - break; - case WSAECONNABORTED: - err = ECONNABORTED; - break; - case WSAECONNREFUSED: - err = ECONNREFUSED; - break; - case WSAEHOSTUNREACH: - err = EHOSTUNREACH; - break; - case WSAENETUNREACH: - err = ENETUNREACH; - break; - case WSAETIMEDOUT: - err = ETIMEDOUT; - break; - default: - break; - } + case WSAEADDRINUSE: + err = EADDRINUSE; + break; + case WSAEADDRNOTAVAIL: + err = EADDRNOTAVAIL; + break; + case WSAEINPROGRESS: + err = EINPROGRESS; + break; + case WSAECONNRESET: + err = ECONNRESET; + break; + case WSAECONNABORTED: + err = ECONNABORTED; + break; + case WSAECONNREFUSED: + err = ECONNREFUSED; + break; + case WSAEHOSTUNREACH: + err = EHOSTUNREACH; + break; + case WSAENETUNREACH: + err = ENETUNREACH; + break; + case WSAETIMEDOUT: + err = ETIMEDOUT; + break; + default: + break; + } /* switch */ return err; -} -#endif +} /* translateWinSockToPOSIXError */ +#endif /* ifdef _WIN32 */ static inline NSError * -errorForCURLcode(CURL *handle, CURLcode code, char errorBuffer[CURL_ERROR_SIZE]) +errorForCURLcode(CURL * handle, CURLcode code, + char errorBuffer[CURL_ERROR_SIZE]) { - NSString *curlErrorString; - NSString *errorString; - NSDictionary *userInfo; - NSError *error; - NSInteger urlError = NSURLErrorUnknown; - NSInteger posixError; - NSInteger osError = 0; + NSString * curlErrorString; + NSString * errorString; + NSDictionary * userInfo; + NSError * error; + NSInteger urlError = NSURLErrorUnknown; + NSInteger posixError; + NSInteger osError = 0; if (NULL == handle || CURLE_OK == code) { return NULL; } - errorString = [[NSString alloc] initWithCString:errorBuffer]; - curlErrorString = [[NSString alloc] initWithCString:curl_easy_strerror(code)]; + errorString = [[NSString alloc] initWithCString: errorBuffer]; + curlErrorString = + [[NSString alloc] initWithCString: curl_easy_strerror(code)]; /* Get errno number from the last connect failure. * @@ -163,71 +165,71 @@ @interface _GSMutableInsensitiveDictionary : NSMutableDictionary /* Translate libcurl to NSURLError codes */ switch (code) { - case CURLE_UNSUPPORTED_PROTOCOL: - urlError = NSURLErrorUnsupportedURL; - break; - case CURLE_URL_MALFORMAT: - urlError = NSURLErrorBadURL; - break; - - /* Connection Errors */ - case CURLE_COULDNT_RESOLVE_PROXY: - case CURLE_COULDNT_RESOLVE_HOST: - urlError = NSURLErrorDNSLookupFailed; - break; - case CURLE_QUIC_CONNECT_ERROR: - case CURLE_COULDNT_CONNECT: - urlError = NSURLErrorCannotConnectToHost; - break; - case CURLE_OPERATION_TIMEDOUT: - urlError = NSURLErrorTimedOut; - break; - case CURLE_FILESIZE_EXCEEDED: - urlError = NSURLErrorDataLengthExceedsMaximum; - break; - case CURLE_LOGIN_DENIED: - urlError = NSURLErrorUserAuthenticationRequired; - break; - - /* Response Errors */ - case CURLE_WEIRD_SERVER_REPLY: - urlError = NSURLErrorBadServerResponse; - break; - case CURLE_REMOTE_ACCESS_DENIED: - urlError = NSURLErrorNoPermissionsToReadFile; - break; - case CURLE_GOT_NOTHING: - urlError = NSURLErrorZeroByteResource; - break; - case CURLE_RECV_ERROR: - urlError = NSURLErrorResourceUnavailable; - break; - - /* Callback Errors */ - case CURLE_ABORTED_BY_CALLBACK: - case CURLE_WRITE_ERROR: - errorString = @"Transfer aborted by user"; - urlError = NSURLErrorCancelled; - break; - - /* SSL Errors */ - case CURLE_SSL_CACERT_BADFILE: - case CURLE_SSL_PINNEDPUBKEYNOTMATCH: - case CURLE_SSL_CONNECT_ERROR: - urlError = NSURLErrorSecureConnectionFailed; - break; - case CURLE_SSL_CERTPROBLEM: - urlError = NSURLErrorClientCertificateRejected; - break; - case CURLE_SSL_INVALIDCERTSTATUS: - case CURLE_SSL_ISSUER_ERROR: - urlError = NSURLErrorServerCertificateUntrusted; - break; - - default: - urlError = NSURLErrorUnknown; - break; - } + case CURLE_UNSUPPORTED_PROTOCOL: + urlError = NSURLErrorUnsupportedURL; + break; + case CURLE_URL_MALFORMAT: + urlError = NSURLErrorBadURL; + break; + + /* Connection Errors */ + case CURLE_COULDNT_RESOLVE_PROXY: + case CURLE_COULDNT_RESOLVE_HOST: + urlError = NSURLErrorDNSLookupFailed; + break; + case CURLE_QUIC_CONNECT_ERROR: + case CURLE_COULDNT_CONNECT: + urlError = NSURLErrorCannotConnectToHost; + break; + case CURLE_OPERATION_TIMEDOUT: + urlError = NSURLErrorTimedOut; + break; + case CURLE_FILESIZE_EXCEEDED: + urlError = NSURLErrorDataLengthExceedsMaximum; + break; + case CURLE_LOGIN_DENIED: + urlError = NSURLErrorUserAuthenticationRequired; + break; + + /* Response Errors */ + case CURLE_WEIRD_SERVER_REPLY: + urlError = NSURLErrorBadServerResponse; + break; + case CURLE_REMOTE_ACCESS_DENIED: + urlError = NSURLErrorNoPermissionsToReadFile; + break; + case CURLE_GOT_NOTHING: + urlError = NSURLErrorZeroByteResource; + break; + case CURLE_RECV_ERROR: + urlError = NSURLErrorResourceUnavailable; + break; + + /* Callback Errors */ + case CURLE_ABORTED_BY_CALLBACK: + case CURLE_WRITE_ERROR: + errorString = @"Transfer aborted by user"; + urlError = NSURLErrorCancelled; + break; + + /* SSL Errors */ + case CURLE_SSL_CACERT_BADFILE: + case CURLE_SSL_PINNEDPUBKEYNOTMATCH: + case CURLE_SSL_CONNECT_ERROR: + urlError = NSURLErrorSecureConnectionFailed; + break; + case CURLE_SSL_CERTPROBLEM: + urlError = NSURLErrorClientCertificateRejected; + break; + case CURLE_SSL_INVALIDCERTSTATUS: + case CURLE_SSL_ISSUER_ERROR: + urlError = NSURLErrorServerCertificateUntrusted; + break; + + default: + urlError = NSURLErrorUnknown; + break; + } /* switch */ /* Adjust error based on underlying OS error if available */ if (code == CURLE_COULDNT_CONNECT || code == CURLE_RECV_ERROR @@ -235,50 +237,50 @@ @interface _GSMutableInsensitiveDictionary : NSMutableDictionary { switch (posixError) { - case EADDRINUSE: - urlError = NSURLErrorCannotConnectToHost; - break; - case EADDRNOTAVAIL: - urlError = NSURLErrorCannotFindHost; - break; - case ECONNREFUSED: - urlError = NSURLErrorCannotConnectToHost; - break; - case ENETUNREACH: - urlError = NSURLErrorDNSLookupFailed; - break; - case ETIMEDOUT: - urlError = NSURLErrorTimedOut; - break; - default: /* Do not alter urlError if we have no match */ - break; + case EADDRINUSE: + urlError = NSURLErrorCannotConnectToHost; + break; + case EADDRNOTAVAIL: + urlError = NSURLErrorCannotFindHost; + break; + case ECONNREFUSED: + urlError = NSURLErrorCannotConnectToHost; + break; + case ENETUNREACH: + urlError = NSURLErrorDNSLookupFailed; + break; + case ETIMEDOUT: + urlError = NSURLErrorTimedOut; + break; + default: /* Do not alter urlError if we have no match */ + break; } } userInfo = @{ - @"_curlErrorCode" : [NSNumber numberWithInteger:code], - @"_curlErrorString" : curlErrorString, + @"_curlErrorCode": [NSNumber numberWithInteger: code], + @"_curlErrorString": curlErrorString, /* This is the raw POSIX error or WinSock2 Error Code depending on OS */ - @"_errno" : [NSNumber numberWithInteger:osError], - NSLocalizedDescriptionKey : errorString + @"_errno": [NSNumber numberWithInteger: osError], + NSLocalizedDescriptionKey: errorString }; - error = [NSError errorWithDomain:NSURLErrorDomain - code:urlError - userInfo:userInfo]; + error = [NSError errorWithDomain: NSURLErrorDomain + code: urlError + userInfo: userInfo]; [curlErrorString release]; [errorString release]; return error; -} +} /* errorForCURLcode */ /* CURLOPT_PROGRESSFUNCTION: progress reports by libcurl */ static int -progress_callback(void *clientp, curl_off_t dltotal, curl_off_t dlnow, +progress_callback(void * clientp, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultotal, curl_off_t ulnow) { - NSURLSessionTask *task = clientp; + NSURLSessionTask * task = clientp; /* Returning -1 from this callback makes libcurl abort the transfer and return * CURLE_ABORTED_BY_CALLBACK. @@ -288,10 +290,10 @@ @interface _GSMutableInsensitiveDictionary : NSMutableDictionary return -1; } - [task _setCountOfBytesReceived:dlnow]; - [task _setCountOfBytesSent:ulnow]; - [task _setCountOfBytesExpectedToSend:ultotal]; - [task _setCountOfBytesExpectedToReceive:dltotal]; + [task _setCountOfBytesReceived: dlnow]; + [task _setCountOfBytesSent: ulnow]; + [task _setCountOfBytesExpectedToSend: ultotal]; + [task _setCountOfBytesExpectedToReceive: dltotal]; return 0; } @@ -304,39 +306,41 @@ @interface _GSMutableInsensitiveDictionary : NSMutableDictionary * libcurl does not unfold HTTP "folded headers" (deprecated since RFC 7230). */ size_t -header_callback(char *ptr, size_t size, size_t nitems, void *userdata) +header_callback(char * ptr, size_t size, size_t nitems, void * userdata) { - NSURLSessionTask *task; - NSMutableDictionary *taskData; - NSMutableDictionary *headerFields; - NSString *headerLine; - NSInteger headerCallbackCount; - NSRange range; - NSCharacterSet *set; + NSURLSessionTask * task; + NSMutableDictionary * taskData; + NSMutableDictionary * headerFields; + NSString * headerLine; + NSInteger headerCallbackCount; + NSRange range; + NSCharacterSet * set; - task = (NSURLSessionTask *) userdata; + task = (NSURLSessionTask *)userdata; taskData = [task _taskData]; - headerFields = [taskData objectForKey:@"headers"]; + headerFields = [taskData objectForKey: @"headers"]; headerCallbackCount = [task _headerCallbackCount] + 1; set = [NSCharacterSet whitespaceAndNewlineCharacterSet]; - [task _setHeaderCallbackCount:headerCallbackCount]; + [task _setHeaderCallbackCount: headerCallbackCount]; if (nil == headerFields) { - NSDebugLLog(GS_NSURLSESSION_DEBUG_KEY, - @"task=%@ Could not find 'headers' key in taskData", task); + NSDebugLLog( + GS_NSURLSESSION_DEBUG_KEY, + @"task=%@ Could not find 'headers' key in taskData", + task); return 0; } - headerLine = [[NSString alloc] initWithBytes:ptr - length:nitems - encoding:NSUTF8StringEncoding]; + headerLine = [[NSString alloc] initWithBytes: ptr + length: nitems + encoding: NSUTF8StringEncoding]; // First line is the HTTP Version if (1 == headerCallbackCount) { - [taskData setObject:headerLine forKey:@"version"]; + [taskData setObject: headerLine forKey: @"version"]; [headerLine release]; return size * nitems; @@ -350,62 +354,63 @@ @interface _GSMutableInsensitiveDictionary : NSMutableDictionary */ if ((ptr[0] == ' ') || (ptr[0] == '\t')) { - NSString *key; + NSString * key; - if (nil != (key = [taskData objectForKey:@"lastHeaderKey"])) + if (nil != (key = [taskData objectForKey: @"lastHeaderKey"])) { - NSString *value; - NSString *trimmedLine; + NSString * value; + NSString * trimmedLine; - value = [headerFields objectForKey:key]; + value = [headerFields objectForKey: key]; if (!value) { - NSError *error; - NSString *errorDescription; + NSError * error; + NSString * errorDescription; errorDescription = [NSString - stringWithFormat:@"Header is line folded but previous header " - @"key '%@' does not have an entry", - key]; + stringWithFormat: + @"Header is line folded but previous header " + @"key '%@' does not have an entry", + key]; error = - [NSError errorWithDomain:NSURLErrorDomain - code:NSURLErrorCancelled - userInfo:@{ - NSLocalizedDescriptionKey : errorDescription - }]; + [NSError errorWithDomain: NSURLErrorDomain + code: NSURLErrorCancelled + userInfo: @{ + NSLocalizedDescriptionKey: errorDescription + }]; - [taskData setObject:error forKey:NSUnderlyingErrorKey]; + [taskData setObject: error forKey: NSUnderlyingErrorKey]; [headerLine release]; return 0; } - trimmedLine = [headerLine stringByTrimmingCharactersInSet:set]; - value = [value stringByAppendingString:trimmedLine]; + trimmedLine = [headerLine stringByTrimmingCharactersInSet: set]; + value = [value stringByAppendingString: trimmedLine]; - [headerFields setObject:value forKey:key]; + [headerFields setObject: value forKey: key]; } [headerLine release]; return size * nitems; } - range = [headerLine rangeOfString:@":"]; + range = [headerLine rangeOfString: @":"]; if (NSNotFound != range.location) { - NSString *key; - NSString *value; + NSString * key; + NSString * value; - key = [headerLine substringToIndex:range.location]; - value = [headerLine substringFromIndex:range.location + 1]; + key = [headerLine substringToIndex: range.location]; + value = [headerLine substringFromIndex: range.location + 1]; /* Remove LWS from key and value */ - key = [key stringByTrimmingCharactersInSet:set]; - value = [value stringByTrimmingCharactersInSet:set]; + key = [key stringByTrimmingCharactersInSet: set]; + value = [value stringByTrimmingCharactersInSet: set]; - [headerFields setObject:value forKey:key]; + [headerFields setObject: value forKey: key]; /* Used for line unfolding */ - [taskData setObject:key forKey:@"lastHeaderKey"]; + [taskData setObject: key forKey: @"lastHeaderKey"]; [headerLine release]; return size * nitems; @@ -420,47 +425,51 @@ @interface _GSMutableInsensitiveDictionary : NSMutableDictionary */ if (nitems > 1 && (ptr[0] == '\r') && (ptr[1] == '\n')) { - NSURLSession *session; - id delegate; - NSHTTPURLResponse *response; - NSString *version; - NSString *urlString; - NSURL *url; - CURL *handle; - char *effURL; - NSInteger numberOfRedirects = 0; - NSInteger statusCode = 0; + NSURLSession * session; + id delegate; + NSHTTPURLResponse * response; + NSString * version; + NSString * urlString; + NSURL * url; + CURL * handle; + char * effURL; + NSInteger numberOfRedirects = 0; + NSInteger statusCode = 0; session = [task _session]; delegate = [task delegate]; handle = [task _easyHandle]; numberOfRedirects = [task _numberOfRedirects] + 1; - [task _setNumberOfRedirects:numberOfRedirects]; - [task _setHeaderCallbackCount:0]; + [task _setNumberOfRedirects: numberOfRedirects]; + [task _setHeaderCallbackCount: 0]; curl_easy_getinfo(handle, CURLINFO_RESPONSE_CODE, &statusCode); curl_easy_getinfo(handle, CURLINFO_EFFECTIVE_URL, &effURL); - if (nil == (version = [taskData objectForKey:@"version"])) + if (nil == (version = [taskData objectForKey: @"version"])) { /* Default to HTTP/1.0 if no data is available */ version = @"HTTP/1.0"; } - NSDebugLLog(GS_NSURLSESSION_DEBUG_KEY, - @"task=%@ version=%@ status=%ld found %ld headers", task, - version, statusCode, [headerFields count]); + NSDebugLLog( + GS_NSURLSESSION_DEBUG_KEY, + @"task=%@ version=%@ status=%ld found %ld headers", + task, + version, + statusCode, + [headerFields count]); - urlString = [[NSString alloc] initWithCString:effURL]; - url = [NSURL URLWithString:urlString]; - response = [[NSHTTPURLResponse alloc] initWithURL:url - statusCode:statusCode - HTTPVersion:version - headerFields:[headerFields copy]]; + urlString = [[NSString alloc] initWithCString: effURL]; + url = [NSURL URLWithString: urlString]; + response = [[NSHTTPURLResponse alloc] initWithURL: url + statusCode: statusCode + HTTPVersion: version + headerFields: [headerFields copy]]; - [task _setCookiesFromHeaders:headerFields]; - [task _setResponse:response]; + [task _setCookiesFromHeaders: headerFields]; + [task _setResponse: response]; /* URL redirection handling for 3xx status codes, if delegate updates are * enabled. @@ -471,7 +480,7 @@ @interface _GSMutableInsensitiveDictionary : NSMutableDictionary if ([task _properties] & GSURLSessionUpdatesDelegate && statusCode >= 300 && statusCode < 400) { - NSString *location; + NSString * location; /* * RFC 7231: 7.1.2 Location [Header] @@ -483,85 +492,96 @@ @interface _GSMutableInsensitiveDictionary : NSMutableDictionary * request URI * ([RFC3986], Section 5). */ - location = [headerFields objectForKey:@"Location"]; + location = [headerFields objectForKey: @"Location"]; if (nil != location) { - NSURL *redirectURL; - NSMutableURLRequest *newRequest; + NSURL * redirectURL; + NSMutableURLRequest * newRequest; /* baseURL is only used, if location is a relative reference */ - redirectURL = [NSURL URLWithString:location relativeToURL:url]; + redirectURL = [NSURL URLWithString: location relativeToURL: url]; newRequest = [[task originalRequest] mutableCopy]; - [newRequest setURL:redirectURL]; + [newRequest setURL: redirectURL]; - NSDebugLLog(GS_NSURLSESSION_DEBUG_KEY, - @"task=%@ status=%ld has Location header. Prepare " - @"for redirection with url=%@", - task, statusCode, redirectURL); + NSDebugLLog( + GS_NSURLSESSION_DEBUG_KEY, + @"task=%@ status=%ld has Location header. Prepare " + @"for redirection with url=%@", + task, + statusCode, + redirectURL); - if ([delegate respondsToSelector:willPerformHTTPRedirectionSel]) + if ([delegate respondsToSelector: willPerformHTTPRedirectionSel]) { - NSDebugLLog(GS_NSURLSESSION_DEBUG_KEY, - @"task=%@ ask delegate for redirection " - @"permission. Pausing handle.", - task); + NSDebugLLog( + GS_NSURLSESSION_DEBUG_KEY, + @"task=%@ ask delegate for redirection " + @"permission. Pausing handle.", + task); curl_easy_pause(handle, CURLPAUSE_ALL); [[session delegateQueue] addOperationWithBlock:^{ - void (^completionHandler)(NSURLRequest *) = ^( - NSURLRequest *userRequest) { - /* Changes are dispatched onto workqueue */ - dispatch_async([session _workQueue], ^{ - if (NULL == userRequest) - { - curl_easy_pause(handle, CURLPAUSE_CONT); - [task _setShouldStopTransfer:YES]; - NSDebugLLog(GS_NSURLSESSION_DEBUG_KEY, - @"task=%@ willPerformHTTPRedirection " - @"completionHandler called with nil " - @"request", - task); - } - else - { - NSString *newURLString; - - newURLString = [[userRequest URL] absoluteString]; - - NSDebugLLog(GS_NSURLSESSION_DEBUG_KEY, - @"task=%@ willPerformHTTPRedirection " - @"delegate completionHandler called " - @"with new URL %@", - task, newURLString); - - /* Remove handle for reconfiguration */ - [session _removeHandle:handle]; - - /* Reset statistics */ - [task _setCountOfBytesReceived:0]; - [task _setCountOfBytesSent:0]; - [task _setCountOfBytesExpectedToReceive:0]; - [task _setCountOfBytesExpectedToSend:0]; - - [task _setCurrentRequest:userRequest]; - - /* Update URL in easy handle */ - curl_easy_setopt(handle, CURLOPT_URL, - [newURLString UTF8String]); - curl_easy_pause(handle, CURLPAUSE_CONT); - - [session _addHandle:handle]; - } - }); - }; - - [delegate URLSession:session - task:task - willPerformHTTPRedirection:response - newRequest:newRequest - completionHandler:completionHandler]; - }]; + void (^completionHandler)(NSURLRequest *) = ^( + NSURLRequest * userRequest) { + /* Changes are dispatched onto workqueue */ + dispatch_async( + [session _workQueue], + ^{ + if (NULL == userRequest) + { + curl_easy_pause(handle, CURLPAUSE_CONT); + [task _setShouldStopTransfer: YES]; + NSDebugLLog( + GS_NSURLSESSION_DEBUG_KEY, + @"task=%@ willPerformHTTPRedirection " + @"completionHandler called with nil " + @"request", + task); + } + else + { + NSString * newURLString; + + newURLString = [[userRequest URL] absoluteString]; + + NSDebugLLog( + GS_NSURLSESSION_DEBUG_KEY, + @"task=%@ willPerformHTTPRedirection " + @"delegate completionHandler called " + @"with new URL %@", + task, + newURLString); + + /* Remove handle for reconfiguration */ + [session _removeHandle: handle]; + + /* Reset statistics */ + [task _setCountOfBytesReceived: 0]; + [task _setCountOfBytesSent: 0]; + [task _setCountOfBytesExpectedToReceive: 0]; + [task _setCountOfBytesExpectedToSend: 0]; + + [task _setCurrentRequest: userRequest]; + + /* Update URL in easy handle */ + curl_easy_setopt( + handle, + CURLOPT_URL, + [newURLString UTF8String]); + curl_easy_pause(handle, CURLPAUSE_CONT); + + [session _addHandle: handle]; + } + }); + }; + + [delegate URLSession: session + task: task + willPerformHTTPRedirection: response + newRequest: newRequest + completionHandler: completionHandler]; + }]; [headerFields removeAllObjects]; return size * nitems; @@ -573,24 +593,28 @@ @interface _GSMutableInsensitiveDictionary : NSMutableDictionary @"task=%@ status=%ld has Location header but " @"delegate does not respond to " @"willPerformHTTPRedirection:. Redirecting to Location %@", - task, statusCode, redirectURL); + task, + statusCode, + redirectURL); /* Remove handle for reconfiguration */ - [session _removeHandle:handle]; + [session _removeHandle: handle]; - curl_easy_setopt(handle, CURLOPT_URL, - [[redirectURL absoluteString] UTF8String]); + curl_easy_setopt( + handle, + CURLOPT_URL, + [[redirectURL absoluteString] UTF8String]); /* Reset statistics */ - [task _setCountOfBytesReceived:0]; - [task _setCountOfBytesSent:0]; - [task _setCountOfBytesExpectedToReceive:0]; - [task _setCountOfBytesExpectedToSend:0]; + [task _setCountOfBytesReceived: 0]; + [task _setCountOfBytesSent: 0]; + [task _setCountOfBytesExpectedToReceive: 0]; + [task _setCountOfBytesExpectedToSend: 0]; - [task _setCurrentRequest:newRequest]; + [task _setCurrentRequest: newRequest]; /* Re-add handle to session */ - [session _addHandle:handle]; + [session _addHandle: handle]; } [headerFields removeAllObjects]; @@ -598,20 +622,22 @@ @interface _GSMutableInsensitiveDictionary : NSMutableDictionary } else { - NSError *error; - NSString *errorString; + NSError * error; + NSString * errorString; errorString = [NSString - stringWithFormat:@"task=%@ status=%ld has no Location header", - task, statusCode]; + stringWithFormat: + @"task=%@ status=%ld has no Location header", + task, statusCode]; error = [NSError - errorWithDomain:NSURLErrorDomain - code:NSURLErrorBadServerResponse - userInfo:@{NSLocalizedDescriptionKey : errorString}]; + errorWithDomain: NSURLErrorDomain + code: NSURLErrorBadServerResponse + userInfo: @{ NSLocalizedDescriptionKey: + errorString }]; NSDebugLLog(GS_NSURLSESSION_DEBUG_KEY, @"%@", errorString); - [taskData setObject:error forKey:NSUnderlyingErrorKey]; + [taskData setObject: error forKey: NSUnderlyingErrorKey]; return 0; } @@ -625,8 +651,8 @@ @interface _GSMutableInsensitiveDictionary : NSMutableDictionary * FIXME: Enforce this and implement a custom redirect system */ if ([task _properties] & GSURLSessionUpdatesDelegate && - [task isKindOfClass:dataTaskClass] && - [delegate respondsToSelector:didReceiveResponseSel]) + [task isKindOfClass: dataTaskClass] && + [delegate respondsToSelector: didReceiveResponseSel]) { dispatch_queue_t queue; @@ -635,23 +661,25 @@ @interface _GSMutableInsensitiveDictionary : NSMutableDictionary curl_easy_pause(handle, CURLPAUSE_ALL); [[session delegateQueue] addOperationWithBlock:^{ - [delegate URLSession:session - dataTask:(NSURLSessionDataTask *) task - didReceiveResponse:response - completionHandler:^( - NSURLSessionResponseDisposition disposition) { - /* FIXME: Implement NSURLSessionResponseBecomeDownload */ - if (disposition == NSURLSessionResponseCancel) - { - [task _setShouldStopTransfer:YES]; - } - - /* Unpause easy handle */ - dispatch_async(queue, ^{ - curl_easy_pause(handle, CURLPAUSE_CONT); - }); - }]; - }]; + [delegate URLSession: session + dataTask: (NSURLSessionDataTask *)task + didReceiveResponse: response + completionHandler:^( + NSURLSessionResponseDisposition disposition) { + /* FIXME: Implement NSURLSessionResponseBecomeDownload */ + if (disposition == NSURLSessionResponseCancel) + { + [task _setShouldStopTransfer: YES]; + } + + /* Unpause easy handle */ + dispatch_async( + queue, + ^{ + curl_easy_pause(handle, CURLPAUSE_CONT); + }); + }]; + }]; } [urlString release]; @@ -659,129 +687,132 @@ @interface _GSMutableInsensitiveDictionary : NSMutableDictionary } return size * nitems; -} +} /* header_callback */ /* CURLOPT_READFUNCTION: read callback for data uploads */ size_t -read_callback(char *buffer, size_t size, size_t nitems, void *userdata) +read_callback(char * buffer, size_t size, size_t nitems, void * userdata) { - NSURLSession *session; - NSURLSessionTask *task; - NSMutableDictionary *taskData; - NSInputStream *stream; - NSInteger bytesWritten; + NSURLSession * session; + NSURLSessionTask * task; + NSMutableDictionary * taskData; + NSInputStream * stream; + NSInteger bytesWritten; - task = (NSURLSessionTask *) userdata; + task = (NSURLSessionTask *)userdata; session = [task _session]; taskData = [task _taskData]; - stream = [taskData objectForKey:taskInputStreamKey]; + stream = [taskData objectForKey: taskInputStreamKey]; if (nil == stream) { id delegate = [task delegate]; - NSDebugLLog(GS_NSURLSESSION_DEBUG_KEY, - @"task=%@ requesting new body stream from delegate", task); + NSDebugLLog( + GS_NSURLSESSION_DEBUG_KEY, + @"task=%@ requesting new body stream from delegate", + task); - if ([delegate respondsToSelector:needNewBodyStreamSel]) + if ([delegate respondsToSelector: needNewBodyStreamSel]) { [[[task _session] delegateQueue] addOperationWithBlock:^{ - [delegate URLSession:session - task:task - needNewBodyStream:^(NSInputStream *bodyStream) { - /* Add input stream to task data */ - [taskData setObject:bodyStream forKey:taskInputStreamKey]; - /* Continue with the transfer */ - curl_easy_pause([task _easyHandle], CURLPAUSE_CONT); - }]; - }]; + [delegate URLSession: session + task: task + needNewBodyStream:^(NSInputStream * bodyStream) { + /* Add input stream to task data */ + [taskData setObject: bodyStream forKey: taskInputStreamKey]; + /* Continue with the transfer */ + curl_easy_pause([task _easyHandle], CURLPAUSE_CONT); + }]; + }]; return CURL_READFUNC_PAUSE; } else { - NSDebugLLog(GS_NSURLSESSION_DEBUG_KEY, - @"task=%@ no input stream was given and delegate does " - @"not respond to URLSession:task:needNewBodyStream:", - task); + NSDebugLLog( + GS_NSURLSESSION_DEBUG_KEY, + @"task=%@ no input stream was given and delegate does " + @"not respond to URLSession:task:needNewBodyStream:", + task); return CURL_READFUNC_ABORT; } } - bytesWritten = [stream read:(uint8_t *) buffer maxLength:(size * nitems)]; + bytesWritten = [stream read: (uint8_t *)buffer maxLength: (size * nitems)]; /* An error occured while reading from the inputStream */ if (bytesWritten < 0) { - NSError *error; + NSError * error; error = [NSError - errorWithDomain:NSURLErrorDomain - code:NSURLErrorCancelled - userInfo:@{ - NSLocalizedDescriptionKey : - @"An error occured while reading from the body stream", - NSUnderlyingErrorKey : [stream streamError] + errorWithDomain: NSURLErrorDomain + code: NSURLErrorCancelled + userInfo: @{ + NSLocalizedDescriptionKey: + @"An error occured while reading from the body stream", + NSUnderlyingErrorKey: [stream streamError] }]; - [taskData setObject:error forKey:NSUnderlyingErrorKey]; + [taskData setObject: error forKey: NSUnderlyingErrorKey]; return CURL_READFUNC_ABORT; } return bytesWritten; -} +} /* read_callback */ /* CURLOPT_WRITEFUNCTION: callback for writing received data from easy handle */ static size_t -write_callback(char *ptr, size_t size, size_t nmemb, void *userdata) +write_callback(char * ptr, size_t size, size_t nmemb, void * userdata) { - NSURLSessionTask *task; - NSURLSession *session; - NSMutableDictionary *taskData; - NSData *dataFragment; - NSInteger properties; + NSURLSessionTask * task; + NSURLSession * session; + NSMutableDictionary * taskData; + NSData * dataFragment; + NSInteger properties; - task = (NSURLSessionTask *) userdata; + task = (NSURLSessionTask *)userdata; session = [task _session]; taskData = [task _taskData]; - dataFragment = [[NSData alloc] initWithBytes:ptr length:(size * nmemb)]; + dataFragment = [[NSData alloc] initWithBytes: ptr length: (size * nmemb)]; properties = [task _properties]; if (properties & GSURLSessionStoresDataInMemory) { - NSMutableData *data; + NSMutableData * data; - data = [taskData objectForKey:taskTransferDataKey]; + data = [taskData objectForKey: taskTransferDataKey]; if (!data) { data = [[NSMutableData alloc] init]; /* Strong reference maintained by taskData */ - [taskData setObject:data forKey:taskTransferDataKey]; + [taskData setObject: data forKey: taskTransferDataKey]; [data release]; } - [data appendData:dataFragment]; + [data appendData: dataFragment]; } else if (properties & GSURLSessionWritesDataToFile) { - NSFileHandle *handle; - NSError *error = NULL; + NSFileHandle * handle; + NSError * error = NULL; // Get a temporary file path and create a file handle - if (nil == (handle = [taskData objectForKey:taskTemporaryFileHandleKey])) + if (nil == (handle = [taskData objectForKey: taskTemporaryFileHandleKey])) { - handle = [task _createTemporaryFileHandleWithError:&error]; + handle = [task _createTemporaryFileHandleWithError: &error]; /* We add the error to taskData as an underlying error */ if (NULL != error) { - [taskData setObject:error forKey:NSUnderlyingErrorKey]; + [taskData setObject: error forKey: NSUnderlyingErrorKey]; [dataFragment release]; return 0; } } - [handle writeData:dataFragment]; + [handle writeData: dataFragment]; } /* Notify delegate */ @@ -789,47 +820,47 @@ @interface _GSMutableInsensitiveDictionary : NSMutableDictionary { id delegate = [task delegate]; - if ([task isKindOfClass:dataTaskClass] && - [delegate respondsToSelector:didReceiveDataSel]) + if ([task isKindOfClass: dataTaskClass] && + [delegate respondsToSelector: didReceiveDataSel]) { [[session delegateQueue] addOperationWithBlock:^{ - [delegate URLSession:session - dataTask:(NSURLSessionDataTask *) task - didReceiveData:dataFragment]; - }]; + [delegate URLSession: session + dataTask: (NSURLSessionDataTask *)task + didReceiveData: dataFragment]; + }]; } /* Notify delegate about the download process */ - if ([task isKindOfClass:downloadTaskClass] && - [delegate respondsToSelector:didWriteDataSel]) + if ([task isKindOfClass: downloadTaskClass] && + [delegate respondsToSelector: didWriteDataSel]) { - NSURLSessionDownloadTask *downloadTask; - int64_t bytesWritten; - int64_t totalBytesWritten; - int64_t totalBytesExpectedToReceive; + NSURLSessionDownloadTask * downloadTask; + int64_t bytesWritten; + int64_t totalBytesWritten; + int64_t totalBytesExpectedToReceive; - downloadTask = (NSURLSessionDownloadTask *) task; + downloadTask = (NSURLSessionDownloadTask *)task; bytesWritten = [dataFragment length]; - [downloadTask _updateCountOfBytesWritten:bytesWritten]; + [downloadTask _updateCountOfBytesWritten: bytesWritten]; totalBytesWritten = [downloadTask _countOfBytesWritten]; totalBytesExpectedToReceive = [downloadTask countOfBytesExpectedToReceive]; [[session delegateQueue] addOperationWithBlock:^{ - [delegate URLSession:session - downloadTask:downloadTask - didWriteData:bytesWritten - totalBytesWritten:totalBytesWritten - totalBytesExpectedToWrite:totalBytesExpectedToReceive]; - }]; + [delegate URLSession: session + downloadTask: downloadTask + didWriteData: bytesWritten + totalBytesWritten: totalBytesWritten + totalBytesExpectedToWrite: totalBytesExpectedToReceive]; + }]; } } [dataFragment release]; return size * nmemb; -} +} /* write_callback */ @implementation NSURLSessionTask { @@ -839,19 +870,19 @@ @implementation NSURLSessionTask NSInteger _properties; /* Internal task data */ - NSMutableDictionary *_taskData; - NSInteger _numberOfRedirects; - NSInteger _headerCallbackCount; - NSUInteger _suspendCount; + NSMutableDictionary * _taskData; + NSInteger _numberOfRedirects; + NSInteger _headerCallbackCount; + NSUInteger _suspendCount; - char _curlErrorBuffer[CURL_ERROR_SIZE]; - struct curl_slist *_headerList; + char _curlErrorBuffer[CURL_ERROR_SIZE]; + struct curl_slist * _headerList; - CURL *_easyHandle; - NSURLSession *_session; + CURL * _easyHandle; + NSURLSession * _session; } -+ (void)initialize ++ (void) initialize { dataTaskClass = [NSURLSessionDataTask class]; downloadTaskClass = [NSURLSessionDownloadTask class]; @@ -863,29 +894,29 @@ + (void)initialize @selector(URLSession:downloadTask:didFinishDownloadingToURL:); didWriteDataSel = @selector (URLSession: - downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:); + downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:); needNewBodyStreamSel = @selector(URLSession:task:needNewBodyStream:); willPerformHTTPRedirectionSel = @selector (URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:); } -- (instancetype)initWithSession:(NSURLSession *)session - request:(NSURLRequest *)request - taskIdentifier:(NSUInteger)identifier +- (instancetype) initWithSession: (NSURLSession *)session + request: (NSURLRequest *)request + taskIdentifier: (NSUInteger)identifier { self = [super init]; if (self) { - NSString *httpMethod; - NSData *certificateBlob; - NSURL *url; - NSDictionary *immConfigHeaders; - NSURLSessionConfiguration *configuration; - NSHTTPCookieStorage *storage; + NSString * httpMethod; + NSData * certificateBlob; + NSURL * url; + NSDictionary * immConfigHeaders; + NSURLSessionConfiguration * configuration; + NSHTTPCookieStorage * storage; - _GSMutableInsensitiveDictionary *requestHeaders = nil; - _GSMutableInsensitiveDictionary *configHeaders = nil; + _GSMutableInsensitiveDictionary * requestHeaders = nil; + _GSMutableInsensitiveDictionary * configHeaders = nil; _taskIdentifier = identifier; _taskData = [[NSMutableDictionary alloc] init]; @@ -913,13 +944,13 @@ - (instancetype)initWithSession:(NSURLSession *)session /* Configure initial task data */ - [_taskData setObject:[NSMutableDictionary new] forKey:@"headers"]; + [_taskData setObject: [NSMutableDictionary new] forKey: @"headers"]; /* Easy Handle Configuration */ _easyHandle = curl_easy_init(); - if ([@"head" isEqualToString:httpMethod]) + if ([@"head" isEqualToString: httpMethod]) { curl_easy_setopt(_easyHandle, CURLOPT_NOBODY, 1L); } @@ -929,18 +960,20 @@ - (instancetype)initWithSession:(NSURLSession *)session */ if (nil != [_originalRequest HTTPBody]) { - NSData *body = [_originalRequest HTTPBody]; + NSData * body = [_originalRequest HTTPBody]; curl_easy_setopt(_easyHandle, CURLOPT_UPLOAD, 1L); - curl_easy_setopt(_easyHandle, CURLOPT_POSTFIELDSIZE_LARGE, - [body length]); + curl_easy_setopt( + _easyHandle, + CURLOPT_POSTFIELDSIZE_LARGE, + [body length]); curl_easy_setopt(_easyHandle, CURLOPT_POSTFIELDS, [body bytes]); } else if (nil != [_originalRequest HTTPBodyStream]) { - NSInputStream *stream = [_originalRequest HTTPBodyStream]; + NSInputStream * stream = [_originalRequest HTTPBodyStream]; - [_taskData setObject:stream forKey:taskInputStreamKey]; + [_taskData setObject: stream forKey: taskInputStreamKey]; curl_easy_setopt(_easyHandle, CURLOPT_READFUNCTION, read_callback); curl_easy_setopt(_easyHandle, CURLOPT_READDATA, self); @@ -950,11 +983,15 @@ - (instancetype)initWithSession:(NSURLSession *)session } /* Configure HTTP method and URL */ - curl_easy_setopt(_easyHandle, CURLOPT_CUSTOMREQUEST, - [[_originalRequest HTTPMethod] UTF8String]); + curl_easy_setopt( + _easyHandle, + CURLOPT_CUSTOMREQUEST, + [[_originalRequest HTTPMethod] UTF8String]); - curl_easy_setopt(_easyHandle, CURLOPT_URL, - [[url absoluteString] UTF8String]); + curl_easy_setopt( + _easyHandle, + CURLOPT_URL, + [[url absoluteString] UTF8String]); /* This callback function gets called by libcurl as soon as there is data * received that needs to be saved. For most transfers, this callback gets @@ -987,8 +1024,10 @@ - (instancetype)initWithSession:(NSURLSession *)session /* Specifiy our own progress function with the user pointer being the * current object */ - curl_easy_setopt(_easyHandle, CURLOPT_XFERINFOFUNCTION, - progress_callback); + curl_easy_setopt( + _easyHandle, + CURLOPT_XFERINFOFUNCTION, + progress_callback); curl_easy_setopt(_easyHandle, CURLOPT_XFERINFODATA, self); /* Do not Follow redirects by default @@ -1000,18 +1039,24 @@ - (instancetype)initWithSession:(NSURLSession *)session curl_easy_setopt(_easyHandle, CURLOPT_FOLLOWLOCATION, 0L); /* Set timeout in connect phase */ - curl_easy_setopt(_easyHandle, CURLOPT_CONNECTTIMEOUT, - (NSInteger)[request timeoutInterval]); + curl_easy_setopt( + _easyHandle, + CURLOPT_CONNECTTIMEOUT, + (NSInteger)[request timeoutInterval]); /* Set overall timeout */ - curl_easy_setopt(_easyHandle, CURLOPT_TIMEOUT, - [configuration timeoutIntervalForResource]); + curl_easy_setopt( + _easyHandle, + CURLOPT_TIMEOUT, + [configuration timeoutIntervalForResource]); /* Set to HTTP/3 if requested */ if ([request assumesHTTP3Capable]) { - curl_easy_setopt(_easyHandle, CURLOPT_HTTP_VERSION, - CURL_HTTP_VERSION_3); + curl_easy_setopt( + _easyHandle, + CURLOPT_HTTP_VERSION, + CURL_HTTP_VERSION_3); } /* Configure the custom CA certificate if available */ @@ -1021,7 +1066,7 @@ - (instancetype)initWithSession:(NSURLSession *)session #if LIBCURL_VERSION_NUM >= 0x074D00 struct curl_blob blob; - blob.data = (void *) [certificateBlob bytes]; + blob.data = (void *)[certificateBlob bytes]; blob.len = [certificateBlob length]; /* Session becomes a strong reference when task is resumed until the * end of transfer. */ @@ -1029,8 +1074,10 @@ - (instancetype)initWithSession:(NSURLSession *)session curl_easy_setopt(_easyHandle, CURLOPT_CAINFO_BLOB, &blob); #else - curl_easy_setopt(_easyHandle, CURLOPT_CAINFO, - [_session _certificatePath]); + curl_easy_setopt( + _easyHandle, + CURLOPT_CAINFO, + [_session _certificatePath]); #endif } @@ -1039,8 +1086,8 @@ - (instancetype)initWithSession:(NSURLSession *)session if (nil != immConfigHeaders) { configHeaders = [[_GSMutableInsensitiveDictionary alloc] - initWithDictionary:immConfigHeaders - copyItems:NO]; + initWithDictionary: immConfigHeaders + copyItems: NO]; /* Merge Headers. * @@ -1049,7 +1096,7 @@ - (instancetype)initWithSession:(NSURLSession *)session * the request object’s value takes precedence. */ [configHeaders - addEntriesFromDictionary:(NSDictionary *) requestHeaders]; + addEntriesFromDictionary: (NSDictionary *)requestHeaders]; requestHeaders = configHeaders; } @@ -1058,8 +1105,8 @@ - (instancetype)initWithSession:(NSURLSession *)session storage = [configuration HTTPCookieStorage]; if (nil != storage && [configuration HTTPShouldSetCookies]) { - NSDictionary *cookieHeaders; - NSArray *cookies; + NSDictionary * cookieHeaders; + NSArray * cookies; /* No headers were set */ if (nil == requestHeaders) @@ -1067,54 +1114,56 @@ - (instancetype)initWithSession:(NSURLSession *)session requestHeaders = [_GSMutableInsensitiveDictionary new]; } - cookies = [storage cookiesForURL:url]; + cookies = [storage cookiesForURL: url]; if ([cookies count] > 0) { cookieHeaders = - [NSHTTPCookie requestHeaderFieldsWithCookies:cookies]; - [requestHeaders addEntriesFromDictionary:cookieHeaders]; + [NSHTTPCookie requestHeaderFieldsWithCookies: cookies]; + [requestHeaders addEntriesFromDictionary: cookieHeaders]; } } /* Append Headers to the libcurl header list */ [requestHeaders - enumerateKeysAndObjectsUsingBlock:^(id key, id object, - BOOL *stop) { - NSString *headerLine; + enumerateKeysAndObjectsUsingBlock:^(id key, id object, + BOOL * stop) { + NSString * headerLine; - headerLine = [NSString stringWithFormat:@"%@: %@", key, object]; + headerLine = [NSString stringWithFormat: @"%@: %@", key, object]; - /* We have removed all reserved headers in NSURLRequest */ - _headerList = curl_slist_append(_headerList, [headerLine UTF8String]); - }]; + /* We have removed all reserved headers in NSURLRequest */ + _headerList = curl_slist_append(_headerList, [headerLine UTF8String]); + }]; curl_easy_setopt(_easyHandle, CURLOPT_HTTPHEADER, _headerList); } return self; -} +} /* initWithSession */ -- (void)_enableAutomaticRedirects:(BOOL)flag +- (void) _enableAutomaticRedirects: (BOOL)flag { curl_easy_setopt(_easyHandle, CURLOPT_FOLLOWLOCATION, flag ? 1L : 0L); } -- (void)_enableUploadWithData:(NSData *)data +- (void) _enableUploadWithData: (NSData *)data { curl_easy_setopt(_easyHandle, CURLOPT_UPLOAD, 1L); /* Retain data */ - [_taskData setObject:data forKey:taskUploadData]; + [_taskData setObject: data forKey: taskUploadData]; curl_easy_setopt(_easyHandle, CURLOPT_POSTFIELDSIZE_LARGE, [data length]); curl_easy_setopt(_easyHandle, CURLOPT_POSTFIELDS, [data bytes]); /* The method is overwritten by CURLOPT_UPLOAD. Change it back. */ - curl_easy_setopt(_easyHandle, CURLOPT_CUSTOMREQUEST, - [[_originalRequest HTTPMethod] UTF8String]); + curl_easy_setopt( + _easyHandle, + CURLOPT_CUSTOMREQUEST, + [[_originalRequest HTTPMethod] UTF8String]); } -- (void)_enableUploadWithSize:(NSInteger)size +- (void) _enableUploadWithSize: (NSInteger)size { curl_easy_setopt(_easyHandle, CURLOPT_UPLOAD, 1L); @@ -1131,156 +1180,164 @@ - (void)_enableUploadWithSize:(NSInteger)size } /* The method is overwritten by CURLOPT_UPLOAD. Change it back. */ - curl_easy_setopt(_easyHandle, CURLOPT_CUSTOMREQUEST, - [[_originalRequest HTTPMethod] UTF8String]); -} + curl_easy_setopt( + _easyHandle, + CURLOPT_CUSTOMREQUEST, + [[_originalRequest HTTPMethod] UTF8String]); +} /* _enableUploadWithSize */ -- (CURL *)_easyHandle +- (CURL *) _easyHandle { return _easyHandle; } -- (void)_setVerbose:(BOOL)flag +- (void) _setVerbose: (BOOL)flag { - dispatch_async([_session _workQueue], ^{ + dispatch_async( + [_session _workQueue], + ^{ curl_easy_setopt(_easyHandle, CURLOPT_VERBOSE, flag ? 1L : 0L); }); } -- (void)_setBodyStream:(NSInputStream *)stream +- (void) _setBodyStream: (NSInputStream *)stream { - [_taskData setObject:stream forKey:taskInputStreamKey]; + [_taskData setObject: stream forKey: taskInputStreamKey]; } -- (void)_setOriginalRequest:(NSURLRequest *)request +- (void) _setOriginalRequest: (NSURLRequest *)request { ASSIGNCOPY(_originalRequest, request); } -- (void)_setCurrentRequest:(NSURLRequest *)request +- (void) _setCurrentRequest: (NSURLRequest *)request { ASSIGNCOPY(_currentRequest, request); } -- (void)_setResponse:(NSURLResponse *)response +- (void) _setResponse: (NSURLResponse *)response { - NSURLResponse *oldResponse = _response; + NSURLResponse * oldResponse = _response; + _response = [response retain]; [oldResponse release]; } -- (void)_setCountOfBytesSent:(int64_t)count +- (void) _setCountOfBytesSent: (int64_t)count { _countOfBytesSent = count; } -- (void)_setCountOfBytesReceived:(int64_t)count +- (void) _setCountOfBytesReceived: (int64_t)count { _countOfBytesReceived = count; } -- (void)_setCountOfBytesExpectedToSend:(int64_t)count +- (void) _setCountOfBytesExpectedToSend: (int64_t)count { _countOfBytesExpectedToSend = count; } -- (void)_setCountOfBytesExpectedToReceive:(int64_t)count +- (void) _setCountOfBytesExpectedToReceive: (int64_t)count { _countOfBytesExpectedToReceive = count; } -- (NSMutableDictionary *)_taskData +- (NSMutableDictionary *) _taskData { return _taskData; } -- (NSInteger)_properties +- (NSInteger) _properties { return _properties; } -- (void)_setProperties:(NSInteger)properties +- (void) _setProperties: (NSInteger)properties { _properties = properties; } -- (NSURLSession *)_session +- (NSURLSession *) _session { return _session; } -- (BOOL)_shouldStopTransfer +- (BOOL) _shouldStopTransfer { return _shouldStopTransfer; } -- (void)_setShouldStopTransfer:(BOOL)flag +- (void) _setShouldStopTransfer: (BOOL)flag { _shouldStopTransfer = flag; } -- (NSInteger)_numberOfRedirects +- (NSInteger) _numberOfRedirects { return _numberOfRedirects; } -- (void)_setNumberOfRedirects:(NSInteger)redirects +- (void) _setNumberOfRedirects: (NSInteger)redirects { _numberOfRedirects = redirects; } -- (NSInteger)_headerCallbackCount +- (NSInteger) _headerCallbackCount { return _headerCallbackCount; } -- (void)_setHeaderCallbackCount:(NSInteger)count +- (void) _setHeaderCallbackCount: (NSInteger)count { _headerCallbackCount = count; } /* Creates a temporary file and opens a file handle for writing */ -- (NSFileHandle *)_createTemporaryFileHandleWithError:(NSError **)error +- (NSFileHandle *) _createTemporaryFileHandleWithError: (NSError **)error { - NSFileManager *mgr; - NSFileHandle *handle; - NSString *path; - NSURL *url; + NSFileManager * mgr; + NSFileHandle * handle; + NSString * path; + NSURL * url; mgr = [NSFileManager defaultManager]; path = NSTemporaryDirectory(); - path = [path stringByAppendingPathComponent:[[NSUUID UUID] UUIDString]]; + path = [path stringByAppendingPathComponent: [[NSUUID UUID] UUIDString]]; - url = [NSURL fileURLWithPath:path]; - [_taskData setObject:url forKey:taskTemporaryFileLocationKey]; + url = [NSURL fileURLWithPath: path]; + [_taskData setObject: url forKey: taskTemporaryFileLocationKey]; - if (![mgr createFileAtPath:path contents:nil attributes:nil]) + if (![mgr createFileAtPath: path contents: nil attributes: nil]) { if (error) { - NSString *errorDescription = [NSString - stringWithFormat:@"Failed to create temporary file at path %@", - path]; + NSString * errorDescription = [NSString + stringWithFormat: + @"Failed to create temporary file at path %@", + path]; *error = [NSError - errorWithDomain:NSCocoaErrorDomain - code:NSURLErrorCannotCreateFile - userInfo:@{NSLocalizedDescriptionKey : errorDescription}]; + errorWithDomain: NSCocoaErrorDomain + code: NSURLErrorCannotCreateFile + userInfo: @{ NSLocalizedDescriptionKey: + errorDescription }]; } return nil; } - handle = [NSFileHandle fileHandleForWritingAtPath:path]; - [_taskData setObject:handle forKey:taskTemporaryFileHandleKey]; + handle = [NSFileHandle fileHandleForWritingAtPath: path]; + [_taskData setObject: handle forKey: taskTemporaryFileHandleKey]; return handle; -} +} /* _createTemporaryFileHandleWithError */ /* Called in _checkForCompletion */ -- (void)_transferFinishedWithCode:(CURLcode)code +- (void) _transferFinishedWithCode: (CURLcode)code { - NSError *error = errorForCURLcode(_easyHandle, code, _curlErrorBuffer); + NSError * error = errorForCURLcode(_easyHandle, code, _curlErrorBuffer); if (_properties & GSURLSessionWritesDataToFile) { - NSFileHandle *handle; + NSFileHandle * handle; - if (nil != (handle = [_taskData objectForKey:taskTemporaryFileHandleKey])) + if (nil != + (handle = [_taskData objectForKey: taskTemporaryFileHandleKey])) { [handle closeFile]; } @@ -1289,25 +1346,25 @@ - (void)_transferFinishedWithCode:(CURLcode)code if (_properties & GSURLSessionUpdatesDelegate) { if (_properties & GSURLSessionWritesDataToFile && - [_delegate respondsToSelector:didFinishDownloadingToURLSel]) + [_delegate respondsToSelector: didFinishDownloadingToURLSel]) { - NSURL *url = [_taskData objectForKey:taskTemporaryFileLocationKey]; + NSURL * url = [_taskData objectForKey: taskTemporaryFileLocationKey]; [[_session delegateQueue] addOperationWithBlock:^{ - [(id) _delegate - URLSession:_session - downloadTask:(NSURLSessionDownloadTask *) self - didFinishDownloadingToURL:url]; - }]; + [(id) _delegate + URLSession: _session + downloadTask: (NSURLSessionDownloadTask *)self + didFinishDownloadingToURL: url]; + }]; } - if ([_delegate respondsToSelector:didCompleteWithErrorSel]) + if ([_delegate respondsToSelector: didCompleteWithErrorSel]) { [[_session delegateQueue] addOperationWithBlock:^{ - [_delegate URLSession:_session - task:self - didCompleteWithError:error]; - }]; + [_delegate URLSession: _session + task: self + didCompleteWithError: error]; + }]; } } @@ -1316,42 +1373,42 @@ - (void)_transferFinishedWithCode:(CURLcode)code */ if ((_properties & GSURLSessionStoresDataInMemory) && (_properties & GSURLSessionHasCompletionHandler) && - [self isKindOfClass:dataTaskClass]) + [self isKindOfClass: dataTaskClass]) { - NSURLSessionDataTask *dataTask; - NSData *data; + NSURLSessionDataTask * dataTask; + NSData * data; - dataTask = (NSURLSessionDataTask *) self; - data = [_taskData objectForKey:taskTransferDataKey]; + dataTask = (NSURLSessionDataTask *)self; + data = [_taskData objectForKey: taskTransferDataKey]; [[_session delegateQueue] addOperationWithBlock:^{ - [dataTask _completionHandler](data, _response, error); - }]; + [dataTask _completionHandler](data, _response, error); + }]; } else if ((_properties & GSURLSessionWritesDataToFile) && (_properties & GSURLSessionHasCompletionHandler) && - [self isKindOfClass:downloadTaskClass]) + [self isKindOfClass: downloadTaskClass]) { - NSURLSessionDownloadTask *downloadTask; - NSURL *tempFile; + NSURLSessionDownloadTask * downloadTask; + NSURL * tempFile; - downloadTask = (NSURLSessionDownloadTask *) self; - tempFile = [_taskData objectForKey:taskTemporaryFileLocationKey]; + downloadTask = (NSURLSessionDownloadTask *)self; + tempFile = [_taskData objectForKey: taskTemporaryFileLocationKey]; [[_session delegateQueue] addOperationWithBlock:^{ - [downloadTask _completionHandler](tempFile, _response, error); - }]; + [downloadTask _completionHandler](tempFile, _response, error); + }]; } RELEASE(_session); -} +} /* _transferFinishedWithCode */ /* Called in header_callback */ -- (void)_setCookiesFromHeaders:(NSDictionary *)headers +- (void) _setCookiesFromHeaders: (NSDictionary *)headers { - NSURL *url; - NSArray *cookies; - NSURLSessionConfiguration *config; + NSURL * url; + NSArray * cookies; + NSURLSessionConfiguration * config; config = [_session configuration]; url = [_currentRequest URL]; @@ -1360,20 +1417,20 @@ - (void)_setCookiesFromHeaders:(NSDictionary *)headers if (NSHTTPCookieAcceptPolicyNever != [config HTTPCookieAcceptPolicy] && nil != [config HTTPCookieStorage]) { - cookies = [NSHTTPCookie cookiesWithResponseHeaderFields:headers - forURL:url]; + cookies = [NSHTTPCookie cookiesWithResponseHeaderFields: headers + forURL: url]; if ([cookies count] > 0) { - [[config HTTPCookieStorage] setCookies:cookies - forURL:url - mainDocumentURL:nil]; + [[config HTTPCookieStorage] setCookies: cookies + forURL: url + mainDocumentURL: nil]; } } -} +} /* _setCookiesFromHeaders */ #pragma mark - Public Methods -- (void)suspend +- (void) suspend { _suspendCount += 1; if (_suspendCount == 1) @@ -1387,7 +1444,7 @@ - (void)suspend _shouldStopTransfer = YES; } } -- (void)resume +- (void) resume { /* Only resume a transfer if the task is not suspended and in suspended state */ @@ -1400,12 +1457,12 @@ - (void)resume RETAIN(_session); _state = NSURLSessionTaskStateRunning; - [_session _resumeTask:self]; + [_session _resumeTask: self]; return; } _suspendCount -= 1; } -- (void)cancel +- (void) cancel { /* Transfer is aborted in the next libcurl progress_callback * @@ -1413,7 +1470,9 @@ - (void)cancel * URLSession:task:didCompleteWithError: is called after receiving * CURLMSG_DONE in -[NSURLSessionTask _checkForCompletion]. */ - dispatch_async([_session _workQueue], ^{ + dispatch_async( + [_session _workQueue], + ^{ /* Unpause the easy handle if previously paused */ curl_easy_pause(_easyHandle, CURLPAUSE_CONT); @@ -1422,29 +1481,29 @@ - (void)cancel }); } -- (float)priority +- (float) priority { return _priority; } -- (void)setPriority:(float)priority +- (void) setPriority: (float)priority { _priority = priority; } -- (id)copyWithZone:(NSZone *)zone +- (id) copyWithZone: (NSZone *)zone { - NSURLSessionTask *copy = [[[self class] alloc] init]; + NSURLSessionTask * copy = [[[self class] alloc] init]; if (copy) { - copy->_originalRequest = [_originalRequest copyWithZone:zone]; - copy->_currentRequest = [_currentRequest copyWithZone:zone]; - copy->_response = [_response copyWithZone:zone]; + copy->_originalRequest = [_originalRequest copyWithZone: zone]; + copy->_currentRequest = [_currentRequest copyWithZone: zone]; + copy->_response = [_response copyWithZone: zone]; /* FIXME: Seems like copyWithZone: is not implemented for NSProgress */ copy->_progress = [_progress copy]; - copy->_earliestBeginDate = [_earliestBeginDate copyWithZone:zone]; - copy->_taskDescription = [_taskDescription copyWithZone:zone]; - copy->_taskData = [_taskData copyWithZone:zone]; + copy->_earliestBeginDate = [_earliestBeginDate copyWithZone: zone]; + copy->_taskDescription = [_taskDescription copyWithZone: zone]; + copy->_taskData = [_taskData copyWithZone: zone]; copy->_easyHandle = curl_easy_duphandle(_easyHandle); } @@ -1453,103 +1512,106 @@ - (id)copyWithZone:(NSZone *)zone #pragma mark - Getter and Setter -- (NSUInteger)taskIdentifier +- (NSUInteger) taskIdentifier { return _taskIdentifier; } -- (NSURLRequest *)originalRequest +- (NSURLRequest *) originalRequest { return AUTORELEASE([_originalRequest copy]); } -- (NSURLRequest *)currentRequest +- (NSURLRequest *) currentRequest { return AUTORELEASE([_currentRequest copy]); } -- (NSURLResponse *)response +- (NSURLResponse *) response { return AUTORELEASE([_response copy]); } -- (NSURLSessionTaskState)state +- (NSURLSessionTaskState) state { return _state; } -- (NSProgress *)progress +- (NSProgress *) progress { return _progress; } -- (NSError *)error +- (NSError *) error { return _error; } -- (id)delegate +- (id) delegate { return _delegate; } -- (void)setDelegate:(id)delegate +- (void) setDelegate: (id)delegate { id oldDelegate = _delegate; + _delegate = RETAIN(delegate); RELEASE(oldDelegate); } -- (NSDate *)earliestBeginDate +- (NSDate *) earliestBeginDate { return _earliestBeginDate; } -- (void)setEarliestBeginDate:(NSDate *)date +- (void) setEarliestBeginDate: (NSDate *)date { - NSDate *oldDate = _earliestBeginDate; + NSDate * oldDate = _earliestBeginDate; + _earliestBeginDate = RETAIN(date); RELEASE(oldDate); } -- (int64_t)countOfBytesClientExpectsToSend +- (int64_t) countOfBytesClientExpectsToSend { return _countOfBytesClientExpectsToSend; } -- (int64_t)countOfBytesClientExpectsToReceive +- (int64_t) countOfBytesClientExpectsToReceive { return _countOfBytesClientExpectsToReceive; } -- (int64_t)countOfBytesSent +- (int64_t) countOfBytesSent { return _countOfBytesSent; } -- (int64_t)countOfBytesReceived +- (int64_t) countOfBytesReceived { return _countOfBytesReceived; } -- (int64_t)countOfBytesExpectedToSend +- (int64_t) countOfBytesExpectedToSend { return _countOfBytesExpectedToSend; } -- (int64_t)countOfBytesExpectedToReceive +- (int64_t) countOfBytesExpectedToReceive { return _countOfBytesExpectedToReceive; } -- (NSString *)taskDescription +- (NSString *) taskDescription { return _taskDescription; } -- (void)setTaskDescription:(NSString *)description +- (void) setTaskDescription: (NSString *)description { - NSString *oldDescription = _taskDescription; + NSString * oldDescription = _taskDescription; + _taskDescription = [description copy]; RELEASE(oldDescription); } -- (void)dealloc +- (void) dealloc { /* The session retains this task until the transfer is complete and the easy * handle removed from the multi handle. @@ -1574,17 +1636,17 @@ - (void)dealloc @implementation NSURLSessionDataTask -- (GSNSURLSessionDataCompletionHandler)_completionHandler +- (GSNSURLSessionDataCompletionHandler) _completionHandler { return _completionHandler; } -- (void)_setCompletionHandler:(GSNSURLSessionDataCompletionHandler)handler +- (void) _setCompletionHandler: (GSNSURLSessionDataCompletionHandler)handler { _completionHandler = _Block_copy(handler); } -- (void)dealloc +- (void) dealloc { _Block_release(_completionHandler); [super dealloc]; @@ -1597,27 +1659,27 @@ @implementation NSURLSessionUploadTask @implementation NSURLSessionDownloadTask -- (GSNSURLSessionDownloadCompletionHandler)_completionHandler +- (GSNSURLSessionDownloadCompletionHandler) _completionHandler { return _completionHandler; } -- (void)_setCompletionHandler:(GSNSURLSessionDownloadCompletionHandler)handler +- (void) _setCompletionHandler: (GSNSURLSessionDownloadCompletionHandler)handler { _completionHandler = _Block_copy(handler); } -- (int64_t)_countOfBytesWritten +- (int64_t) _countOfBytesWritten { return _countOfBytesWritten; }; -- (void)_updateCountOfBytesWritten:(int64_t)count +- (void) _updateCountOfBytesWritten: (int64_t)count { _countOfBytesWritten += count; } -- (void)dealloc +- (void) dealloc { _Block_release(_completionHandler); [super dealloc]; diff --git a/Source/NSURLSessionTaskPrivate.h b/Source/NSURLSessionTaskPrivate.h index 830e3c8a7..c28bdd053 100644 --- a/Source/NSURLSessionTaskPrivate.h +++ b/Source/NSURLSessionTaskPrivate.h @@ -1,32 +1,32 @@ /** - NSURLSessionTaskPrivate.h - - Copyright (C) 2017-2024 Free Software Foundation, Inc. - - Written by: Hugo Melder - Date: May 2024 - Author: Hugo Melder - - This file is part of GNUStep-base - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - If you are interested in a warranty or support for this source code, - contact Scott Christley for more information. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. -*/ + * NSURLSessionTaskPrivate.h + * + * Copyright (C) 2017-2024 Free Software Foundation, Inc. + * + * Written by: Hugo Melder + * Date: May 2024 + * Author: Hugo Melder + * + * This file is part of GNUStep-base + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * If you are interested in a warranty or support for this source code, + * contact Scott Christley for more information. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110 USA. + */ #import "Foundation/NSDictionary.h" #import "Foundation/NSFileHandle.h" @@ -34,23 +34,23 @@ #import @interface -NSURLSessionTask (Private) + NSURLSessionTask(Private) -- (instancetype)initWithSession:(NSURLSession *)session - request:(NSURLRequest *)request - taskIdentifier:(NSUInteger)identifier; +- (instancetype)initWithSession: (NSURLSession *)session + request: (NSURLRequest *)request + taskIdentifier: (NSUInteger)identifier; -- (CURL *)_easyHandle; +-(CURL *)_easyHandle; /* Enable or disable libcurl verbose output. Disabled by default. */ -- (void)_setVerbose:(BOOL)flag; +-(void)_setVerbose: (BOOL)flag; /* This method is called by -[NSURLSession _checkForCompletion] * * We release the session (previously retained in -[NSURLSessionTask resume]) * here and inform the delegate about the transfer state. */ -- (void)_transferFinishedWithCode:(CURLcode)code; +-(void)_transferFinishedWithCode: (CURLcode)code; /* Explicitly enable data upload with an optional estimated size. Set to 0 if * not available. @@ -58,66 +58,66 @@ NSURLSessionTask (Private) * This may be used when a body stream is passed at a later stage * (see URLSession:task:needNewBodyStream:). */ -- (void)_enableUploadWithSize:(NSInteger)size; -- (void)_setBodyStream:(NSInputStream *)stream; +-(void)_enableUploadWithSize: (NSInteger)size; +-(void)_setBodyStream: (NSInputStream *)stream; -- (void)_enableUploadWithData:(NSData *)data; -- (void)_enableAutomaticRedirects:(BOOL)flag; +-(void)_enableUploadWithData: (NSData *)data; +-(void)_enableAutomaticRedirects: (BOOL)flag; /* Assign with copying */ -- (void)_setOriginalRequest:(NSURLRequest *)request; -- (void)_setCurrentRequest:(NSURLRequest *)request; +-(void)_setOriginalRequest: (NSURLRequest *)request; +-(void)_setCurrentRequest: (NSURLRequest *)request; -- (void)_setResponse:(NSURLResponse *)response; -- (void)_setCookiesFromHeaders:(NSDictionary *)headers; +-(void)_setResponse: (NSURLResponse *)response; +-(void)_setCookiesFromHeaders: (NSDictionary *)headers; -- (void)_setCountOfBytesSent:(int64_t)count; -- (void)_setCountOfBytesReceived:(int64_t)count; -- (void)_setCountOfBytesExpectedToSend:(int64_t)count; -- (void)_setCountOfBytesExpectedToReceive:(int64_t)count; +-(void)_setCountOfBytesSent: (int64_t)count; +-(void)_setCountOfBytesReceived: (int64_t)count; +-(void)_setCountOfBytesExpectedToSend: (int64_t)count; +-(void)_setCountOfBytesExpectedToReceive: (int64_t)count; -- (NSMutableDictionary *)_taskData; +-(NSMutableDictionary *)_taskData; -- (NSURLSession *)_session; +-(NSURLSession *)_session; /* Task specific properties. * * See GSURLSessionProperties in NSURLSessionPrivate.h. */ -- (NSInteger)_properties; -- (void)_setProperties:(NSInteger)properties; +-(NSInteger)_properties; +-(void)_setProperties: (NSInteger)properties; /* This value is periodically checked in progress_callback. * We then abort the transfer in the progress_callback if this flag is set. */ -- (BOOL)_shouldStopTransfer; -- (void)_setShouldStopTransfer:(BOOL)flag; +-(BOOL)_shouldStopTransfer; +-(void)_setShouldStopTransfer: (BOOL)flag; -- (NSInteger)_numberOfRedirects; -- (void)_setNumberOfRedirects:(NSInteger)redirects; +-(NSInteger)_numberOfRedirects; +-(void)_setNumberOfRedirects: (NSInteger)redirects; -- (NSInteger)_headerCallbackCount; -- (void)_setHeaderCallbackCount:(NSInteger)count; +-(NSInteger)_headerCallbackCount; +-(void)_setHeaderCallbackCount: (NSInteger)count; -- (NSFileHandle *)_createTemporaryFileHandleWithError:(NSError **)error; +-(NSFileHandle *)_createTemporaryFileHandleWithError: (NSError **)error; @end @interface -NSURLSessionDataTask (Private) + NSURLSessionDataTask(Private) - (GSNSURLSessionDataCompletionHandler)_completionHandler; -- (void)_setCompletionHandler:(GSNSURLSessionDataCompletionHandler)handler; +-(void)_setCompletionHandler: (GSNSURLSessionDataCompletionHandler)handler; @end @interface -NSURLSessionDownloadTask (Private) + NSURLSessionDownloadTask(Private) - (GSNSURLSessionDownloadCompletionHandler)_completionHandler; -- (int64_t)_countOfBytesWritten; -- (void)_updateCountOfBytesWritten:(int64_t)count; -- (void)_setCompletionHandler:(GSNSURLSessionDownloadCompletionHandler)handler; +-(int64_t)_countOfBytesWritten; +-(void)_updateCountOfBytesWritten: (int64_t)count; +-(void)_setCompletionHandler: (GSNSURLSessionDownloadCompletionHandler)handler; @end \ No newline at end of file From cf4c985e4646c0fc2ee3802fcdc89e5f2e810cc8 Mon Sep 17 00:00:00 2001 From: Hugo Melder Date: Mon, 28 Oct 2024 06:42:41 -0700 Subject: [PATCH 03/21] NSString: Fix -commonPrefixWithString:options: behaviour (#455) * Update changelog * NSString: fix -commonPrefixWithString:options: behaviour * NSString: More test cases --- ChangeLog | 6 +++++ Source/NSString.m | 5 ++++ Tests/base/NSString/basic.m | 3 +++ Tests/base/NSString/common_prefix.m | 39 +++++++++++++++++++++++++++++ 4 files changed, 53 insertions(+) create mode 100644 Tests/base/NSString/common_prefix.m diff --git a/ChangeLog b/ChangeLog index 4be99f770..2e58f2885 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2024-10-28 Hugo Melder + * Source/NSString.m: + -commonPrefixWithString:options: returns nil when string supplied as + first argument is nil. On macOS, the empty string is returned instead. + Align implementation with macOS. + 2024-10-13 Richard Frith-Macdonald * Source/NSFileManager.m: Create an NSError object when we fail to diff --git a/Source/NSString.m b/Source/NSString.m index b0c85b4af..8c7a29693 100644 --- a/Source/NSString.m +++ b/Source/NSString.m @@ -3227,6 +3227,11 @@ - (NSUInteger) hash - (NSString*) commonPrefixWithString: (NSString*)aString options: (NSUInteger)mask { + // Return empty string to match behaviour on macOS + if (nil == aString) + { + return @""; + } if (mask & NSLiteralSearch) { int prefix_len = 0; diff --git a/Tests/base/NSString/basic.m b/Tests/base/NSString/basic.m index d94b539c0..2b87f05d2 100644 --- a/Tests/base/NSString/basic.m +++ b/Tests/base/NSString/basic.m @@ -144,6 +144,9 @@ int main() PASS([@"" isEqual: nil] == NO, "an empty string is not null"); PASS([@"" isEqualToString: nil] == NO, "an empty string is not null"); + s = [@"test" commonPrefixWithString: nil options: 0]; + PASS_EQUAL(s, @"", "Common prefix of some string with nil is empty string"); + [arp release]; arp = nil; return 0; } diff --git a/Tests/base/NSString/common_prefix.m b/Tests/base/NSString/common_prefix.m new file mode 100644 index 000000000..447dc4507 --- /dev/null +++ b/Tests/base/NSString/common_prefix.m @@ -0,0 +1,39 @@ +#import +#import +#import "Testing.h" + +int main() +{ + NSAutoreleasePool *arp = [NSAutoreleasePool new]; + NSString *result; + + result = [@"abc" commonPrefixWithString:nil options:0]; + PASS_EQUAL(result, @"", "common prefix of some string with nil is empty string"); + + result = [@"abc" commonPrefixWithString:@"abc" options:0]; + PASS_EQUAL(result, @"abc", "common prefix of identical strings is the entire string"); + + result = [@"abc" commonPrefixWithString:@"abx" options:0]; + PASS_EQUAL(result, @"ab", "common prefix of 'abc' and 'abx' is 'ab'"); + + result = [@"abc" commonPrefixWithString:@"def" options:0]; + PASS_EQUAL(result, @"", "common prefix of completely different strings is empty"); + + result = [@"abc" commonPrefixWithString:@"" options:0]; + PASS_EQUAL(result, @"", "common prefix with an empty string is empty"); + + result = [@"abc" commonPrefixWithString:@"a" options:0]; + PASS_EQUAL(result, @"a", "common prefix of 'abc' and 'a' is 'a'"); + + result = [@"abc" commonPrefixWithString:@"aöç" options:0]; + PASS_EQUAL(result, @"a", "common prefix of 'abc' and 'aöç' is 'a'"); + + result = [@"" commonPrefixWithString:@"abc" options:0]; + PASS_EQUAL(result, @"", "common prefix with an empty base string is empty"); + + result = [@"abc" commonPrefixWithString:@"abcx" options:0]; + PASS_EQUAL(result, @"abc", "common prefix of 'abc' and 'abcx' is 'abc'"); + + [arp drain]; +} + From 4f0a8d60c2d4fa30e76fd7e8bf3752c1ce59a41b Mon Sep 17 00:00:00 2001 From: hmelder Date: Mon, 28 Oct 2024 14:54:37 +0100 Subject: [PATCH 04/21] Add missing return value --- Tests/base/NSString/common_prefix.m | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Tests/base/NSString/common_prefix.m b/Tests/base/NSString/common_prefix.m index 447dc4507..5844281bc 100644 --- a/Tests/base/NSString/common_prefix.m +++ b/Tests/base/NSString/common_prefix.m @@ -35,5 +35,7 @@ int main() PASS_EQUAL(result, @"abc", "common prefix of 'abc' and 'abcx' is 'abc'"); [arp drain]; + + return 0; } From 6eef1c3289806b090e1e45559286a898eb8a9425 Mon Sep 17 00:00:00 2001 From: Hugo Melder Date: Tue, 29 Oct 2024 06:12:34 -0700 Subject: [PATCH 05/21] NSKeyValueCoding: Safe-Caching for -[NSObject valueForKey:] (#445) * KVC Caching Implementation * Do not ignore struct name when comparing type encoding as NSPoint and NSSize have the same layout * Use fast-path when using Objective-C 2 * Guard old ValueForKey function when using the fast-path * Add basic NSKeyValueCoding tests * Update Copyright Years * NSKeyValueCoding+Caching: Add Versioning to IVar Slot * safe_caching: Remove Guards * Add type encoding helper header * Rename geometry structs (NSRect, NSPoint, NSSize) for toll-free bridging with CoreGraphics * Move CG struct definitions to CFCGTypes.h * Update known struct encoding prefixes * Windows 64-bit is LLP64 and not LP64 * Re-order to avoid complier warning --------- Co-authored-by: rfm --- Headers/CoreFoundation/CFCGTypes.h | 126 ++++ Headers/Foundation/NSGeometry.h | 25 +- Headers/Foundation/NSObjCRuntime.h | 13 - Source/Additions/GSObjCRuntime.m | 11 +- Source/GNUmakefile | 13 +- Source/Makefile.postamble | 5 + Source/NSKeyValueCoding+Caching.h | 55 ++ Source/NSKeyValueCoding+Caching.m | 639 +++++++++++++++++++ Source/NSKeyValueCoding.m | 17 +- Source/NSValue.m | 17 +- Source/typeEncodingHelper.h | 60 ++ Tests/base/KVC/safe_caching.m | 56 ++ Tests/base/KVC/search_patterns.m | 191 ++++++ Tests/base/KVC/type_encoding.m | 16 + Tests/base/KVC/types.m | 354 ++++++++++ Tests/base/coding/NSArray.1.32bit | Bin 144 -> 149 bytes Tests/base/coding/NSAttributedString.0.32bit | Bin 173 -> 178 bytes Tests/base/coding/NSCharacterSet.0.32bit | Bin 8445 -> 234 bytes Tests/base/coding/NSCharacterSet.0.64bit | Bin 8410 -> 234 bytes Tests/base/coding/NSData.0.32bit | Bin 249 -> 214 bytes Tests/base/coding/NSDate.1.32bit | Bin 161 -> 166 bytes Tests/base/coding/NSDateFormatter.0.32bit | Bin 183 -> 188 bytes Tests/base/coding/NSDateFormatter.0.64bit | Bin 223 -> 188 bytes Tests/base/coding/NSDictionary.0.32bit | Bin 163 -> 168 bytes Tests/base/coding/NSException.0.32bit | Bin 160 -> 225 bytes Tests/base/coding/NSMutableData.0.32bit | Bin 249 -> 214 bytes Tests/base/coding/NSNotification.0.32bit | Bin 185 -> 190 bytes Tests/base/coding/NSNull.0.32bit | Bin 152 -> 157 bytes Tests/base/coding/NSNumber.0.32bit | Bin 176 -> 181 bytes Tests/base/coding/NSNumber.0.64bit | Bin 181 -> 181 bytes Tests/base/coding/NSObject.0.32bit | Bin 139 -> 144 bytes Tests/base/coding/NSSet.0.32bit | Bin 156 -> 161 bytes Tests/base/coding/NSString.1.32bit | Bin 144 -> 149 bytes Tests/base/coding/NSTableView.3.32bit | Bin 857 -> 0 bytes Tests/base/coding/NSURL.0.32bit | Bin 195 -> 223 bytes Tests/base/coding/NSValue.3.32bit | Bin 196 -> 200 bytes Tests/base/coding/NSValue.3.64bit | Bin 201 -> 200 bytes 37 files changed, 1549 insertions(+), 49 deletions(-) create mode 100644 Headers/CoreFoundation/CFCGTypes.h create mode 100644 Source/NSKeyValueCoding+Caching.h create mode 100644 Source/NSKeyValueCoding+Caching.m create mode 100644 Source/typeEncodingHelper.h create mode 100644 Tests/base/KVC/safe_caching.m create mode 100644 Tests/base/KVC/search_patterns.m create mode 100644 Tests/base/KVC/type_encoding.m create mode 100644 Tests/base/KVC/types.m delete mode 100644 Tests/base/coding/NSTableView.3.32bit diff --git a/Headers/CoreFoundation/CFCGTypes.h b/Headers/CoreFoundation/CFCGTypes.h new file mode 100644 index 000000000..cebc25641 --- /dev/null +++ b/Headers/CoreFoundation/CFCGTypes.h @@ -0,0 +1,126 @@ +/** CFCGTypes.h - CoreFoundation header file for CG types + Copyright (C) 2024 Free Software Foundation, Inc. + + Written by: Hugo Melder + Created: October 2024 + + This file is part of the GNUstep Base Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110 USA. +*/ + +#ifndef _CFCGTypes_h_GNUSTEP_BASE_INCLUDE +#define _CFCGTypes_h_GNUSTEP_BASE_INCLUDE + +#include +#include + +#define CF_DEFINES_CG_TYPES + +#if defined(__has_attribute) && __has_attribute(objc_boxable) +# define CF_BOXABLE __attribute__((objc_boxable)) +#else +# define CF_BOXABLE +#endif + + #if (defined(__LP64__) && __LP64__) || defined(_WIN64) + # define CGFLOAT_TYPE double + # define CGFLOAT_IS_DOUBLE 1 + # define CGFLOAT_MIN DBL_MIN + # define CGFLOAT_MAX DBL_MAX + # define CGFLOAT_EPSILON DBL_EPSILON + #else + # define CGFLOAT_TYPE float + # define CGFLOAT_IS_DOUBLE 0 + # define CGFLOAT_MIN FLT_MIN + # define CGFLOAT_MAX FLT_MAX + # define CGFLOAT_EPSILON FLT_EPSILON + #endif + +typedef CGFLOAT_TYPE CGFloat; +#define CGFLOAT_DEFINED 1 + +struct +CGPoint { + CGFloat x; + CGFloat y; +}; +typedef struct CF_BOXABLE CGPoint CGPoint; + +struct CGSize { + CGFloat width; + CGFloat height; +}; +typedef struct CF_BOXABLE CGSize CGSize; + +#define CGVECTOR_DEFINED 1 + +struct CGVector { + CGFloat dx; + CGFloat dy; +}; +typedef struct CF_BOXABLE CGVector CGVector; + +struct CGRect { + CGPoint origin; + CGSize size; +}; +typedef struct CF_BOXABLE CGRect CGRect; + +enum +{ + CGRectMinXEdge = 0, + CGRectMinYEdge = 1, + CGRectMaxXEdge = 2, + CGRectMaxYEdge = 3 +}; + +typedef struct CGAffineTransform CGAffineTransform; + +struct CGAffineTransform { + CGFloat a, b, c, d; + CGFloat tx, ty; +}; + +#define CF_DEFINES_CGAFFINETRANSFORMCOMPONENTS + +/* |------------------ CGAffineTransformComponents ----------------| + * + * | a b 0 | | sx 0 0 | | 1 0 0 | | cos(t) sin(t) 0 | | 1 0 0 | + * | c d 0 | = | 0 sy 0 | * | sh 1 0 | * |-sin(t) cos(t) 0 | * | 0 1 0 | + * | tx ty 1 | | 0 0 1 | | 0 0 1 | | 0 0 1 | | tx ty 1 | + * CGAffineTransform scale shear rotation translation + */ +typedef struct CGAffineTransformComponents CGAffineTransformComponents; + +struct CGAffineTransformComponents { + + /* Scale factors in X and Y dimensions. Negative values indicate flipping along that axis. */ + CGSize scale; + + /* Shear distortion along the horizontal axis. A value of 0 means no shear. */ + CGFloat horizontalShear; + + /* Rotation angle in radians around the origin. Sign convention may vary + * based on the coordinate system used. */ + CGFloat rotation; + + /* Translation or displacement along the X and Y axes. */ + CGVector translation; +}; + + +#endif // _CFCGTypes_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSGeometry.h b/Headers/Foundation/NSGeometry.h index 4bddb843c..a4bdb9931 100644 --- a/Headers/Foundation/NSGeometry.h +++ b/Headers/Foundation/NSGeometry.h @@ -25,10 +25,12 @@ #ifndef __NSGeometry_h_GNUSTEP_BASE_INCLUDE #define __NSGeometry_h_GNUSTEP_BASE_INCLUDE #import +#import +#ifdef __OBJC__ #import - #import +#endif #if defined(__cplusplus) extern "C" { @@ -56,12 +58,7 @@ extern "C" { CGFloat y; }

Represents a 2-d cartesian position.

*/ -typedef struct _NSPoint NSPoint; -struct _NSPoint -{ - CGFloat x; - CGFloat y; -}; +typedef struct CGPoint NSPoint; #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) /** Array of NSPoint structs. */ @@ -76,12 +73,7 @@ typedef NSPoint *NSPointPointer; CGFloat height; }

Floating point rectangle size.

*/ -typedef struct _NSSize NSSize; -struct _NSSize -{ - CGFloat width; - CGFloat height; -}; +typedef struct CGSize NSSize; #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) /** Array of NSSize structs. */ @@ -97,12 +89,7 @@ typedef NSSize *NSSizePointer; }

Rectangle.

*/ -typedef struct _NSRect NSRect; -struct _NSRect -{ - NSPoint origin; - NSSize size; -}; +typedef struct CGRect NSRect; #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) /** Array of NSRect structs. */ diff --git a/Headers/Foundation/NSObjCRuntime.h b/Headers/Foundation/NSObjCRuntime.h index 2ad90afe2..ca2abb4be 100644 --- a/Headers/Foundation/NSObjCRuntime.h +++ b/Headers/Foundation/NSObjCRuntime.h @@ -101,19 +101,6 @@ typedef uintptr_t NSUInteger; # define NSUIntegerMax UINTPTR_MAX #endif /* !defined(NSINTEGER_DEFINED) */ -#if !defined(CGFLOAT_DEFINED) -#if GS_SIZEOF_VOIDP == 8 -#define CGFLOAT_IS_DBL 1 -typedef double CGFloat; -#define CGFLOAT_MIN DBL_MIN -#define CGFLOAT_MAX DBL_MAX -#else -typedef float CGFloat; -#define CGFLOAT_MIN FLT_MIN -#define CGFLOAT_MAX FLT_MAX -#endif -#endif /* !defined(CGFLOAT_DEFINED) */ - #define NSINTEGER_DEFINED 1 #define CGFLOAT_DEFINED 1 #ifndef NS_AUTOMATED_REFCOUNT_UNAVAILABLE diff --git a/Source/Additions/GSObjCRuntime.m b/Source/Additions/GSObjCRuntime.m index 9b63fe2db..bcbba4018 100644 --- a/Source/Additions/GSObjCRuntime.m +++ b/Source/Additions/GSObjCRuntime.m @@ -48,6 +48,7 @@ #import "../GSPrivate.h" #import "../GSPThread.h" +#import "../typeEncodingHelper.h" #include @@ -1317,7 +1318,8 @@ unsigned long long (*imp)(id, SEL) = break; case _C_STRUCT_B: - if (GSSelectorTypesMatch(@encode(NSPoint), type)) + { + if (IS_CGPOINT_ENCODING(type)) { NSPoint v; @@ -1334,7 +1336,7 @@ unsigned long long (*imp)(id, SEL) = } val = [NSValue valueWithPoint: v]; } - else if (GSSelectorTypesMatch(@encode(NSRange), type)) + else if (IS_NSRANGE_ENCODING(type)) { NSRange v; @@ -1351,7 +1353,7 @@ unsigned long long (*imp)(id, SEL) = } val = [NSValue valueWithRange: v]; } - else if (GSSelectorTypesMatch(@encode(NSRect), type)) + else if (IS_CGRECT_ENCODING(type)) { NSRect v; @@ -1368,7 +1370,7 @@ unsigned long long (*imp)(id, SEL) = } val = [NSValue valueWithRect: v]; } - else if (GSSelectorTypesMatch(@encode(NSSize), type)) + else if (IS_CGSIZE_ENCODING(type)) { NSSize v; @@ -1410,6 +1412,7 @@ unsigned long long (*imp)(id, SEL) = } } break; + } default: #ifdef __GNUSTEP_RUNTIME__ diff --git a/Source/GNUmakefile b/Source/GNUmakefile index d16c9a753..a2c8e2378 100644 --- a/Source/GNUmakefile +++ b/Source/GNUmakefile @@ -359,6 +359,11 @@ NSZone.m \ externs.m \ objc-load.m +ifeq ($(OBJC_RUNTIME_LIB), ng) + BASE_MFILES += \ + NSKeyValueCoding+Caching.m +endif + ifneq ($(GNUSTEP_TARGET_OS), mingw32) ifneq ($(GNUSTEP_TARGET_OS), mingw64) ifneq ($(GNUSTEP_TARGET_OS), windows) @@ -414,6 +419,11 @@ win32-load.h \ NSCallBacks.h \ tzfile.h +# Definitions for toll-free bridging of known structures +# such as NSRect, NSPoint, or NSSize. +COREFOUNDATION_HEADERS = \ +CFCGTypes.h + FOUNDATION_HEADERS = \ Foundation.h \ FoundationErrors.h \ @@ -586,7 +596,8 @@ NSZone.h HEADERS_INSTALL = \ $(OBJECTIVEC2_HEADERS) \ $(GNUSTEPBASE_HEADERS) \ - $(FOUNDATION_HEADERS) + $(FOUNDATION_HEADERS) \ + $(COREFOUNDATION_HEADERS) GENERATED_HFILES = \ dynamic-load.h \ diff --git a/Source/Makefile.postamble b/Source/Makefile.postamble index 0efe23caf..dc09bd72e 100644 --- a/Source/Makefile.postamble +++ b/Source/Makefile.postamble @@ -56,6 +56,11 @@ after-install:: done endif after-install:: + $(MKDIRS) $(GNUSTEP_HEADERS)/CoreFoundation + for file in $(COREFOUNDATION_HEADERS); do \ + $(INSTALL_DATA) ../Headers/CoreFoundation/$$file \ + $(GNUSTEP_HEADERS)/CoreFoundation/$$file ; \ + done $(MKDIRS) $(GNUSTEP_HEADERS)/GNUstepBase for file in $(GNUSTEPBASE_HEADERS); do \ $(INSTALL_DATA) ../Headers/GNUstepBase/$$file \ diff --git a/Source/NSKeyValueCoding+Caching.h b/Source/NSKeyValueCoding+Caching.h new file mode 100644 index 000000000..f5c45fdf4 --- /dev/null +++ b/Source/NSKeyValueCoding+Caching.h @@ -0,0 +1,55 @@ +/** Key-Value Coding Safe Caching Support + Copyright (C) 2024 Free Software Foundation, Inc. + + Written by: Hugo Melder + Created: August 2024 + + This file is part of the GNUstep Base Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110 USA. +*/ + +/** + * It turns out that valueForKey: is a very expensive operation, and a major + * bottleneck for Key-Value Observing and other operations such as sorting + * an array by key. + * + * The accessor search patterns for Key-Value observing are discussed in the + * Apple Key-Value Coding Programming Guide. The return value may be + * encapuslated into an NSNumber or NSValue object, depending on the Objective-C + * type encoding of the return value. This means that once valueForKey: found an + * existing accessor, the Objective-C type encoding of the accessor is + * retrieved. We then go through a huge switch case to determine the right way + * to invoke the IMP and potentially encapsulate the return type. The resulting + * object is then returned. + * The algorithm for setValue:ForKey: is similar. + * + * We can speed this up by caching the IMP of the accessor in a hash table. + * However, without proper versioning, this quickly becomes very dangerous. + * The user might exchange implementations, or add new ones expecting the + * search pattern invariant to still hold. If we clamp onto an IMP, this + * invariant no longer holds. + * + * We will make use of libobjc2's safe caching to avoid this. + * + * Note that the caching is opaque. You will only need to redirect all + * valueForKey: calls to the function below. + */ + +#import "Foundation/NSString.h" + +id +valueForKeyWithCaching(id obj, NSString *aKey); \ No newline at end of file diff --git a/Source/NSKeyValueCoding+Caching.m b/Source/NSKeyValueCoding+Caching.m new file mode 100644 index 000000000..07dc3ec39 --- /dev/null +++ b/Source/NSKeyValueCoding+Caching.m @@ -0,0 +1,639 @@ +/** Key-Value Coding Safe Caching Support. + Copyright (C) 2024 Free Software Foundation, Inc. + + Written by: Hugo Melder + Created: August 2024 + + This file is part of the GNUstep Base Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110 USA. +*/ + +#import +#import +#import + +#import "common.h" // for likely and unlikely +#import "typeEncodingHelper.h" +#import "Foundation/NSKeyValueCoding.h" +#import "Foundation/NSMethodSignature.h" +#import "Foundation/NSValue.h" +#import "Foundation/NSInvocation.h" +#import "NSKeyValueCoding+Caching.h" + + +struct _KVCCacheSlot +{ + Class cls; + SEL selector; + const char *types; + uintptr_t hash; + // The slot version returned by objc_get_slot2. + // Set to zero when this is caching an ivar lookup + uint64_t version; + // If selector is zero, we cache the ivar offset, + // otherwise the IMP of the accessor. + // Use the corresponding get functions below. + union + { + IMP imp; + intptr_t offset; + // Just for readability when checking for emptyness + intptr_t contents; + }; + id (*get)(struct _KVCCacheSlot *, id); +}; + +static inline uintptr_t +_KVCCacheSlotHash(const void *ptr) +{ + struct _KVCCacheSlot *a = (struct _KVCCacheSlot *) ptr; + return (uintptr_t) a->cls ^ (uintptr_t) a->hash; +} + +static inline BOOL +_KVCCacheSlotEqual(const void *ptr1, const void *ptr2) +{ + struct _KVCCacheSlot *a = (struct _KVCCacheSlot *) ptr1; + struct _KVCCacheSlot *b = (struct _KVCCacheSlot *) ptr2; + + return a->cls == b->cls && a->hash == b->hash; +} + +void inline _KVCCacheSlotRelease(const void *ptr) +{ + free((struct _KVCCacheSlot *) ptr); +} + +// We only need a hash table not a map +#define GSI_MAP_HAS_VALUE 0 +#define GSI_MAP_RETAIN_KEY(M, X) +#define GSI_MAP_RELEASE_KEY(M, X) (_KVCCacheSlotRelease(X.ptr)) +#define GSI_MAP_HASH(M, X) (_KVCCacheSlotHash(X.ptr)) +#define GSI_MAP_EQUAL(M, X, Y) (_KVCCacheSlotEqual(X.ptr, Y.ptr)) +#define GSI_MAP_KTYPES GSUNION_PTR +#import "GNUstepBase/GSIMap.h" +#import "GSPThread.h" + +/* + * Templating for poor people: + * We need to call IMP with the correct function signature and box + * the return value accordingly. + */ +#define KVC_CACHE_FUNC(_type, _fnname, _cls, _meth) \ + static id _fnname(struct _KVCCacheSlot *slot, id obj) \ + { \ + _type val = ((_type(*)(id, SEL)) slot->imp)(obj, slot->selector); \ + return [_cls _meth:val]; \ + } +#define KVC_CACHE_IVAR_FUNC(_type, _fnname, _cls, _meth) \ + static id _fnname##ForIvar(struct _KVCCacheSlot *slot, id obj) \ + { \ + _type val = *(_type *) ((char *) obj + slot->offset); \ + return [_cls _meth:val]; \ + } + +#define CACHE_NSNUMBER_GEN_FUNCS(_type, _fnname, _numberMethName) \ + KVC_CACHE_FUNC(_type, _fnname, NSNumber, numberWith##_numberMethName) \ + KVC_CACHE_IVAR_FUNC(_type, _fnname, NSNumber, numberWith##_numberMethName) + +#define CACHE_NSVALUE_GEN_FUNCS(_type, _fnname, _valueMethName) \ + KVC_CACHE_FUNC(_type, _fnname, NSValue, valueWith##_valueMethName) \ + KVC_CACHE_IVAR_FUNC(_type, _fnname, NSValue, valueWith##_valueMethName) + +// Ignore the alignment warning when casting the obj + offset address +// to the proper type. +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcast-align" + +CACHE_NSNUMBER_GEN_FUNCS(char, _getBoxedChar, Char); +CACHE_NSNUMBER_GEN_FUNCS(int, _getBoxedInt, Int); +CACHE_NSNUMBER_GEN_FUNCS(short, _getBoxedShort, Short); +CACHE_NSNUMBER_GEN_FUNCS(long, _getBoxedLong, Long); +CACHE_NSNUMBER_GEN_FUNCS(long long, _getBoxedLongLong, LongLong); +CACHE_NSNUMBER_GEN_FUNCS(unsigned char, _getBoxedUnsignedChar, UnsignedChar); +CACHE_NSNUMBER_GEN_FUNCS(unsigned int, _getBoxedUnsignedInt, UnsignedInt); +CACHE_NSNUMBER_GEN_FUNCS(unsigned short, _getBoxedUnsignedShort, UnsignedShort); +CACHE_NSNUMBER_GEN_FUNCS(unsigned long, _getBoxedUnsignedLong, UnsignedLong); +CACHE_NSNUMBER_GEN_FUNCS(unsigned long long, _getBoxedUnsignedLongLong, + UnsignedLongLong); +CACHE_NSNUMBER_GEN_FUNCS(float, _getBoxedFloat, Float); +CACHE_NSNUMBER_GEN_FUNCS(double, _getBoxedDouble, Double); +CACHE_NSNUMBER_GEN_FUNCS(bool, _getBoxedBool, Bool); + +CACHE_NSVALUE_GEN_FUNCS(NSPoint, _getBoxedNSPoint, Point); +CACHE_NSVALUE_GEN_FUNCS(NSRange, _getBoxedNSRange, Range); +CACHE_NSVALUE_GEN_FUNCS(NSRect, _getBoxedNSRect, Rect); +CACHE_NSVALUE_GEN_FUNCS(NSSize, _getBoxedNSSize, Size); + +static id +_getBoxedId(struct _KVCCacheSlot *slot, id obj) +{ + id val = ((id(*)(id, SEL)) slot->imp)(obj, slot->selector); + return val; +} +static id +_getBoxedIdForIvar(struct _KVCCacheSlot *slot, id obj) +{ + id val = *(id *) ((char *) obj + slot->offset); + return val; +} +static id +_getBoxedClass(struct _KVCCacheSlot *slot, id obj) +{ + Class val = ((Class(*)(id, SEL)) slot->imp)(obj, slot->selector); + return val; +} +static id +_getBoxedClassForIvar(struct _KVCCacheSlot *slot, id obj) +{ + Class val = *(Class *) ((char *) obj + slot->offset); + return val; +} + +// TODO: This can be optimised and is still very expensive +static id +_getBoxedStruct(struct _KVCCacheSlot *slot, id obj) +{ + NSInvocation *inv; + const char *types = slot->types; + NSMethodSignature *sig = [NSMethodSignature signatureWithObjCTypes: types]; + size_t retSize = [sig methodReturnLength]; + char ret[retSize]; + + inv = [NSInvocation invocationWithMethodSignature: sig]; + [inv setSelector: slot->selector]; + [inv invokeWithTarget: obj]; + [inv getReturnValue: ret]; + + return [NSValue valueWithBytes:ret objCType:[sig methodReturnType]]; +} +static id +_getBoxedStructForIvar(struct _KVCCacheSlot *slot, id obj) +{ + const char *end = objc_skip_typespec(slot->types); + size_t length = end - slot->types; + char returnType[length + 1]; + memcpy(returnType, slot->types, length); + returnType[length] = '\0'; + + return [NSValue valueWithBytes:((char *) obj + slot->offset) + objCType:returnType]; +} + +#pragma clang diagnostic pop + +static struct _KVCCacheSlot +_getBoxedBlockForIVar(NSString *key, Ivar ivar) +{ + const char *encoding = ivar_getTypeEncoding(ivar); + struct _KVCCacheSlot slot = {}; + // Return a zeroed out slot. It is the caller's responsibility to call + // valueForUndefinedKey: + if (unlikely(encoding == NULL)) + { + return slot; + } + + slot.offset = ivar_getOffset(ivar); + slot.types = encoding; + // Get the current objc_method_cache_version as we do not explicitly + // request a new slot when looking up ivars. + slot.version = objc_method_cache_version; + + switch (encoding[0]) + { + case '@': { + slot.get = _getBoxedIdForIvar; + return slot; + } + case 'B': { + slot.get = _getBoxedBoolForIvar; + return slot; + } + case 'l': { + slot.get = _getBoxedLongForIvar; + return slot; + } + case 'f': { + slot.get = _getBoxedFloatForIvar; + return slot; + } + case 'd': { + slot.get = _getBoxedDoubleForIvar; + return slot; + } + case 'i': { + slot.get = _getBoxedIntForIvar; + return slot; + } + case 'I': { + slot.get = _getBoxedUnsignedIntForIvar; + return slot; + } + case 'L': { + slot.get = _getBoxedUnsignedLongForIvar; + return slot; + } + case 'q': { + slot.get = _getBoxedLongLongForIvar; + return slot; + } + case 'Q': { + slot.get = _getBoxedUnsignedLongLongForIvar; + return slot; + } + case 'c': { + slot.get = _getBoxedCharForIvar; + return slot; + } + case 's': { + slot.get = _getBoxedShortForIvar; + return slot; + } + case 'C': { + slot.get = _getBoxedUnsignedCharForIvar; + return slot; + } + case 'S': { + slot.get = _getBoxedUnsignedShortForIvar; + return slot; + } + case '#': { + slot.get = _getBoxedClassForIvar; + return slot; + } + case '{': { + if (IS_NSRANGE_ENCODING(encoding)) + { + slot.get = _getBoxedNSRangeForIvar; + return slot; + } + else if (IS_CGRECT_ENCODING(encoding)) + { + slot.get = _getBoxedNSRectForIvar; + return slot; + } + else if (IS_CGPOINT_ENCODING(encoding)) + { + slot.get = _getBoxedNSPointForIvar; + return slot; + } + else if (IS_CGSIZE_ENCODING(encoding)) + { + slot.get = _getBoxedNSSizeForIvar; + return slot; + } + + slot.get = _getBoxedStructForIvar; + return slot; + } + default: + slot.contents = 0; + return slot; + } +} + +static struct _KVCCacheSlot +_getBoxedBlockForMethod(NSString *key, Method method, SEL sel, uint64_t version) +{ + const char *encoding = method_getTypeEncoding(method); + struct _KVCCacheSlot slot = {}; + if (unlikely(encoding == NULL)) + { + // Return a zeroed out slot. It is the caller's responsibility to call + // valueForUndefinedKey: or parse unknown structs (when type encoding + // starts with '{') + return slot; + } + + slot.imp = method_getImplementation(method); + slot.selector = sel; + slot.types = encoding; + slot.version = version; + + // TODO: Move most commonly used types up the switch statement + switch (encoding[0]) + { + case '@': { + slot.get = _getBoxedId; + return slot; + } + case 'B': { + slot.get = _getBoxedBool; + return slot; + } + case 'l': { + slot.get = _getBoxedLong; + return slot; + } + case 'f': { + slot.get = _getBoxedFloat; + return slot; + } + case 'd': { + slot.get = _getBoxedDouble; + return slot; + } + case 'i': { + slot.get = _getBoxedInt; + return slot; + } + case 'I': { + slot.get = _getBoxedUnsignedInt; + return slot; + } + case 'L': { + slot.get = _getBoxedUnsignedLong; + return slot; + } + case 'q': { + slot.get = _getBoxedLongLong; + return slot; + } + case 'Q': { + slot.get = _getBoxedUnsignedLongLong; + return slot; + } + case 'c': { + slot.get = _getBoxedChar; + return slot; + } + case 's': { + slot.get = _getBoxedShort; + return slot; + } + case 'C': { + slot.get = _getBoxedUnsignedChar; + return slot; + } + case 'S': { + slot.get = _getBoxedUnsignedShort; + return slot; + } + case '#': { + slot.get = _getBoxedClass; + return slot; + } + case '{': { + if (IS_NSRANGE_ENCODING(encoding)) + { + slot.get = _getBoxedNSRange; + return slot; + } + else if (IS_CGRECT_ENCODING(encoding)) + { + slot.get = _getBoxedNSRect; + return slot; + } + else if (IS_CGPOINT_ENCODING(encoding)) + { + slot.get = _getBoxedNSPoint; + return slot; + } + else if (IS_CGSIZE_ENCODING(encoding)) + { + slot.get = _getBoxedNSSize; + return slot; + } + + slot.get = _getBoxedStruct; + return slot; + } + default: + slot.contents = 0; + return slot; + } +} + +// libobjc2 does not offer an API for recursively looking up a slot with +// just the class and a selector. +// The behaviour of this function is similar to that of class_getInstanceMethod +// and recurses into the super classes. Additionally, we ask the class, if it +// can resolve the instance method dynamically by calling -[NSObject +// resolveInstanceMethod:]. +// +// objc_slot2 has the same struct layout as objc_method. +Method _Nullable _class_getMethodRecursive(Class aClass, SEL aSelector, + uint64_t *version) +{ + struct objc_slot2 *slot; + + if (0 == aClass) + { + return NULL; + } + + if (0 == aSelector) + { + return NULL; + } + + // Do a dtable lookup to find out which class the method comes from. + slot = objc_get_slot2(aClass, aSelector, version); + if (NULL != slot) + { + return (Method) slot; + } + + // Ask if class is able to dynamically register this method + if ([aClass resolveInstanceMethod:aSelector]) + { + return (Method) _class_getMethodRecursive(aClass, aSelector, version); + } + + // Recurse into super classes + return (Method) _class_getMethodRecursive(class_getSuperclass(aClass), + aSelector, version); +} + +static struct _KVCCacheSlot +ValueForKeyLookup(Class cls, NSObject *self, NSString *boxedKey, + const char *key, unsigned size) +{ + const char *name; + char buf[size + 5]; + char lo; + char hi; + SEL sel = 0; + Method meth = NULL; + uint64_t version = 0; + struct _KVCCacheSlot slot = {}; + + if (unlikely(size == 0)) + { + return slot; + } + + memcpy(buf, "_get", 4); + memcpy(&buf[4], key, size); + buf[size + 4] = '\0'; + lo = buf[4]; + hi = islower(lo) ? toupper(lo) : lo; + buf[4] = hi; + + // 1.1 Check if the _get accessor method exists + name = &buf[1]; // getKey + sel = sel_registerName(name); + if ((meth = _class_getMethodRecursive(cls, sel, &version)) != NULL) + { + return _getBoxedBlockForMethod(boxedKey, meth, sel, version); + } + + // 1.2 Check if the accessor method exists + buf[4] = lo; + name = &buf[4]; // key + sel = sel_registerName(name); + if ((meth = _class_getMethodRecursive(cls, sel, &version)) != NULL) + { + return _getBoxedBlockForMethod(boxedKey, meth, sel, version); + } + + // 1.3 Check if the is accessor method exists + buf[2] = 'i'; + buf[3] = 's'; + buf[4] = hi; + name = &buf[2]; // isKey + sel = sel_registerName(name); + if ((meth = _class_getMethodRecursive(cls, sel, &version)) != NULL) + { + return _getBoxedBlockForMethod(boxedKey, meth, sel, version); + } + + // 1.4 Check if the _ accessor method exists. Otherwise check + // if we are allowed to access the instance variables directly. + buf[3] = '_'; + buf[4] = lo; + name = &buf[3]; // _key + sel = sel_registerName(name); + if ((meth = _class_getMethodRecursive(cls, sel, &version)) != NULL) + { + return _getBoxedBlockForMethod(boxedKey, meth, sel, version); + } + + // Step 2. and 3. (NSArray and NSSet accessors) are implemented + // in the respective classes. + + // 4. Last try: Ivar access + if ([cls accessInstanceVariablesDirectly] == YES) + { + // 4.1 Check if the _ ivar exists + Ivar ivar = class_getInstanceVariable(cls, name); + if (ivar != NULL) + { // _key + return _getBoxedBlockForIVar(boxedKey, ivar); + } + + // 4.2 Check if the _is ivar exists + buf[1] = '_'; + buf[2] = 'i'; + buf[3] = 's'; + buf[4] = hi; + name = &buf[1]; // _isKey + ivar = class_getInstanceVariable(cls, name); + if (ivar != NULL) + { + return _getBoxedBlockForIVar(boxedKey, ivar); + } + + // 4.3 Check if the ivar exists + buf[4] = lo; + name = &buf[4]; // key + ivar = class_getInstanceVariable(cls, name); + if (ivar != NULL) + { + return _getBoxedBlockForIVar(boxedKey, ivar); + } + + // 4.4 Check if the is ivar exists + buf[4] = hi; + name = &buf[2]; // isKey + ivar = class_getInstanceVariable(cls, name); + if (ivar != NULL) + { + return _getBoxedBlockForIVar(boxedKey, ivar); + } + } + + return slot; +} + +id +valueForKeyWithCaching(id obj, NSString *aKey) +{ + struct _KVCCacheSlot *cachedSlot = NULL; + GSIMapNode node = NULL; + static GSIMapTable_t cacheTable = {}; + static gs_mutex_t cacheTableLock = GS_MUTEX_INIT_STATIC; + + Class cls = object_getClass(obj); + // Fill out the required fields for hashing + struct _KVCCacheSlot slot = {.cls = cls, .hash = [aKey hash]}; + + GS_MUTEX_LOCK(cacheTableLock); + if (cacheTable.zone == 0) + { + // TODO: Tweak initial capacity + GSIMapInitWithZoneAndCapacity(&cacheTable, NSDefaultMallocZone(), 64); + } + node = GSIMapNodeForKey(&cacheTable, (GSIMapKey) (void *) &slot); + GS_MUTEX_UNLOCK(cacheTableLock); + + if (node == NULL) + { + // Lookup the getter + slot + = ValueForKeyLookup(cls, obj, aKey, [aKey UTF8String], [aKey length]); + if (slot.contents != 0) + { + slot.cls = cls; + slot.hash = [aKey hash]; + + // Copy slot to heap + cachedSlot + = (struct _KVCCacheSlot *) malloc(sizeof(struct _KVCCacheSlot)); + memcpy(cachedSlot, &slot, sizeof(struct _KVCCacheSlot)); + + GS_MUTEX_LOCK(cacheTableLock); + node = GSIMapAddKey(&cacheTable, (GSIMapKey) (void *) cachedSlot); + GS_MUTEX_UNLOCK(cacheTableLock); + } + else + { + return [obj valueForUndefinedKey:aKey]; + } + } + cachedSlot = node->key.ptr; + + // Check if a new method was registered. If this is the case, + // the objc_method_cache_version was incremented and we need to update the + // cache. + if (objc_method_cache_version != cachedSlot->version) + { + // Lookup the getter + // TODO: We can optimise this by supplying a hint (return type etc.) + // as it is unlikely, that the return type has changed. + slot + = ValueForKeyLookup(cls, obj, aKey, [aKey UTF8String], [aKey length]); + + // Update entry + GS_MUTEX_LOCK(cacheTableLock); + memcpy(cachedSlot, &slot, sizeof(struct _KVCCacheSlot)); + GS_MUTEX_UNLOCK(cacheTableLock); + } + + return cachedSlot->get(cachedSlot, obj); +} diff --git a/Source/NSKeyValueCoding.m b/Source/NSKeyValueCoding.m index 05e73917e..8e648d62c 100644 --- a/Source/NSKeyValueCoding.m +++ b/Source/NSKeyValueCoding.m @@ -41,6 +41,9 @@ #include "NSKeyValueMutableArray.m" #include "NSKeyValueMutableSet.m" +#if defined(__OBJC2__) +#import "NSKeyValueCoding+Caching.h" +#endif /* this should move into autoconf once it's accepted */ #define WANT_DEPRECATED_KVC_COMPAT 1 @@ -144,6 +147,7 @@ static inline void setupCompat() GSObjCSetVal(self, key, anObject, sel, type, size, off); } +#if !defined(__OBJC2__) static id ValueForKey(NSObject *self, const char *key, unsigned size) { SEL sel = 0; @@ -166,12 +170,12 @@ static id ValueForKey(NSObject *self, const char *key, unsigned size) name = &buf[1]; // getKey sel = sel_getUid(name); - if (sel == 0 || [self respondsToSelector: sel] == NO) + if ([self respondsToSelector: sel] == NO) { buf[4] = lo; name = &buf[4]; // key sel = sel_getUid(name); - if (sel == 0 || [self respondsToSelector: sel] == NO) + if ([self respondsToSelector: sel] == NO) { buf[4] = hi; buf[3] = 's'; @@ -190,13 +194,13 @@ static id ValueForKey(NSObject *self, const char *key, unsigned size) buf[4] = hi; name = buf; // _getKey sel = sel_getUid(name); - if (sel == 0 || [self respondsToSelector: sel] == NO) + if ([self respondsToSelector: sel] == NO) { buf[4] = lo; buf[3] = '_'; name = &buf[3]; // _key sel = sel_getUid(name); - if (sel == 0 || [self respondsToSelector: sel] == NO) + if ([self respondsToSelector: sel] == NO) { sel = 0; } @@ -229,6 +233,7 @@ static id ValueForKey(NSObject *self, const char *key, unsigned size) } return GSObjCGetVal(self, key, sel, type, size, off); } +#endif @implementation NSObject(KeyValueCoding) @@ -513,6 +518,9 @@ - (BOOL) validateValue: (id*)aValue - (id) valueForKey: (NSString*)aKey { + #if defined(__OBJC2__) + return valueForKeyWithCaching(self, aKey); + #else unsigned size = [aKey length] * 8; char key[size + 1]; @@ -521,6 +529,7 @@ - (id) valueForKey: (NSString*)aKey encoding: NSUTF8StringEncoding]; size = strlen(key); return ValueForKey(self, key, size); + #endif } diff --git a/Source/NSValue.m b/Source/NSValue.m index a19aee6be..4dc85f150 100644 --- a/Source/NSValue.m +++ b/Source/NSValue.m @@ -28,6 +28,7 @@ */ #import "common.h" +#import "typeEncodingHelper.h" #import "Foundation/NSValue.h" #import "Foundation/NSCoder.h" #import "Foundation/NSDictionary.h" @@ -411,28 +412,28 @@ - (void) encodeWithCoder: (NSCoder *)coder size = strlen(objctype)+1; [coder encodeValueOfObjCType: @encode(unsigned) at: &size]; [coder encodeArrayOfObjCType: @encode(signed char) count: size at: objctype]; - if (strncmp("{_NSSize=", objctype, 9) == 0) + if (strncmp(CGSIZE_ENCODING_PREFIX, objctype, strlen(CGSIZE_ENCODING_PREFIX)) == 0) { NSSize v = [self sizeValue]; [coder encodeValueOfObjCType: objctype at: &v]; return; } - else if (strncmp("{_NSPoint=", objctype, 10) == 0) + else if (strncmp(CGPOINT_ENCODING_PREFIX, objctype, strlen(CGPOINT_ENCODING_PREFIX)) == 0) { NSPoint v = [self pointValue]; [coder encodeValueOfObjCType: objctype at: &v]; return; } - else if (strncmp("{_NSRect=", objctype, 9) == 0) + else if (strncmp(CGRECT_ENCODING_PREFIX, objctype, strlen(CGRECT_ENCODING_PREFIX)) == 0) { NSRect v = [self rectValue]; [coder encodeValueOfObjCType: objctype at: &v]; return; } - else if (strncmp("{_NSRange=", objctype, 10) == 0) + else if (strncmp(NSRANGE_ENCODING_PREFIX, objctype, strlen(NSRANGE_ENCODING_PREFIX)) == 0) { NSRange v = [self rangeValue]; @@ -480,13 +481,13 @@ - (id) initWithCoder: (NSCoder *)coder [coder decodeArrayOfObjCType: @encode(signed char) count: size at: (void*)objctype]; - if (strncmp("{_NSSize=", objctype, 9) == 0) + if (strncmp(CGSIZE_ENCODING_PREFIX, objctype, strlen(CGSIZE_ENCODING_PREFIX)) == 0) c = [abstractClass valueClassWithObjCType: @encode(NSSize)]; - else if (strncmp("{_NSPoint=", objctype, 10) == 0) + else if (strncmp(CGPOINT_ENCODING_PREFIX, objctype, strlen(CGPOINT_ENCODING_PREFIX)) == 0) c = [abstractClass valueClassWithObjCType: @encode(NSPoint)]; - else if (strncmp("{_NSRect=", objctype, 9) == 0) + else if (strncmp(CGRECT_ENCODING_PREFIX, objctype, strlen(CGRECT_ENCODING_PREFIX)) == 0) c = [abstractClass valueClassWithObjCType: @encode(NSRect)]; - else if (strncmp("{_NSRange=", objctype, 10) == 0) + else if (strncmp(NSRANGE_ENCODING_PREFIX, objctype, strlen(NSRANGE_ENCODING_PREFIX)) == 0) c = [abstractClass valueClassWithObjCType: @encode(NSRange)]; else c = [abstractClass valueClassWithObjCType: objctype]; diff --git a/Source/typeEncodingHelper.h b/Source/typeEncodingHelper.h new file mode 100644 index 000000000..9fc95cdb8 --- /dev/null +++ b/Source/typeEncodingHelper.h @@ -0,0 +1,60 @@ +/** Type-Encoding Helper + Copyright (C) 2024 Free Software Foundation, Inc. + + Written by: Hugo Melder + Created: August 2024 + + This file is part of the GNUstep Base Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110 USA. +*/ + +#ifndef __TYPE_ENCODING_HELPER_H +#define __TYPE_ENCODING_HELPER_H + +/* +* Type-encoding for known structs in Foundation and CoreGraphics. +* From macOS 14.4.1 23E224 arm64: + +* @encoding(NSRect) -> {CGRect={CGPoint=dd}{CGSize=dd}} +* @encoding(CGRect) -> {CGRect={CGPoint=dd}{CGSize=dd}} +* @encoding(NSPoint) -> {CGPoint=dd} +* @encoding(CGPoint) -> {CGPoint=dd} +* @encoding(NSSize) -> {CGSize=dd} +* @encoding(CGSize) -> {CGSize=dd} +* @encoding(NSRange) -> {_NSRange=QQ} +* @encoding(CFRange) -> {?=qq} +* +* Note that NSRange and CFRange are not toll-free bridged. +* You cannot pass a CFRange to +[NSValue valueWithRange:] +* as type encoding is different. +* +* We cannot enforce this using static asserts, as @encode +* is not a constexpr. It is therefore checked in +* Tests/base/KVC/type_encoding.m +*/ + +static const char *CGPOINT_ENCODING_PREFIX = "{CGPoint="; +static const char *CGSIZE_ENCODING_PREFIX = "{CGSize="; +static const char *CGRECT_ENCODING_PREFIX = "{CGRect="; +static const char *NSRANGE_ENCODING_PREFIX = "{_NSRange="; + +#define IS_CGPOINT_ENCODING(encoding) (strncmp(encoding, CGPOINT_ENCODING_PREFIX, strlen(CGPOINT_ENCODING_PREFIX)) == 0) +#define IS_CGSIZE_ENCODING(encoding) (strncmp(encoding, CGSIZE_ENCODING_PREFIX, strlen(CGSIZE_ENCODING_PREFIX)) == 0) +#define IS_CGRECT_ENCODING(encoding) (strncmp(encoding, CGRECT_ENCODING_PREFIX, strlen(CGRECT_ENCODING_PREFIX)) == 0) +#define IS_NSRANGE_ENCODING(encoding) (strncmp(encoding, NSRANGE_ENCODING_PREFIX, strlen(NSRANGE_ENCODING_PREFIX)) == 0) + +#endif /* __TYPE_ENCODING_HELPER_H */ diff --git a/Tests/base/KVC/safe_caching.m b/Tests/base/KVC/safe_caching.m new file mode 100644 index 000000000..41a7dc8a0 --- /dev/null +++ b/Tests/base/KVC/safe_caching.m @@ -0,0 +1,56 @@ +#import +#import +#import + +#import "Testing.h" + +@interface TestClass : NSObject + +- (float)floatVal; +@end + +@implementation TestClass + +- (float)floatVal +{ + return 1.0f; +} +@end + +static float +getFloatValIMP(id receiver, SEL cmd) +{ + return 2.0f; +} + +void +testInstallingNewMethodAfterCaching(void) +{ + TestClass *obj = [TestClass new]; + + START_SET("Installing Methods after initial Cache") + + // Initial lookups + PASS_EQUAL([obj valueForKey:@"floatVal"], [NSNumber numberWithFloat:1.0f], + "Initial lookup has the correct value"); + // Slots are now cached + + // Register getFloatVal which should be used if available according to search + // pattern + SEL sel = sel_registerName("getFloatVal"); + class_addMethod([TestClass class], sel, (IMP) getFloatValIMP, "f@:"); + + PASS_EQUAL([obj valueForKey:@"floatVal"], [NSNumber numberWithFloat:2.0f], + "Slot was correctly invalidated"); + + END_SET("Installing Methods after initial Cache") + + [obj release]; +} + +int +main(int argc, char *argv[]) +{ + testInstallingNewMethodAfterCaching(); + return 0; +} diff --git a/Tests/base/KVC/search_patterns.m b/Tests/base/KVC/search_patterns.m new file mode 100644 index 000000000..1eb4d5f2e --- /dev/null +++ b/Tests/base/KVC/search_patterns.m @@ -0,0 +1,191 @@ +#import +#import + +#import "Testing.h" + +// For ivars: _, _is, , or is, in that order. +// For methods: get, , is, or _ in that order. +@interface SearchOrder : NSObject +{ + long long _longLong; + long long _isLongLong; + long long longLong; + long long isLongLong; + + unsigned char _isUnsignedChar; + unsigned char unsignedChar; + unsigned char isUnsignedChar; + + unsigned int unsignedInt; + unsigned int isUnsignedInt; + + unsigned long isUnsignedLong; +} + +- (instancetype)init; + +- (signed char)getChar; +- (signed char)char; +- (signed char)isChar; +- (signed char)_char; + +- (int)int; +- (int)isInt; +- (int)_int; + +- (short)isShort; +- (short)_short; + +- (long)_long; + +@end + +@implementation SearchOrder + +- (instancetype)init +{ + self = [super init]; + + if (self) + { + _longLong = LLONG_MAX; + _isLongLong = LLONG_MAX - 1; + longLong = LLONG_MAX - 2; + isLongLong = LLONG_MAX - 3; + + _isUnsignedChar = UCHAR_MAX; + unsignedChar = UCHAR_MAX - 1; + isUnsignedChar = UCHAR_MAX - 2; + + unsignedInt = UINT_MAX; + isUnsignedInt = UINT_MAX - 1; + + isUnsignedLong = ULONG_MAX; + } + + return self; +} + +- (signed char)getChar +{ + return SCHAR_MAX; +} +- (signed char)char +{ + return SCHAR_MAX - 1; +} +- (signed char)isChar +{ + return SCHAR_MAX - 2; +} +- (signed char)_char +{ + return SCHAR_MAX - 3; +} + +- (int)int +{ + return INT_MAX; +} +- (int)isInt +{ + return INT_MAX - 1; +} +- (int)_int +{ + return INT_MAX - 2; +} + +- (short)isShort +{ + return SHRT_MAX; +} +- (short)_short +{ + return SHRT_MAX - 1; +} + +- (long)_long +{ + return LONG_MAX; +} + +@end + +@interface SearchOrderNoIvarAccess : NSObject +{ + bool _boolVal; + bool _isBoolVal; + bool boolVal; + bool isBoolVal; +} + +@end + +@implementation SearchOrderNoIvarAccess + ++ (BOOL)accessInstanceVariablesDirectly +{ + return NO; +} + +@end + +static void +testSearchOrder(void) +{ + SearchOrder *so = [SearchOrder new]; + + START_SET("Search Order"); + + PASS_EQUAL([so valueForKey:@"char"], [NSNumber numberWithChar:SCHAR_MAX], + "get is used when available"); + PASS_EQUAL([so valueForKey:@"int"], [NSNumber numberWithInt:INT_MAX], + " is used when get is not available"); + PASS_EQUAL([so valueForKey:@"short"], [NSNumber numberWithShort:SHRT_MAX], + "is is used when get and is not available"); + PASS_EQUAL( + [so valueForKey:@"long"], [NSNumber numberWithLong:LONG_MAX], + "_ is used when get, , and is is not available"); + PASS_EQUAL( + [so valueForKey:@"longLong"], [NSNumber numberWithLongLong:LLONG_MAX], + "_ ivar is used when get, , and is is not available"); + PASS_EQUAL( + [so valueForKey:@"unsignedChar"], + [NSNumber numberWithUnsignedChar:UCHAR_MAX], + "_is ivar is used when get, , and is is not available"); + PASS_EQUAL( + [so valueForKey:@"unsignedInt"], [NSNumber numberWithUnsignedInt:UINT_MAX], + " ivar is used when get, , and is is not available"); + PASS_EQUAL( + [so valueForKey:@"unsignedLong"], + [NSNumber numberWithUnsignedLong:ULONG_MAX], + "is ivar is used when get, , and is is not available"); + + END_SET("Search Order"); + + [so release]; +} + +static void +testIvarAccess(void) +{ + SearchOrderNoIvarAccess *so = [SearchOrderNoIvarAccess new]; + + START_SET("Search Order Ivar Access"); + + PASS_EXCEPTION([so valueForKey:@"boolVal"], NSUndefinedKeyException, + "Does not return protected ivar"); + + END_SET("Search Order Ivar Access"); + + [so release]; +} + +int +main(int argc, char *argv[]) +{ + testSearchOrder(); + testIvarAccess(); + return 0; +} diff --git a/Tests/base/KVC/type_encoding.m b/Tests/base/KVC/type_encoding.m new file mode 100644 index 000000000..2911705d1 --- /dev/null +++ b/Tests/base/KVC/type_encoding.m @@ -0,0 +1,16 @@ +#import + +#import "Testing.h" +#import "../../../Source/typeEncodingHelper.h" + +int main(int argc, char *argv[]) { + START_SET("Known Struct Type Encodings") + + PASS(strncmp(@encode(NSPoint), CGPOINT_ENCODING_PREFIX, strlen(CGPOINT_ENCODING_PREFIX)) == 0, "CGPoint encoding"); + PASS(strncmp(@encode(NSSize), CGSIZE_ENCODING_PREFIX, strlen(CGSIZE_ENCODING_PREFIX)) == 0, "CGSize encoding"); + PASS(strncmp(@encode(NSRect), CGRECT_ENCODING_PREFIX, strlen(CGRECT_ENCODING_PREFIX)) == 0, "CGRect encoding"); + PASS(strncmp(@encode(NSRange), NSRANGE_ENCODING_PREFIX, strlen(NSRANGE_ENCODING_PREFIX)) == 0, "NSRange encoding"); + + END_SET("Known Struct Type Encodings") + return 0; +} diff --git a/Tests/base/KVC/types.m b/Tests/base/KVC/types.m new file mode 100644 index 000000000..3df85e62d --- /dev/null +++ b/Tests/base/KVC/types.m @@ -0,0 +1,354 @@ +#include "GNUstepBase/GSObjCRuntime.h" +#import +#import +#import +#import + +#include "Testing.h" + +/* + * Testing key-value coding on accessors and instance variable + * with all supported types. + * + * Please note that 'Class', `SEL`, unions, and pointer types are + * not coding-compliant on macOS. + */ + +typedef struct +{ + int x; + float y; +} MyStruct; + +@interface ReturnTypes : NSObject +{ + signed char _iChar; + int _iInt; + short _iShort; + long _iLong; + long long _iLongLong; + unsigned char _iUnsignedChar; + unsigned int _iUnsignedInt; + unsigned short _iUnsignedShort; + unsigned long _iUnsignedLong; + unsigned long long _iUnsignedLongLong; + float _iFloat; + double _iDouble; + bool _iBool; + // Not coding-compliant on macOS + // const char *_iCharPtr; + // int *_iIntPtr; + // Class _iCls; + // void *_iUnknownType; // Type encoding: ? + // MyUnion _iMyUnion; + id _iId; + + NSPoint _iNSPoint; + NSRange _iNSRange; + NSRect _iNSRect; + NSSize _iNSSize; + + MyStruct _iMyStruct; +} + +- (instancetype)init; + +- (signed char)mChar; // Type encoding: c +- (int)mInt; // Type encoding: i +- (short)mShort; // Type encoding: s +- (long)mLong; // Type encoding: l +- (long long)mLongLong; // Type encoding: q +- (unsigned char)mUnsignedChar; // Type encoding: C +- (unsigned int)mUnsignedInt; // Type encoding: I +- (unsigned short)mUnsignedShort; // Type encoding: S +- (unsigned long)mUnsignedLong; // Type encoding: L +- (unsigned long long)mUnsignedLongLong; // Type encoding: Q +- (float)mFloat; // Type encoding: f +- (double)mDouble; // Type encoding: d +- (bool)mBool; // Type encoding: B +- (id)mId; // Type encoding: @ + +- (NSPoint)mNSPoint; +- (NSRange)mNSRange; +- (NSRect)mNSRect; +- (NSSize)mNSSize; + +- (MyStruct)mMyStruct; +@end + +@implementation ReturnTypes + +- (instancetype)init +{ + self = [super init]; + if (self) + { + MyStruct my = {.x = 42, .y = 3.14f}; + _iChar = SCHAR_MIN; + _iShort = SHRT_MIN; + _iInt = INT_MIN; + _iLong = LONG_MIN; + _iUnsignedChar = 0; + _iUnsignedInt = 0; + _iUnsignedShort = 0; + _iUnsignedLong = 0; + _iUnsignedLongLong = 0; + _iFloat = 123.4f; + _iDouble = 123.45678; + _iBool = true; + _iId = @"id"; + _iNSPoint = NSMakePoint(1.0, 2.0); + _iNSRange = NSMakeRange(1, 2); + _iNSRect = NSMakeRect(1.0, 2.0, 3.0, 4.0); + _iNSSize = NSMakeSize(1.0, 2.0); + _iMyStruct = my; + } + return self; +} + +- (void)mVoid +{} + +- (signed char)mChar +{ + return SCHAR_MAX; +} + +- (short)mShort +{ + return SHRT_MAX; +} + +- (int)mInt +{ + return INT_MAX; +} + +- (long)mLong +{ + return LONG_MAX; +} + +- (long long)mLongLong +{ + return LLONG_MAX; +} + +- (unsigned char)mUnsignedChar +{ + return UCHAR_MAX; +} + +- (unsigned int)mUnsignedInt +{ + return UINT_MAX; +} + +- (unsigned short)mUnsignedShort +{ + return USHRT_MAX; +} + +- (unsigned long)mUnsignedLong +{ + return ULONG_MAX; +} + +- (unsigned long long)mUnsignedLongLong +{ + return ULLONG_MAX; +} + +- (float)mFloat +{ + return 123.45f; +} + +- (double)mDouble +{ + return 123.456789; +} + +- (bool)mBool +{ + return true; +} + +- (id)mId +{ + return @"id"; +} + +- (NSPoint)mNSPoint +{ + return NSMakePoint(1.0, 2.0); +} + +- (NSRange)mNSRange +{ + return NSMakeRange(1, 2); +} + +- (NSRect)mNSRect +{ + return NSMakeRect(1.0, 2.0, 3.0, 4.0); +} + +- (NSSize)mNSSize +{ + return NSMakeSize(1.0, 2.0); +} + +- (MyStruct)mMyStruct +{ + MyStruct s = {.x = 1, .y = 2.0}; + return s; +} + +@end + +static void +testAccessors(void) +{ + ReturnTypes *rt = [ReturnTypes new]; + + NSPoint p = NSMakePoint(1.0, 2.0); + NSRange r = NSMakeRange(1, 2); + NSRect re = NSMakeRect(1.0, 2.0, 3.0, 4.0); + NSSize s = NSMakeSize(1.0, 2.0); + MyStruct ms = {.x = 1, .y = 2.0}; + + START_SET("Accessors"); + + PASS_EQUAL([rt valueForKey:@"mChar"], [NSNumber numberWithChar:SCHAR_MAX], + "Accessor returns char"); + PASS_EQUAL([rt valueForKey:@"mInt"], [NSNumber numberWithInt:INT_MAX], + "Accessor returns int"); + PASS_EQUAL([rt valueForKey:@"mShort"], [NSNumber numberWithShort:SHRT_MAX], + "Accessor returns short"); + PASS_EQUAL([rt valueForKey:@"mLong"], [NSNumber numberWithLong:LONG_MAX], + "Accessor returns long"); + PASS_EQUAL([rt valueForKey:@"mLongLong"], + [NSNumber numberWithLongLong:LLONG_MAX], + "Accessor returns long long"); + PASS_EQUAL([rt valueForKey:@"mUnsignedChar"], + [NSNumber numberWithUnsignedChar:UCHAR_MAX], + "Accessor returns unsigned char"); + PASS_EQUAL([rt valueForKey:@"mUnsignedInt"], + [NSNumber numberWithUnsignedInt:UINT_MAX], + "Accessor returns unsigned int"); + PASS_EQUAL([rt valueForKey:@"mUnsignedShort"], + [NSNumber numberWithUnsignedShort:USHRT_MAX], + "Accessor returns unsigned short"); + PASS_EQUAL([rt valueForKey:@"mUnsignedLong"], + [NSNumber numberWithUnsignedLong:ULONG_MAX], + "Accessor returns unsigned long"); + PASS_EQUAL([rt valueForKey:@"mUnsignedLongLong"], + [NSNumber numberWithUnsignedLongLong:ULLONG_MAX], + "Accessor returns unsigned long long"); + PASS_EQUAL([rt valueForKey:@"mFloat"], [NSNumber numberWithFloat:123.45f], + "Accessor returns float"); + PASS_EQUAL([rt valueForKey:@"mDouble"], + [NSNumber numberWithDouble:123.456789], "Accessor returns double"); + PASS_EQUAL([rt valueForKey:@"mBool"], [NSNumber numberWithBool:true], + "Accessor returns bool"); + PASS_EQUAL([rt valueForKey:@"mId"], @"id", "Accessor returns id"); + PASS_EQUAL([rt valueForKey:@"mNSPoint"], [NSValue valueWithPoint:p], + "Accessor returns NSPoint"); + PASS_EQUAL([rt valueForKey:@"mNSRange"], [NSValue valueWithRange:r], + "Accessor returns NSRange"); + PASS_EQUAL([rt valueForKey:@"mNSRect"], [NSValue valueWithRect:re], + "Accessor returns NSRect"); + PASS_EQUAL([rt valueForKey:@"mNSSize"], [NSValue valueWithSize:s], + "Accessor returns NSSize"); + PASS_EQUAL([rt valueForKey:@"mMyStruct"], + [NSValue valueWithBytes:&ms objCType:@encode(MyStruct)], + "Accessor returns MyStruct"); + + END_SET("Accessors"); + + [rt release]; +} + +static void +testIvars(void) +{ + ReturnTypes *rt = [ReturnTypes new]; + + NSPoint p = NSMakePoint(1.0, 2.0); + NSRange r = NSMakeRange(1, 2); + NSRect re = NSMakeRect(1.0, 2.0, 3.0, 4.0); + NSSize s = NSMakeSize(1.0, 2.0); + MyStruct ms = {.x = 42, .y = 3.14f}; + + START_SET("Ivars"); + + PASS_EQUAL([rt valueForKey:@"iChar"], [NSNumber numberWithChar:SCHAR_MIN], + "Ivar returns char"); + PASS_EQUAL([rt valueForKey:@"iInt"], [NSNumber numberWithInt:INT_MIN], + "Ivar returns int"); + PASS_EQUAL([rt valueForKey:@"iShort"], [NSNumber numberWithShort:SHRT_MIN], + "Ivar returns short"); + PASS_EQUAL([rt valueForKey:@"iLong"], [NSNumber numberWithLong:LONG_MIN], + "Ivar returns long"); + PASS_EQUAL([rt valueForKey:@"iUnsignedChar"], + [NSNumber numberWithUnsignedChar:0], "Ivar returns unsigned char"); + PASS_EQUAL([rt valueForKey:@"iUnsignedInt"], + [NSNumber numberWithUnsignedInt:0], "Ivar returns unsigned int"); + PASS_EQUAL([rt valueForKey:@"iUnsignedShort"], + [NSNumber numberWithUnsignedShort:0], + "Ivar returns unsigned short"); + PASS_EQUAL([rt valueForKey:@"iUnsignedLong"], + [NSNumber numberWithUnsignedLong:0], "Ivar returns unsigned long"); + PASS_EQUAL([rt valueForKey:@"iUnsignedLongLong"], + [NSNumber numberWithUnsignedLongLong:0], + "Ivar returns unsigned long long"); + PASS_EQUAL([rt valueForKey:@"iFloat"], [NSNumber numberWithFloat:123.4f], + "Ivar returns float"); + PASS_EQUAL([rt valueForKey:@"iDouble"], [NSNumber numberWithDouble:123.45678], + "Ivar returns double"); + PASS_EQUAL([rt valueForKey:@"iBool"], [NSNumber numberWithBool:true], + "Ivar returns bool"); + PASS_EQUAL([rt valueForKey:@"iId"], @"id", "Ivar returns id"); + PASS_EQUAL([rt valueForKey:@"iNSPoint"], [NSValue valueWithPoint:p], + "Ivar returns NSPoint"); + PASS_EQUAL([rt valueForKey:@"iNSRange"], [NSValue valueWithRange:r], + "Ivar returns NSRange"); + PASS_EQUAL([rt valueForKey:@"iNSRect"], [NSValue valueWithRect:re], + "Ivar returns NSRect"); + PASS_EQUAL([rt valueForKey:@"iNSSize"], [NSValue valueWithSize:s], + "Ivar returns NSSize"); + + /* Welcome to another session of: Why GCC ObjC is a buggy mess. + * + * You'd expect that the type encoding of an ivar would be the same as @encode. + * + * Ivar var = class_getInstanceVariable([ReturnTypes class], "_iMyStruct"); + * const char *type = ivar_getTypeEncoding(var); + * NSLog(@"Type encoding of iMyStruct: %s", type); + * + * So type should be equal to @encode(MyStruct) ({?=if}) + * + * On GCC this is not the case. The type encoding of the ivar is {?="x"i"y"f}. + * This leads to failure of the following test. + * + * So mark this as hopeful until we stop supporting buggy compilers. + */ + testHopeful = YES; + PASS_EQUAL([rt valueForKey:@"iMyStruct"], + [NSValue valueWithBytes:&ms objCType:@encode(MyStruct)], + "Ivar returns MyStruct"); + testHopeful = NO; + END_SET("Ivars"); + + [rt release]; +} + +int +main(int argc, char *argv[]) +{ + testAccessors(); + testIvars(); + + return 0; +} diff --git a/Tests/base/coding/NSArray.1.32bit b/Tests/base/coding/NSArray.1.32bit index 1ab019d590975c869340530284c5c455099954a7..f0eb687b8403c41b9ac67e784ccb9220e90b914a 100644 GIT binary patch delta 49 zcmbQhIF(V{-7mDbB(*>xu_!qsvnxu_!qsvnxQS8R-7mDbB(*>xu_!qsvnxu_!qsvnxu_!qsvnf%wX{V*T^lYfKp?svhq@WJ$#@@yaLjH zlAZJEWJlk8Q@hwjzb!db%lg;r6p#GzJeDNIs7aohM2~f5GU`}234sqplo>@`>*nuY zzKZEgG)zl9$flKP(Yr1Ue?Mt6@$de^0N{`CtD$3)3esx3&0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izzz>Ns#+;n9m!NpK-KGRQU=aGbBkkUft5(@RR-~aVb%G@&? diff --git a/Tests/base/coding/NSCharacterSet.0.64bit b/Tests/base/coding/NSCharacterSet.0.64bit index 1f80d50bfb3b8a23ca1e703209931bfd16502706..98f46b9652ca6b8a6fcbc2721a48e7cec88a0a49 100644 GIT binary patch delta 37 hcmccR_=<7DVkrgzCI(Rk1`ve=6q>fPOkS&?3jl^;26q4e literal 8410 zcmeI&y9&ZE6b9han~H-@?sd>Pk>cRy1>E8ge1KS@t)SExMORYi}qUo7Mi4TW5l_M)nFp^Vh^H$0|+kp4jBRyU`_BA!r3$c?hfSMsG&3dt4oOKYT` zZ`|4xu_!qsvn)n=-7mDbB(*>xu_!qsvnxu_!qsvnxu_!qsvnkL8w diff --git a/Tests/base/coding/NSDateFormatter.0.32bit b/Tests/base/coding/NSDateFormatter.0.32bit index e14ef22c89a9556822255cae1c29c3d29f8e6dca..5fac12bfb1c2ea2b974339c9a5c48f012b0f6a37 100644 GIT binary patch delta 49 zcmdnaxQ9{P-7mDbB(*>xu_!qsvnxu_!qsvnxu_!qsvnxu_!qsvnfW4-7mDbB(*>xu_!qsvnxu_!qsvnNBCu;g=Pna;lfZ33Rfx|C2 exTGjEFP(vbfssKCNV2Me2vHEhR9ISCp$Gt)Toqpc diff --git a/Tests/base/coding/NSMutableData.0.32bit b/Tests/base/coding/NSMutableData.0.32bit index fe8b9f6b2eb11cd5a6245054842c1d663785a28a..d1b95222503d658dca9a3b855920c08a48b98227 100644 GIT binary patch delta 86 zcmey#c#ToP-7mDbB(*>xu_!qsvn)n=-7mDbB(*>xu_!qsvnxu_!qsvnxu_!qsvnxu_!qsvnxu_!qsvnxu_!qsvnxu_!qsvnxu_!qsvnkhC<6lnD+@y*Ln#neFem~5 DVRQ@) delta 44 ycmZ3;IEPW(-7mDbB(*>xu_!qsvnxu_!qsvnxu_!qsvn@&Q5M9Z!6US}Aoxx`~z**{Wp%rc>d;%6lP zkX=jhp|pcEUQ2IxwNLwWroLXaX7#eP)%V4<5jc*@cW;krfnydH@@R*MW5FbYq0$p; z%R2yIlEX;pPZvK-)#4uD4SxIu8Np=)nbKd%i>3LtFgFNBasa8))2421vqXT&7!sv} zo5_SSKAWpmQ_qa00CY`{4Y$srsleZFpq%#OWh>kEj1 z91)YLS$4cY#4@G3>DDglIUd8hyMYsl98=^6yad8gmp^c!q%Zu4?WmCPr24Htwcm2* z@F*vS+hK=^k<6&$(`MOFKOzw6HYHb1jftt%IagYhmuA)l=~Y=7G4?@8ACz!?hjL$v z%zM(_lk&M;_*}8K%{J*~EcSg+(FYa0@}ixV)z7(Y)^*4@kb95^l|PyiRSROm)5=XY zk19v-L*<_B`tV%tLw@F8)3mYmf9g#B;A8o>P7gnxu_!qsvnM^7<o6a!^afpU5b`3yxsG5rY!EE`$WfErm+(B delta 88 zcmcc5c$iV#-7mDbB(*>xu_!qsvn*W`v>rXIX*~p>>RKcnWB0y?cnF>owD-;2Qeit7A diff --git a/Tests/base/coding/NSValue.3.32bit b/Tests/base/coding/NSValue.3.32bit index 7975537d112dc0950dcd03cc520e4a8b4f9f3f8e..5ecfc32a7fecbed970d8a8170f9aea0a45cfba64 100644 GIT binary patch delta 63 zcmX@Yc!E*f-7mDbB(*>xu_!qsvnxu_!qsvn%7VPpr4#VFhtn KnF>owD-;0;BoAi* diff --git a/Tests/base/coding/NSValue.3.64bit b/Tests/base/coding/NSValue.3.64bit index 525144f85bf3c536fcb80a9b147b0656f7d2d01a..5ecfc32a7fecbed970d8a8170f9aea0a45cfba64 100644 GIT binary patch delta 20 bcmX@fc!F_4DHo3@0|NsOW3{vU#0F0QII9IP delta 21 ccmX@Xc#?5KDL1bu0|NsuV|Bb=@Wgsg06w|}r~m)} From 156be3ad53461aaf556c8f62543ff36b877509e7 Mon Sep 17 00:00:00 2001 From: rfm Date: Tue, 29 Oct 2024 14:59:43 +0000 Subject: [PATCH 06/21] safety fix in case code incorrectly tries to use the reuslt of forwarding a method to the undo manager. --- ChangeLog | 6 ++++++ Source/NSUndoManager.m | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/ChangeLog b/ChangeLog index 2e58f2885..7ec6b9fac 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,10 @@ +2024-10-29 Richard Frith-Macdonald + + * Source/NSUndoManager.m: set zero/nil return value when forwarding + invocation ... in case calling code tries to use the result. + 2024-10-28 Hugo Melder + * Source/NSString.m: -commonPrefixWithString:options: returns nil when string supplied as first argument is nil. On macOS, the empty string is returned instead. diff --git a/Source/NSUndoManager.m b/Source/NSUndoManager.m index e22de8c11..f0f5f14e0 100644 --- a/Source/NSUndoManager.m +++ b/Source/NSUndoManager.m @@ -429,6 +429,11 @@ - (void) endUndoGrouping */ - (void) forwardInvocation: (NSInvocation*)anInvocation { + NSUInteger size = [[anInvocation methodSignature] methodReturnLength]; + unsigned char v[size]; + + memset(v, '\0', size); + if (_disableCount == 0) { if (_nextTarget == nil) @@ -466,6 +471,8 @@ - (void) forwardInvocation: (NSInvocation*)anInvocation _runLoopGroupingPending = YES; } } + + [anInvocation setReturnValue: (void*)v]; } /** From 67af9faecb74c13c93d164ee82eec2dd4e62529f Mon Sep 17 00:00:00 2001 From: rfm Date: Tue, 29 Oct 2024 16:10:46 +0000 Subject: [PATCH 07/21] fix missing space --- Headers/Foundation/NSObject.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Headers/Foundation/NSObject.h b/Headers/Foundation/NSObject.h index 97f03ea0b..0a994443c 100644 --- a/Headers/Foundation/NSObject.h +++ b/Headers/Foundation/NSObject.h @@ -298,7 +298,7 @@ extern "C" { @end @protocol NSSecureCoding -+ (BOOL)supportsSecureCoding; ++ (BOOL) supportsSecureCoding; @end From fad8d206b95cc4b7e761713f5bce4ded503658fa Mon Sep 17 00:00:00 2001 From: rfm Date: Tue, 29 Oct 2024 16:11:23 +0000 Subject: [PATCH 08/21] Fix for issue 453 --- Source/NSObject.m | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/Source/NSObject.m b/Source/NSObject.m index 992e87ac3..04e795e6e 100644 --- a/Source/NSObject.m +++ b/Source/NSObject.m @@ -2152,26 +2152,6 @@ + (NSZone *) zone return NSDefaultMallocZone(); } -/** - * Called to encode the instance variables of the receiver to aCoder.
- * Subclasses should call the superclass method at the start of their - * own implementation. - */ -- (void) encodeWithCoder: (NSCoder*)aCoder -{ - return; -} - -/** - * Called to intialise instance variables of the receiver from aDecoder.
- * Subclasses should call the superclass method at the start of their - * own implementation. - */ -- (id) initWithCoder: (NSCoder*)aDecoder -{ - return self; -} - + (BOOL) resolveClassMethod: (SEL)name { return NO; From cfc28d82bbf858d12c950f6b36eb5391f460ff68 Mon Sep 17 00:00:00 2001 From: rfm Date: Tue, 29 Oct 2024 16:12:14 +0000 Subject: [PATCH 09/21] NSObject shouldn't support NSCoding --- Tests/base/coding/decoding.m | 1 - 1 file changed, 1 deletion(-) diff --git a/Tests/base/coding/decoding.m b/Tests/base/coding/decoding.m index 915f870b5..e6e73d032 100644 --- a/Tests/base/coding/decoding.m +++ b/Tests/base/coding/decoding.m @@ -275,7 +275,6 @@ int main(int argc, char **argv) T(NSException) T(NSNotification) T(NSNull) - T(NSObject) T(NSSet) T(NSString) T(NSURL) From fd5ec29bdfe24f760eba98b3f68fa51b37c99c35 Mon Sep 17 00:00:00 2001 From: Hugo Melder Date: Wed, 30 Oct 2024 03:13:28 -0700 Subject: [PATCH 10/21] NSThread: Implement +detatchThreadWithBlock: and -initWithBlock: (#454) * NSThread: Implement +detatchThreadWithBlock: and -initWithBlock: * Remove extraneous include * NSThread: Define GSThreadBlock so that GCC stub impl does not fail * Add missing spaces - trivial style fixup --------- Co-authored-by: rfm --- Headers/Foundation/NSThread.h | 29 +++++++++++++++++++++++++++++ Source/NSThread.m | 35 ++++++++++++++++++++++++++++++++++- 2 files changed, 63 insertions(+), 1 deletion(-) diff --git a/Headers/Foundation/NSThread.h b/Headers/Foundation/NSThread.h index 6f003e2b6..498d78592 100644 --- a/Headers/Foundation/NSThread.h +++ b/Headers/Foundation/NSThread.h @@ -43,6 +43,11 @@ extern "C" { #endif +#if OS_API_VERSION(MAC_OS_X_VERSION_10_12, GS_API_LATEST) +#import +DEFINE_BLOCK_TYPE_NO_ARGS(GSThreadBlock, void); +#endif + /** * This class encapsulates OpenStep threading. See [NSLock] and its * subclasses for handling synchronisation between threads.
@@ -67,6 +72,7 @@ GS_EXPORT_CLASS BOOL _cancelled; BOOL _active; BOOL _finished; + BOOL _targetIsBlock; NSHandler *_exception_handler; // Not retained. NSMutableDictionary *_thread_dictionary; struct autorelease_thread_vars _autorelease_vars; @@ -398,6 +404,29 @@ GS_EXPORT void GSUnregisterCurrentThread (void); #endif +/** + * This category contains convenience + * initialisers and methods for executing + * blocks in different threads and creating + * NSThread objects with a block as entry point. + */ +@interface NSThread (BlockAdditions) + +#if OS_API_VERSION(MAC_OS_X_VERSION_10_12, GS_API_LATEST) +/** + * Detaches a new thread with block as its entry point. + */ ++ (void) detachNewThreadWithBlock: (GSThreadBlock)block; + +/** + * Initialises a NSThread object with block as the + * entry point. + */ +- (instancetype) initWithBlock: (GSThreadBlock)block; +#endif // OS_API_VERSION + +@end + /* * Notification Strings. * NSBecomingMultiThreaded and NSThreadExiting are defined for strict diff --git a/Source/NSThread.m b/Source/NSThread.m index f3ec8d720..860e63876 100644 --- a/Source/NSThread.m +++ b/Source/NSThread.m @@ -1337,7 +1337,15 @@ - (void) main NSStringFromSelector(_cmd)]; } - [_target performSelector: _selector withObject: _arg]; + if (_targetIsBlock) + { + GSThreadBlock block = (GSThreadBlock)_target; + CALL_BLOCK_NO_ARGS(block); + } + else + { + [_target performSelector: _selector withObject: _arg]; + } } - (NSString*) name @@ -2414,6 +2422,31 @@ - (void) performSelectorInBackground: (SEL)aSelector @end +@implementation NSThread (BlockAdditions) + ++ (void) detachNewThreadWithBlock: (GSThreadBlock)block +{ + NSThread *thread; + + thread = [[NSThread alloc] initWithBlock: block]; + [thread start]; + + RELEASE(thread); +} + +- (instancetype) initWithBlock: (GSThreadBlock)block +{ + if (nil != (self = [self init])) + { + _targetIsBlock = YES; + /* Copy block to heap */ + _target = _Block_copy(block); + } + return self; +} + +@end + /** *

* This function is provided to let threads started by some other From cac43f7bfc2f6142a80ecab595d92619472a0227 Mon Sep 17 00:00:00 2001 From: Riccardo Mottola Date: Thu, 31 Oct 2024 02:13:24 +0100 Subject: [PATCH 11/21] Revert "Implement NSDate as a small object (tagged pointer) - clang/libobjc2 only (#451)" because of GUI breakage: apps hang when loading NSMenu This reverts commit 8fd2c06ddd5f9e54c6e548a0742f6358364df93c. --- ChangeLog | 17 +- Source/NSCalendarDate.m | 9 +- Source/NSDate.m | 1194 ++++++++++------------------ Source/NSDatePrivate.h | 41 - Source/NSTimer.m | 7 +- Tests/base/NSFileManager/general.m | 3 +- 6 files changed, 438 insertions(+), 833 deletions(-) delete mode 100644 Source/NSDatePrivate.h diff --git a/ChangeLog b/ChangeLog index 7ec6b9fac..a0a6c1902 100644 --- a/ChangeLog +++ b/ChangeLog @@ -15,22 +15,7 @@ * Source/NSFileManager.m: Create an NSError object when we fail to copy because the destination item already exists. -2024-10-10: Hugo Melder - - * Source/NSDate.m: - * Source/NSDatePrivate.h: - NSDate is now a small object in slot 6, when configuring GNUstep with the - clang/libobjc2 toolchain. This is done by compressing the binary64 fp - holding the seconds since reference date (because someone at Apple thought - it would be a good idea to represent a time interval as a fp). Note that - this assumes that IEEE 754 is used. - * Source/NSCalendarDate.m: - Remove access to the NSDate private concrete Class - and implement -timeIntervalSinceReferenceDate instead. - Previously, all methods of the concrete date class were - added to NSCalendarDate via GSObjCAddClassBehavior. - -2024-23-09: Hugo Melder +2024-09-23: Hugo Melder * Headers/Foundation/NSThread.h: * Source/NSString.m: diff --git a/Source/NSCalendarDate.m b/Source/NSCalendarDate.m index 5f8a52abc..895248e37 100644 --- a/Source/NSCalendarDate.m +++ b/Source/NSCalendarDate.m @@ -58,6 +58,9 @@ @interface GSTimeZone : NSObject // Help the compiler @class GSAbsTimeZone; @interface GSAbsTimeZone : NSObject // Help the compiler @end +@class NSGDate; +@interface NSGDate : NSObject // Help the compiler +@end #define DISTANT_FUTURE 63113990400.0 @@ -393,6 +396,7 @@ + (void) initialize absAbrIMP = (NSString* (*)(id,SEL,id)) [absClass instanceMethodForSelector: abrSEL]; + GSObjCAddClassBehavior(self, [NSGDate class]); [pool release]; } } @@ -459,11 +463,6 @@ + (id) dateWithYear: (NSInteger)year return AUTORELEASE(d); } -- (NSTimeInterval) timeIntervalSinceReferenceDate -{ - return _seconds_since_ref; -} - /** * Creates and returns a new NSCalendarDate object by taking the * value of the receiver and adding the interval in seconds specified. diff --git a/Source/NSDate.m b/Source/NSDate.m index b71bbb65f..5f632f0ca 100644 --- a/Source/NSDate.m +++ b/Source/NSDate.m @@ -1,11 +1,10 @@ /** Implementation for NSDate for GNUStep - Copyright (C) 2024 Free Software Foundation, Inc. + Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. Written by: Jeremy Bettis Rewritten by: Scott Christley + Date: March 1995 Modifications by: Richard Frith-Macdonald - Small Object Optimization by: Hugo Melder - Date: September 2024 This file is part of the GNUstep Base Library. @@ -40,13 +39,9 @@ #import "Foundation/NSScanner.h" #import "Foundation/NSTimeZone.h" #import "Foundation/NSUserDefaults.h" -#import "Foundation/NSHashTable.h" #import "GNUstepBase/GSObjCRuntime.h" #import "GSPrivate.h" -#import "GSPThread.h" - -#import "NSDatePrivate.h" #include @@ -56,598 +51,41 @@ /* On older Solaris we don't have NAN nor nan() */ #if defined(__sun) && defined(__SVR4) && !defined(NAN) -#define NAN 0x7fffffffffffffff -#endif - -GS_DECLARE const NSTimeInterval NSTimeIntervalSince1970 = 978307200.0; - -static BOOL debug = NO; -static Class abstractClass = nil; -static Class concreteClass = nil; -static Class calendarClass = nil; - -static gs_mutex_t classLock = GS_MUTEX_INIT_STATIC; - -// Singleton instances for distantPast and distantFuture -static id _distantPast = nil; -static id _distantFuture = nil; - -/** - * Compression of IEEE 754 double-precision floating-point numbers - * - * libobjc2 just like Apple's Objective-C runtime implement small - * object classes, or tagged pointers in the case of Apple's runtime, - * to store a 60-bit payload and 4-bit metadata in a 64-bit pointer. - * This avoids constructing a full object on the heap. - * - * NSDate stores the time as a double-precision floating-point number - * representing the number of seconds since the reference date, the - * Cocoa epoch (2001-01-01 00:00:00 UTC). This is a 64-bit value. - * This poses a problem for small object classes, as the time value - * is too large to fit in the 60-bit payload. - * - * To solve this problem, we look at the range of values that we - * need to acurately represent. Idealy, this would include dates - * before distant past and beyond distant future. - * - * After poking around with __NSTaggedDate, here is the algorithm - * for constructing its payload: - * - * Sign and mantissa are not touched. The exponent is compressed. - * Compression: - * 1. Take the 11-bit unsigned exponent and sign-extend it to a 64-bit signed integer. - * 2. Subtract a new secondary bias of 0x3EF from the exponent. - * 3. Truncate the result to a 7-bit signed integer. - * - * The order of operations is important. The biased exponent of a - * double-precision floating-point number is in range [0, 2047] (including - * special values). Sign-extending and subtracting the secondary bias results - * in a value in range [-1007, 1040]. Truncating this to a 7-bit signed integer - * further reduces the range to [-64, 63]. - * - * When unbiasing the compressed 7-bit signed exponent with 0x3EF, we - * get a biased exponent in range [943, 1070]. We have effectively shifted - * the value range in order to represent values from - * (-1)^0 * 2^(943 - 1023) * 1.048576 = 8.673617379884035e-25 - * to (-1)^0 * 2^(1070 - 1023) * 1.048576 = 147573952589676.4 - * - * This encodes all dates for a few million years beyond distantPast and - * distantFuture, except within about 1e-25 second of the reference date. - * - * So how does decompression work? - * 1. Sign extend the 7-bit signed exponent to a 64-bit signed integer. - * 2. Add the secondary bias of 0x3EF to the exponent. - * 3. Cast the result to an unsigned 11-bit integer. - * - * Note that we only use the least-significant 3-bits for the tag in - * libobjc2, contrary to Apple's runtime which uses the most-significant - * 4-bits. - * - * We'll thus use 8-bits for the exponent. - */ - -#if USE_SMALL_DATE - -// 1-5 are already used by NSNumber and GSString -#define SMALL_DATE_MASK 6 -#define EXPONENT_BIAS 0x3EF - -#define GET_INTERVAL(obj) decompressTimeInterval((uintptr_t)obj) -#define SET_INTERVAL(obj, interval) (obj = (id)(compressTimeInterval(interval) | SMALL_DATE_MASK)) - -#define IS_CONCRETE_CLASS(obj) isSmallDate(obj) - -#define CREATE_SMALL_DATE(interval) (id)(compressTimeInterval(interval) | SMALL_DATE_MASK) - -union CompressedDouble { - uintptr_t data; - struct { - uintptr_t tag : 3; // placeholder for tag bits - uintptr_t fraction : 52; - intptr_t exponent : 8; // signed! - uintptr_t sign : 1; - }; -}; - -union DoubleBits { - double val; - struct { - uintptr_t fraction : 52; - uintptr_t exponent : 11; - uintptr_t sign : 1; - }; -}; - -static __attribute__((always_inline)) uintptr_t compressTimeInterval(NSTimeInterval interval) { - union CompressedDouble c; - union DoubleBits db; - intptr_t exponent; - - db.val = interval; - c.fraction = db.fraction; - c.sign = db.sign; - - // 1. Cast 11-bit unsigned exponent to 64-bit signed - exponent = db.exponent; - // 2. Subtract secondary Bias first - exponent -= EXPONENT_BIAS; - // 3. Truncate to 8-bit signed - c.exponent = exponent; - c.tag = 0; - - return c.data; -} - -static __attribute__((always_inline)) NSTimeInterval decompressTimeInterval(uintptr_t compressed) { - union CompressedDouble c; - union DoubleBits d; - intptr_t biased_exponent; - - c.data = compressed; - d.fraction = c.fraction; - d.sign = c.sign; - - // 1. Sign Extend 8-bit to 64-bit - biased_exponent = c.exponent; - // 2. Add secondary Bias - biased_exponent += 0x3EF; - // Cast to 11-bit unsigned exponent - d.exponent = biased_exponent; - - return d.val; -} - -static __attribute__((always_inline)) BOOL isSmallDate(id obj) { - // Do a fast check if the object is also a small date. - // libobjc2 guarantees that the classes are 16-byte (word) aligned. - #pragma clang diagnostic push - #pragma clang diagnostic ignored "-Wdeprecated-objc-pointer-introspection" - return !!((uintptr_t)obj & SMALL_DATE_MASK); - #pragma clang diagnostic pop -} - -// Populated in +[GSSmallDate load] -static BOOL useSmallDate; - - -#else -#define GET_INTERVAL(obj) ((NSGDate*)obj)->_seconds_since_ref -#define SET_INTERVAL(obj, interval) (((NSGDate*)obj)->_seconds_since_ref = interval) - -#define IS_CONCRETE_CLASS(obj) ([obj isKindOfClass: concreteClass]) - -@interface GSDateSingle : NSGDate -@end - -@interface GSDatePast : GSDateSingle -@end - -@interface GSDateFuture : GSDateSingle -@end - -#endif - -@implementation DATE_CONCRETE_CLASS_NAME - -#if USE_SMALL_DATE - -+ (void) load -{ - useSmallDate = objc_registerSmallObjectClass_np(self, SMALL_DATE_MASK); - // If this fails, someone else has already registered a small object class for this slot. - if (unlikely(useSmallDate == NO)) - { - [NSException raise: NSInternalInconsistencyException format: @"Failed to register GSSmallDate small object class"]; - } -} - -// Overwrite default memory management methods - -+ (id) alloc -{ - return (id)SMALL_DATE_MASK; -} - -+ (id) allocWithZone: (NSZone*)aZone -{ - return (id)SMALL_DATE_MASK; -} - -- (id) copy -{ - return self; -} - -- (id) copyWithZone: (NSZone*)aZone -{ - return self; -} - -- (id) retain -{ - return self; -} - -- (NSUInteger) retainCount -{ - return UINT_MAX; -} - -- (id) autorelease -{ - return self; -} - -- (oneway void) release -{ - return; -} - -// NSObject(MemoryFootprint) informal protocol - -- (NSUInteger) sizeInBytesExcluding: (NSHashTable*)exclude -{ - if (0 == NSHashGet(exclude, self)) - { - return 0; - } - return 8; -} - -- (NSUInteger) sizeOfContentExcluding: (NSHashTable*)exclude -{ - return 0; -} - -- (NSUInteger) sizeOfInstance -{ - return 0; -} - -#else - -+ (void) initialize -{ - if (self == [NSDate class]) - { - [self setVersion: 1]; - } -} - -#endif - -// NSDate initialization - -- (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs -{ - if (isnan(secs)) - { - [NSException raise: NSInvalidArgumentException - format: @"[%@-%@] interval is not a number", - NSStringFromClass([self class]), NSStringFromSelector(_cmd)]; - } - -#if USE_SMALL_DATE == 0 && GS_SIZEOF_VOIDP == 4 - if (secs <= DISTANT_PAST) - { - secs = DISTANT_PAST; - } - else if (secs >= DISTANT_FUTURE) - { - secs = DISTANT_FUTURE; - } -#endif - -#if USE_SMALL_DATE == 0 - _seconds_since_ref = secs; - return self; -#else - return CREATE_SMALL_DATE(secs); -#endif -} - -- (id) initWithCoder: (NSCoder*)coder -{ - double secondsSinceRef; - if ([coder allowsKeyedCoding]) - { - secondsSinceRef = [coder decodeDoubleForKey: @"NS.time"]; - } - else - { - [coder decodeValueOfObjCType: @encode(NSTimeInterval) - at: &secondsSinceRef]; - } - -#if USE_SMALL_DATE == 0 - _seconds_since_ref = secondsSinceRef; - return self; -#else - return CREATE_SMALL_DATE(secondsSinceRef); -#endif -} - -// NSDate Hashing, Comparison and Equality - -- (NSUInteger) hash -{ - #if USE_SMALL_DATE - return (NSUInteger)self; - #else - return (NSUInteger)GET_INTERVAL(self); - #endif -} - -- (NSComparisonResult) compare: (NSDate*)otherDate -{ - double selfTime = GET_INTERVAL(self); - double otherTime; - - if (otherDate == self) - { - return NSOrderedSame; - } - if (unlikely(otherDate == nil)) - { - [NSException raise: NSInvalidArgumentException - format: @"nil argument for compare:"]; - } - - if (IS_CONCRETE_CLASS(otherDate)) - { - otherTime = GET_INTERVAL(otherDate); - } else { - otherTime = [otherDate timeIntervalSinceReferenceDate]; - } - - if (selfTime > otherTime) - { - return NSOrderedDescending; - } - if (selfTime < otherTime) - { - return NSOrderedAscending; - } - return NSOrderedSame; -} - -- (BOOL) isEqual: (id)other -{ - double selfTime = GET_INTERVAL(self); - double otherTime; - - if (other == self) - { - return YES; - } - - if (IS_CONCRETE_CLASS(other)) - { - otherTime = GET_INTERVAL(other); - } else if ([other isKindOfClass: abstractClass]) - { - otherTime = [other timeIntervalSinceReferenceDate]; - } else { - return NO; - } - - return selfTime == otherTime; -} - -- (BOOL) isEqualToDate: (NSDate*)other -{ - return [self isEqual: other]; -} - -- (NSDate*) laterDate: (NSDate*)otherDate -{ - double selfTime; - double otherTime; - - if (unlikely(otherDate == nil)) - { - [NSException raise: NSInvalidArgumentException - format: @"nil argument for laterDate:"]; - } - - selfTime = GET_INTERVAL(self); - if (IS_CONCRETE_CLASS(otherDate)) - { - otherTime = GET_INTERVAL(otherDate); - } else { - otherTime = [otherDate timeIntervalSinceReferenceDate]; - } - - // If the receiver and anotherDate represent the same date, returns the receiver. - if (selfTime <= otherTime) - { - return otherDate; - } - - return self; -} - -- (NSDate*) earlierDate: (NSDate*)otherDate -{ - double selfTime; - double otherTime; - - if (unlikely(otherDate == nil)) - { - [NSException raise: NSInvalidArgumentException - format: @"nil argument for earlierDate:"]; - } - - selfTime = GET_INTERVAL(self); - if (IS_CONCRETE_CLASS(otherDate)) - { - otherTime = GET_INTERVAL(otherDate); - } else { - otherTime = [otherDate timeIntervalSinceReferenceDate]; - } - - // If the receiver and anotherDate represent the same date, returns the receiver. - if (selfTime >= otherTime) - { - return otherDate; - } - - return self; -} - -- (void) encodeWithCoder: (NSCoder*)coder -{ - double time = GET_INTERVAL(self); - if ([coder allowsKeyedCoding]) - { - [coder encodeDouble:time forKey:@"NS.time"]; - } - else - { - [coder encodeValueOfObjCType: @encode(NSTimeInterval) - at: &time]; - } -} - -// NSDate Accessors - -- (NSTimeInterval) timeIntervalSince1970 -{ - return GET_INTERVAL(self) + NSTimeIntervalSince1970; -} - -- (NSTimeInterval) timeIntervalSinceDate: (NSDate*)otherDate -{ - double otherTime; - if (unlikely(otherDate == nil)) - { - [NSException raise: NSInvalidArgumentException - format: @"nil argument for timeIntervalSinceDate:"]; - } - - if (IS_CONCRETE_CLASS(otherDate)) - { - otherTime = GET_INTERVAL(otherDate); - } else { - otherTime = [otherDate timeIntervalSinceReferenceDate]; - } - - return GET_INTERVAL(self) - otherTime; -} - -- (NSTimeInterval) timeIntervalSinceNow -{ - return GET_INTERVAL(self) - GSPrivateTimeNow(); -} - -- (NSTimeInterval) timeIntervalSinceReferenceDate -{ - return GET_INTERVAL(self); -} - -@end - -#if USE_SMALL_DATE == 0 -/* - * This abstract class represents a date of which there can be only - * one instance. - */ -@implementation GSDateSingle - -+ (void) initialize -{ - if (self == [GSDateSingle class]) - { - [self setVersion: 1]; - GSObjCAddClassBehavior(self, [NSGDate class]); - } -} - -- (id) autorelease -{ - return self; -} - -- (oneway void) release -{ -} - -- (id) retain -{ - return self; -} - -+ (id) allocWithZone: (NSZone*)z -{ - [NSException raise: NSInternalInconsistencyException - format: @"Attempt to allocate fixed date"]; - return nil; -} - -- (id) copyWithZone: (NSZone*)z -{ - return self; -} - -- (void) dealloc -{ - [NSException raise: NSInternalInconsistencyException - format: @"Attempt to deallocate fixed date"]; - GSNOSUPERDEALLOC; -} - -- (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs -{ - return self; -} - -@end - -@implementation GSDatePast - -+ (id) allocWithZone: (NSZone*)z -{ - if (_distantPast == nil) - { - id obj = NSAllocateObject(self, 0, NSDefaultMallocZone()); - - _distantPast = [obj init]; - } - return _distantPast; -} - -- (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs -{ - SET_INTERVAL(self, DISTANT_PAST); - return self; -} +#define NAN 0x7fffffffffffffff +#endif -@end +GS_DECLARE const NSTimeInterval NSTimeIntervalSince1970 = 978307200.0; + -@implementation GSDateFuture +static BOOL debug = NO; +static Class abstractClass = nil; +static Class concreteClass = nil; +static Class calendarClass = nil; -+ (id) allocWithZone: (NSZone*)z +/** + * Our concrete base class - NSCalendar date must share the ivar layout. + */ +@interface NSGDate : NSDate { - if (_distantFuture == nil) - { - id obj = NSAllocateObject(self, 0, NSDefaultMallocZone()); - - _distantFuture = [obj init]; - } - return _distantFuture; +@public + NSTimeInterval _seconds_since_ref; } +@end -- (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs -{ - SET_INTERVAL(self, DISTANT_FUTURE); - return self; -} +@interface GSDateSingle : NSGDate +@end + +@interface GSDatePast : GSDateSingle +@end +@interface GSDateFuture : GSDateSingle @end -#endif // USE_SMALL_DATE == 0 +static id _distantPast = nil; +static id _distantFuture = nil; + static NSString* findInArray(NSArray *array, unsigned pos, NSString *str) { @@ -668,10 +106,17 @@ - (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs static inline NSTimeInterval otherTime(NSDate* other) { - if (unlikely(other == nil)) + Class c; + + if (other == nil) [NSException raise: NSInvalidArgumentException format: @"other time nil"]; - - return [other timeIntervalSinceReferenceDate]; + if (GSObjCIsInstance(other) == NO) + [NSException raise: NSInvalidArgumentException format: @"other time bad"]; + c = object_getClass(other); + if (c == concreteClass || c == calendarClass) + return ((NSGDate*)other)->_seconds_since_ref; + else + return [other timeIntervalSinceReferenceDate]; } /** @@ -690,7 +135,7 @@ + (void) initialize { [self setVersion: 1]; abstractClass = self; - concreteClass = [DATE_CONCRETE_CLASS_NAME class]; + concreteClass = [NSGDate class]; calendarClass = [NSCalendarDate class]; } } @@ -699,11 +144,7 @@ + (id) alloc { if (self == abstractClass) { - #if USE_SMALL_DATE - return [DATE_CONCRETE_CLASS_NAME alloc]; // alloc is overridden to return a small object - #else return NSAllocateObject(concreteClass, 0, NSDefaultMallocZone()); - #endif } return NSAllocateObject(self, 0, NSDefaultMallocZone()); } @@ -712,11 +153,7 @@ + (id) allocWithZone: (NSZone*)z { if (self == abstractClass) { - #if USE_SMALL_DATE - return [DATE_CONCRETE_CLASS_NAME alloc]; // alloc is overridden to return a small object - #else return NSAllocateObject(concreteClass, 0, z); - #endif } return NSAllocateObject(self, 0, z); } @@ -1448,7 +885,8 @@ + (instancetype) dateWithNaturalLanguageString: (NSString*)string } else { - return [self dateWithTimeIntervalSinceReferenceDate: otherTime(theDate)]; + return [self dateWithTimeIntervalSinceReferenceDate: + otherTime(theDate)]; } } @@ -1485,16 +923,7 @@ + (instancetype) distantPast { if (_distantPast == nil) { - GS_MUTEX_LOCK(classLock); - if (_distantPast == nil) - { - #if USE_SMALL_DATE - _distantPast = CREATE_SMALL_DATE(DISTANT_PAST); - #else - _distantPast = [GSDatePast allocWithZone: 0]; - #endif - } - GS_MUTEX_UNLOCK(classLock); + _distantPast = [GSDatePast allocWithZone: 0]; } return _distantPast; } @@ -1503,16 +932,7 @@ + (instancetype) distantFuture { if (_distantFuture == nil) { - GS_MUTEX_LOCK(classLock); - if (_distantFuture == nil) - { - #if USE_SMALL_DATE - _distantFuture = CREATE_SMALL_DATE(DISTANT_FUTURE); - #else - _distantFuture = [GSDateFuture allocWithZone: 0]; - #endif - } - GS_MUTEX_UNLOCK(classLock); + _distantFuture = [GSDateFuture allocWithZone: 0]; } return _distantFuture; } @@ -1591,48 +1011,267 @@ - (NSString*) description return s; } -- (NSString*) descriptionWithCalendarFormat: (NSString*)format - timeZone: (NSTimeZone*)aTimeZone - locale: (NSDictionary*)l +- (NSString*) descriptionWithCalendarFormat: (NSString*)format + timeZone: (NSTimeZone*)aTimeZone + locale: (NSDictionary*)l +{ + // Easiest to just have NSCalendarDate do the work for us + NSString *s; + NSCalendarDate *d = [calendarClass alloc]; + id f; + + d = [d initWithTimeIntervalSinceReferenceDate: otherTime(self)]; + if (!format) + { + f = [d calendarFormat]; + } + else + { + f = format; + } + if (aTimeZone) + { + [d setTimeZone: aTimeZone]; + } + s = [d descriptionWithCalendarFormat: f locale: l]; + RELEASE(d); + return s; +} + +- (NSString *) descriptionWithLocale: (id)locale +{ + // Easiest to just have NSCalendarDate do the work for us + NSString *s; + NSCalendarDate *d = [calendarClass alloc]; + + d = [d initWithTimeIntervalSinceReferenceDate: otherTime(self)]; + s = [d descriptionWithLocale: locale]; + RELEASE(d); + return s; +} + +- (NSDate*) earlierDate: (NSDate*)otherDate +{ + if (otherTime(self) > otherTime(otherDate)) + { + return otherDate; + } + return self; +} + +- (void) encodeWithCoder: (NSCoder*)coder +{ + NSTimeInterval interval = [self timeIntervalSinceReferenceDate]; + + if ([coder allowsKeyedCoding]) + { + [coder encodeDouble: interval forKey: @"NS.time"]; + } + [coder encodeValueOfObjCType: @encode(NSTimeInterval) at: &interval]; +} + +- (NSUInteger) hash +{ + return (NSUInteger)[self timeIntervalSinceReferenceDate]; +} + +- (instancetype) initWithCoder: (NSCoder*)coder +{ + NSTimeInterval interval; + id o; + + if ([coder allowsKeyedCoding]) + { + interval = [coder decodeDoubleForKey: @"NS.time"]; + } + else + { + [coder decodeValueOfObjCType: @encode(NSTimeInterval) at: &interval]; + } + if (interval == DISTANT_PAST) + { + o = RETAIN([abstractClass distantPast]); + } + else if (interval == DISTANT_FUTURE) + { + o = RETAIN([abstractClass distantFuture]); + } + else + { + o = [concreteClass allocWithZone: NSDefaultMallocZone()]; + o = [o initWithTimeIntervalSinceReferenceDate: interval]; + } + DESTROY(self); + return o; +} + +- (instancetype) init +{ + return [self initWithTimeIntervalSinceReferenceDate: GSPrivateTimeNow()]; +} + +- (instancetype) initWithString: (NSString*)description +{ + // Easiest to just have NSCalendarDate do the work for us + NSCalendarDate *d = [calendarClass alloc]; + + d = [d initWithString: description]; + if (nil == d) + { + DESTROY(self); + return nil; + } + else + { + self = [self initWithTimeIntervalSinceReferenceDate: otherTime(d)]; + RELEASE(d); + return self; + } +} + +- (instancetype) initWithTimeInterval: (NSTimeInterval)secsToBeAdded + sinceDate: (NSDate*)anotherDate +{ + if (anotherDate == nil) + { + NSLog(@"initWithTimeInterval:sinceDate: given nil date"); + DESTROY(self); + return nil; + } + // Get the other date's time, add the secs and init thyself + return [self initWithTimeIntervalSinceReferenceDate: + otherTime(anotherDate) + secsToBeAdded]; +} + +- (instancetype) initWithTimeIntervalSince1970: (NSTimeInterval)seconds +{ + return [self initWithTimeIntervalSinceReferenceDate: + seconds - NSTimeIntervalSince1970]; +} + +- (instancetype) initWithTimeIntervalSinceNow: (NSTimeInterval)secsToBeAdded +{ + // Get the current time, add the secs and init thyself + return [self initWithTimeIntervalSinceReferenceDate: + GSPrivateTimeNow() + secsToBeAdded]; +} + +- (instancetype) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs +{ + [self subclassResponsibility: _cmd]; + return self; +} + +- (BOOL) isEqual: (id)other +{ + if (other != nil + && [other isKindOfClass: abstractClass] + && otherTime(self) == otherTime(other)) + { + return YES; + } + return NO; +} + +- (BOOL) isEqualToDate: (NSDate*)other +{ + if (other != nil + && otherTime(self) == otherTime(other)) + { + return YES; + } + return NO; +} + +- (NSDate*) laterDate: (NSDate*)otherDate +{ + if (otherTime(self) < otherTime(otherDate)) + { + return otherDate; + } + return self; +} + +- (id) replacementObjectForPortCoder: (NSPortCoder*)aCoder +{ + if ([aCoder isByref] == NO) + { + return self; + } + return [super replacementObjectForPortCoder: aCoder]; +} + +- (NSTimeInterval) timeIntervalSince1970 +{ + return otherTime(self) + NSTimeIntervalSince1970; +} + +- (NSTimeInterval) timeIntervalSinceDate: (NSDate*)otherDate +{ + if (nil == otherDate) + { +#ifndef NAN + return nan(""); +#else + return NAN; +#endif + } + return otherTime(self) - otherTime(otherDate); +} + +- (NSTimeInterval) timeIntervalSinceNow +{ + return otherTime(self) - GSPrivateTimeNow(); +} + +- (NSTimeInterval) timeIntervalSinceReferenceDate +{ + [self subclassResponsibility: _cmd]; + return 0; +} + +@end + +@implementation NSGDate + ++ (void) initialize +{ + if (self == [NSDate class]) + { + [self setVersion: 1]; + } +} + +- (NSComparisonResult) compare: (NSDate*)otherDate { - // Easiest to just have NSCalendarDate do the work for us - NSString *s; - NSCalendarDate *d = [calendarClass alloc]; - id f; - - d = [d initWithTimeIntervalSinceReferenceDate: otherTime(self)]; - if (!format) + if (otherDate == self) { - f = [d calendarFormat]; + return NSOrderedSame; } - else + if (otherDate == nil) { - f = format; + [NSException raise: NSInvalidArgumentException + format: @"nil argument for compare:"]; } - if (aTimeZone) + if (_seconds_since_ref > otherTime(otherDate)) { - [d setTimeZone: aTimeZone]; + return NSOrderedDescending; } - s = [d descriptionWithCalendarFormat: f locale: l]; - RELEASE(d); - return s; -} - -- (NSString *) descriptionWithLocale: (id)locale -{ - // Easiest to just have NSCalendarDate do the work for us - NSString *s; - NSCalendarDate *d = [calendarClass alloc]; - - d = [d initWithTimeIntervalSinceReferenceDate: otherTime(self)]; - s = [d descriptionWithLocale: locale]; - RELEASE(d); - return s; + if (_seconds_since_ref < otherTime(otherDate)) + { + return NSOrderedAscending; + } + return NSOrderedSame; } - (NSDate*) earlierDate: (NSDate*)otherDate { - if (otherTime(self) > otherTime(otherDate)) + if (otherDate == nil) + { + [NSException raise: NSInvalidArgumentException + format: @"nil argument for earlierDate:"]; + } + if (_seconds_since_ref > otherTime(otherDate)) { return otherDate; } @@ -1641,198 +1280,221 @@ - (NSDate*) earlierDate: (NSDate*)otherDate - (void) encodeWithCoder: (NSCoder*)coder { - NSTimeInterval interval = [self timeIntervalSinceReferenceDate]; - if ([coder allowsKeyedCoding]) { - [coder encodeDouble: interval forKey: @"NS.time"]; + [coder encodeDouble:_seconds_since_ref forKey:@"NS.time"]; + } + else + { + [coder encodeValueOfObjCType: @encode(NSTimeInterval) + at: &_seconds_since_ref]; } - [coder encodeValueOfObjCType: @encode(NSTimeInterval) at: &interval]; } - (NSUInteger) hash { - return (NSUInteger)[self timeIntervalSinceReferenceDate]; + return (unsigned)_seconds_since_ref; } -- (instancetype) initWithCoder: (NSCoder*)coder +- (id) initWithCoder: (NSCoder*)coder { - NSTimeInterval interval; - id o; - if ([coder allowsKeyedCoding]) { - interval = [coder decodeDoubleForKey: @"NS.time"]; + _seconds_since_ref = [coder decodeDoubleForKey: @"NS.time"]; } else { - [coder decodeValueOfObjCType: @encode(NSTimeInterval) at: &interval]; + [coder decodeValueOfObjCType: @encode(NSTimeInterval) + at: &_seconds_since_ref]; } - if (interval == DISTANT_PAST) + return self; +} + +- (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs +{ + if (isnan(secs)) { - o = RETAIN([abstractClass distantPast]); + [NSException raise: NSInvalidArgumentException + format: @"[%@-%@] interval is not a number", + NSStringFromClass([self class]), NSStringFromSelector(_cmd)]; } - else if (interval == DISTANT_FUTURE) + +#if GS_SIZEOF_VOIDP == 4 + if (secs <= DISTANT_PAST) { - o = RETAIN([abstractClass distantFuture]); + secs = DISTANT_PAST; } - else + else if (secs >= DISTANT_FUTURE) { - o = [concreteClass allocWithZone: NSDefaultMallocZone()]; - o = [o initWithTimeIntervalSinceReferenceDate: interval]; + secs = DISTANT_FUTURE; } - DESTROY(self); - return o; +#endif + _seconds_since_ref = secs; + return self; } -- (instancetype) init +- (BOOL) isEqual: (id)other { - return [self initWithTimeIntervalSinceReferenceDate: GSPrivateTimeNow()]; + if (other != nil + && [other isKindOfClass: abstractClass] + && _seconds_since_ref == otherTime(other)) + { + return YES; + } + return NO; } -- (instancetype) initWithString: (NSString*)description +- (BOOL) isEqualToDate: (NSDate*)other { - // Easiest to just have NSCalendarDate do the work for us - NSCalendarDate *d = [calendarClass alloc]; - - d = [d initWithString: description]; - if (nil == d) - { - DESTROY(self); - return nil; - } - else + if (other != nil + && _seconds_since_ref == otherTime(other)) { - self = [self initWithTimeIntervalSinceReferenceDate: otherTime(d)]; - RELEASE(d); - return self; + return YES; } + return NO; } -- (instancetype) initWithTimeInterval: (NSTimeInterval)secsToBeAdded - sinceDate: (NSDate*)anotherDate +- (NSDate*) laterDate: (NSDate*)otherDate { - if (anotherDate == nil) + if (otherDate == nil) { - NSLog(@"initWithTimeInterval:sinceDate: given nil date"); - DESTROY(self); - return nil; + [NSException raise: NSInvalidArgumentException + format: @"nil argument for laterDate:"]; } - // Get the other date's time, add the secs and init thyself - return [self initWithTimeIntervalSinceReferenceDate: otherTime(anotherDate) + secsToBeAdded]; + if (_seconds_since_ref < otherTime(otherDate)) + { + return otherDate; + } + return self; } -- (instancetype) initWithTimeIntervalSince1970: (NSTimeInterval)seconds +- (NSTimeInterval) timeIntervalSince1970 { - return [self initWithTimeIntervalSinceReferenceDate: - seconds - NSTimeIntervalSince1970]; + return _seconds_since_ref + NSTimeIntervalSince1970; } -- (instancetype) initWithTimeIntervalSinceNow: (NSTimeInterval)secsToBeAdded +- (NSTimeInterval) timeIntervalSinceDate: (NSDate*)otherDate { - // Get the current time, add the secs and init thyself - return [self initWithTimeIntervalSinceReferenceDate: - GSPrivateTimeNow() + secsToBeAdded]; + if (otherDate == nil) + { + [NSException raise: NSInvalidArgumentException + format: @"nil argument for timeIntervalSinceDate:"]; + } + return _seconds_since_ref - otherTime(otherDate); } -- (instancetype) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs +- (NSTimeInterval) timeIntervalSinceNow { - [self subclassResponsibility: _cmd]; - return self; + return _seconds_since_ref - GSPrivateTimeNow(); } -- (BOOL) isEqual: (id)other +- (NSTimeInterval) timeIntervalSinceReferenceDate { - if (other == nil) - { - return NO; - } + return _seconds_since_ref; +} - if (self == other) - { - return YES; - } +@end + + + +/* + * This abstract class represents a date of which there can be only + * one instance. + */ +@implementation GSDateSingle - if ([other isKindOfClass: abstractClass]) ++ (void) initialize +{ + if (self == [GSDateSingle class]) { - double selfTime = [self timeIntervalSinceReferenceDate]; - return selfTime == otherTime(other); + [self setVersion: 1]; + GSObjCAddClassBehavior(self, [NSGDate class]); } +} - return NO; +- (id) autorelease +{ + return self; } -- (BOOL) isEqualToDate: (NSDate*)other +- (oneway void) release { - double selfTime; - double otherTime; - if (other == nil) - { - return NO; - } +} - selfTime = [self timeIntervalSinceReferenceDate]; - otherTime = [other timeIntervalSinceReferenceDate]; - if (selfTime == otherTime) - { - return YES; - } +- (id) retain +{ + return self; +} - return NO; ++ (id) allocWithZone: (NSZone*)z +{ + [NSException raise: NSInternalInconsistencyException + format: @"Attempt to allocate fixed date"]; + return nil; } -- (NSDate*) laterDate: (NSDate*)otherDate +- (id) copyWithZone: (NSZone*)z { - double selfTime; - if (otherDate == nil) - { - return nil; - } - - selfTime = [self timeIntervalSinceReferenceDate]; - if (selfTime < otherTime(otherDate)) - { - return otherDate; - } return self; } -- (id) replacementObjectForPortCoder: (NSPortCoder*)aCoder +- (void) dealloc { - if ([aCoder isByref] == NO) - { - return self; - } - return [super replacementObjectForPortCoder: aCoder]; + [NSException raise: NSInternalInconsistencyException + format: @"Attempt to deallocate fixed date"]; + GSNOSUPERDEALLOC; } -- (NSTimeInterval) timeIntervalSince1970 +- (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs { - return otherTime(self) + NSTimeIntervalSince1970; + return self; } -- (NSTimeInterval) timeIntervalSinceDate: (NSDate*)otherDate +@end + + + +@implementation GSDatePast + ++ (id) allocWithZone: (NSZone*)z { - if (nil == otherDate) + if (_distantPast == nil) { -#ifndef NAN - return nan(""); -#else - return NAN; -#endif + id obj = NSAllocateObject(self, 0, NSDefaultMallocZone()); + + _distantPast = [obj init]; } - return [self timeIntervalSinceReferenceDate] - otherTime(otherDate); + return _distantPast; } -- (NSTimeInterval) timeIntervalSinceNow +- (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs { - return [self timeIntervalSinceReferenceDate] - GSPrivateTimeNow(); + _seconds_since_ref = DISTANT_PAST; + return self; } -- (NSTimeInterval) timeIntervalSinceReferenceDate +@end + + +@implementation GSDateFuture + ++ (id) allocWithZone: (NSZone*)z { - [self subclassResponsibility: _cmd]; - return 0; + if (_distantFuture == nil) + { + id obj = NSAllocateObject(self, 0, NSDefaultMallocZone()); + + _distantFuture = [obj init]; + } + return _distantFuture; +} + +- (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs +{ + _seconds_since_ref = DISTANT_FUTURE; + return self; } @end + + diff --git a/Source/NSDatePrivate.h b/Source/NSDatePrivate.h deleted file mode 100644 index 07075d748..000000000 --- a/Source/NSDatePrivate.h +++ /dev/null @@ -1,41 +0,0 @@ -/** NSDate Private Interface - Copyright (C) 2024 Free Software Foundation, Inc. - - Written by: Hugo Melder - - This file is part of the GNUstep Base Library. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. -*/ - -#import - -#if defined(OBJC_SMALL_OBJECT_SHIFT) && (OBJC_SMALL_OBJECT_SHIFT == 3) -#define USE_SMALL_DATE 1 -#define DATE_CONCRETE_CLASS_NAME GSSmallDate -#else -#define USE_SMALL_DATE 0 -#define DATE_CONCRETE_CLASS_NAME NSGDate -#endif - -@interface DATE_CONCRETE_CLASS_NAME : NSDate -#if USE_SMALL_DATE == 0 -{ -@public - NSTimeInterval _seconds_since_ref; -} -#endif -@end \ No newline at end of file diff --git a/Source/NSTimer.m b/Source/NSTimer.m index 1646c124c..1444f46c2 100644 --- a/Source/NSTimer.m +++ b/Source/NSTimer.m @@ -35,8 +35,9 @@ #import "Foundation/NSRunLoop.h" #import "Foundation/NSInvocation.h" -#import "NSDatePrivate.h" - +@class NSGDate; +@interface NSGDate : NSObject // Help the compiler +@end static Class NSDate_class; /** @@ -57,7 +58,7 @@ + (void) initialize { if (self == [NSTimer class]) { - NSDate_class = [DATE_CONCRETE_CLASS_NAME class]; + NSDate_class = [NSGDate class]; } } diff --git a/Tests/base/NSFileManager/general.m b/Tests/base/NSFileManager/general.m index fb2ca6ee4..6acebd310 100644 --- a/Tests/base/NSFileManager/general.m +++ b/Tests/base/NSFileManager/general.m @@ -12,7 +12,7 @@ #ifdef EQ #undef EQ #endif -#define EPSILON (DBL_EPSILON*100) +#define EPSILON (FLT_EPSILON*100) #define EQ(x,y) ((x >= y - EPSILON) && (x <= y + EPSILON)) @interface MyHandler : NSObject @@ -204,7 +204,6 @@ int main() NSTimeInterval ot, nt; ot = [[oa fileCreationDate] timeIntervalSinceReferenceDate]; nt = [[na fileCreationDate] timeIntervalSinceReferenceDate]; - NSLog(@"ot = %f, nt = %f", ot, nt); PASS(EQ(ot, nt), "copy creation date equals original") ot = [[oa fileModificationDate] timeIntervalSinceReferenceDate]; nt = [[na fileModificationDate] timeIntervalSinceReferenceDate]; From cfa3cd34351d0e4ee10c1ef94d66647f9c09ab15 Mon Sep 17 00:00:00 2001 From: rfm Date: Thu, 31 Oct 2024 19:41:37 +0000 Subject: [PATCH 12/21] Fixup equality tests for dates --- Tools/autogsdoc.m | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Tools/autogsdoc.m b/Tools/autogsdoc.m index a8271e7bb..96a275ce4 100644 --- a/Tools/autogsdoc.m +++ b/Tools/autogsdoc.m @@ -1399,7 +1399,7 @@ standard PropertyList format (not the XML format of OS X), using attrs = [mgr fileAttributesAtPath: sfile traverseLink: YES]; d = [attrs fileModificationDate]; - if (sDate == nil || [d earlierDate: sDate] == sDate) + if (sDate == nil || [d earlierDate: sDate] != d) { sDate = d; IF_NO_ARC([[sDate retain] autorelease];) @@ -1427,7 +1427,7 @@ standard PropertyList format (not the XML format of OS X), using attrs = [mgr fileAttributesAtPath: ofile traverseLink: YES]; d = [attrs fileModificationDate]; - if (gDate == nil || [d laterDate: gDate] == gDate) + if (gDate == nil || [d laterDate: gDate] != d) { gDate = d; IF_NO_ARC([[gDate retain] autorelease];) @@ -1439,7 +1439,7 @@ standard PropertyList format (not the XML format of OS X), using } } - if (gDate == nil || [sDate earlierDate: gDate] == gDate) + if (gDate == nil || [sDate earlierDate: gDate] != sDate) { NSArray *modified; @@ -1670,7 +1670,7 @@ standard PropertyList format (not the XML format of OS X), using * unless the project index is already more up to date than * this file (or the gsdoc file does not exist of course). */ - if (gDate != nil && [gDate earlierDate: rDate] == rDate) + if (gDate != nil && [gDate earlierDate: rDate] != gDate) { if (showDependencies == YES) { @@ -2152,7 +2152,7 @@ standard PropertyList format (not the XML format of OS X), using if ([mgr isReadableFileAtPath: gsdocfile] == YES) { - if (hDate == nil || [gDate earlierDate: hDate] == hDate) + if (hDate == nil || [gDate earlierDate: hDate] != gDate) { NSData *d; GSXMLNode *root; From 9978c055df5c143ed8a902ba7e7cc16e2548c6fc Mon Sep 17 00:00:00 2001 From: rfm Date: Fri, 1 Nov 2024 08:43:15 +0000 Subject: [PATCH 13/21] Reapply "Implement NSDate as a small object (tagged pointer) - clang/libobjc2 only (#451)" because of GUI breakage: apps hang when loading NSMenu This reverts commit cac43f7bfc2f6142a80ecab595d92619472a0227. --- ChangeLog | 17 +- Source/NSCalendarDate.m | 9 +- Source/NSDate.m | 1192 ++++++++++++++++++---------- Source/NSDatePrivate.h | 41 + Source/NSTimer.m | 7 +- Tests/base/NSFileManager/general.m | 3 +- 6 files changed, 832 insertions(+), 437 deletions(-) create mode 100644 Source/NSDatePrivate.h diff --git a/ChangeLog b/ChangeLog index a0a6c1902..7ec6b9fac 100644 --- a/ChangeLog +++ b/ChangeLog @@ -15,7 +15,22 @@ * Source/NSFileManager.m: Create an NSError object when we fail to copy because the destination item already exists. -2024-09-23: Hugo Melder +2024-10-10: Hugo Melder + + * Source/NSDate.m: + * Source/NSDatePrivate.h: + NSDate is now a small object in slot 6, when configuring GNUstep with the + clang/libobjc2 toolchain. This is done by compressing the binary64 fp + holding the seconds since reference date (because someone at Apple thought + it would be a good idea to represent a time interval as a fp). Note that + this assumes that IEEE 754 is used. + * Source/NSCalendarDate.m: + Remove access to the NSDate private concrete Class + and implement -timeIntervalSinceReferenceDate instead. + Previously, all methods of the concrete date class were + added to NSCalendarDate via GSObjCAddClassBehavior. + +2024-23-09: Hugo Melder * Headers/Foundation/NSThread.h: * Source/NSString.m: diff --git a/Source/NSCalendarDate.m b/Source/NSCalendarDate.m index 895248e37..5f8a52abc 100644 --- a/Source/NSCalendarDate.m +++ b/Source/NSCalendarDate.m @@ -58,9 +58,6 @@ @interface GSTimeZone : NSObject // Help the compiler @class GSAbsTimeZone; @interface GSAbsTimeZone : NSObject // Help the compiler @end -@class NSGDate; -@interface NSGDate : NSObject // Help the compiler -@end #define DISTANT_FUTURE 63113990400.0 @@ -396,7 +393,6 @@ + (void) initialize absAbrIMP = (NSString* (*)(id,SEL,id)) [absClass instanceMethodForSelector: abrSEL]; - GSObjCAddClassBehavior(self, [NSGDate class]); [pool release]; } } @@ -463,6 +459,11 @@ + (id) dateWithYear: (NSInteger)year return AUTORELEASE(d); } +- (NSTimeInterval) timeIntervalSinceReferenceDate +{ + return _seconds_since_ref; +} + /** * Creates and returns a new NSCalendarDate object by taking the * value of the receiver and adding the interval in seconds specified. diff --git a/Source/NSDate.m b/Source/NSDate.m index 5f632f0ca..b71bbb65f 100644 --- a/Source/NSDate.m +++ b/Source/NSDate.m @@ -1,10 +1,11 @@ /** Implementation for NSDate for GNUStep - Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 2024 Free Software Foundation, Inc. Written by: Jeremy Bettis Rewritten by: Scott Christley - Date: March 1995 Modifications by: Richard Frith-Macdonald + Small Object Optimization by: Hugo Melder + Date: September 2024 This file is part of the GNUstep Base Library. @@ -39,9 +40,13 @@ #import "Foundation/NSScanner.h" #import "Foundation/NSTimeZone.h" #import "Foundation/NSUserDefaults.h" +#import "Foundation/NSHashTable.h" #import "GNUstepBase/GSObjCRuntime.h" #import "GSPrivate.h" +#import "GSPThread.h" + +#import "NSDatePrivate.h" #include @@ -54,38 +59,595 @@ #define NAN 0x7fffffffffffffff #endif -GS_DECLARE const NSTimeInterval NSTimeIntervalSince1970 = 978307200.0; +GS_DECLARE const NSTimeInterval NSTimeIntervalSince1970 = 978307200.0; + +static BOOL debug = NO; +static Class abstractClass = nil; +static Class concreteClass = nil; +static Class calendarClass = nil; + +static gs_mutex_t classLock = GS_MUTEX_INIT_STATIC; + +// Singleton instances for distantPast and distantFuture +static id _distantPast = nil; +static id _distantFuture = nil; + +/** + * Compression of IEEE 754 double-precision floating-point numbers + * + * libobjc2 just like Apple's Objective-C runtime implement small + * object classes, or tagged pointers in the case of Apple's runtime, + * to store a 60-bit payload and 4-bit metadata in a 64-bit pointer. + * This avoids constructing a full object on the heap. + * + * NSDate stores the time as a double-precision floating-point number + * representing the number of seconds since the reference date, the + * Cocoa epoch (2001-01-01 00:00:00 UTC). This is a 64-bit value. + * This poses a problem for small object classes, as the time value + * is too large to fit in the 60-bit payload. + * + * To solve this problem, we look at the range of values that we + * need to acurately represent. Idealy, this would include dates + * before distant past and beyond distant future. + * + * After poking around with __NSTaggedDate, here is the algorithm + * for constructing its payload: + * + * Sign and mantissa are not touched. The exponent is compressed. + * Compression: + * 1. Take the 11-bit unsigned exponent and sign-extend it to a 64-bit signed integer. + * 2. Subtract a new secondary bias of 0x3EF from the exponent. + * 3. Truncate the result to a 7-bit signed integer. + * + * The order of operations is important. The biased exponent of a + * double-precision floating-point number is in range [0, 2047] (including + * special values). Sign-extending and subtracting the secondary bias results + * in a value in range [-1007, 1040]. Truncating this to a 7-bit signed integer + * further reduces the range to [-64, 63]. + * + * When unbiasing the compressed 7-bit signed exponent with 0x3EF, we + * get a biased exponent in range [943, 1070]. We have effectively shifted + * the value range in order to represent values from + * (-1)^0 * 2^(943 - 1023) * 1.048576 = 8.673617379884035e-25 + * to (-1)^0 * 2^(1070 - 1023) * 1.048576 = 147573952589676.4 + * + * This encodes all dates for a few million years beyond distantPast and + * distantFuture, except within about 1e-25 second of the reference date. + * + * So how does decompression work? + * 1. Sign extend the 7-bit signed exponent to a 64-bit signed integer. + * 2. Add the secondary bias of 0x3EF to the exponent. + * 3. Cast the result to an unsigned 11-bit integer. + * + * Note that we only use the least-significant 3-bits for the tag in + * libobjc2, contrary to Apple's runtime which uses the most-significant + * 4-bits. + * + * We'll thus use 8-bits for the exponent. + */ + +#if USE_SMALL_DATE + +// 1-5 are already used by NSNumber and GSString +#define SMALL_DATE_MASK 6 +#define EXPONENT_BIAS 0x3EF + +#define GET_INTERVAL(obj) decompressTimeInterval((uintptr_t)obj) +#define SET_INTERVAL(obj, interval) (obj = (id)(compressTimeInterval(interval) | SMALL_DATE_MASK)) + +#define IS_CONCRETE_CLASS(obj) isSmallDate(obj) + +#define CREATE_SMALL_DATE(interval) (id)(compressTimeInterval(interval) | SMALL_DATE_MASK) + +union CompressedDouble { + uintptr_t data; + struct { + uintptr_t tag : 3; // placeholder for tag bits + uintptr_t fraction : 52; + intptr_t exponent : 8; // signed! + uintptr_t sign : 1; + }; +}; + +union DoubleBits { + double val; + struct { + uintptr_t fraction : 52; + uintptr_t exponent : 11; + uintptr_t sign : 1; + }; +}; + +static __attribute__((always_inline)) uintptr_t compressTimeInterval(NSTimeInterval interval) { + union CompressedDouble c; + union DoubleBits db; + intptr_t exponent; + + db.val = interval; + c.fraction = db.fraction; + c.sign = db.sign; + + // 1. Cast 11-bit unsigned exponent to 64-bit signed + exponent = db.exponent; + // 2. Subtract secondary Bias first + exponent -= EXPONENT_BIAS; + // 3. Truncate to 8-bit signed + c.exponent = exponent; + c.tag = 0; + + return c.data; +} + +static __attribute__((always_inline)) NSTimeInterval decompressTimeInterval(uintptr_t compressed) { + union CompressedDouble c; + union DoubleBits d; + intptr_t biased_exponent; + + c.data = compressed; + d.fraction = c.fraction; + d.sign = c.sign; + + // 1. Sign Extend 8-bit to 64-bit + biased_exponent = c.exponent; + // 2. Add secondary Bias + biased_exponent += 0x3EF; + // Cast to 11-bit unsigned exponent + d.exponent = biased_exponent; + + return d.val; +} + +static __attribute__((always_inline)) BOOL isSmallDate(id obj) { + // Do a fast check if the object is also a small date. + // libobjc2 guarantees that the classes are 16-byte (word) aligned. + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wdeprecated-objc-pointer-introspection" + return !!((uintptr_t)obj & SMALL_DATE_MASK); + #pragma clang diagnostic pop +} + +// Populated in +[GSSmallDate load] +static BOOL useSmallDate; + + +#else +#define GET_INTERVAL(obj) ((NSGDate*)obj)->_seconds_since_ref +#define SET_INTERVAL(obj, interval) (((NSGDate*)obj)->_seconds_since_ref = interval) + +#define IS_CONCRETE_CLASS(obj) ([obj isKindOfClass: concreteClass]) + +@interface GSDateSingle : NSGDate +@end + +@interface GSDatePast : GSDateSingle +@end + +@interface GSDateFuture : GSDateSingle +@end + +#endif + +@implementation DATE_CONCRETE_CLASS_NAME + +#if USE_SMALL_DATE + ++ (void) load +{ + useSmallDate = objc_registerSmallObjectClass_np(self, SMALL_DATE_MASK); + // If this fails, someone else has already registered a small object class for this slot. + if (unlikely(useSmallDate == NO)) + { + [NSException raise: NSInternalInconsistencyException format: @"Failed to register GSSmallDate small object class"]; + } +} + +// Overwrite default memory management methods + ++ (id) alloc +{ + return (id)SMALL_DATE_MASK; +} + ++ (id) allocWithZone: (NSZone*)aZone +{ + return (id)SMALL_DATE_MASK; +} + +- (id) copy +{ + return self; +} + +- (id) copyWithZone: (NSZone*)aZone +{ + return self; +} + +- (id) retain +{ + return self; +} + +- (NSUInteger) retainCount +{ + return UINT_MAX; +} + +- (id) autorelease +{ + return self; +} + +- (oneway void) release +{ + return; +} + +// NSObject(MemoryFootprint) informal protocol + +- (NSUInteger) sizeInBytesExcluding: (NSHashTable*)exclude +{ + if (0 == NSHashGet(exclude, self)) + { + return 0; + } + return 8; +} + +- (NSUInteger) sizeOfContentExcluding: (NSHashTable*)exclude +{ + return 0; +} + +- (NSUInteger) sizeOfInstance +{ + return 0; +} + +#else + ++ (void) initialize +{ + if (self == [NSDate class]) + { + [self setVersion: 1]; + } +} + +#endif + +// NSDate initialization + +- (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs +{ + if (isnan(secs)) + { + [NSException raise: NSInvalidArgumentException + format: @"[%@-%@] interval is not a number", + NSStringFromClass([self class]), NSStringFromSelector(_cmd)]; + } + +#if USE_SMALL_DATE == 0 && GS_SIZEOF_VOIDP == 4 + if (secs <= DISTANT_PAST) + { + secs = DISTANT_PAST; + } + else if (secs >= DISTANT_FUTURE) + { + secs = DISTANT_FUTURE; + } +#endif + +#if USE_SMALL_DATE == 0 + _seconds_since_ref = secs; + return self; +#else + return CREATE_SMALL_DATE(secs); +#endif +} + +- (id) initWithCoder: (NSCoder*)coder +{ + double secondsSinceRef; + if ([coder allowsKeyedCoding]) + { + secondsSinceRef = [coder decodeDoubleForKey: @"NS.time"]; + } + else + { + [coder decodeValueOfObjCType: @encode(NSTimeInterval) + at: &secondsSinceRef]; + } + +#if USE_SMALL_DATE == 0 + _seconds_since_ref = secondsSinceRef; + return self; +#else + return CREATE_SMALL_DATE(secondsSinceRef); +#endif +} + +// NSDate Hashing, Comparison and Equality + +- (NSUInteger) hash +{ + #if USE_SMALL_DATE + return (NSUInteger)self; + #else + return (NSUInteger)GET_INTERVAL(self); + #endif +} + +- (NSComparisonResult) compare: (NSDate*)otherDate +{ + double selfTime = GET_INTERVAL(self); + double otherTime; + + if (otherDate == self) + { + return NSOrderedSame; + } + if (unlikely(otherDate == nil)) + { + [NSException raise: NSInvalidArgumentException + format: @"nil argument for compare:"]; + } + + if (IS_CONCRETE_CLASS(otherDate)) + { + otherTime = GET_INTERVAL(otherDate); + } else { + otherTime = [otherDate timeIntervalSinceReferenceDate]; + } + + if (selfTime > otherTime) + { + return NSOrderedDescending; + } + if (selfTime < otherTime) + { + return NSOrderedAscending; + } + return NSOrderedSame; +} + +- (BOOL) isEqual: (id)other +{ + double selfTime = GET_INTERVAL(self); + double otherTime; + + if (other == self) + { + return YES; + } + + if (IS_CONCRETE_CLASS(other)) + { + otherTime = GET_INTERVAL(other); + } else if ([other isKindOfClass: abstractClass]) + { + otherTime = [other timeIntervalSinceReferenceDate]; + } else { + return NO; + } + + return selfTime == otherTime; +} + +- (BOOL) isEqualToDate: (NSDate*)other +{ + return [self isEqual: other]; +} + +- (NSDate*) laterDate: (NSDate*)otherDate +{ + double selfTime; + double otherTime; + + if (unlikely(otherDate == nil)) + { + [NSException raise: NSInvalidArgumentException + format: @"nil argument for laterDate:"]; + } + + selfTime = GET_INTERVAL(self); + if (IS_CONCRETE_CLASS(otherDate)) + { + otherTime = GET_INTERVAL(otherDate); + } else { + otherTime = [otherDate timeIntervalSinceReferenceDate]; + } + + // If the receiver and anotherDate represent the same date, returns the receiver. + if (selfTime <= otherTime) + { + return otherDate; + } + + return self; +} + +- (NSDate*) earlierDate: (NSDate*)otherDate +{ + double selfTime; + double otherTime; + + if (unlikely(otherDate == nil)) + { + [NSException raise: NSInvalidArgumentException + format: @"nil argument for earlierDate:"]; + } + + selfTime = GET_INTERVAL(self); + if (IS_CONCRETE_CLASS(otherDate)) + { + otherTime = GET_INTERVAL(otherDate); + } else { + otherTime = [otherDate timeIntervalSinceReferenceDate]; + } + + // If the receiver and anotherDate represent the same date, returns the receiver. + if (selfTime >= otherTime) + { + return otherDate; + } + + return self; +} + +- (void) encodeWithCoder: (NSCoder*)coder +{ + double time = GET_INTERVAL(self); + if ([coder allowsKeyedCoding]) + { + [coder encodeDouble:time forKey:@"NS.time"]; + } + else + { + [coder encodeValueOfObjCType: @encode(NSTimeInterval) + at: &time]; + } +} + +// NSDate Accessors + +- (NSTimeInterval) timeIntervalSince1970 +{ + return GET_INTERVAL(self) + NSTimeIntervalSince1970; +} + +- (NSTimeInterval) timeIntervalSinceDate: (NSDate*)otherDate +{ + double otherTime; + if (unlikely(otherDate == nil)) + { + [NSException raise: NSInvalidArgumentException + format: @"nil argument for timeIntervalSinceDate:"]; + } + + if (IS_CONCRETE_CLASS(otherDate)) + { + otherTime = GET_INTERVAL(otherDate); + } else { + otherTime = [otherDate timeIntervalSinceReferenceDate]; + } + + return GET_INTERVAL(self) - otherTime; +} + +- (NSTimeInterval) timeIntervalSinceNow +{ + return GET_INTERVAL(self) - GSPrivateTimeNow(); +} + +- (NSTimeInterval) timeIntervalSinceReferenceDate +{ + return GET_INTERVAL(self); +} + +@end + +#if USE_SMALL_DATE == 0 +/* + * This abstract class represents a date of which there can be only + * one instance. + */ +@implementation GSDateSingle + ++ (void) initialize +{ + if (self == [GSDateSingle class]) + { + [self setVersion: 1]; + GSObjCAddClassBehavior(self, [NSGDate class]); + } +} + +- (id) autorelease +{ + return self; +} + +- (oneway void) release +{ +} + +- (id) retain +{ + return self; +} + ++ (id) allocWithZone: (NSZone*)z +{ + [NSException raise: NSInternalInconsistencyException + format: @"Attempt to allocate fixed date"]; + return nil; +} + +- (id) copyWithZone: (NSZone*)z +{ + return self; +} + +- (void) dealloc +{ + [NSException raise: NSInternalInconsistencyException + format: @"Attempt to deallocate fixed date"]; + GSNOSUPERDEALLOC; +} + +- (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs +{ + return self; +} + +@end + +@implementation GSDatePast + ++ (id) allocWithZone: (NSZone*)z +{ + if (_distantPast == nil) + { + id obj = NSAllocateObject(self, 0, NSDefaultMallocZone()); + + _distantPast = [obj init]; + } + return _distantPast; +} + +- (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs +{ + SET_INTERVAL(self, DISTANT_PAST); + return self; +} + +@end - -static BOOL debug = NO; -static Class abstractClass = nil; -static Class concreteClass = nil; -static Class calendarClass = nil; +@implementation GSDateFuture -/** - * Our concrete base class - NSCalendar date must share the ivar layout. - */ -@interface NSGDate : NSDate ++ (id) allocWithZone: (NSZone*)z { -@public - NSTimeInterval _seconds_since_ref; -} -@end + if (_distantFuture == nil) + { + id obj = NSAllocateObject(self, 0, NSDefaultMallocZone()); -@interface GSDateSingle : NSGDate -@end + _distantFuture = [obj init]; + } + return _distantFuture; +} -@interface GSDatePast : GSDateSingle -@end +- (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs +{ + SET_INTERVAL(self, DISTANT_FUTURE); + return self; +} -@interface GSDateFuture : GSDateSingle @end -static id _distantPast = nil; -static id _distantFuture = nil; +#endif // USE_SMALL_DATE == 0 - static NSString* findInArray(NSArray *array, unsigned pos, NSString *str) { @@ -106,17 +668,10 @@ @interface GSDateFuture : GSDateSingle static inline NSTimeInterval otherTime(NSDate* other) { - Class c; - - if (other == nil) + if (unlikely(other == nil)) [NSException raise: NSInvalidArgumentException format: @"other time nil"]; - if (GSObjCIsInstance(other) == NO) - [NSException raise: NSInvalidArgumentException format: @"other time bad"]; - c = object_getClass(other); - if (c == concreteClass || c == calendarClass) - return ((NSGDate*)other)->_seconds_since_ref; - else - return [other timeIntervalSinceReferenceDate]; + + return [other timeIntervalSinceReferenceDate]; } /** @@ -135,7 +690,7 @@ + (void) initialize { [self setVersion: 1]; abstractClass = self; - concreteClass = [NSGDate class]; + concreteClass = [DATE_CONCRETE_CLASS_NAME class]; calendarClass = [NSCalendarDate class]; } } @@ -144,7 +699,11 @@ + (id) alloc { if (self == abstractClass) { + #if USE_SMALL_DATE + return [DATE_CONCRETE_CLASS_NAME alloc]; // alloc is overridden to return a small object + #else return NSAllocateObject(concreteClass, 0, NSDefaultMallocZone()); + #endif } return NSAllocateObject(self, 0, NSDefaultMallocZone()); } @@ -153,7 +712,11 @@ + (id) allocWithZone: (NSZone*)z { if (self == abstractClass) { + #if USE_SMALL_DATE + return [DATE_CONCRETE_CLASS_NAME alloc]; // alloc is overridden to return a small object + #else return NSAllocateObject(concreteClass, 0, z); + #endif } return NSAllocateObject(self, 0, z); } @@ -885,8 +1448,7 @@ + (instancetype) dateWithNaturalLanguageString: (NSString*)string } else { - return [self dateWithTimeIntervalSinceReferenceDate: - otherTime(theDate)]; + return [self dateWithTimeIntervalSinceReferenceDate: otherTime(theDate)]; } } @@ -923,7 +1485,16 @@ + (instancetype) distantPast { if (_distantPast == nil) { - _distantPast = [GSDatePast allocWithZone: 0]; + GS_MUTEX_LOCK(classLock); + if (_distantPast == nil) + { + #if USE_SMALL_DATE + _distantPast = CREATE_SMALL_DATE(DISTANT_PAST); + #else + _distantPast = [GSDatePast allocWithZone: 0]; + #endif + } + GS_MUTEX_UNLOCK(classLock); } return _distantPast; } @@ -932,7 +1503,16 @@ + (instancetype) distantFuture { if (_distantFuture == nil) { - _distantFuture = [GSDateFuture allocWithZone: 0]; + GS_MUTEX_LOCK(classLock); + if (_distantFuture == nil) + { + #if USE_SMALL_DATE + _distantFuture = CREATE_SMALL_DATE(DISTANT_FUTURE); + #else + _distantFuture = [GSDateFuture allocWithZone: 0]; + #endif + } + GS_MUTEX_UNLOCK(classLock); } return _distantFuture; } @@ -1008,270 +1588,51 @@ - (NSString*) description d = [d initWithTimeIntervalSinceReferenceDate: otherTime(self)]; s = [d description]; RELEASE(d); - return s; -} - -- (NSString*) descriptionWithCalendarFormat: (NSString*)format - timeZone: (NSTimeZone*)aTimeZone - locale: (NSDictionary*)l -{ - // Easiest to just have NSCalendarDate do the work for us - NSString *s; - NSCalendarDate *d = [calendarClass alloc]; - id f; - - d = [d initWithTimeIntervalSinceReferenceDate: otherTime(self)]; - if (!format) - { - f = [d calendarFormat]; - } - else - { - f = format; - } - if (aTimeZone) - { - [d setTimeZone: aTimeZone]; - } - s = [d descriptionWithCalendarFormat: f locale: l]; - RELEASE(d); - return s; -} - -- (NSString *) descriptionWithLocale: (id)locale -{ - // Easiest to just have NSCalendarDate do the work for us - NSString *s; - NSCalendarDate *d = [calendarClass alloc]; - - d = [d initWithTimeIntervalSinceReferenceDate: otherTime(self)]; - s = [d descriptionWithLocale: locale]; - RELEASE(d); - return s; -} - -- (NSDate*) earlierDate: (NSDate*)otherDate -{ - if (otherTime(self) > otherTime(otherDate)) - { - return otherDate; - } - return self; -} - -- (void) encodeWithCoder: (NSCoder*)coder -{ - NSTimeInterval interval = [self timeIntervalSinceReferenceDate]; - - if ([coder allowsKeyedCoding]) - { - [coder encodeDouble: interval forKey: @"NS.time"]; - } - [coder encodeValueOfObjCType: @encode(NSTimeInterval) at: &interval]; -} - -- (NSUInteger) hash -{ - return (NSUInteger)[self timeIntervalSinceReferenceDate]; -} - -- (instancetype) initWithCoder: (NSCoder*)coder -{ - NSTimeInterval interval; - id o; - - if ([coder allowsKeyedCoding]) - { - interval = [coder decodeDoubleForKey: @"NS.time"]; - } - else - { - [coder decodeValueOfObjCType: @encode(NSTimeInterval) at: &interval]; - } - if (interval == DISTANT_PAST) - { - o = RETAIN([abstractClass distantPast]); - } - else if (interval == DISTANT_FUTURE) - { - o = RETAIN([abstractClass distantFuture]); - } - else - { - o = [concreteClass allocWithZone: NSDefaultMallocZone()]; - o = [o initWithTimeIntervalSinceReferenceDate: interval]; - } - DESTROY(self); - return o; -} - -- (instancetype) init -{ - return [self initWithTimeIntervalSinceReferenceDate: GSPrivateTimeNow()]; -} - -- (instancetype) initWithString: (NSString*)description -{ - // Easiest to just have NSCalendarDate do the work for us - NSCalendarDate *d = [calendarClass alloc]; - - d = [d initWithString: description]; - if (nil == d) - { - DESTROY(self); - return nil; - } - else - { - self = [self initWithTimeIntervalSinceReferenceDate: otherTime(d)]; - RELEASE(d); - return self; - } -} - -- (instancetype) initWithTimeInterval: (NSTimeInterval)secsToBeAdded - sinceDate: (NSDate*)anotherDate -{ - if (anotherDate == nil) - { - NSLog(@"initWithTimeInterval:sinceDate: given nil date"); - DESTROY(self); - return nil; - } - // Get the other date's time, add the secs and init thyself - return [self initWithTimeIntervalSinceReferenceDate: - otherTime(anotherDate) + secsToBeAdded]; -} - -- (instancetype) initWithTimeIntervalSince1970: (NSTimeInterval)seconds -{ - return [self initWithTimeIntervalSinceReferenceDate: - seconds - NSTimeIntervalSince1970]; -} - -- (instancetype) initWithTimeIntervalSinceNow: (NSTimeInterval)secsToBeAdded -{ - // Get the current time, add the secs and init thyself - return [self initWithTimeIntervalSinceReferenceDate: - GSPrivateTimeNow() + secsToBeAdded]; -} - -- (instancetype) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs -{ - [self subclassResponsibility: _cmd]; - return self; -} - -- (BOOL) isEqual: (id)other -{ - if (other != nil - && [other isKindOfClass: abstractClass] - && otherTime(self) == otherTime(other)) - { - return YES; - } - return NO; -} - -- (BOOL) isEqualToDate: (NSDate*)other -{ - if (other != nil - && otherTime(self) == otherTime(other)) - { - return YES; - } - return NO; -} - -- (NSDate*) laterDate: (NSDate*)otherDate -{ - if (otherTime(self) < otherTime(otherDate)) - { - return otherDate; - } - return self; -} - -- (id) replacementObjectForPortCoder: (NSPortCoder*)aCoder -{ - if ([aCoder isByref] == NO) - { - return self; - } - return [super replacementObjectForPortCoder: aCoder]; -} - -- (NSTimeInterval) timeIntervalSince1970 -{ - return otherTime(self) + NSTimeIntervalSince1970; -} - -- (NSTimeInterval) timeIntervalSinceDate: (NSDate*)otherDate -{ - if (nil == otherDate) - { -#ifndef NAN - return nan(""); -#else - return NAN; -#endif - } - return otherTime(self) - otherTime(otherDate); -} - -- (NSTimeInterval) timeIntervalSinceNow -{ - return otherTime(self) - GSPrivateTimeNow(); -} - -- (NSTimeInterval) timeIntervalSinceReferenceDate -{ - [self subclassResponsibility: _cmd]; - return 0; -} - -@end - -@implementation NSGDate - -+ (void) initialize -{ - if (self == [NSDate class]) - { - [self setVersion: 1]; - } + return s; } -- (NSComparisonResult) compare: (NSDate*)otherDate +- (NSString*) descriptionWithCalendarFormat: (NSString*)format + timeZone: (NSTimeZone*)aTimeZone + locale: (NSDictionary*)l { - if (otherDate == self) - { - return NSOrderedSame; - } - if (otherDate == nil) + // Easiest to just have NSCalendarDate do the work for us + NSString *s; + NSCalendarDate *d = [calendarClass alloc]; + id f; + + d = [d initWithTimeIntervalSinceReferenceDate: otherTime(self)]; + if (!format) { - [NSException raise: NSInvalidArgumentException - format: @"nil argument for compare:"]; + f = [d calendarFormat]; } - if (_seconds_since_ref > otherTime(otherDate)) + else { - return NSOrderedDescending; + f = format; } - if (_seconds_since_ref < otherTime(otherDate)) + if (aTimeZone) { - return NSOrderedAscending; + [d setTimeZone: aTimeZone]; } - return NSOrderedSame; + s = [d descriptionWithCalendarFormat: f locale: l]; + RELEASE(d); + return s; +} + +- (NSString *) descriptionWithLocale: (id)locale +{ + // Easiest to just have NSCalendarDate do the work for us + NSString *s; + NSCalendarDate *d = [calendarClass alloc]; + + d = [d initWithTimeIntervalSinceReferenceDate: otherTime(self)]; + s = [d descriptionWithLocale: locale]; + RELEASE(d); + return s; } - (NSDate*) earlierDate: (NSDate*)otherDate { - if (otherDate == nil) - { - [NSException raise: NSInvalidArgumentException - format: @"nil argument for earlierDate:"]; - } - if (_seconds_since_ref > otherTime(otherDate)) + if (otherTime(self) > otherTime(otherDate)) { return otherDate; } @@ -1280,221 +1641,198 @@ - (NSDate*) earlierDate: (NSDate*)otherDate - (void) encodeWithCoder: (NSCoder*)coder { + NSTimeInterval interval = [self timeIntervalSinceReferenceDate]; + if ([coder allowsKeyedCoding]) { - [coder encodeDouble:_seconds_since_ref forKey:@"NS.time"]; - } - else - { - [coder encodeValueOfObjCType: @encode(NSTimeInterval) - at: &_seconds_since_ref]; + [coder encodeDouble: interval forKey: @"NS.time"]; } + [coder encodeValueOfObjCType: @encode(NSTimeInterval) at: &interval]; } - (NSUInteger) hash { - return (unsigned)_seconds_since_ref; + return (NSUInteger)[self timeIntervalSinceReferenceDate]; } -- (id) initWithCoder: (NSCoder*)coder +- (instancetype) initWithCoder: (NSCoder*)coder { + NSTimeInterval interval; + id o; + if ([coder allowsKeyedCoding]) { - _seconds_since_ref = [coder decodeDoubleForKey: @"NS.time"]; + interval = [coder decodeDoubleForKey: @"NS.time"]; } else { - [coder decodeValueOfObjCType: @encode(NSTimeInterval) - at: &_seconds_since_ref]; + [coder decodeValueOfObjCType: @encode(NSTimeInterval) at: &interval]; } - return self; -} - -- (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs -{ - if (isnan(secs)) + if (interval == DISTANT_PAST) { - [NSException raise: NSInvalidArgumentException - format: @"[%@-%@] interval is not a number", - NSStringFromClass([self class]), NSStringFromSelector(_cmd)]; + o = RETAIN([abstractClass distantPast]); } - -#if GS_SIZEOF_VOIDP == 4 - if (secs <= DISTANT_PAST) + else if (interval == DISTANT_FUTURE) { - secs = DISTANT_PAST; + o = RETAIN([abstractClass distantFuture]); } - else if (secs >= DISTANT_FUTURE) + else { - secs = DISTANT_FUTURE; + o = [concreteClass allocWithZone: NSDefaultMallocZone()]; + o = [o initWithTimeIntervalSinceReferenceDate: interval]; } -#endif - _seconds_since_ref = secs; - return self; + DESTROY(self); + return o; } -- (BOOL) isEqual: (id)other +- (instancetype) init { - if (other != nil - && [other isKindOfClass: abstractClass] - && _seconds_since_ref == otherTime(other)) - { - return YES; - } - return NO; + return [self initWithTimeIntervalSinceReferenceDate: GSPrivateTimeNow()]; } -- (BOOL) isEqualToDate: (NSDate*)other +- (instancetype) initWithString: (NSString*)description { - if (other != nil - && _seconds_since_ref == otherTime(other)) - { - return YES; - } - return NO; -} + // Easiest to just have NSCalendarDate do the work for us + NSCalendarDate *d = [calendarClass alloc]; -- (NSDate*) laterDate: (NSDate*)otherDate -{ - if (otherDate == nil) + d = [d initWithString: description]; + if (nil == d) { - [NSException raise: NSInvalidArgumentException - format: @"nil argument for laterDate:"]; + DESTROY(self); + return nil; } - if (_seconds_since_ref < otherTime(otherDate)) + else { - return otherDate; + self = [self initWithTimeIntervalSinceReferenceDate: otherTime(d)]; + RELEASE(d); + return self; } - return self; -} - -- (NSTimeInterval) timeIntervalSince1970 -{ - return _seconds_since_ref + NSTimeIntervalSince1970; } -- (NSTimeInterval) timeIntervalSinceDate: (NSDate*)otherDate +- (instancetype) initWithTimeInterval: (NSTimeInterval)secsToBeAdded + sinceDate: (NSDate*)anotherDate { - if (otherDate == nil) + if (anotherDate == nil) { - [NSException raise: NSInvalidArgumentException - format: @"nil argument for timeIntervalSinceDate:"]; + NSLog(@"initWithTimeInterval:sinceDate: given nil date"); + DESTROY(self); + return nil; } - return _seconds_since_ref - otherTime(otherDate); + // Get the other date's time, add the secs and init thyself + return [self initWithTimeIntervalSinceReferenceDate: otherTime(anotherDate) + secsToBeAdded]; } -- (NSTimeInterval) timeIntervalSinceNow +- (instancetype) initWithTimeIntervalSince1970: (NSTimeInterval)seconds { - return _seconds_since_ref - GSPrivateTimeNow(); + return [self initWithTimeIntervalSinceReferenceDate: + seconds - NSTimeIntervalSince1970]; } -- (NSTimeInterval) timeIntervalSinceReferenceDate +- (instancetype) initWithTimeIntervalSinceNow: (NSTimeInterval)secsToBeAdded { - return _seconds_since_ref; + // Get the current time, add the secs and init thyself + return [self initWithTimeIntervalSinceReferenceDate: + GSPrivateTimeNow() + secsToBeAdded]; } -@end +- (instancetype) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs +{ + [self subclassResponsibility: _cmd]; + return self; +} - +- (BOOL) isEqual: (id)other +{ + if (other == nil) + { + return NO; + } -/* - * This abstract class represents a date of which there can be only - * one instance. - */ -@implementation GSDateSingle + if (self == other) + { + return YES; + } -+ (void) initialize -{ - if (self == [GSDateSingle class]) + if ([other isKindOfClass: abstractClass]) { - [self setVersion: 1]; - GSObjCAddClassBehavior(self, [NSGDate class]); + double selfTime = [self timeIntervalSinceReferenceDate]; + return selfTime == otherTime(other); } -} -- (id) autorelease -{ - return self; + return NO; } -- (oneway void) release +- (BOOL) isEqualToDate: (NSDate*)other { -} + double selfTime; + double otherTime; + if (other == nil) + { + return NO; + } -- (id) retain -{ - return self; -} + selfTime = [self timeIntervalSinceReferenceDate]; + otherTime = [other timeIntervalSinceReferenceDate]; + if (selfTime == otherTime) + { + return YES; + } -+ (id) allocWithZone: (NSZone*)z -{ - [NSException raise: NSInternalInconsistencyException - format: @"Attempt to allocate fixed date"]; - return nil; + return NO; } -- (id) copyWithZone: (NSZone*)z +- (NSDate*) laterDate: (NSDate*)otherDate { + double selfTime; + if (otherDate == nil) + { + return nil; + } + + selfTime = [self timeIntervalSinceReferenceDate]; + if (selfTime < otherTime(otherDate)) + { + return otherDate; + } return self; } -- (void) dealloc +- (id) replacementObjectForPortCoder: (NSPortCoder*)aCoder { - [NSException raise: NSInternalInconsistencyException - format: @"Attempt to deallocate fixed date"]; - GSNOSUPERDEALLOC; + if ([aCoder isByref] == NO) + { + return self; + } + return [super replacementObjectForPortCoder: aCoder]; } -- (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs +- (NSTimeInterval) timeIntervalSince1970 { - return self; + return otherTime(self) + NSTimeIntervalSince1970; } -@end - - - -@implementation GSDatePast - -+ (id) allocWithZone: (NSZone*)z +- (NSTimeInterval) timeIntervalSinceDate: (NSDate*)otherDate { - if (_distantPast == nil) + if (nil == otherDate) { - id obj = NSAllocateObject(self, 0, NSDefaultMallocZone()); - - _distantPast = [obj init]; +#ifndef NAN + return nan(""); +#else + return NAN; +#endif } - return _distantPast; -} - -- (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs -{ - _seconds_since_ref = DISTANT_PAST; - return self; + return [self timeIntervalSinceReferenceDate] - otherTime(otherDate); } -@end - - -@implementation GSDateFuture - -+ (id) allocWithZone: (NSZone*)z +- (NSTimeInterval) timeIntervalSinceNow { - if (_distantFuture == nil) - { - id obj = NSAllocateObject(self, 0, NSDefaultMallocZone()); - - _distantFuture = [obj init]; - } - return _distantFuture; + return [self timeIntervalSinceReferenceDate] - GSPrivateTimeNow(); } -- (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs +- (NSTimeInterval) timeIntervalSinceReferenceDate { - _seconds_since_ref = DISTANT_FUTURE; - return self; + [self subclassResponsibility: _cmd]; + return 0; } @end - - diff --git a/Source/NSDatePrivate.h b/Source/NSDatePrivate.h new file mode 100644 index 000000000..07075d748 --- /dev/null +++ b/Source/NSDatePrivate.h @@ -0,0 +1,41 @@ +/** NSDate Private Interface + Copyright (C) 2024 Free Software Foundation, Inc. + + Written by: Hugo Melder + + This file is part of the GNUstep Base Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110 USA. +*/ + +#import + +#if defined(OBJC_SMALL_OBJECT_SHIFT) && (OBJC_SMALL_OBJECT_SHIFT == 3) +#define USE_SMALL_DATE 1 +#define DATE_CONCRETE_CLASS_NAME GSSmallDate +#else +#define USE_SMALL_DATE 0 +#define DATE_CONCRETE_CLASS_NAME NSGDate +#endif + +@interface DATE_CONCRETE_CLASS_NAME : NSDate +#if USE_SMALL_DATE == 0 +{ +@public + NSTimeInterval _seconds_since_ref; +} +#endif +@end \ No newline at end of file diff --git a/Source/NSTimer.m b/Source/NSTimer.m index 1444f46c2..1646c124c 100644 --- a/Source/NSTimer.m +++ b/Source/NSTimer.m @@ -35,9 +35,8 @@ #import "Foundation/NSRunLoop.h" #import "Foundation/NSInvocation.h" -@class NSGDate; -@interface NSGDate : NSObject // Help the compiler -@end +#import "NSDatePrivate.h" + static Class NSDate_class; /** @@ -58,7 +57,7 @@ + (void) initialize { if (self == [NSTimer class]) { - NSDate_class = [NSGDate class]; + NSDate_class = [DATE_CONCRETE_CLASS_NAME class]; } } diff --git a/Tests/base/NSFileManager/general.m b/Tests/base/NSFileManager/general.m index 6acebd310..fb2ca6ee4 100644 --- a/Tests/base/NSFileManager/general.m +++ b/Tests/base/NSFileManager/general.m @@ -12,7 +12,7 @@ #ifdef EQ #undef EQ #endif -#define EPSILON (FLT_EPSILON*100) +#define EPSILON (DBL_EPSILON*100) #define EQ(x,y) ((x >= y - EPSILON) && (x <= y + EPSILON)) @interface MyHandler : NSObject @@ -204,6 +204,7 @@ int main() NSTimeInterval ot, nt; ot = [[oa fileCreationDate] timeIntervalSinceReferenceDate]; nt = [[na fileCreationDate] timeIntervalSinceReferenceDate]; + NSLog(@"ot = %f, nt = %f", ot, nt); PASS(EQ(ot, nt), "copy creation date equals original") ot = [[oa fileModificationDate] timeIntervalSinceReferenceDate]; nt = [[na fileModificationDate] timeIntervalSinceReferenceDate]; From 962c169705e739152204ef8cefe16aa96285d66b Mon Sep 17 00:00:00 2001 From: rfm Date: Fri, 1 Nov 2024 08:47:02 +0000 Subject: [PATCH 14/21] Tweaks to NSDate changes --- ChangeLog | 5 ++ Source/NSDate.m | 186 ++++++++++++++++++++++++++++-------------------- 2 files changed, 113 insertions(+), 78 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7ec6b9fac..acac637ca 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2024-11-01 Richard Frith-Macdonald + + * Source/NSDate.m: Fix returing receiver when earlier/later argument + is equal to the receiver. Various formatting fixes. + 2024-10-29 Richard Frith-Macdonald * Source/NSUndoManager.m: set zero/nil return value when forwarding diff --git a/Source/NSDate.m b/Source/NSDate.m index b71bbb65f..de43f312f 100644 --- a/Source/NSDate.m +++ b/Source/NSDate.m @@ -140,70 +140,74 @@ #define CREATE_SMALL_DATE(interval) (id)(compressTimeInterval(interval) | SMALL_DATE_MASK) union CompressedDouble { - uintptr_t data; - struct { - uintptr_t tag : 3; // placeholder for tag bits - uintptr_t fraction : 52; - intptr_t exponent : 8; // signed! - uintptr_t sign : 1; - }; + uintptr_t data; + struct { + uintptr_t tag : 3; // placeholder for tag bits + uintptr_t fraction : 52; + intptr_t exponent : 8; // signed! + uintptr_t sign : 1; + }; }; union DoubleBits { - double val; - struct { - uintptr_t fraction : 52; - uintptr_t exponent : 11; - uintptr_t sign : 1; - }; + double val; + struct { + uintptr_t fraction : 52; + uintptr_t exponent : 11; + uintptr_t sign : 1; + }; }; -static __attribute__((always_inline)) uintptr_t compressTimeInterval(NSTimeInterval interval) { - union CompressedDouble c; - union DoubleBits db; - intptr_t exponent; +static __attribute__((always_inline)) uintptr_t + compressTimeInterval(NSTimeInterval interval) +{ + union CompressedDouble c; + union DoubleBits db; + intptr_t exponent; - db.val = interval; - c.fraction = db.fraction; - c.sign = db.sign; + db.val = interval; + c.fraction = db.fraction; + c.sign = db.sign; - // 1. Cast 11-bit unsigned exponent to 64-bit signed - exponent = db.exponent; - // 2. Subtract secondary Bias first - exponent -= EXPONENT_BIAS; - // 3. Truncate to 8-bit signed - c.exponent = exponent; - c.tag = 0; + // 1. Cast 11-bit unsigned exponent to 64-bit signed + exponent = db.exponent; + // 2. Subtract secondary Bias first + exponent -= EXPONENT_BIAS; + // 3. Truncate to 8-bit signed + c.exponent = exponent; + c.tag = 0; - return c.data; + return c.data; } -static __attribute__((always_inline)) NSTimeInterval decompressTimeInterval(uintptr_t compressed) { - union CompressedDouble c; - union DoubleBits d; - intptr_t biased_exponent; +static __attribute__((always_inline)) NSTimeInterval + decompressTimeInterval(uintptr_t compressed) +{ + union CompressedDouble c; + union DoubleBits d; + intptr_t biased_exponent; - c.data = compressed; - d.fraction = c.fraction; - d.sign = c.sign; + c.data = compressed; + d.fraction = c.fraction; + d.sign = c.sign; - // 1. Sign Extend 8-bit to 64-bit - biased_exponent = c.exponent; - // 2. Add secondary Bias - biased_exponent += 0x3EF; - // Cast to 11-bit unsigned exponent - d.exponent = biased_exponent; + // 1. Sign Extend 8-bit to 64-bit + biased_exponent = c.exponent; + // 2. Add secondary Bias + biased_exponent += 0x3EF; + // Cast to 11-bit unsigned exponent + d.exponent = biased_exponent; - return d.val; + return d.val; } static __attribute__((always_inline)) BOOL isSmallDate(id obj) { - // Do a fast check if the object is also a small date. - // libobjc2 guarantees that the classes are 16-byte (word) aligned. - #pragma clang diagnostic push - #pragma clang diagnostic ignored "-Wdeprecated-objc-pointer-introspection" - return !!((uintptr_t)obj & SMALL_DATE_MASK); - #pragma clang diagnostic pop + // Do a fast check if the object is also a small date. + // libobjc2 guarantees that the classes are 16-byte (word) aligned. + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wdeprecated-objc-pointer-introspection" + return !!((uintptr_t)obj & SMALL_DATE_MASK); + #pragma clang diagnostic pop } // Populated in +[GSSmallDate load] @@ -234,10 +238,13 @@ @implementation DATE_CONCRETE_CLASS_NAME + (void) load { useSmallDate = objc_registerSmallObjectClass_np(self, SMALL_DATE_MASK); - // If this fails, someone else has already registered a small object class for this slot. + /* If this fails, someone else has already registered + * a small object class for this slot. + */ if (unlikely(useSmallDate == NO)) { - [NSException raise: NSInternalInconsistencyException format: @"Failed to register GSSmallDate small object class"]; + [NSException raise: NSInternalInconsistencyException + format: @"Failed to register GSSmallDate small object class"]; } } @@ -349,6 +356,7 @@ - (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs - (id) initWithCoder: (NSCoder*)coder { double secondsSinceRef; + if ([coder allowsKeyedCoding]) { secondsSinceRef = [coder decodeDoubleForKey: @"NS.time"]; @@ -394,11 +402,13 @@ - (NSComparisonResult) compare: (NSDate*)otherDate } if (IS_CONCRETE_CLASS(otherDate)) - { + { otherTime = GET_INTERVAL(otherDate); - } else { + } + else + { otherTime = [otherDate timeIntervalSinceReferenceDate]; - } + } if (selfTime > otherTime) { @@ -422,14 +432,17 @@ - (BOOL) isEqual: (id)other } if (IS_CONCRETE_CLASS(other)) - { + { otherTime = GET_INTERVAL(other); - } else if ([other isKindOfClass: abstractClass]) - { + } + else if ([other isKindOfClass: abstractClass]) + { otherTime = [other timeIntervalSinceReferenceDate]; - } else { - return NO; - } + } + else + { + return NO; + } return selfTime == otherTime; } @@ -452,14 +465,18 @@ - (NSDate*) laterDate: (NSDate*)otherDate selfTime = GET_INTERVAL(self); if (IS_CONCRETE_CLASS(otherDate)) - { + { otherTime = GET_INTERVAL(otherDate); - } else { + } + else + { otherTime = [otherDate timeIntervalSinceReferenceDate]; - } + } - // If the receiver and anotherDate represent the same date, returns the receiver. - if (selfTime <= otherTime) + /* If the receiver and anotherDate represent the same date, + * returns the receiver. + */ + if (selfTime < otherTime) { return otherDate; } @@ -480,14 +497,18 @@ - (NSDate*) earlierDate: (NSDate*)otherDate selfTime = GET_INTERVAL(self); if (IS_CONCRETE_CLASS(otherDate)) - { + { otherTime = GET_INTERVAL(otherDate); - } else { + } + else + { otherTime = [otherDate timeIntervalSinceReferenceDate]; - } + } - // If the receiver and anotherDate represent the same date, returns the receiver. - if (selfTime >= otherTime) + /* If the receiver and anotherDate represent the same date, + * returns the receiver. + */ + if (selfTime > otherTime) { return otherDate; } @@ -498,9 +519,10 @@ - (NSDate*) earlierDate: (NSDate*)otherDate - (void) encodeWithCoder: (NSCoder*)coder { double time = GET_INTERVAL(self); + if ([coder allowsKeyedCoding]) { - [coder encodeDouble:time forKey:@"NS.time"]; + [coder encodeDouble: time forKey:@"NS.time"]; } else { @@ -519,6 +541,7 @@ - (NSTimeInterval) timeIntervalSince1970 - (NSTimeInterval) timeIntervalSinceDate: (NSDate*)otherDate { double otherTime; + if (unlikely(otherDate == nil)) { [NSException raise: NSInvalidArgumentException @@ -526,11 +549,13 @@ - (NSTimeInterval) timeIntervalSinceDate: (NSDate*)otherDate } if (IS_CONCRETE_CLASS(otherDate)) - { + { otherTime = GET_INTERVAL(otherDate); - } else { + } + else + { otherTime = [otherDate timeIntervalSinceReferenceDate]; - } + } return GET_INTERVAL(self) - otherTime; } @@ -700,7 +725,9 @@ + (id) alloc if (self == abstractClass) { #if USE_SMALL_DATE - return [DATE_CONCRETE_CLASS_NAME alloc]; // alloc is overridden to return a small object + /* alloc is overridden to return a small object + */ + return [DATE_CONCRETE_CLASS_NAME alloc]; #else return NSAllocateObject(concreteClass, 0, NSDefaultMallocZone()); #endif @@ -713,7 +740,9 @@ + (id) allocWithZone: (NSZone*)z if (self == abstractClass) { #if USE_SMALL_DATE - return [DATE_CONCRETE_CLASS_NAME alloc]; // alloc is overridden to return a small object + /* alloc is overridden to return a small object + */ + return [DATE_CONCRETE_CLASS_NAME alloc]; #else return NSAllocateObject(concreteClass, 0, z); #endif @@ -1784,10 +1813,11 @@ - (BOOL) isEqualToDate: (NSDate*)other - (NSDate*) laterDate: (NSDate*)otherDate { double selfTime; + if (otherDate == nil) - { - return nil; - } + { + return nil; + } selfTime = [self timeIntervalSinceReferenceDate]; if (selfTime < otherTime(otherDate)) From e9602775817f0321e84d57e68e49a81766c2eac6 Mon Sep 17 00:00:00 2001 From: rfm Date: Sun, 3 Nov 2024 12:00:51 +0000 Subject: [PATCH 15/21] Add a bit of information about handler callback methods to comments/docs. --- Source/NSFileManager.m | 16 ++++++++++++++-- Version | 2 +- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/Source/NSFileManager.m b/Source/NSFileManager.m index 7d83999c7..ebba409d8 100644 --- a/Source/NSFileManager.m +++ b/Source/NSFileManager.m @@ -1323,10 +1323,17 @@ - (NSString*) currentDirectoryPath /** * Copies the file or directory at source to destination, using a - * handler object which should respond to + * handler object which may respond to * [NSObject(NSFileManagerHandler)-fileManager:willProcessPath:] and * [NSObject(NSFileManagerHandler)-fileManager:shouldProceedAfterError:] * messages.
+ * If the handler responds to the first message, it is used to inform the + * handler when an item is about to be copied. If the handler responds + * to the second message, it is used to ask the handler whether to + * continue with the copy after an error (when there is no handler the + * processing stops at the point when an error occurs).
+ * Symbolic links are copied themselved rather than causing the items + * they link to be copied.
* Will not copy to a destination which already exists. */ - (BOOL) copyPath: (NSString*)source @@ -1460,7 +1467,12 @@ - (BOOL) copyItemAtURL: (NSURL*)src * handler object which should respond to * [NSObject(NSFileManagerHandler)-fileManager:willProcessPath:] and * [NSObject(NSFileManagerHandler)-fileManager:shouldProceedAfterError:] - * messages. + * messages.
+ * If the handler responds to the first message, it is used to inform the + * handler when an item is about to be moved. If the handler responds + * to the second message, it is used to ask the handler whether to + * continue with the move after an error (when there is no handler the + * processing stops at the point when an error occurs).
* Will not move to a destination which already exists.
*/ - (BOOL) movePath: (NSString*)source diff --git a/Version b/Version index 2683d5407..a51abc7c8 100644 --- a/Version +++ b/Version @@ -9,7 +9,7 @@ MAJOR_VERSION=1 MINOR_VERSION=30 SUBMINOR_VERSION=0 # numeric value should match above -VERSION_NUMBER=129.0 +VERSION_NUMBER=130.0 GNUSTEP_BASE_VERSION=${MAJOR_VERSION}.${MINOR_VERSION}.${SUBMINOR_VERSION} VERSION=${GNUSTEP_BASE_VERSION} From 5ea68724ff6b49d935101246de38ffd955d57f50 Mon Sep 17 00:00:00 2001 From: rfm Date: Sun, 3 Nov 2024 13:15:20 +0000 Subject: [PATCH 16/21] Fix for issue 452 --- ChangeLog | 5 +++++ Source/NSFileManager.m | 32 +++++++++++++++++++++++++------- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index acac637ca..8e48ea21e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2024-11-03 Richard Frith-Macdonald + + * Source/NSFileManager.m: Fix case where positive result of asking + handler whether to proceed was ignored. + 2024-11-01 Richard Frith-Macdonald * Source/NSDate.m: Fix returing receiver when earlier/later argument diff --git a/Source/NSFileManager.m b/Source/NSFileManager.m index ebba409d8..ee1772b7c 100644 --- a/Source/NSFileManager.m +++ b/Source/NSFileManager.m @@ -1386,11 +1386,30 @@ - (BOOL) copyPath: (NSString*)source if ([self createDirectoryAtPath: destination attributes: attrs] == NO) { - return [self _proceedAccordingToHandler: handler - forError: [self _lastError] - inPath: destination - fromPath: source - toPath: destination]; + if (NO == [self _proceedAccordingToHandler: handler + forError: [self _lastError] + inPath: destination + fromPath: source + toPath: destination]) + { + return NO; + } + else + { + BOOL dirOK; + + /* We may have managed to create the directory but not set + * its attributes ... if so we can continue copying. + */ + if (![self fileExistsAtPath: destination isDirectory: &dirOK]) + { + dirOK = NO; + } + if (!dirOK) + { + return NO; + } + } } if ([self _copyPath: source toPath: destination handler: handler] == NO) @@ -3419,8 +3438,7 @@ - (BOOL) _copyPath: (NSString*)source result = NO; break; } - /* - * We may have managed to create the directory but not set + /* We may have managed to create the directory but not set * its attributes ... if so we can continue copying. */ if (![self fileExistsAtPath: destinationFile isDirectory: &dirOK]) From 7c6ed5fa26960d3bfc7b2954463cf147032238f1 Mon Sep 17 00:00:00 2001 From: rfm Date: Wed, 6 Nov 2024 15:45:37 +0000 Subject: [PATCH 17/21] Add tests for -earlierDate: and -laterDate: with equal time instants and where tartget/receiver are different classes. --- Tests/base/NSCalendarDate/general.m | 48 +++++++++++++++++++++++++++++ Tests/base/NSDate/general.m | 23 +++++++++++--- 2 files changed, 67 insertions(+), 4 deletions(-) create mode 100644 Tests/base/NSCalendarDate/general.m diff --git a/Tests/base/NSCalendarDate/general.m b/Tests/base/NSCalendarDate/general.m new file mode 100644 index 000000000..59e77a5e3 --- /dev/null +++ b/Tests/base/NSCalendarDate/general.m @@ -0,0 +1,48 @@ +#import "Testing.h" +#import +#import + +int main() +{ + NSAutoreleasePool *arp = [NSAutoreleasePool new]; + NSDate *cdate, *date1, *date2; + NSComparisonResult comp; + + cdate = [NSCalendarDate date]; + + comp = [cdate compare: [NSDate distantFuture]]; + PASS(comp == NSOrderedAscending, "+distantFuture is in the future"); + + comp = [cdate compare: [NSDate distantPast]]; + PASS(comp == NSOrderedDescending, "+distantPast is in the past"); + + date1 = [NSDate dateWithTimeIntervalSinceNow: -600]; + date2 = [cdate earlierDate: date1]; + PASS(date1 == date2, "-earlierDate works for different dates"); + + date2 = [cdate laterDate: date1]; + PASS(cdate == date2, "-laterDate works for different dates"); + + date1 = [NSDate dateWithTimeIntervalSinceReferenceDate: + [cdate timeIntervalSinceReferenceDate]]; + + date2 = [cdate earlierDate: date1]; + PASS(cdate == date2, "-earlierDate works for equal dates"); + + date2 = [date1 earlierDate: cdate]; + PASS(date1 == date2, "-earlierDate works for equal dates swapped"); + + date2 = [cdate laterDate: date1]; + PASS(cdate == date2, "-laterDate works for equal dates"); + + date2 = [date1 laterDate: cdate]; + PASS(date1 == date2, "-laterDate works for equal dates swapped"); + + date2 = [date1 addTimeInterval: 0]; + PASS ([date1 isEqualToDate:date2], "-isEqualToDate works"); + + + [arp release]; arp = nil; + return 0; +} + diff --git a/Tests/base/NSDate/general.m b/Tests/base/NSDate/general.m index 121011702..e23abec9f 100644 --- a/Tests/base/NSDate/general.m +++ b/Tests/base/NSDate/general.m @@ -16,14 +16,29 @@ int main() comp = [cdate compare: [NSDate distantPast]]; PASS(comp == NSOrderedDescending, "+distantPast is in the past"); - date1 = [NSDate dateWithTimeIntervalSinceNow:-600]; + date1 = [NSDate dateWithTimeIntervalSinceNow: -600]; date2 = [cdate earlierDate: date1]; - PASS(date1 == date2, "-earlierDate works"); + PASS(date1 == date2, "-earlierDate works for different dates"); date2 = [cdate laterDate: date1]; - PASS(cdate == date2, "-laterDate works"); + PASS(cdate == date2, "-laterDate works for different dates"); - date2 = [date1 addTimeInterval:0]; + date1 = [NSDate dateWithTimeIntervalSinceReferenceDate: + [cdate timeIntervalSinceReferenceDate]]; + + date2 = [cdate earlierDate: date1]; + PASS(cdate == date2, "-earlierDate works for equal dates"); + + date2 = [date1 earlierDate: cdate]; + PASS(date1 == date2, "-earlierDate works for equal dates swapped"); + + date2 = [cdate laterDate: date1]; + PASS(cdate == date2, "-laterDate works for equal dates"); + + date2 = [date1 laterDate: cdate]; + PASS(date1 == date2, "-laterDate works for equal dates swapped"); + + date2 = [date1 addTimeInterval: 0]; PASS ([date1 isEqualToDate:date2], "-isEqualToDate works"); From 6667842dd598c4f762855250a8da56945a8f354e Mon Sep 17 00:00:00 2001 From: rfm Date: Thu, 7 Nov 2024 13:37:59 +0000 Subject: [PATCH 18/21] Update FSF address as requested by Gregory --- COPYING | 6 ++---- COPYING.LIB | 4 +--- Documentation/GNUmakefile | 3 +-- Documentation/General/GNUmakefile | 3 +-- Documentation/Makefile.postamble | 2 +- Documentation/manual/GNUmakefile | 2 +- Documentation/manual/index.html | 2 +- Examples/GNUmakefile | 3 +-- Examples/Makefile.postamble | 2 +- Examples/Makefile.preamble | 3 +-- Examples/diningPhilosophers.m | 3 +-- GNUmakefile | 3 +-- Headers/CoreFoundation/CFCGTypes.h | 3 +-- Headers/Foundation/Foundation.h | 3 +-- Headers/Foundation/FoundationErrors.h | 3 +-- .../FoundationLegacySwiftCompatibility.h | 3 +-- Headers/Foundation/NSAffineTransform.h | 3 +-- Headers/Foundation/NSAppleEventDescriptor.h | 3 +-- Headers/Foundation/NSAppleEventManager.h | 3 +-- Headers/Foundation/NSAppleScript.h | 3 +-- Headers/Foundation/NSArchiver.h | 3 +-- Headers/Foundation/NSArray.h | 3 +-- Headers/Foundation/NSAttributedString.h | 3 +-- Headers/Foundation/NSAutoreleasePool.h | 3 +-- .../NSBackgroundActivityScheduler.h | 3 +-- Headers/Foundation/NSBundle.h | 3 +-- Headers/Foundation/NSByteCountFormatter.h | 3 +-- Headers/Foundation/NSByteOrder.h | 3 +-- Headers/Foundation/NSCache.h | 3 +-- Headers/Foundation/NSCalendar.h | 3 +-- Headers/Foundation/NSCalendarDate.h | 3 +-- Headers/Foundation/NSCharacterSet.h | 3 +-- Headers/Foundation/NSClassDescription.h | 3 +-- Headers/Foundation/NSCoder.h | 3 +-- Headers/Foundation/NSComparisonPredicate.h | 3 +-- Headers/Foundation/NSCompoundPredicate.h | 3 +-- Headers/Foundation/NSConnection.h | 3 +-- Headers/Foundation/NSData.h | 3 +-- Headers/Foundation/NSDate.h | 3 +-- .../Foundation/NSDateComponentsFormatter.h | 3 +-- Headers/Foundation/NSDateFormatter.h | 3 +-- Headers/Foundation/NSDateInterval.h | 3 +-- Headers/Foundation/NSDateIntervalFormatter.h | 3 +-- Headers/Foundation/NSDebug.h | 3 +-- Headers/Foundation/NSDecimal.h | 3 +-- Headers/Foundation/NSDecimalNumber.h | 3 +-- Headers/Foundation/NSDictionary.h | 3 +-- Headers/Foundation/NSDistantObject.h | 3 +-- Headers/Foundation/NSDistributedLock.h | 3 +-- .../NSDistributedNotificationCenter.h | 3 +-- Headers/Foundation/NSEnergyFormatter.h | 3 +-- Headers/Foundation/NSEnumerator.h | 3 +-- Headers/Foundation/NSError.h | 3 +-- .../Foundation/NSErrorRecoveryAttempting.h | 3 +-- Headers/Foundation/NSException.h | 3 +-- Headers/Foundation/NSExpression.h | 3 +-- Headers/Foundation/NSExtensionContext.h | 3 +-- Headers/Foundation/NSExtensionItem.h | 3 +-- .../Foundation/NSExtensionRequestHandling.h | 3 +-- Headers/Foundation/NSFileCoordinator.h | 3 +-- Headers/Foundation/NSFileHandle.h | 3 +-- Headers/Foundation/NSFileManager.h | 3 +-- Headers/Foundation/NSFilePresenter.h | 3 +-- Headers/Foundation/NSFileVersion.h | 3 +-- Headers/Foundation/NSFileWrapper.h | 3 +-- Headers/Foundation/NSFormatter.h | 3 +-- Headers/Foundation/NSGarbageCollector.h | 3 +-- Headers/Foundation/NSGeometry.h | 3 +-- Headers/Foundation/NSHFSFileTypes.h | 3 +-- Headers/Foundation/NSHTTPCookie.h | 3 +-- Headers/Foundation/NSHTTPCookieStorage.h | 3 +-- Headers/Foundation/NSHashTable.h | 3 +-- Headers/Foundation/NSHost.h | 3 +-- Headers/Foundation/NSISO8601DateFormatter.h | 3 +-- Headers/Foundation/NSIndexPath.h | 3 +-- Headers/Foundation/NSIndexSet.h | 3 +-- Headers/Foundation/NSInvocation.h | 3 +-- Headers/Foundation/NSInvocationOperation.h | 3 +-- Headers/Foundation/NSItemProvider.h | 3 +-- .../Foundation/NSItemProviderReadingWriting.h | 3 +-- Headers/Foundation/NSJSONSerialization.h | 3 +-- Headers/Foundation/NSKeyValueCoding.h | 3 +-- Headers/Foundation/NSKeyValueObserving.h | 3 +-- Headers/Foundation/NSKeyedArchiver.h | 3 +-- Headers/Foundation/NSLengthFormatter.h | 3 +-- Headers/Foundation/NSLinguisticTagger.h | 3 +-- Headers/Foundation/NSLocale.h | 3 +-- Headers/Foundation/NSLock.h | 3 +-- Headers/Foundation/NSMapTable.h | 3 +-- Headers/Foundation/NSMassFormatter.h | 3 +-- Headers/Foundation/NSMeasurement.h | 3 +-- Headers/Foundation/NSMeasurementFormatter.h | 3 +-- Headers/Foundation/NSMetadata.h | 3 +-- Headers/Foundation/NSMetadataAttributes.h | 3 +-- Headers/Foundation/NSMethodSignature.h | 3 +-- Headers/Foundation/NSNetServices.h | 3 +-- Headers/Foundation/NSNotification.h | 3 +-- Headers/Foundation/NSNotificationQueue.h | 3 +-- Headers/Foundation/NSNull.h | 3 +-- Headers/Foundation/NSNumberFormatter.h | 3 +-- Headers/Foundation/NSObjCRuntime.h | 3 +-- Headers/Foundation/NSObject.h | 3 +-- Headers/Foundation/NSObjectScripting.h | 3 +-- Headers/Foundation/NSOperation.h | 3 +-- Headers/Foundation/NSOrderedSet.h | 3 +-- Headers/Foundation/NSOrthography.h | 3 +-- Headers/Foundation/NSPathUtilities.h | 3 +-- Headers/Foundation/NSPersonNameComponents.h | 3 +-- .../NSPersonNameComponentsFormatter.h | 3 +-- Headers/Foundation/NSPointerArray.h | 3 +-- Headers/Foundation/NSPointerFunctions.h | 3 +-- Headers/Foundation/NSPort.h | 3 +-- Headers/Foundation/NSPortCoder.h | 3 +-- Headers/Foundation/NSPortMessage.h | 3 +-- Headers/Foundation/NSPortNameServer.h | 3 +-- Headers/Foundation/NSPredicate.h | 3 +-- Headers/Foundation/NSProcessInfo.h | 3 +-- Headers/Foundation/NSProgress.h | 3 +-- Headers/Foundation/NSPropertyList.h | 3 +-- Headers/Foundation/NSProtocolChecker.h | 3 +-- Headers/Foundation/NSProxy.h | 3 +-- Headers/Foundation/NSRange.h | 3 +-- Headers/Foundation/NSRegularExpression.h | 3 +-- Headers/Foundation/NSRunLoop.h | 3 +-- Headers/Foundation/NSScanner.h | 3 +-- Headers/Foundation/NSScriptClassDescription.h | 3 +-- Headers/Foundation/NSScriptCoercionHandler.h | 3 +-- Headers/Foundation/NSScriptCommand.h | 3 +-- .../Foundation/NSScriptCommandDescription.h | 3 +-- Headers/Foundation/NSScriptExecutionContext.h | 3 +-- Headers/Foundation/NSScriptKeyValueCoding.h | 3 +-- Headers/Foundation/NSScriptObjectSpecifiers.h | 3 +-- .../NSScriptStandardSuiteCommands.h | 3 +-- Headers/Foundation/NSScriptSuiteRegistry.h | 3 +-- Headers/Foundation/NSScriptWhoseTests.h | 3 +-- Headers/Foundation/NSSerialization.h | 3 +-- Headers/Foundation/NSSet.h | 3 +-- Headers/Foundation/NSSortDescriptor.h | 3 +-- Headers/Foundation/NSSpellServer.h | 3 +-- Headers/Foundation/NSStream.h | 3 +-- Headers/Foundation/NSString.h | 3 +-- Headers/Foundation/NSTask.h | 3 +-- Headers/Foundation/NSTextCheckingResult.h | 3 +-- Headers/Foundation/NSThread.h | 3 +-- Headers/Foundation/NSTimeZone.h | 3 +-- Headers/Foundation/NSTimer.h | 3 +-- Headers/Foundation/NSURL.h | 3 +-- .../Foundation/NSURLAuthenticationChallenge.h | 3 +-- Headers/Foundation/NSURLCache.h | 3 +-- Headers/Foundation/NSURLConnection.h | 3 +-- Headers/Foundation/NSURLCredential.h | 3 +-- Headers/Foundation/NSURLCredentialStorage.h | 3 +-- Headers/Foundation/NSURLDownload.h | 3 +-- Headers/Foundation/NSURLError.h | 3 +-- Headers/Foundation/NSURLHandle.h | 3 +-- Headers/Foundation/NSURLProtectionSpace.h | 3 +-- Headers/Foundation/NSURLProtocol.h | 3 +-- Headers/Foundation/NSURLRequest.h | 3 +-- Headers/Foundation/NSURLResponse.h | 3 +-- Headers/Foundation/NSURLSession.h | 3 +-- Headers/Foundation/NSUUID.h | 3 +-- .../Foundation/NSUbiquitousKeyValueStore.h | 3 +-- Headers/Foundation/NSUndoManager.h | 3 +-- Headers/Foundation/NSUnit.h | 3 +-- Headers/Foundation/NSUserActivity.h | 3 +-- Headers/Foundation/NSUserDefaults.h | 3 +-- Headers/Foundation/NSUserNotification.h | 3 +-- Headers/Foundation/NSUserScriptTask.h | 3 +-- Headers/Foundation/NSUtilities.h | 3 +-- Headers/Foundation/NSValue.h | 3 +-- Headers/Foundation/NSValueTransformer.h | 3 +-- Headers/Foundation/NSXMLDTD.h | 3 +-- Headers/Foundation/NSXMLDTDNode.h | 3 +-- Headers/Foundation/NSXMLDocument.h | 3 +-- Headers/Foundation/NSXMLElement.h | 3 +-- Headers/Foundation/NSXMLNode.h | 3 +-- Headers/Foundation/NSXMLNodeOptions.h | 3 +-- Headers/Foundation/NSXMLParser.h | 3 +-- Headers/Foundation/NSXPCConnection.h | 3 +-- Headers/Foundation/NSZone.h | 3 +-- Headers/GNUstepBase/Additions.h | 3 +-- Headers/GNUstepBase/DistributedObjects.h | 3 +-- Headers/GNUstepBase/GCObject.h | 3 +-- Headers/GNUstepBase/GNUstep.h | 3 +-- Headers/GNUstepBase/GSBlocks.h | 3 +-- Headers/GNUstepBase/GSConfig.h.in | 3 +-- Headers/GNUstepBase/GSFunctions.h | 3 +-- Headers/GNUstepBase/GSIArray.h | 3 +-- Headers/GNUstepBase/GSIMap.h | 3 +-- Headers/GNUstepBase/GSLocale.h | 3 +-- Headers/GNUstepBase/GSMime.h | 3 +-- Headers/GNUstepBase/GSObjCRuntime.h | 3 +-- Headers/GNUstepBase/GSTLS.h | 3 +-- Headers/GNUstepBase/GSUnion.h | 3 +-- Headers/GNUstepBase/GSVersionMacros.h | 3 +-- Headers/GNUstepBase/GSXML.h | 3 +-- Headers/GNUstepBase/NSArray+GNUstepBase.h | 3 +-- .../NSAttributedString+GNUstepBase.h | 3 +-- Headers/GNUstepBase/NSBundle+GNUstepBase.h | 3 +-- .../GNUstepBase/NSCalendarDate+GNUstepBase.h | 3 +-- Headers/GNUstepBase/NSData+GNUstepBase.h | 3 +-- Headers/GNUstepBase/NSDebug+GNUstepBase.h | 3 +-- .../GNUstepBase/NSFileHandle+GNUstepBase.h | 3 +-- Headers/GNUstepBase/NSHashTable+GNUstepBase.h | 3 +-- .../GNUstepBase/NSMutableString+GNUstepBase.h | 3 +-- .../GNUstepBase/NSNetServices+GNUstepBase.h | 3 +-- Headers/GNUstepBase/NSNumber+GNUstepBase.h | 3 +-- Headers/GNUstepBase/NSObject+GNUstepBase.h | 3 +-- .../GNUstepBase/NSProcessInfo+GNUstepBase.h | 3 +-- Headers/GNUstepBase/NSStream+GNUstepBase.h | 3 +-- Headers/GNUstepBase/NSString+GNUstepBase.h | 3 +-- Headers/GNUstepBase/NSTask+GNUstepBase.h | 3 +-- Headers/GNUstepBase/NSThread+GNUstepBase.h | 3 +-- Headers/GNUstepBase/NSURL+GNUstepBase.h | 3 +-- Headers/GNUstepBase/Unicode.h | 3 +-- Makefile | 3 +-- Makefile.postamble | 2 +- NSTimeZones/GNUmakefile | 3 +-- NSTimeZones/Makefile.postamble | 2 +- NSTimeZones/NSTimeZones.tar | Bin 942080 -> 942041 bytes Resources/GNUmakefile | 3 +-- Resources/GNUmakefile.postamble | 2 +- Source/Additions/GCArray.m | 3 +-- Source/Additions/GCDictionary.m | 3 +-- Source/Additions/GCObject.m | 3 +-- Source/Additions/GNUmakefile | 3 +-- Source/Additions/GSFunctions.m | 3 +-- Source/Additions/GSInsensitiveDictionary.m | 3 +-- Source/Additions/GSMime.m | 3 +-- Source/Additions/GSObjCRuntime.m | 3 +-- Source/Additions/GSXML.m | 3 +-- Source/Additions/Makefile.preamble | 2 +- Source/Additions/NSArray+GNUstepBase.m | 3 +-- .../NSAttributedString+GNUstepBase.m | 3 +-- Source/Additions/NSBundle+GNUstepBase.m | 3 +-- Source/Additions/NSCalendarDate+GNUstepBase.m | 3 +-- Source/Additions/NSData+GNUstepBase.m | 3 +-- Source/Additions/NSDebug+GNUstepBase.m | 3 +-- Source/Additions/NSError+GNUstepBase.m | 3 +-- Source/Additions/NSFileHandle+GNUstepBase.m | 3 +-- Source/Additions/NSHashTable+GNUstepBase.m | 3 +-- .../Additions/NSMutableString+GNUstepBase.m | 3 +-- Source/Additions/NSNumber+GNUstepBase.m | 3 +-- Source/Additions/NSObject+GNUstepBase.m | 3 +-- Source/Additions/NSProcessInfo+GNUstepBase.m | 3 +-- Source/Additions/NSPropertyList+GNUstepBase.m | 3 +-- Source/Additions/NSStream+GNUstepBase.m | 3 +-- Source/Additions/NSString+GNUstepBase.m | 3 +-- Source/Additions/NSTask+GNUstepBase.m | 3 +-- Source/Additions/NSThread+GNUstepBase.m | 3 +-- Source/Additions/NSURL+GNUstepBase.m | 3 +-- Source/Additions/Unicode.m | 3 +-- Source/DocMakefile | 3 +-- Source/GNUmakefile | 3 +-- Source/GSArray.m | 3 +-- Source/GSAttributedString.m | 3 +-- Source/GSAvahiClient.h | 3 +-- Source/GSAvahiClient.m | 3 +-- Source/GSAvahiNetService.m | 3 +-- Source/GSAvahiNetServiceBrowser.m | 3 +-- Source/GSAvahiRunLoopIntegration.h | 3 +-- Source/GSAvahiRunLoopIntegration.m | 3 +-- Source/GSBlocks.m | 3 +-- Source/GSConcreteValue.m | 3 +-- Source/GSConcreteValueTemplate.m | 3 +-- Source/GSCountedSet.m | 3 +-- Source/GSDictionary.m | 3 +-- Source/GSDispatch.h | 3 +-- Source/GSFFCallInvocation.m | 3 +-- Source/GSFFIInvocation.m | 3 +-- Source/GSFTPURLHandle.m | 3 +-- Source/GSFileHandle.h | 3 +-- Source/GSFileHandle.m | 3 +-- Source/GSFormat.m | 3 +-- Source/GSHTTPAuthentication.m | 3 +-- Source/GSHTTPURLHandle.m | 3 +-- Source/GSICUString.m | 3 +-- Source/GSInternal.h | 3 +-- Source/GSInvocation.h | 3 +-- Source/GSLocale.m | 3 +-- Source/GSMDNSNetServices.m | 3 +-- Source/GSNetServices.h | 3 +-- Source/GSNetwork.h | 3 +-- Source/GSOrderedSet.m | 3 +-- Source/GSPThread.h | 3 +-- Source/GSPortPrivate.h | 3 +-- Source/GSPrivate.h | 3 +-- Source/GSPrivateHash.m | 3 +-- Source/GSQuickSort.m | 3 +-- Source/GSRunLoopCtxt.h | 3 +-- Source/GSRunLoopWatcher.h | 3 +-- Source/GSRunLoopWatcher.m | 3 +-- Source/GSSet.m | 3 +-- Source/GSShellSort.m | 3 +-- Source/GSSocketStream.h | 3 +-- Source/GSSocketStream.m | 3 +-- Source/GSSocksParser/GSSocks4Parser.h | 3 +-- Source/GSSocksParser/GSSocks4Parser.m | 3 +-- Source/GSSocksParser/GSSocks5Parser.h | 3 +-- Source/GSSocksParser/GSSocks5Parser.m | 3 +-- Source/GSSocksParser/GSSocksParser.h | 3 +-- Source/GSSocksParser/GSSocksParser.m | 3 +-- Source/GSSocksParser/GSSocksParserPrivate.h | 3 +-- Source/GSSocksParser/GSSocksParserPrivate.m | 3 +-- Source/GSSorting.h | 3 +-- Source/GSStream.h | 3 +-- Source/GSStream.m | 3 +-- Source/GSString.m | 3 +-- Source/GSTLS.m | 3 +-- Source/GSTimSort.m | 3 +-- Source/GSURLPrivate.h | 3 +-- Source/GSValue.m | 3 +-- Source/GSeq.h | 3 +-- Source/Makefile.postamble | 2 +- Source/Makefile.preamble | 2 +- Source/NSAffineTransform.m | 3 +-- Source/NSAppleEventDescriptor.m | 3 +-- Source/NSAppleEventManager.m | 3 +-- Source/NSAppleScript.m | 3 +-- Source/NSArchiver.m | 3 +-- Source/NSArray.m | 3 +-- Source/NSAssertionHandler.m | 3 +-- Source/NSAttributedString.m | 3 +-- Source/NSAutoreleasePool.m | 3 +-- Source/NSBackgroundActivityScheduler.m | 3 +-- Source/NSBundle.m | 3 +-- Source/NSByteCountFormatter.m | 3 +-- Source/NSCache.m | 3 +-- Source/NSCachedURLResponse.m | 3 +-- Source/NSCalendar.m | 3 +-- Source/NSCalendarDate.m | 3 +-- Source/NSCallBacks.h | 3 +-- Source/NSCallBacks.m | 3 +-- Source/NSCharacterSet.m | 3 +-- Source/NSClassDescription.m | 3 +-- Source/NSCoder.m | 3 +-- Source/NSConcreteHashTable.m | 3 +-- Source/NSConcreteMapTable.m | 3 +-- Source/NSConcretePointerFunctions.h | 3 +-- Source/NSConcretePointerFunctions.m | 3 +-- Source/NSConnection.m | 3 +-- Source/NSCopyObject.m | 3 +-- Source/NSCountedSet.m | 3 +-- Source/NSData.m | 3 +-- Source/NSDate.m | 3 +-- Source/NSDateComponentsFormatter.m | 3 +-- Source/NSDateFormatter.m | 3 +-- Source/NSDateInterval.m | 3 +-- Source/NSDateIntervalFormatter.m | 3 +-- Source/NSDatePrivate.h | 3 +-- Source/NSDebug.m | 3 +-- Source/NSDecimal.m | 3 +-- Source/NSDecimalNumber.m | 3 +-- Source/NSDictionary.m | 3 +-- Source/NSDistantObject.m | 3 +-- Source/NSDistributedLock.m | 3 +-- Source/NSDistributedNotificationCenter.m | 3 +-- Source/NSEnergyFormatter.m | 3 +-- Source/NSEnumerator.m | 3 +-- Source/NSError.m | 3 +-- Source/NSException.m | 3 +-- Source/NSExtensionContext.m | 3 +-- Source/NSExtensionItem.m | 3 +-- Source/NSFileCoordinator.m | 3 +-- Source/NSFileHandle.m | 3 +-- Source/NSFileManager.m | 3 +-- Source/NSFileVersion.m | 3 +-- Source/NSFileWrapper.m | 3 +-- Source/NSFormatter.m | 3 +-- Source/NSGarbageCollector.m | 3 +-- Source/NSGeometry.m | 3 +-- Source/NSHFSFileTypes.m | 3 +-- Source/NSHTTPCookie.m | 3 +-- Source/NSHTTPCookieStorage.m | 3 +-- Source/NSHashTable.m | 3 +-- Source/NSHost.m | 3 +-- Source/NSISO8601DateFormatter.m | 3 +-- Source/NSIndexPath.m | 3 +-- Source/NSIndexSet.m | 3 +-- Source/NSInvocation.m | 3 +-- Source/NSInvocationOperation.m | 3 +-- Source/NSItemProvider.m | 3 +-- Source/NSItemProviderReadingWriting.m | 3 +-- Source/NSJSONSerialization.m | 3 +-- Source/NSKeyValueCoding+Caching.h | 3 +-- Source/NSKeyValueCoding+Caching.m | 3 +-- Source/NSKeyValueCoding.m | 3 +-- Source/NSKeyValueMutableArray.m | 3 +-- Source/NSKeyValueMutableSet.m | 3 +-- Source/NSKeyValueObserving.m | 3 +-- Source/NSKeyedArchiver.m | 3 +-- Source/NSKeyedUnarchiver.m | 3 +-- Source/NSLengthFormatter.m | 3 +-- Source/NSLinguisticTagger.m | 3 +-- Source/NSLocale.m | 3 +-- Source/NSLock.m | 3 +-- Source/NSLog.m | 3 +-- Source/NSMapTable.m | 3 +-- Source/NSMassFormatter.m | 3 +-- Source/NSMeasurement.m | 3 +-- Source/NSMeasurementFormatter.m | 3 +-- Source/NSMessagePort.m | 3 +-- Source/NSMessagePortNameServer.m | 3 +-- Source/NSMetadata.m | 3 +-- Source/NSMetadataAttributes.m | 3 +-- Source/NSMethodSignature.m | 3 +-- Source/NSNetServices.m | 3 +-- Source/NSNotification.m | 3 +-- Source/NSNotificationCenter.m | 3 +-- Source/NSNotificationQueue.m | 3 +-- Source/NSNull.m | 3 +-- Source/NSNumber.m | 3 +-- Source/NSNumberFormatter.m | 3 +-- Source/NSObjCRuntime.m | 3 +-- Source/NSObject+NSComparisonMethods.m | 3 +-- Source/NSObject.m | 3 +-- Source/NSObjectScripting.m | 3 +-- Source/NSOperation.m | 3 +-- Source/NSOrderedSet.m | 3 +-- Source/NSOrthography.m | 3 +-- Source/NSPage.m | 3 +-- Source/NSPathUtilities.m | 3 +-- Source/NSPersonNameComponents.m | 3 +-- Source/NSPersonNameComponentsFormatter.m | 3 +-- Source/NSPipe.m | 3 +-- Source/NSPointerArray.m | 3 +-- Source/NSPointerFunctions.m | 3 +-- Source/NSPort.m | 3 +-- Source/NSPortCoder.m | 3 +-- Source/NSPortMessage.m | 3 +-- Source/NSPortNameServer.m | 3 +-- Source/NSPredicate.m | 3 +-- Source/NSProcessInfo.m | 3 +-- Source/NSProgress.m | 3 +-- Source/NSPropertyList.m | 3 +-- Source/NSProtocolChecker.m | 3 +-- Source/NSProxy.m | 3 +-- Source/NSRange.m | 3 +-- Source/NSRegularExpression.m | 3 +-- Source/NSRunLoop.m | 3 +-- Source/NSScanner.m | 3 +-- Source/NSScriptClassDescription.m | 3 +-- Source/NSScriptCoercionHandler.m | 3 +-- Source/NSScriptCommand.m | 3 +-- Source/NSScriptCommandDescription.m | 3 +-- Source/NSScriptExecutionContext.m | 3 +-- Source/NSScriptKeyValueCoding.m | 3 +-- Source/NSScriptObjectSpecifiers.m | 3 +-- Source/NSScriptStandardSuiteCommands.m | 3 +-- Source/NSScriptSuiteRegistry.m | 3 +-- Source/NSSerializer.m | 3 +-- Source/NSSet.m | 3 +-- Source/NSSocketPort.m | 3 +-- Source/NSSocketPortNameServer.m | 3 +-- Source/NSSortDescriptor.m | 3 +-- Source/NSSpellServer.m | 2 +- Source/NSString.m | 3 +-- Source/NSTask.m | 3 +-- Source/NSTextCheckingResult.m | 3 +-- Source/NSThread.m | 3 +-- Source/NSTimeZone.m | 3 +-- Source/NSTimer.m | 3 +-- Source/NSURL.m | 3 +-- Source/NSURLAuthenticationChallenge.m | 3 +-- Source/NSURLCache.m | 3 +-- Source/NSURLConnection.m | 3 +-- Source/NSURLCredential.m | 3 +-- Source/NSURLCredentialStorage.m | 3 +-- Source/NSURLDownload.m | 3 +-- Source/NSURLHandle.m | 3 +-- Source/NSURLProtectionSpace.m | 3 +-- Source/NSURLProtocol.m | 3 +-- Source/NSURLRequest.m | 3 +-- Source/NSURLResponse.m | 3 +-- Source/NSURLSession.m | 3 +-- Source/NSURLSessionConfiguration.m | 3 +-- Source/NSURLSessionPrivate.h | 3 +-- Source/NSURLSessionTask.m | 3 +-- Source/NSURLSessionTaskPrivate.h | 3 +-- Source/NSUUID.m | 3 +-- Source/NSUbiquitousKeyValueStore.m | 3 +-- Source/NSUnarchiver.m | 3 +-- Source/NSUndoManager.m | 3 +-- Source/NSUnit.m | 3 +-- Source/NSUserActivity.m | 3 +-- Source/NSUserDefaults.m | 3 +-- Source/NSUserNotification.m | 3 +-- Source/NSUserScriptTask.m | 3 +-- Source/NSValue.m | 3 +-- Source/NSValueTransformer.m | 3 +-- Source/NSXMLDTD.m | 3 +-- Source/NSXMLDTDNode.m | 3 +-- Source/NSXMLDocument.m | 3 +-- Source/NSXMLElement.m | 3 +-- Source/NSXMLNode.m | 3 +-- Source/NSXMLParser.m | 3 +-- Source/NSXMLPrivate.h | 3 +-- Source/NSXPCConnection.m | 3 +-- Source/NSZone.m | 3 +-- Source/ObjectiveC2/GNUmakefile | 3 +-- Source/ObjectiveC2/Makefile.preamble | 2 +- Source/ObjectiveC2/sync.m | 3 +-- Source/callframe.h | 3 +-- Source/callframe.m | 3 +-- Source/cifframe.h | 3 +-- Source/cifframe.m | 3 +-- Source/dld-load.h | 2 +- Source/externs.m | 3 +-- Source/hpux-load.h | 2 +- Source/libgnustep-base-entry.m | 3 +-- Source/null-load.h | 2 +- Source/objc-load.h | 3 +-- Source/objc-load.m | 3 +-- Source/preface.m | 3 +-- Source/simple-load.h | 2 +- Source/typeEncodingHelper.h | 3 +-- Source/unix/GNUmakefile | 3 +-- Source/unix/Makefile.preamble | 2 +- Source/unix/NSStream.m | 3 +-- Source/win32-def.top | 3 +-- Source/win32-load.h | 2 +- Source/win32/GNUmakefile | 3 +-- Source/win32/GSFileHandle.m | 3 +-- Source/win32/Makefile.preamble | 2 +- Source/win32/NSMessagePort.m | 3 +-- Source/win32/NSMessagePortNameServer.m | 3 +-- Source/win32/NSStream.m | 3 +-- Source/win32/NSString+Win32Additions.h | 3 +-- Source/win32/NSString+Win32Additions.m | 3 +-- Tests/GNUmakefile | 3 +-- Tests/base/NSString/bom.m | 3 +-- Tools/AGSHtml.h | 2 +- Tools/AGSHtml.m | 2 +- Tools/AGSIndex.h | 2 +- Tools/AGSIndex.m | 2 +- Tools/AGSOutput.h | 2 +- Tools/AGSOutput.m | 2 +- Tools/AGSParser.h | 2 +- Tools/AGSParser.m | 2 +- Tools/DocMakefile | 3 +-- Tools/GNUmakefile | 3 +-- Tools/HTMLLinker.m | 2 +- Tools/Makefile.postamble | 2 +- Tools/Makefile.preamble | 3 +-- Tools/NSPropertyList+PLUtil.h | 3 +-- Tools/NSPropertyList+PLUtil.m | 3 +-- Tools/autogsdoc.m | 2 +- Tools/cvtenc.m | 2 +- Tools/defaults.m | 2 +- Tools/gdnc.h | 2 +- Tools/gdnc.m | 2 +- Tools/gdomap.c | 3 +-- Tools/gdomap.h | 2 +- Tools/gsdoc-0_6_5.dtd | 3 +-- Tools/gsdoc-0_6_6.dtd | 3 +-- Tools/gsdoc-0_6_7.dtd | 3 +-- Tools/gsdoc-1_0_0.dtd | 3 +-- Tools/gsdoc-1_0_1.dtd | 3 +-- Tools/gsdoc-1_0_1.rnc | 3 +-- Tools/gsdoc-1_0_2.dtd | 3 +-- Tools/gsdoc-1_0_3.dtd | 3 +-- Tools/gsdoc-1_0_4.dtd | 3 +-- Tools/gspath.m | 2 +- Tools/locale_alias.m | 2 +- Tools/make_strings/GNUmakefile | 3 +-- Tools/make_strings/GNUmakefile.postamble | 2 +- Tools/make_strings/GNUmakefile.preamble | 3 +-- Tools/make_strings/SourceEntry.h | 2 +- Tools/make_strings/SourceEntry.m | 2 +- Tools/make_strings/StringsEntry.h | 2 +- Tools/make_strings/StringsEntry.m | 2 +- Tools/make_strings/StringsFile.h | 2 +- Tools/make_strings/StringsFile.m | 2 +- Tools/make_strings/make_strings.h | 2 +- Tools/make_strings/make_strings.m | 2 +- Tools/pl.m | 2 +- Tools/pl2link.m | 2 +- Tools/pldes.m | 2 +- Tools/plget.m | 2 +- Tools/plist-0_9.dtd | 3 +-- Tools/plmerge.m | 2 +- Tools/plparse.m | 2 +- Tools/plser.m | 2 +- Tools/plutil.m | 2 +- Tools/sfparse.m | 2 +- Tools/xmlparse.m | 2 +- base.make.in | 2 +- configure.ac | 3 +-- macosx/GNUstepBase/preface.h | 3 +-- macosx/config.h | 2 +- 590 files changed, 590 insertions(+), 1123 deletions(-) diff --git a/COPYING b/COPYING index 67b3c9a29..1b388147e 100644 --- a/COPYING +++ b/COPYING @@ -2,8 +2,7 @@ Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA - Everyone is permitted to copy and distribute verbatim copies + 31 Milk Street #960789 Boston, MA 02196 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble @@ -305,8 +304,7 @@ the "copyright" line and a pointer to where the full notice is found. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. - + Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this diff --git a/COPYING.LIB b/COPYING.LIB index ec47efc06..275decae2 100644 --- a/COPYING.LIB +++ b/COPYING.LIB @@ -2,8 +2,7 @@ Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts @@ -486,7 +485,6 @@ convey the exclusion of warranty; and each file should have at least the You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your diff --git a/Documentation/GNUmakefile b/Documentation/GNUmakefile index 64862550e..031c790aa 100644 --- a/Documentation/GNUmakefile +++ b/Documentation/GNUmakefile @@ -18,8 +18,7 @@ # # You should have received a copy of the GNU General Public # License along with this library; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02111 USA. +# Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. ifeq ($(GNUSTEP_MAKEFILES),) GNUSTEP_MAKEFILES := $(shell gnustep-config --variable=GNUSTEP_MAKEFILES 2>/dev/null) diff --git a/Documentation/General/GNUmakefile b/Documentation/General/GNUmakefile index 56683ea53..408a25ed4 100644 --- a/Documentation/General/GNUmakefile +++ b/Documentation/General/GNUmakefile @@ -19,8 +19,7 @@ # # You should have received a copy of the GNU General Public # License along with this library; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02111 USA +# Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA # PACKAGE_NAME = gnustep-base diff --git a/Documentation/Makefile.postamble b/Documentation/Makefile.postamble index b0e08f11c..c254128a1 100644 --- a/Documentation/Makefile.postamble +++ b/Documentation/Makefile.postamble @@ -20,7 +20,7 @@ # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING.LIB. # If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# 31 Milk Street #960789 Boston, MA 02196 USA. # # Makefile.postamble diff --git a/Documentation/manual/GNUmakefile b/Documentation/manual/GNUmakefile index 7bb687dde..c24d4ea03 100644 --- a/Documentation/manual/GNUmakefile +++ b/Documentation/manual/GNUmakefile @@ -16,7 +16,7 @@ # You should have received a copy of the GNU General Public # License along with this library. # If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# 31 Milk Street #960789 Boston, MA 02196 USA. PACKAGE_NAME = gnustep-base diff --git a/Documentation/manual/index.html b/Documentation/manual/index.html index 6a2f1bd17..d43958567 100644 --- a/Documentation/manual/index.html +++ b/Documentation/manual/index.html @@ -10,7 +10,7 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + 31 Milk Street #960789 Boston, MA 02196 USA. --> diff --git a/Examples/GNUmakefile b/Examples/GNUmakefile index 1f0a80f68..98cbce714 100644 --- a/Examples/GNUmakefile +++ b/Examples/GNUmakefile @@ -19,8 +19,7 @@ # # You should have received a copy of the GNU General Public # License along with this library; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02111 USA. +# Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. # ifeq ($(GNUSTEP_MAKEFILES),) diff --git a/Examples/Makefile.postamble b/Examples/Makefile.postamble index 4335484ee..78dc7e418 100644 --- a/Examples/Makefile.postamble +++ b/Examples/Makefile.postamble @@ -20,7 +20,7 @@ # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING.LIB. # If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# 31 Milk Street #960789 Boston, MA 02196 USA. # # Makefile.postamble diff --git a/Examples/Makefile.preamble b/Examples/Makefile.preamble index bc5a69db3..1d7629a5b 100644 --- a/Examples/Makefile.preamble +++ b/Examples/Makefile.preamble @@ -19,8 +19,7 @@ # # You should have received a copy of the GNU General Public # License along with this library; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02111 USA. +# Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. # # diff --git a/Examples/diningPhilosophers.m b/Examples/diningPhilosophers.m index 9ad544973..5e8e3353a 100644 --- a/Examples/diningPhilosophers.m +++ b/Examples/diningPhilosophers.m @@ -23,8 +23,7 @@ You should have received a copy of the GNU General Public License along with this file; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. -*/ + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA.*/ #include #include diff --git a/GNUmakefile b/GNUmakefile index cb49c52aa..da1633bfe 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -19,8 +19,7 @@ # # You should have received a copy of the GNU General Public # License along with this library; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02111 USA +# Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA # ifeq ($(GNUSTEP_MAKEFILES),) diff --git a/Headers/CoreFoundation/CFCGTypes.h b/Headers/CoreFoundation/CFCGTypes.h index cebc25641..13cef938a 100644 --- a/Headers/CoreFoundation/CFCGTypes.h +++ b/Headers/CoreFoundation/CFCGTypes.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _CFCGTypes_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/Foundation.h b/Headers/Foundation/Foundation.h index d8d91ff3a..a8792549f 100644 --- a/Headers/Foundation/Foundation.h +++ b/Headers/Foundation/Foundation.h @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __Foundation_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/FoundationErrors.h b/Headers/Foundation/FoundationErrors.h index 2c62fadb3..6f4ac3df0 100644 --- a/Headers/Foundation/FoundationErrors.h +++ b/Headers/Foundation/FoundationErrors.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __FoundationErrors_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/FoundationLegacySwiftCompatibility.h b/Headers/Foundation/FoundationLegacySwiftCompatibility.h index c6bd61b15..782b85298 100644 --- a/Headers/Foundation/FoundationLegacySwiftCompatibility.h +++ b/Headers/Foundation/FoundationLegacySwiftCompatibility.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _FoundationLegacySwiftCompatibility_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSAffineTransform.h b/Headers/Foundation/NSAffineTransform.h index 9c371aa32..c25799f3d 100644 --- a/Headers/Foundation/NSAffineTransform.h +++ b/Headers/Foundation/NSAffineTransform.h @@ -21,8 +21,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSAffineTransform_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSAppleEventDescriptor.h b/Headers/Foundation/NSAppleEventDescriptor.h index cb9dbbdc4..793540bf7 100644 --- a/Headers/Foundation/NSAppleEventDescriptor.h +++ b/Headers/Foundation/NSAppleEventDescriptor.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSAppleEventDescriptor_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSAppleEventManager.h b/Headers/Foundation/NSAppleEventManager.h index 5fb7e40a7..6a8a14fee 100644 --- a/Headers/Foundation/NSAppleEventManager.h +++ b/Headers/Foundation/NSAppleEventManager.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSAppleEventManager_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSAppleScript.h b/Headers/Foundation/NSAppleScript.h index 1a1969f74..4b23ba72b 100644 --- a/Headers/Foundation/NSAppleScript.h +++ b/Headers/Foundation/NSAppleScript.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSAppleScript_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSArchiver.h b/Headers/Foundation/NSArchiver.h index c2c07e685..b17e3ee5c 100644 --- a/Headers/Foundation/NSArchiver.h +++ b/Headers/Foundation/NSArchiver.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. AutogsdocSource:NSUnarchiver.m AutogsdocSource:NSArchiver.m diff --git a/Headers/Foundation/NSArray.h b/Headers/Foundation/NSArray.h index 543c304fe..e7e463227 100644 --- a/Headers/Foundation/NSArray.h +++ b/Headers/Foundation/NSArray.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSArray_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSAttributedString.h b/Headers/Foundation/NSAttributedString.h index 42e4cff71..1fd677b11 100644 --- a/Headers/Foundation/NSAttributedString.h +++ b/Headers/Foundation/NSAttributedString.h @@ -27,8 +27,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ /* Warning - [-initWithString:attributes:] is the designated initialiser, diff --git a/Headers/Foundation/NSAutoreleasePool.h b/Headers/Foundation/NSAutoreleasePool.h index 8f98270d0..f27d614ab 100644 --- a/Headers/Foundation/NSAutoreleasePool.h +++ b/Headers/Foundation/NSAutoreleasePool.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSAutoreleasePool_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSBackgroundActivityScheduler.h b/Headers/Foundation/NSBackgroundActivityScheduler.h index c5b20a25b..f7b8d6ab0 100644 --- a/Headers/Foundation/NSBackgroundActivityScheduler.h +++ b/Headers/Foundation/NSBackgroundActivityScheduler.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSBackgroundActivityScheduler_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSBundle.h b/Headers/Foundation/NSBundle.h index 2f5f82bc9..99b4f2956 100644 --- a/Headers/Foundation/NSBundle.h +++ b/Headers/Foundation/NSBundle.h @@ -21,8 +21,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSBundle_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSByteCountFormatter.h b/Headers/Foundation/NSByteCountFormatter.h index 344a8c1c8..14ec73762 100644 --- a/Headers/Foundation/NSByteCountFormatter.h +++ b/Headers/Foundation/NSByteCountFormatter.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSByteCountFormatter_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSByteOrder.h b/Headers/Foundation/NSByteOrder.h index 9f9b86c97..ea829585b 100644 --- a/Headers/Foundation/NSByteOrder.h +++ b/Headers/Foundation/NSByteOrder.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSByteOrder_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSCache.h b/Headers/Foundation/NSCache.h index 93b81ae70..7f906fbb8 100644 --- a/Headers/Foundation/NSCache.h +++ b/Headers/Foundation/NSCache.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSCache_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSCalendar.h b/Headers/Foundation/NSCalendar.h index f73eabd02..90540f455 100644 --- a/Headers/Foundation/NSCalendar.h +++ b/Headers/Foundation/NSCalendar.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; see the file COPYING.LIB. If not, see or write to the - Free Software Foundation, 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. + Free Software Foundation, 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSCalendar_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSCalendarDate.h b/Headers/Foundation/NSCalendarDate.h index 8fd8abc9c..b07560424 100644 --- a/Headers/Foundation/NSCalendarDate.h +++ b/Headers/Foundation/NSCalendarDate.h @@ -15,8 +15,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSCalendarDate_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSCharacterSet.h b/Headers/Foundation/NSCharacterSet.h index 3c625ab0f..16c71854f 100644 --- a/Headers/Foundation/NSCharacterSet.h +++ b/Headers/Foundation/NSCharacterSet.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSCharacterSet_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSClassDescription.h b/Headers/Foundation/NSClassDescription.h index a1d66e3ce..9f122f6ae 100644 --- a/Headers/Foundation/NSClassDescription.h +++ b/Headers/Foundation/NSClassDescription.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSClassDescription_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSCoder.h b/Headers/Foundation/NSCoder.h index c5187d0a7..41805bbfb 100644 --- a/Headers/Foundation/NSCoder.h +++ b/Headers/Foundation/NSCoder.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSCoder_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSComparisonPredicate.h b/Headers/Foundation/NSComparisonPredicate.h index 895f10fe9..dfa703df7 100644 --- a/Headers/Foundation/NSComparisonPredicate.h +++ b/Headers/Foundation/NSComparisonPredicate.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSComparisonPredicate_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSCompoundPredicate.h b/Headers/Foundation/NSCompoundPredicate.h index dcdbee2c7..185c0b4ce 100644 --- a/Headers/Foundation/NSCompoundPredicate.h +++ b/Headers/Foundation/NSCompoundPredicate.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSCompoundPredicate_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSConnection.h b/Headers/Foundation/NSConnection.h index c6c3ba245..e504610d5 100644 --- a/Headers/Foundation/NSConnection.h +++ b/Headers/Foundation/NSConnection.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSConnection_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSData.h b/Headers/Foundation/NSData.h index 05c3a7a07..d07e56268 100644 --- a/Headers/Foundation/NSData.h +++ b/Headers/Foundation/NSData.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSData_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSDate.h b/Headers/Foundation/NSDate.h index 63f2c4421..0c1de2941 100644 --- a/Headers/Foundation/NSDate.h +++ b/Headers/Foundation/NSDate.h @@ -15,8 +15,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSDate_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSDateComponentsFormatter.h b/Headers/Foundation/NSDateComponentsFormatter.h index 863ef0451..4c253ba6c 100644 --- a/Headers/Foundation/NSDateComponentsFormatter.h +++ b/Headers/Foundation/NSDateComponentsFormatter.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSDateComponentsFormatter_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSDateFormatter.h b/Headers/Foundation/NSDateFormatter.h index 614aa9ef9..4f9f84f15 100644 --- a/Headers/Foundation/NSDateFormatter.h +++ b/Headers/Foundation/NSDateFormatter.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSDateFormatter_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSDateInterval.h b/Headers/Foundation/NSDateInterval.h index 439df9e3c..b0ced0ca3 100644 --- a/Headers/Foundation/NSDateInterval.h +++ b/Headers/Foundation/NSDateInterval.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSDateInterval_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSDateIntervalFormatter.h b/Headers/Foundation/NSDateIntervalFormatter.h index 6a75bf762..b69ad7eec 100644 --- a/Headers/Foundation/NSDateIntervalFormatter.h +++ b/Headers/Foundation/NSDateIntervalFormatter.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSDateIntervalFormatter_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSDebug.h b/Headers/Foundation/NSDebug.h index e5118a106..645d34eae 100644 --- a/Headers/Foundation/NSDebug.h +++ b/Headers/Foundation/NSDebug.h @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSDebug_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSDecimal.h b/Headers/Foundation/NSDecimal.h index e6c88ac02..d89f97df3 100644 --- a/Headers/Foundation/NSDecimal.h +++ b/Headers/Foundation/NSDecimal.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Headers/Foundation/NSDecimalNumber.h b/Headers/Foundation/NSDecimalNumber.h index 7a160d332..b49855683 100644 --- a/Headers/Foundation/NSDecimalNumber.h +++ b/Headers/Foundation/NSDecimalNumber.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSDecimalNumber_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSDictionary.h b/Headers/Foundation/NSDictionary.h index 046aed3dc..9cdbbf9fe 100644 --- a/Headers/Foundation/NSDictionary.h +++ b/Headers/Foundation/NSDictionary.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSDictionary_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSDistantObject.h b/Headers/Foundation/NSDistantObject.h index c15b2c62a..47259097e 100644 --- a/Headers/Foundation/NSDistantObject.h +++ b/Headers/Foundation/NSDistantObject.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSDistantObject_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSDistributedLock.h b/Headers/Foundation/NSDistributedLock.h index 734ec6d91..662145122 100644 --- a/Headers/Foundation/NSDistributedLock.h +++ b/Headers/Foundation/NSDistributedLock.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSDistributedLock_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSDistributedNotificationCenter.h b/Headers/Foundation/NSDistributedNotificationCenter.h index fa12a6ffc..61ef1630f 100644 --- a/Headers/Foundation/NSDistributedNotificationCenter.h +++ b/Headers/Foundation/NSDistributedNotificationCenter.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSDistributedNotificationCenter_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSEnergyFormatter.h b/Headers/Foundation/NSEnergyFormatter.h index 1c1c27e87..c531db776 100644 --- a/Headers/Foundation/NSEnergyFormatter.h +++ b/Headers/Foundation/NSEnergyFormatter.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSEnergyFormatter_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSEnumerator.h b/Headers/Foundation/NSEnumerator.h index 0094fef59..356c5045b 100644 --- a/Headers/Foundation/NSEnumerator.h +++ b/Headers/Foundation/NSEnumerator.h @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSEnumerator_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSError.h b/Headers/Foundation/NSError.h index 8b7cbe120..14a907775 100644 --- a/Headers/Foundation/NSError.h +++ b/Headers/Foundation/NSError.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. AutogsdocSource: NSError.m */ diff --git a/Headers/Foundation/NSErrorRecoveryAttempting.h b/Headers/Foundation/NSErrorRecoveryAttempting.h index 5fdfc30f2..7b185773d 100644 --- a/Headers/Foundation/NSErrorRecoveryAttempting.h +++ b/Headers/Foundation/NSErrorRecoveryAttempting.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Headers/Foundation/NSException.h b/Headers/Foundation/NSException.h index 2be4852bd..ce8a9ebea 100644 --- a/Headers/Foundation/NSException.h +++ b/Headers/Foundation/NSException.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSException and NSAssertionHandler class reference diff --git a/Headers/Foundation/NSExpression.h b/Headers/Foundation/NSExpression.h index 611b3ae6f..f39304723 100644 --- a/Headers/Foundation/NSExpression.h +++ b/Headers/Foundation/NSExpression.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSExpression_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSExtensionContext.h b/Headers/Foundation/NSExtensionContext.h index e8bc94276..802fdd208 100644 --- a/Headers/Foundation/NSExtensionContext.h +++ b/Headers/Foundation/NSExtensionContext.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSExtensionContext_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSExtensionItem.h b/Headers/Foundation/NSExtensionItem.h index b9fcb1d6d..9f4ade972 100644 --- a/Headers/Foundation/NSExtensionItem.h +++ b/Headers/Foundation/NSExtensionItem.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSExtensionItem_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSExtensionRequestHandling.h b/Headers/Foundation/NSExtensionRequestHandling.h index 7bb4bdf92..827408415 100644 --- a/Headers/Foundation/NSExtensionRequestHandling.h +++ b/Headers/Foundation/NSExtensionRequestHandling.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSExtensionRequestHandling_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSFileCoordinator.h b/Headers/Foundation/NSFileCoordinator.h index 10fe0fc85..f6c091773 100644 --- a/Headers/Foundation/NSFileCoordinator.h +++ b/Headers/Foundation/NSFileCoordinator.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSFileCoordinator_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSFileHandle.h b/Headers/Foundation/NSFileHandle.h index b09cfef2f..0e6c2fd97 100644 --- a/Headers/Foundation/NSFileHandle.h +++ b/Headers/Foundation/NSFileHandle.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. AutogsdocSource: NSFileHandle.m AutogsdocSource: NSPipe.m diff --git a/Headers/Foundation/NSFileManager.h b/Headers/Foundation/NSFileManager.h index e76fddf5f..d31b2eeb3 100644 --- a/Headers/Foundation/NSFileManager.h +++ b/Headers/Foundation/NSFileManager.h @@ -21,8 +21,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. diff --git a/Headers/Foundation/NSFilePresenter.h b/Headers/Foundation/NSFilePresenter.h index 2454cb76b..c3fca6f02 100644 --- a/Headers/Foundation/NSFilePresenter.h +++ b/Headers/Foundation/NSFilePresenter.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSFilePresenter_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSFileVersion.h b/Headers/Foundation/NSFileVersion.h index 2590daf42..e33f94286 100644 --- a/Headers/Foundation/NSFileVersion.h +++ b/Headers/Foundation/NSFileVersion.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSFileVersion_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSFileWrapper.h b/Headers/Foundation/NSFileWrapper.h index db56dba96..d3a792d16 100644 --- a/Headers/Foundation/NSFileWrapper.h +++ b/Headers/Foundation/NSFileWrapper.h @@ -23,8 +23,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; see the file COPYING.LIB. If not, see or write to the - Free Software Foundation, 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. + Free Software Foundation, 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _GNUstep_H_NSFileWrapper diff --git a/Headers/Foundation/NSFormatter.h b/Headers/Foundation/NSFormatter.h index 1d31d6213..d465b8fc4 100644 --- a/Headers/Foundation/NSFormatter.h +++ b/Headers/Foundation/NSFormatter.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSFormatter_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSGarbageCollector.h b/Headers/Foundation/NSGarbageCollector.h index 448706649..f2d9ecc1d 100644 --- a/Headers/Foundation/NSGarbageCollector.h +++ b/Headers/Foundation/NSGarbageCollector.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. AutogsdocSource: NSGarbageCollector.m diff --git a/Headers/Foundation/NSGeometry.h b/Headers/Foundation/NSGeometry.h index a4bdb9931..491f60bf8 100644 --- a/Headers/Foundation/NSGeometry.h +++ b/Headers/Foundation/NSGeometry.h @@ -18,8 +18,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110 USA. + * Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSGeometry_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSHFSFileTypes.h b/Headers/Foundation/NSHFSFileTypes.h index 5f0390dc3..55037a90b 100644 --- a/Headers/Foundation/NSHFSFileTypes.h +++ b/Headers/Foundation/NSHFSFileTypes.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSHFSFileTypes_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSHTTPCookie.h b/Headers/Foundation/NSHTTPCookie.h index 1edf5c2af..0bccdcc99 100644 --- a/Headers/Foundation/NSHTTPCookie.h +++ b/Headers/Foundation/NSHTTPCookie.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSHTTPCookie_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSHTTPCookieStorage.h b/Headers/Foundation/NSHTTPCookieStorage.h index f269ea8fc..ca03b45b8 100644 --- a/Headers/Foundation/NSHTTPCookieStorage.h +++ b/Headers/Foundation/NSHTTPCookieStorage.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSHTTPCookieStorage_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSHashTable.h b/Headers/Foundation/NSHashTable.h index 1f0c75574..7ae4409d5 100644 --- a/Headers/Foundation/NSHashTable.h +++ b/Headers/Foundation/NSHashTable.h @@ -21,8 +21,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, 02111 USA. + * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, 02111 USA. */ #ifndef __NSHashTable_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSHost.h b/Headers/Foundation/NSHost.h index 341c7a05c..25fd1dc8e 100644 --- a/Headers/Foundation/NSHost.h +++ b/Headers/Foundation/NSHost.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSHost_h_GNUSTEP_BASE_INCLUDE #define __NSHost_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSISO8601DateFormatter.h b/Headers/Foundation/NSISO8601DateFormatter.h index c0e5a423b..6a5eaa72b 100644 --- a/Headers/Foundation/NSISO8601DateFormatter.h +++ b/Headers/Foundation/NSISO8601DateFormatter.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSISO8601DateFormatter_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSIndexPath.h b/Headers/Foundation/NSIndexPath.h index 4c8f923b3..1a0114c4f 100644 --- a/Headers/Foundation/NSIndexPath.h +++ b/Headers/Foundation/NSIndexPath.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. AutogsdocSource: NSIndexPath.m diff --git a/Headers/Foundation/NSIndexSet.h b/Headers/Foundation/NSIndexSet.h index ac1531e52..8852b06b4 100644 --- a/Headers/Foundation/NSIndexSet.h +++ b/Headers/Foundation/NSIndexSet.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. AutogsdocSource: NSIndexSet.m diff --git a/Headers/Foundation/NSInvocation.h b/Headers/Foundation/NSInvocation.h index b4137bb73..9b10095d3 100644 --- a/Headers/Foundation/NSInvocation.h +++ b/Headers/Foundation/NSInvocation.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSInvocation_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSInvocationOperation.h b/Headers/Foundation/NSInvocationOperation.h index c409a3090..bdfbf148d 100644 --- a/Headers/Foundation/NSInvocationOperation.h +++ b/Headers/Foundation/NSInvocationOperation.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Headers/Foundation/NSItemProvider.h b/Headers/Foundation/NSItemProvider.h index 9e5c96963..39272e969 100644 --- a/Headers/Foundation/NSItemProvider.h +++ b/Headers/Foundation/NSItemProvider.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSItemProvider_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSItemProviderReadingWriting.h b/Headers/Foundation/NSItemProviderReadingWriting.h index fe2c6640b..061507ad3 100644 --- a/Headers/Foundation/NSItemProviderReadingWriting.h +++ b/Headers/Foundation/NSItemProviderReadingWriting.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSItemProviderReadingWriting_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSJSONSerialization.h b/Headers/Foundation/NSJSONSerialization.h index c151725b6..7c78175ca 100644 --- a/Headers/Foundation/NSJSONSerialization.h +++ b/Headers/Foundation/NSJSONSerialization.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSObject.h" diff --git a/Headers/Foundation/NSKeyValueCoding.h b/Headers/Foundation/NSKeyValueCoding.h index 9c67c4c6f..96285d723 100644 --- a/Headers/Foundation/NSKeyValueCoding.h +++ b/Headers/Foundation/NSKeyValueCoding.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSKeyValueCoding_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSKeyValueObserving.h b/Headers/Foundation/NSKeyValueObserving.h index bc43e427a..b01c09eff 100644 --- a/Headers/Foundation/NSKeyValueObserving.h +++ b/Headers/Foundation/NSKeyValueObserving.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSKeyValueObserving_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSKeyedArchiver.h b/Headers/Foundation/NSKeyedArchiver.h index 48a9a4f89..9796576c8 100644 --- a/Headers/Foundation/NSKeyedArchiver.h +++ b/Headers/Foundation/NSKeyedArchiver.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. AutogsdocSource: NSKeyedArchiver.m AutogsdocSource: NSKeyedUnarchiver.m diff --git a/Headers/Foundation/NSLengthFormatter.h b/Headers/Foundation/NSLengthFormatter.h index db703d0cc..da09c8d5d 100644 --- a/Headers/Foundation/NSLengthFormatter.h +++ b/Headers/Foundation/NSLengthFormatter.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSLengthFormatter_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSLinguisticTagger.h b/Headers/Foundation/NSLinguisticTagger.h index 877b3f1f0..c21918e1c 100644 --- a/Headers/Foundation/NSLinguisticTagger.h +++ b/Headers/Foundation/NSLinguisticTagger.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSLinguisticTagger_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSLocale.h b/Headers/Foundation/NSLocale.h index ff547078a..51bd5256f 100644 --- a/Headers/Foundation/NSLocale.h +++ b/Headers/Foundation/NSLocale.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; see the file COPYING.LIB. If not, see or write to the - Free Software Foundation, 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. + Free Software Foundation, 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSLocale_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSLock.h b/Headers/Foundation/NSLock.h index 3e5e6a912..4af7985f4 100644 --- a/Headers/Foundation/NSLock.h +++ b/Headers/Foundation/NSLock.h @@ -25,8 +25,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSLock_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSMapTable.h b/Headers/Foundation/NSMapTable.h index abe4d7549..7f7905e11 100644 --- a/Headers/Foundation/NSMapTable.h +++ b/Headers/Foundation/NSMapTable.h @@ -21,8 +21,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110 USA. + * Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSMapTable_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSMassFormatter.h b/Headers/Foundation/NSMassFormatter.h index 4a15a9acc..142dc8792 100644 --- a/Headers/Foundation/NSMassFormatter.h +++ b/Headers/Foundation/NSMassFormatter.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSMassFormatter_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSMeasurement.h b/Headers/Foundation/NSMeasurement.h index 71d34e359..dc956966c 100644 --- a/Headers/Foundation/NSMeasurement.h +++ b/Headers/Foundation/NSMeasurement.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSMeasurement_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSMeasurementFormatter.h b/Headers/Foundation/NSMeasurementFormatter.h index a430b392b..f26bf072c 100644 --- a/Headers/Foundation/NSMeasurementFormatter.h +++ b/Headers/Foundation/NSMeasurementFormatter.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSMeasurementFormatter_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSMetadata.h b/Headers/Foundation/NSMetadata.h index 91ea6e5a9..86bb6a99c 100644 --- a/Headers/Foundation/NSMetadata.h +++ b/Headers/Foundation/NSMetadata.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSMetadata_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSMetadataAttributes.h b/Headers/Foundation/NSMetadataAttributes.h index 2bf08a3ab..70b8d1827 100644 --- a/Headers/Foundation/NSMetadataAttributes.h +++ b/Headers/Foundation/NSMetadataAttributes.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSMetadataAttributes_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSMethodSignature.h b/Headers/Foundation/NSMethodSignature.h index bdb803987..2e3383cbd 100644 --- a/Headers/Foundation/NSMethodSignature.h +++ b/Headers/Foundation/NSMethodSignature.h @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSMethodSignature_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSNetServices.h b/Headers/Foundation/NSNetServices.h index 68d241671..3cb1a77b8 100644 --- a/Headers/Foundation/NSNetServices.h +++ b/Headers/Foundation/NSNetServices.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSNetServices_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSNotification.h b/Headers/Foundation/NSNotification.h index e64bd5d82..e15bd06f0 100644 --- a/Headers/Foundation/NSNotification.h +++ b/Headers/Foundation/NSNotification.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. AutogsdocSource: NSNotification.m AutogsdocSource: NSNotificationCenter.m diff --git a/Headers/Foundation/NSNotificationQueue.h b/Headers/Foundation/NSNotificationQueue.h index d62a15912..9bec6100f 100644 --- a/Headers/Foundation/NSNotificationQueue.h +++ b/Headers/Foundation/NSNotificationQueue.h @@ -40,8 +40,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSNotificationQueue_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSNull.h b/Headers/Foundation/NSNull.h index 63d072861..4570a200a 100644 --- a/Headers/Foundation/NSNull.h +++ b/Headers/Foundation/NSNull.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSNull_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSNumberFormatter.h b/Headers/Foundation/NSNumberFormatter.h index 1d4a52921..27144af57 100644 --- a/Headers/Foundation/NSNumberFormatter.h +++ b/Headers/Foundation/NSNumberFormatter.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSNumberFormatter_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSObjCRuntime.h b/Headers/Foundation/NSObjCRuntime.h index ca2abb4be..2703a385e 100644 --- a/Headers/Foundation/NSObjCRuntime.h +++ b/Headers/Foundation/NSObjCRuntime.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. AutogsdocSource: NSObjCRuntime.m AutogsdocSource: NSLog.m diff --git a/Headers/Foundation/NSObject.h b/Headers/Foundation/NSObject.h index 0a994443c..bead7bc99 100644 --- a/Headers/Foundation/NSObject.h +++ b/Headers/Foundation/NSObject.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. AutogsdocSource: NSObject.m */ diff --git a/Headers/Foundation/NSObjectScripting.h b/Headers/Foundation/NSObjectScripting.h index baff5cda9..50f127133 100644 --- a/Headers/Foundation/NSObjectScripting.h +++ b/Headers/Foundation/NSObjectScripting.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSObjectScripting_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSOperation.h b/Headers/Foundation/NSOperation.h index 331c50af0..eeeb54f76 100644 --- a/Headers/Foundation/NSOperation.h +++ b/Headers/Foundation/NSOperation.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Headers/Foundation/NSOrderedSet.h b/Headers/Foundation/NSOrderedSet.h index f9236c452..ad32006e6 100644 --- a/Headers/Foundation/NSOrderedSet.h +++ b/Headers/Foundation/NSOrderedSet.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Headers/Foundation/NSOrthography.h b/Headers/Foundation/NSOrthography.h index 4fa8b6e25..2e8140911 100644 --- a/Headers/Foundation/NSOrthography.h +++ b/Headers/Foundation/NSOrthography.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSOrthography_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSPathUtilities.h b/Headers/Foundation/NSPathUtilities.h index 134a60b7e..2a78867b9 100644 --- a/Headers/Foundation/NSPathUtilities.h +++ b/Headers/Foundation/NSPathUtilities.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. AutogsdocSource: NSPathUtilities.m */ diff --git a/Headers/Foundation/NSPersonNameComponents.h b/Headers/Foundation/NSPersonNameComponents.h index 209274fde..1b99436b2 100644 --- a/Headers/Foundation/NSPersonNameComponents.h +++ b/Headers/Foundation/NSPersonNameComponents.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSPersonNameComponents_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSPersonNameComponentsFormatter.h b/Headers/Foundation/NSPersonNameComponentsFormatter.h index 873fe0ba8..1ebee6644 100644 --- a/Headers/Foundation/NSPersonNameComponentsFormatter.h +++ b/Headers/Foundation/NSPersonNameComponentsFormatter.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSPersonNameComponentsFormatter_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSPointerArray.h b/Headers/Foundation/NSPointerArray.h index 91aae1f35..caab35293 100644 --- a/Headers/Foundation/NSPointerArray.h +++ b/Headers/Foundation/NSPointerArray.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Headers/Foundation/NSPointerFunctions.h b/Headers/Foundation/NSPointerFunctions.h index d51baef45..709ed801c 100644 --- a/Headers/Foundation/NSPointerFunctions.h +++ b/Headers/Foundation/NSPointerFunctions.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Headers/Foundation/NSPort.h b/Headers/Foundation/NSPort.h index af09b82e2..23f8938e8 100644 --- a/Headers/Foundation/NSPort.h +++ b/Headers/Foundation/NSPort.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. AutogsdocSource: NSPort.m AutogsdocSource: NSSocketPort.m diff --git a/Headers/Foundation/NSPortCoder.h b/Headers/Foundation/NSPortCoder.h index a42241768..78bb89e82 100644 --- a/Headers/Foundation/NSPortCoder.h +++ b/Headers/Foundation/NSPortCoder.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSPortCoder_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSPortMessage.h b/Headers/Foundation/NSPortMessage.h index 8ce75e403..8d384bbe3 100644 --- a/Headers/Foundation/NSPortMessage.h +++ b/Headers/Foundation/NSPortMessage.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSPortMessage_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSPortNameServer.h b/Headers/Foundation/NSPortNameServer.h index de4664a39..b75967160 100644 --- a/Headers/Foundation/NSPortNameServer.h +++ b/Headers/Foundation/NSPortNameServer.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSPortNameServer class reference diff --git a/Headers/Foundation/NSPredicate.h b/Headers/Foundation/NSPredicate.h index 67c9c5ffb..324ae37f4 100644 --- a/Headers/Foundation/NSPredicate.h +++ b/Headers/Foundation/NSPredicate.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSPredicate_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSProcessInfo.h b/Headers/Foundation/NSProcessInfo.h index f4e05d113..a40ada78c 100644 --- a/Headers/Foundation/NSProcessInfo.h +++ b/Headers/Foundation/NSProcessInfo.h @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSProcessInfo_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSProgress.h b/Headers/Foundation/NSProgress.h index 23d321a95..3966d959f 100644 --- a/Headers/Foundation/NSProgress.h +++ b/Headers/Foundation/NSProgress.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSProgress_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSPropertyList.h b/Headers/Foundation/NSPropertyList.h index 8729ee830..5dddbd312 100644 --- a/Headers/Foundation/NSPropertyList.h +++ b/Headers/Foundation/NSPropertyList.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. AutogsdocSource: NSPropertyList.m diff --git a/Headers/Foundation/NSProtocolChecker.h b/Headers/Foundation/NSProtocolChecker.h index f6a05fa1f..b77585c72 100644 --- a/Headers/Foundation/NSProtocolChecker.h +++ b/Headers/Foundation/NSProtocolChecker.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSProtocolChecker_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSProxy.h b/Headers/Foundation/NSProxy.h index 1af4b73b8..2006a2978 100644 --- a/Headers/Foundation/NSProxy.h +++ b/Headers/Foundation/NSProxy.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSProxy_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSRange.h b/Headers/Foundation/NSRange.h index 1a88f342e..0136e81e6 100644 --- a/Headers/Foundation/NSRange.h +++ b/Headers/Foundation/NSRange.h @@ -18,8 +18,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110 USA. + * Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSRange_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSRegularExpression.h b/Headers/Foundation/NSRegularExpression.h index 7f9a6ca9d..f44ebf117 100644 --- a/Headers/Foundation/NSRegularExpression.h +++ b/Headers/Foundation/NSRegularExpression.h @@ -15,8 +15,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSRegularExpression_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSRunLoop.h b/Headers/Foundation/NSRunLoop.h index c1d981ed8..7ab4cab57 100644 --- a/Headers/Foundation/NSRunLoop.h +++ b/Headers/Foundation/NSRunLoop.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSRunLoop_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSScanner.h b/Headers/Foundation/NSScanner.h index ec13b1bd4..b3a651c46 100644 --- a/Headers/Foundation/NSScanner.h +++ b/Headers/Foundation/NSScanner.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSScanner_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSScriptClassDescription.h b/Headers/Foundation/NSScriptClassDescription.h index be4b18171..3241510c7 100644 --- a/Headers/Foundation/NSScriptClassDescription.h +++ b/Headers/Foundation/NSScriptClassDescription.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSScriptClassDescription_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSScriptCoercionHandler.h b/Headers/Foundation/NSScriptCoercionHandler.h index 341122313..a8e726cca 100644 --- a/Headers/Foundation/NSScriptCoercionHandler.h +++ b/Headers/Foundation/NSScriptCoercionHandler.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSScriptCoercionHandler_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSScriptCommand.h b/Headers/Foundation/NSScriptCommand.h index ef6c542b9..b1dbcd556 100644 --- a/Headers/Foundation/NSScriptCommand.h +++ b/Headers/Foundation/NSScriptCommand.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSScriptCommand_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSScriptCommandDescription.h b/Headers/Foundation/NSScriptCommandDescription.h index 9eaf40462..535064027 100644 --- a/Headers/Foundation/NSScriptCommandDescription.h +++ b/Headers/Foundation/NSScriptCommandDescription.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSScriptCommandDescription_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSScriptExecutionContext.h b/Headers/Foundation/NSScriptExecutionContext.h index 0f7475ab1..b2045e6e5 100644 --- a/Headers/Foundation/NSScriptExecutionContext.h +++ b/Headers/Foundation/NSScriptExecutionContext.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSScriptExecutionContext_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSScriptKeyValueCoding.h b/Headers/Foundation/NSScriptKeyValueCoding.h index 80217e2b2..4dac13428 100644 --- a/Headers/Foundation/NSScriptKeyValueCoding.h +++ b/Headers/Foundation/NSScriptKeyValueCoding.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSScriptKeyValueCoding_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSScriptObjectSpecifiers.h b/Headers/Foundation/NSScriptObjectSpecifiers.h index e00deb5ce..e4b341081 100644 --- a/Headers/Foundation/NSScriptObjectSpecifiers.h +++ b/Headers/Foundation/NSScriptObjectSpecifiers.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSScriptObjectSpecifiers_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSScriptStandardSuiteCommands.h b/Headers/Foundation/NSScriptStandardSuiteCommands.h index 55464e035..1de2fe52e 100644 --- a/Headers/Foundation/NSScriptStandardSuiteCommands.h +++ b/Headers/Foundation/NSScriptStandardSuiteCommands.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSScriptStandardSuiteCommands_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSScriptSuiteRegistry.h b/Headers/Foundation/NSScriptSuiteRegistry.h index 78a82dd1c..e9585770d 100644 --- a/Headers/Foundation/NSScriptSuiteRegistry.h +++ b/Headers/Foundation/NSScriptSuiteRegistry.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSScriptSuiteRegistry_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSScriptWhoseTests.h b/Headers/Foundation/NSScriptWhoseTests.h index 1f45cabd0..964a1f75e 100644 --- a/Headers/Foundation/NSScriptWhoseTests.h +++ b/Headers/Foundation/NSScriptWhoseTests.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSScriptWhoseTests_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSSerialization.h b/Headers/Foundation/NSSerialization.h index 5714e4fb4..124308c15 100644 --- a/Headers/Foundation/NSSerialization.h +++ b/Headers/Foundation/NSSerialization.h @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSSerialization_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSSet.h b/Headers/Foundation/NSSet.h index a7c51aa22..674d407a4 100644 --- a/Headers/Foundation/NSSet.h +++ b/Headers/Foundation/NSSet.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. AutogsdocSource: NSSet.m AutogsdocSource: NSCountedSet.m diff --git a/Headers/Foundation/NSSortDescriptor.h b/Headers/Foundation/NSSortDescriptor.h index 5786d0b16..f3b9e366b 100644 --- a/Headers/Foundation/NSSortDescriptor.h +++ b/Headers/Foundation/NSSortDescriptor.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSSortDescriptor_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSSpellServer.h b/Headers/Foundation/NSSpellServer.h index 6f2c0bbc9..1a55fe4c3 100644 --- a/Headers/Foundation/NSSpellServer.h +++ b/Headers/Foundation/NSSpellServer.h @@ -26,8 +26,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _GNUstep_H_NSSpellServer diff --git a/Headers/Foundation/NSStream.h b/Headers/Foundation/NSStream.h index 791a84ea0..5034e449b 100644 --- a/Headers/Foundation/NSStream.h +++ b/Headers/Foundation/NSStream.h @@ -16,8 +16,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Headers/Foundation/NSString.h b/Headers/Foundation/NSString.h index c3bb1b545..a518627b8 100644 --- a/Headers/Foundation/NSString.h +++ b/Headers/Foundation/NSString.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ /** diff --git a/Headers/Foundation/NSTask.h b/Headers/Foundation/NSTask.h index e5f52e7ea..553b3b4c7 100644 --- a/Headers/Foundation/NSTask.h +++ b/Headers/Foundation/NSTask.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSTask_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSTextCheckingResult.h b/Headers/Foundation/NSTextCheckingResult.h index 3b8871593..eeab1e979 100644 --- a/Headers/Foundation/NSTextCheckingResult.h +++ b/Headers/Foundation/NSTextCheckingResult.h @@ -14,8 +14,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "NSObject.h" diff --git a/Headers/Foundation/NSThread.h b/Headers/Foundation/NSThread.h index 498d78592..c3784cc42 100644 --- a/Headers/Foundation/NSThread.h +++ b/Headers/Foundation/NSThread.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSThread_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSTimeZone.h b/Headers/Foundation/NSTimeZone.h index 851cf8f34..cd7548243 100644 --- a/Headers/Foundation/NSTimeZone.h +++ b/Headers/Foundation/NSTimeZone.h @@ -15,8 +15,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSTimeZone_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSTimer.h b/Headers/Foundation/NSTimer.h index 4e69bd38d..f056dde7e 100644 --- a/Headers/Foundation/NSTimer.h +++ b/Headers/Foundation/NSTimer.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSTimer_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSURL.h b/Headers/Foundation/NSURL.h index bff17adfb..6f14ed687 100644 --- a/Headers/Foundation/NSURL.h +++ b/Headers/Foundation/NSURL.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSURL_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSURLAuthenticationChallenge.h b/Headers/Foundation/NSURLAuthenticationChallenge.h index 8edcf0abe..6cb29333e 100644 --- a/Headers/Foundation/NSURLAuthenticationChallenge.h +++ b/Headers/Foundation/NSURLAuthenticationChallenge.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSURLAuthenticationChallenge_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSURLCache.h b/Headers/Foundation/NSURLCache.h index f2486d5cf..953eac5c1 100644 --- a/Headers/Foundation/NSURLCache.h +++ b/Headers/Foundation/NSURLCache.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSURLCache_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSURLConnection.h b/Headers/Foundation/NSURLConnection.h index 8b25b5cf7..67e09fddd 100644 --- a/Headers/Foundation/NSURLConnection.h +++ b/Headers/Foundation/NSURLConnection.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSURLConnection_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSURLCredential.h b/Headers/Foundation/NSURLCredential.h index bf727e4d1..b1ab39971 100644 --- a/Headers/Foundation/NSURLCredential.h +++ b/Headers/Foundation/NSURLCredential.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSURLCredential_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSURLCredentialStorage.h b/Headers/Foundation/NSURLCredentialStorage.h index 841203e4f..e365089a9 100644 --- a/Headers/Foundation/NSURLCredentialStorage.h +++ b/Headers/Foundation/NSURLCredentialStorage.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSURLCredentialStorage_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSURLDownload.h b/Headers/Foundation/NSURLDownload.h index da0ae275c..3171fb4e3 100644 --- a/Headers/Foundation/NSURLDownload.h +++ b/Headers/Foundation/NSURLDownload.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSURLDownload_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSURLError.h b/Headers/Foundation/NSURLError.h index 1c56f471d..03da9bc53 100644 --- a/Headers/Foundation/NSURLError.h +++ b/Headers/Foundation/NSURLError.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSURLError_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSURLHandle.h b/Headers/Foundation/NSURLHandle.h index b426ff034..3f37071c8 100644 --- a/Headers/Foundation/NSURLHandle.h +++ b/Headers/Foundation/NSURLHandle.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSURLHandle_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSURLProtectionSpace.h b/Headers/Foundation/NSURLProtectionSpace.h index 07ba809fe..6bdbe40df 100644 --- a/Headers/Foundation/NSURLProtectionSpace.h +++ b/Headers/Foundation/NSURLProtectionSpace.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSURLProtectionSpace_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSURLProtocol.h b/Headers/Foundation/NSURLProtocol.h index e80030188..7dffafcdc 100644 --- a/Headers/Foundation/NSURLProtocol.h +++ b/Headers/Foundation/NSURLProtocol.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSURLProtocol_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSURLRequest.h b/Headers/Foundation/NSURLRequest.h index 0b8fcfa3a..5c6123143 100644 --- a/Headers/Foundation/NSURLRequest.h +++ b/Headers/Foundation/NSURLRequest.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSURLRequest_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSURLResponse.h b/Headers/Foundation/NSURLResponse.h index c82ee6133..941185848 100644 --- a/Headers/Foundation/NSURLResponse.h +++ b/Headers/Foundation/NSURLResponse.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSURLResponse_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSURLSession.h b/Headers/Foundation/NSURLSession.h index ef9df4aa9..e4f370bb3 100644 --- a/Headers/Foundation/NSURLSession.h +++ b/Headers/Foundation/NSURLSession.h @@ -23,8 +23,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSURLSession_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSUUID.h b/Headers/Foundation/NSUUID.h index 4e1169363..5451ca706 100644 --- a/Headers/Foundation/NSUUID.h +++ b/Headers/Foundation/NSUUID.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSUUID_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSUbiquitousKeyValueStore.h b/Headers/Foundation/NSUbiquitousKeyValueStore.h index 50d5238c3..20ae3770d 100644 --- a/Headers/Foundation/NSUbiquitousKeyValueStore.h +++ b/Headers/Foundation/NSUbiquitousKeyValueStore.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Headers/Foundation/NSUndoManager.h b/Headers/Foundation/NSUndoManager.h index e761cc054..41c01217e 100644 --- a/Headers/Foundation/NSUndoManager.h +++ b/Headers/Foundation/NSUndoManager.h @@ -17,8 +17,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSUndoManager_h_OBJECTS_INCLUDE diff --git a/Headers/Foundation/NSUnit.h b/Headers/Foundation/NSUnit.h index e26a9f520..ba890b3d7 100644 --- a/Headers/Foundation/NSUnit.h +++ b/Headers/Foundation/NSUnit.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSUnit_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSUserActivity.h b/Headers/Foundation/NSUserActivity.h index cf4772dd2..f04624be5 100644 --- a/Headers/Foundation/NSUserActivity.h +++ b/Headers/Foundation/NSUserActivity.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSUserActivity_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSUserDefaults.h b/Headers/Foundation/NSUserDefaults.h index 61f508e2e..9478463fc 100644 --- a/Headers/Foundation/NSUserDefaults.h +++ b/Headers/Foundation/NSUserDefaults.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSUserDefaults_h_OBJECTS_INCLUDE diff --git a/Headers/Foundation/NSUserNotification.h b/Headers/Foundation/NSUserNotification.h index 347ee6cbc..3d90f50da 100644 --- a/Headers/Foundation/NSUserNotification.h +++ b/Headers/Foundation/NSUserNotification.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSUserNotification_h_INCLUDE diff --git a/Headers/Foundation/NSUserScriptTask.h b/Headers/Foundation/NSUserScriptTask.h index becc48875..fad7b06a8 100644 --- a/Headers/Foundation/NSUserScriptTask.h +++ b/Headers/Foundation/NSUserScriptTask.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSUserScriptTask_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSUtilities.h b/Headers/Foundation/NSUtilities.h index 5a6dc4450..86528c6a2 100644 --- a/Headers/Foundation/NSUtilities.h +++ b/Headers/Foundation/NSUtilities.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSUtilties_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSValue.h b/Headers/Foundation/NSValue.h index d048d7ddd..a68b4dfa7 100644 --- a/Headers/Foundation/NSValue.h +++ b/Headers/Foundation/NSValue.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSValue_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSValueTransformer.h b/Headers/Foundation/NSValueTransformer.h index f19cf0e69..3b5f89eec 100644 --- a/Headers/Foundation/NSValueTransformer.h +++ b/Headers/Foundation/NSValueTransformer.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSValueTransformer_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSXMLDTD.h b/Headers/Foundation/NSXMLDTD.h index 64e0acec8..d3ddd8acb 100644 --- a/Headers/Foundation/NSXMLDTD.h +++ b/Headers/Foundation/NSXMLDTD.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSXMLDTD_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSXMLDTDNode.h b/Headers/Foundation/NSXMLDTDNode.h index 79bbae99f..9af951f3e 100644 --- a/Headers/Foundation/NSXMLDTDNode.h +++ b/Headers/Foundation/NSXMLDTDNode.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSXMLDTDNode_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSXMLDocument.h b/Headers/Foundation/NSXMLDocument.h index 8d707fd76..b43260d1a 100644 --- a/Headers/Foundation/NSXMLDocument.h +++ b/Headers/Foundation/NSXMLDocument.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSXMLDocument_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSXMLElement.h b/Headers/Foundation/NSXMLElement.h index 0dcfee352..f3e74acd9 100644 --- a/Headers/Foundation/NSXMLElement.h +++ b/Headers/Foundation/NSXMLElement.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSXMLElement_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSXMLNode.h b/Headers/Foundation/NSXMLNode.h index 996c8a86e..31bad73d6 100644 --- a/Headers/Foundation/NSXMLNode.h +++ b/Headers/Foundation/NSXMLNode.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSXMLNode_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSXMLNodeOptions.h b/Headers/Foundation/NSXMLNodeOptions.h index 84dc5e7c2..8182a93a2 100644 --- a/Headers/Foundation/NSXMLNodeOptions.h +++ b/Headers/Foundation/NSXMLNodeOptions.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSXMLNodeOptions_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSXMLParser.h b/Headers/Foundation/NSXMLParser.h index 9d33b9ab3..4da68a9e2 100644 --- a/Headers/Foundation/NSXMLParser.h +++ b/Headers/Foundation/NSXMLParser.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. AutogsdocSource: NSXMLParser.m */ diff --git a/Headers/Foundation/NSXPCConnection.h b/Headers/Foundation/NSXPCConnection.h index 524140673..d888bc79d 100644 --- a/Headers/Foundation/NSXPCConnection.h +++ b/Headers/Foundation/NSXPCConnection.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _NSXPCConnection_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/Foundation/NSZone.h b/Headers/Foundation/NSZone.h index b8c6f1a64..e0e7ad84c 100644 --- a/Headers/Foundation/NSZone.h +++ b/Headers/Foundation/NSZone.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. AutogsdocSource: NSZone.m AutogsdocSource: NSPage.m diff --git a/Headers/GNUstepBase/Additions.h b/Headers/GNUstepBase/Additions.h index bbbc1fd7a..8b1ff4ca4 100644 --- a/Headers/GNUstepBase/Additions.h +++ b/Headers/GNUstepBase/Additions.h @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __Additions_h_GNUSTEP_BASE_INCLUDE diff --git a/Headers/GNUstepBase/DistributedObjects.h b/Headers/GNUstepBase/DistributedObjects.h index e553496af..b712b01e0 100644 --- a/Headers/GNUstepBase/DistributedObjects.h +++ b/Headers/GNUstepBase/DistributedObjects.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __DistributedObjects_h diff --git a/Headers/GNUstepBase/GCObject.h b/Headers/GNUstepBase/GCObject.h index 10d6dafb8..563045813 100644 --- a/Headers/GNUstepBase/GCObject.h +++ b/Headers/GNUstepBase/GCObject.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. AutogsdocSource: Additions/GCObject.m AutogsdocSource: Additions/GCArray.m diff --git a/Headers/GNUstepBase/GNUstep.h b/Headers/GNUstepBase/GNUstep.h index b87959c16..2f0555826 100644 --- a/Headers/GNUstepBase/GNUstep.h +++ b/Headers/GNUstepBase/GNUstep.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __GNUSTEP_GNUSTEP_H_INCLUDED_ diff --git a/Headers/GNUstepBase/GSBlocks.h b/Headers/GNUstepBase/GSBlocks.h index 8e3ae743b..758b21130 100644 --- a/Headers/GNUstepBase/GSBlocks.h +++ b/Headers/GNUstepBase/GSBlocks.h @@ -15,8 +15,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Headers/GNUstepBase/GSConfig.h.in b/Headers/GNUstepBase/GSConfig.h.in index 9c709f0c2..f5c588985 100644 --- a/Headers/GNUstepBase/GSConfig.h.in +++ b/Headers/GNUstepBase/GSConfig.h.in @@ -22,8 +22,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef included_GSConfig_h diff --git a/Headers/GNUstepBase/GSFunctions.h b/Headers/GNUstepBase/GSFunctions.h index 07306e8c6..fcea692d4 100644 --- a/Headers/GNUstepBase/GSFunctions.h +++ b/Headers/GNUstepBase/GSFunctions.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. AutogsdocSource: Additions/GSFunctions.m */ diff --git a/Headers/GNUstepBase/GSIArray.h b/Headers/GNUstepBase/GSIArray.h index 7a68dda15..b11edc90a 100644 --- a/Headers/GNUstepBase/GSIArray.h +++ b/Headers/GNUstepBase/GSIArray.h @@ -18,8 +18,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02111 USA. */ + * Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import diff --git a/Headers/GNUstepBase/GSIMap.h b/Headers/GNUstepBase/GSIMap.h index 520d39036..c17b7da66 100644 --- a/Headers/GNUstepBase/GSIMap.h +++ b/Headers/GNUstepBase/GSIMap.h @@ -20,8 +20,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02111 USA. */ + * Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import diff --git a/Headers/GNUstepBase/GSLocale.h b/Headers/GNUstepBase/GSLocale.h index fe19818c7..7f2c65789 100644 --- a/Headers/GNUstepBase/GSLocale.h +++ b/Headers/GNUstepBase/GSLocale.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __GSLocale_H_ diff --git a/Headers/GNUstepBase/GSMime.h b/Headers/GNUstepBase/GSMime.h index a9c175168..ef1667951 100644 --- a/Headers/GNUstepBase/GSMime.h +++ b/Headers/GNUstepBase/GSMime.h @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. AutogsdocSource: Additions/GSMime.m */ diff --git a/Headers/GNUstepBase/GSObjCRuntime.h b/Headers/GNUstepBase/GSObjCRuntime.h index 7386b93de..1d8f4ee68 100644 --- a/Headers/GNUstepBase/GSObjCRuntime.h +++ b/Headers/GNUstepBase/GSObjCRuntime.h @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. AutogsdocSource: Additions/GSObjCRuntime.m diff --git a/Headers/GNUstepBase/GSTLS.h b/Headers/GNUstepBase/GSTLS.h index 4e446b13e..6fa61e23e 100644 --- a/Headers/GNUstepBase/GSTLS.h +++ b/Headers/GNUstepBase/GSTLS.h @@ -16,8 +16,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Headers/GNUstepBase/GSUnion.h b/Headers/GNUstepBase/GSUnion.h index 5db73b6f9..060f3f586 100644 --- a/Headers/GNUstepBase/GSUnion.h +++ b/Headers/GNUstepBase/GSUnion.h @@ -20,8 +20,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02111 USA. */ + * Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ /* Need Foundation/NSObjCRuntime.h for type declarations. */ diff --git a/Headers/GNUstepBase/GSVersionMacros.h b/Headers/GNUstepBase/GSVersionMacros.h index fb2a5acbd..a407c7ba6 100644 --- a/Headers/GNUstepBase/GSVersionMacros.h +++ b/Headers/GNUstepBase/GSVersionMacros.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __GNUSTEP_GSVERSIONMACROS_H_INCLUDED_ diff --git a/Headers/GNUstepBase/GSXML.h b/Headers/GNUstepBase/GSXML.h index b65262661..1dd000190 100644 --- a/Headers/GNUstepBase/GSXML.h +++ b/Headers/GNUstepBase/GSXML.h @@ -25,8 +25,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. AutogsdocSource: Additions/GSXML.m diff --git a/Headers/GNUstepBase/NSArray+GNUstepBase.h b/Headers/GNUstepBase/NSArray+GNUstepBase.h index 3e02b7cf6..cb8c5f19b 100644 --- a/Headers/GNUstepBase/NSArray+GNUstepBase.h +++ b/Headers/GNUstepBase/NSArray+GNUstepBase.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Headers/GNUstepBase/NSAttributedString+GNUstepBase.h b/Headers/GNUstepBase/NSAttributedString+GNUstepBase.h index 99062a6bc..34ff37e4b 100644 --- a/Headers/GNUstepBase/NSAttributedString+GNUstepBase.h +++ b/Headers/GNUstepBase/NSAttributedString+GNUstepBase.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Headers/GNUstepBase/NSBundle+GNUstepBase.h b/Headers/GNUstepBase/NSBundle+GNUstepBase.h index 4fcd7481c..d57c9a1bb 100644 --- a/Headers/GNUstepBase/NSBundle+GNUstepBase.h +++ b/Headers/GNUstepBase/NSBundle+GNUstepBase.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Headers/GNUstepBase/NSCalendarDate+GNUstepBase.h b/Headers/GNUstepBase/NSCalendarDate+GNUstepBase.h index bd2426f73..15fe67a8f 100644 --- a/Headers/GNUstepBase/NSCalendarDate+GNUstepBase.h +++ b/Headers/GNUstepBase/NSCalendarDate+GNUstepBase.h @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Headers/GNUstepBase/NSData+GNUstepBase.h b/Headers/GNUstepBase/NSData+GNUstepBase.h index b6129d2af..f90ce3fd6 100644 --- a/Headers/GNUstepBase/NSData+GNUstepBase.h +++ b/Headers/GNUstepBase/NSData+GNUstepBase.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Headers/GNUstepBase/NSDebug+GNUstepBase.h b/Headers/GNUstepBase/NSDebug+GNUstepBase.h index b5fcfa480..5d5041444 100644 --- a/Headers/GNUstepBase/NSDebug+GNUstepBase.h +++ b/Headers/GNUstepBase/NSDebug+GNUstepBase.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Headers/GNUstepBase/NSFileHandle+GNUstepBase.h b/Headers/GNUstepBase/NSFileHandle+GNUstepBase.h index cb1ee8030..164986d1d 100644 --- a/Headers/GNUstepBase/NSFileHandle+GNUstepBase.h +++ b/Headers/GNUstepBase/NSFileHandle+GNUstepBase.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Headers/GNUstepBase/NSHashTable+GNUstepBase.h b/Headers/GNUstepBase/NSHashTable+GNUstepBase.h index 76b8a76a8..a1549cf80 100644 --- a/Headers/GNUstepBase/NSHashTable+GNUstepBase.h +++ b/Headers/GNUstepBase/NSHashTable+GNUstepBase.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Headers/GNUstepBase/NSMutableString+GNUstepBase.h b/Headers/GNUstepBase/NSMutableString+GNUstepBase.h index 02bb80d3d..a026c3064 100644 --- a/Headers/GNUstepBase/NSMutableString+GNUstepBase.h +++ b/Headers/GNUstepBase/NSMutableString+GNUstepBase.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Headers/GNUstepBase/NSNetServices+GNUstepBase.h b/Headers/GNUstepBase/NSNetServices+GNUstepBase.h index 2a642d95c..4430f0c89 100644 --- a/Headers/GNUstepBase/NSNetServices+GNUstepBase.h +++ b/Headers/GNUstepBase/NSNetServices+GNUstepBase.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import diff --git a/Headers/GNUstepBase/NSNumber+GNUstepBase.h b/Headers/GNUstepBase/NSNumber+GNUstepBase.h index 4af0ea3b4..751975fa4 100644 --- a/Headers/GNUstepBase/NSNumber+GNUstepBase.h +++ b/Headers/GNUstepBase/NSNumber+GNUstepBase.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Headers/GNUstepBase/NSObject+GNUstepBase.h b/Headers/GNUstepBase/NSObject+GNUstepBase.h index 9f2992d63..7c70ff988 100644 --- a/Headers/GNUstepBase/NSObject+GNUstepBase.h +++ b/Headers/GNUstepBase/NSObject+GNUstepBase.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Headers/GNUstepBase/NSProcessInfo+GNUstepBase.h b/Headers/GNUstepBase/NSProcessInfo+GNUstepBase.h index 602ff0dcd..6a20c68ba 100644 --- a/Headers/GNUstepBase/NSProcessInfo+GNUstepBase.h +++ b/Headers/GNUstepBase/NSProcessInfo+GNUstepBase.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Headers/GNUstepBase/NSStream+GNUstepBase.h b/Headers/GNUstepBase/NSStream+GNUstepBase.h index ef57857fc..0445b8311 100644 --- a/Headers/GNUstepBase/NSStream+GNUstepBase.h +++ b/Headers/GNUstepBase/NSStream+GNUstepBase.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Headers/GNUstepBase/NSString+GNUstepBase.h b/Headers/GNUstepBase/NSString+GNUstepBase.h index b58cc0b49..5df63416f 100644 --- a/Headers/GNUstepBase/NSString+GNUstepBase.h +++ b/Headers/GNUstepBase/NSString+GNUstepBase.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Headers/GNUstepBase/NSTask+GNUstepBase.h b/Headers/GNUstepBase/NSTask+GNUstepBase.h index c629cc409..8d1cf992f 100644 --- a/Headers/GNUstepBase/NSTask+GNUstepBase.h +++ b/Headers/GNUstepBase/NSTask+GNUstepBase.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Headers/GNUstepBase/NSThread+GNUstepBase.h b/Headers/GNUstepBase/NSThread+GNUstepBase.h index ef4b56c69..ec9afcf16 100644 --- a/Headers/GNUstepBase/NSThread+GNUstepBase.h +++ b/Headers/GNUstepBase/NSThread+GNUstepBase.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Headers/GNUstepBase/NSURL+GNUstepBase.h b/Headers/GNUstepBase/NSURL+GNUstepBase.h index 21454f541..6b7df999f 100644 --- a/Headers/GNUstepBase/NSURL+GNUstepBase.h +++ b/Headers/GNUstepBase/NSURL+GNUstepBase.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Headers/GNUstepBase/Unicode.h b/Headers/GNUstepBase/Unicode.h index 8d5c997ab..d84a22bfe 100644 --- a/Headers/GNUstepBase/Unicode.h +++ b/Headers/GNUstepBase/Unicode.h @@ -23,8 +23,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. - + Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. AutogsdocSource: Additions/Unicode.m */ diff --git a/Makefile b/Makefile index 681ac52a3..6f8ec04ff 100644 --- a/Makefile +++ b/Makefile @@ -19,8 +19,7 @@ # # You should have received a copy of the GNU General Public # License along with this library; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02111 USA +# Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA # all: diff --git a/Makefile.postamble b/Makefile.postamble index b007cbf69..cb613db08 100644 --- a/Makefile.postamble +++ b/Makefile.postamble @@ -20,7 +20,7 @@ # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING.LIB. # If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# 31 Milk Street #960789 Boston, MA 02196 USA. # # Makefile.postamble diff --git a/NSTimeZones/GNUmakefile b/NSTimeZones/GNUmakefile index 94e6173b4..51720a491 100644 --- a/NSTimeZones/GNUmakefile +++ b/NSTimeZones/GNUmakefile @@ -18,8 +18,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02111 USA. +# Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. ifeq ($(GNUSTEP_MAKEFILES),) GNUSTEP_MAKEFILES := $(shell gnustep-config --variable=GNUSTEP_MAKEFILES 2>/dev/null) diff --git a/NSTimeZones/Makefile.postamble b/NSTimeZones/Makefile.postamble index 6383a6293..3815b2775 100644 --- a/NSTimeZones/Makefile.postamble +++ b/NSTimeZones/Makefile.postamble @@ -23,7 +23,7 @@ # You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. # If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# 31 Milk Street #960789 Boston, MA 02196 USA. # # Makefile.postamble diff --git a/NSTimeZones/NSTimeZones.tar b/NSTimeZones/NSTimeZones.tar index 5191ae51453a788116015845cb733298d57be83a..39753a3053307fdb51c984dde813c44131cec015 100644 GIT binary patch delta 178 zcmZoTV0m-DWkU;N3sVbo3rh=Y3tJ0&3r7oQ3s(zw3(pqb2u^ilLj~W=oNR^QlA_eq z5(Q;TGXrxAO9iL=;*$J49R*)U1p^~POSA1goV?pE6RUc9^;g~{+okUD>WUMqWjjzy GYZd@L3O42d delta 222 zcmcb)-?HI=WkU;N3sVbo3rh=Y3tJ0&3r7oQ3s(zw3(pqb2u>4ILj|{@#JudB%shqQ zlA_eq5*-D%%(RjW1-G31{30DLWd#MN{Nj@QJRJpJM+E~TLqo&u^_;xhE)&+OfJJM} aUEYi0WNDoa)VgH4g9o47cCl}~hcf{T!bgn& diff --git a/Resources/GNUmakefile b/Resources/GNUmakefile index 3de4964a0..d74101223 100644 --- a/Resources/GNUmakefile +++ b/Resources/GNUmakefile @@ -19,8 +19,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02111 USA. +# Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. ifeq ($(GNUSTEP_MAKEFILES),) GNUSTEP_MAKEFILES := $(shell gnustep-config --variable=GNUSTEP_MAKEFILES 2>/dev/null) diff --git a/Resources/GNUmakefile.postamble b/Resources/GNUmakefile.postamble index 8666d4d1a..433a9d6eb 100644 --- a/Resources/GNUmakefile.postamble +++ b/Resources/GNUmakefile.postamble @@ -21,7 +21,7 @@ # You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. # If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# 31 Milk Street #960789 Boston, MA 02196 USA. # Things to do before compiling # before-all:: diff --git a/Source/Additions/GCArray.m b/Source/Additions/GCArray.m index de5d8db92..5f20bcb51 100644 --- a/Source/Additions/GCArray.m +++ b/Source/Additions/GCArray.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/Additions/GCDictionary.m b/Source/Additions/GCDictionary.m index 8296e2a1a..532c160de 100644 --- a/Source/Additions/GCDictionary.m +++ b/Source/Additions/GCDictionary.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/Additions/GCObject.m b/Source/Additions/GCObject.m index dbfbbd8d5..2f3a166d8 100644 --- a/Source/Additions/GCObject.m +++ b/Source/Additions/GCObject.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. AutogsdocSource: Additions/GCObject.m AutogsdocSource: Additions/GCArray.m diff --git a/Source/Additions/GNUmakefile b/Source/Additions/GNUmakefile index 25a64653c..bd6ea58ca 100644 --- a/Source/Additions/GNUmakefile +++ b/Source/Additions/GNUmakefile @@ -19,8 +19,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02111 USA. +# Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. # PACKAGE_NAME = gnustep-base diff --git a/Source/Additions/GSFunctions.m b/Source/Additions/GSFunctions.m index bd7d48a34..9c1b22d6c 100644 --- a/Source/Additions/GSFunctions.m +++ b/Source/Additions/GSFunctions.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSPathUtilities function reference */ diff --git a/Source/Additions/GSInsensitiveDictionary.m b/Source/Additions/GSInsensitiveDictionary.m index 461185643..60fe89669 100644 --- a/Source/Additions/GSInsensitiveDictionary.m +++ b/Source/Additions/GSInsensitiveDictionary.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/Additions/GSMime.m b/Source/Additions/GSMime.m index b44f99b01..07010a517 100644 --- a/Source/Additions/GSMime.m +++ b/Source/Additions/GSMime.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. The MIME parsing system diff --git a/Source/Additions/GSObjCRuntime.m b/Source/Additions/GSObjCRuntime.m index bcbba4018..9145544d6 100644 --- a/Source/Additions/GSObjCRuntime.m +++ b/Source/Additions/GSObjCRuntime.m @@ -22,8 +22,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. GSObjCRuntime function and macro reference */ diff --git a/Source/Additions/GSXML.m b/Source/Additions/GSXML.m index 01a24c5aa..67d9f597f 100644 --- a/Source/Additions/GSXML.m +++ b/Source/Additions/GSXML.m @@ -23,8 +23,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. The XML and HTML parsing system diff --git a/Source/Additions/Makefile.preamble b/Source/Additions/Makefile.preamble index 9ebaa196e..1dcbabe8f 100644 --- a/Source/Additions/Makefile.preamble +++ b/Source/Additions/Makefile.preamble @@ -23,7 +23,7 @@ # You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. # If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# 31 Milk Street #960789 Boston, MA 02196 USA. # # Makefile.preamble diff --git a/Source/Additions/NSArray+GNUstepBase.m b/Source/Additions/NSArray+GNUstepBase.m index d4cb31aa0..a52bd2735 100644 --- a/Source/Additions/NSArray+GNUstepBase.m +++ b/Source/Additions/NSArray+GNUstepBase.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/Additions/NSAttributedString+GNUstepBase.m b/Source/Additions/NSAttributedString+GNUstepBase.m index 456e9eee1..4eed82184 100644 --- a/Source/Additions/NSAttributedString+GNUstepBase.m +++ b/Source/Additions/NSAttributedString+GNUstepBase.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/Additions/NSBundle+GNUstepBase.m b/Source/Additions/NSBundle+GNUstepBase.m index 20b921ec1..cfdf18c91 100644 --- a/Source/Additions/NSBundle+GNUstepBase.m +++ b/Source/Additions/NSBundle+GNUstepBase.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/Additions/NSCalendarDate+GNUstepBase.m b/Source/Additions/NSCalendarDate+GNUstepBase.m index d5e897156..c2def1920 100644 --- a/Source/Additions/NSCalendarDate+GNUstepBase.m +++ b/Source/Additions/NSCalendarDate+GNUstepBase.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/Additions/NSData+GNUstepBase.m b/Source/Additions/NSData+GNUstepBase.m index 201fd2852..717afbf71 100644 --- a/Source/Additions/NSData+GNUstepBase.m +++ b/Source/Additions/NSData+GNUstepBase.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/Additions/NSDebug+GNUstepBase.m b/Source/Additions/NSDebug+GNUstepBase.m index d7550bd3e..f5f2e1b5d 100644 --- a/Source/Additions/NSDebug+GNUstepBase.m +++ b/Source/Additions/NSDebug+GNUstepBase.m @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/Additions/NSError+GNUstepBase.m b/Source/Additions/NSError+GNUstepBase.m index efbd7433c..d1f72467c 100644 --- a/Source/Additions/NSError+GNUstepBase.m +++ b/Source/Additions/NSError+GNUstepBase.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/Additions/NSFileHandle+GNUstepBase.m b/Source/Additions/NSFileHandle+GNUstepBase.m index ba8488fc5..0fd9302e8 100644 --- a/Source/Additions/NSFileHandle+GNUstepBase.m +++ b/Source/Additions/NSFileHandle+GNUstepBase.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/Additions/NSHashTable+GNUstepBase.m b/Source/Additions/NSHashTable+GNUstepBase.m index 8a4049959..2276bb5da 100644 --- a/Source/Additions/NSHashTable+GNUstepBase.m +++ b/Source/Additions/NSHashTable+GNUstepBase.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/Additions/NSMutableString+GNUstepBase.m b/Source/Additions/NSMutableString+GNUstepBase.m index a1c2d5835..781fb6e23 100644 --- a/Source/Additions/NSMutableString+GNUstepBase.m +++ b/Source/Additions/NSMutableString+GNUstepBase.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/Additions/NSNumber+GNUstepBase.m b/Source/Additions/NSNumber+GNUstepBase.m index e80bd69bb..ce796ba4c 100644 --- a/Source/Additions/NSNumber+GNUstepBase.m +++ b/Source/Additions/NSNumber+GNUstepBase.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/Additions/NSObject+GNUstepBase.m b/Source/Additions/NSObject+GNUstepBase.m index da286f1fc..4818693d9 100644 --- a/Source/Additions/NSObject+GNUstepBase.m +++ b/Source/Additions/NSObject+GNUstepBase.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/Additions/NSProcessInfo+GNUstepBase.m b/Source/Additions/NSProcessInfo+GNUstepBase.m index ecc8b6329..13c2d1d56 100644 --- a/Source/Additions/NSProcessInfo+GNUstepBase.m +++ b/Source/Additions/NSProcessInfo+GNUstepBase.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/Additions/NSPropertyList+GNUstepBase.m b/Source/Additions/NSPropertyList+GNUstepBase.m index c856dff9c..cd3d15b85 100644 --- a/Source/Additions/NSPropertyList+GNUstepBase.m +++ b/Source/Additions/NSPropertyList+GNUstepBase.m @@ -17,8 +17,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/Additions/NSStream+GNUstepBase.m b/Source/Additions/NSStream+GNUstepBase.m index 02dff5b90..46bbc0be0 100644 --- a/Source/Additions/NSStream+GNUstepBase.m +++ b/Source/Additions/NSStream+GNUstepBase.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/Additions/NSString+GNUstepBase.m b/Source/Additions/NSString+GNUstepBase.m index a0af224a8..45eb93940 100644 --- a/Source/Additions/NSString+GNUstepBase.m +++ b/Source/Additions/NSString+GNUstepBase.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/Additions/NSTask+GNUstepBase.m b/Source/Additions/NSTask+GNUstepBase.m index 6aa516b97..a11fa3664 100644 --- a/Source/Additions/NSTask+GNUstepBase.m +++ b/Source/Additions/NSTask+GNUstepBase.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/Additions/NSThread+GNUstepBase.m b/Source/Additions/NSThread+GNUstepBase.m index 690b544f0..b6abd6881 100644 --- a/Source/Additions/NSThread+GNUstepBase.m +++ b/Source/Additions/NSThread+GNUstepBase.m @@ -17,8 +17,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. $Date: 2010-02-17 11:47:06 +0000 (Wed, 17 Feb 2010) $ $Revision: 29657 $ */ diff --git a/Source/Additions/NSURL+GNUstepBase.m b/Source/Additions/NSURL+GNUstepBase.m index 70c430284..68e90e9e0 100644 --- a/Source/Additions/NSURL+GNUstepBase.m +++ b/Source/Additions/NSURL+GNUstepBase.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/Additions/Unicode.m b/Source/Additions/Unicode.m index e6657028d..9ec2151ea 100644 --- a/Source/Additions/Unicode.m +++ b/Source/Additions/Unicode.m @@ -24,8 +24,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/DocMakefile b/Source/DocMakefile index f24ab3223..92c09b459 100644 --- a/Source/DocMakefile +++ b/Source/DocMakefile @@ -19,8 +19,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02111 USA +# Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA # MAKEFILE_NAME = DocMakefile diff --git a/Source/GNUmakefile b/Source/GNUmakefile index a2c8e2378..d7c2fb59a 100644 --- a/Source/GNUmakefile +++ b/Source/GNUmakefile @@ -19,8 +19,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02111 USA. +# Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. # ifeq ($(GNUSTEP_MAKEFILES),) diff --git a/Source/GSArray.m b/Source/GSArray.m index d64ef0817..251ca3131 100644 --- a/Source/GSArray.m +++ b/Source/GSArray.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/GSAttributedString.m b/Source/GSAttributedString.m index 3625fd6c9..c15177d9d 100644 --- a/Source/GSAttributedString.m +++ b/Source/GSAttributedString.m @@ -27,8 +27,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ /* Warning - [-initWithString:attributes:] is the designated initialiser, diff --git a/Source/GSAvahiClient.h b/Source/GSAvahiClient.h index f8377d6ed..7a0fd0e56 100644 --- a/Source/GSAvahiClient.h +++ b/Source/GSAvahiClient.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "GSAvahiRunLoopIntegration.h" diff --git a/Source/GSAvahiClient.m b/Source/GSAvahiClient.m index d9933de88..d132b0b86 100644 --- a/Source/GSAvahiClient.m +++ b/Source/GSAvahiClient.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "GSAvahiClient.h" diff --git a/Source/GSAvahiNetService.m b/Source/GSAvahiNetService.m index d0861ca0f..f4eae0033 100644 --- a/Source/GSAvahiNetService.m +++ b/Source/GSAvahiNetService.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "GSNetServices.h" diff --git a/Source/GSAvahiNetServiceBrowser.m b/Source/GSAvahiNetServiceBrowser.m index a3935f916..d616db361 100644 --- a/Source/GSAvahiNetServiceBrowser.m +++ b/Source/GSAvahiNetServiceBrowser.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "GSNetServices.h" diff --git a/Source/GSAvahiRunLoopIntegration.h b/Source/GSAvahiRunLoopIntegration.h index 78ae83258..7123084ce 100644 --- a/Source/GSAvahiRunLoopIntegration.h +++ b/Source/GSAvahiRunLoopIntegration.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSObject.h" diff --git a/Source/GSAvahiRunLoopIntegration.m b/Source/GSAvahiRunLoopIntegration.m index 2f041cc87..f6d1f700a 100644 --- a/Source/GSAvahiRunLoopIntegration.m +++ b/Source/GSAvahiRunLoopIntegration.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "GSAvahiRunLoopIntegration.h" diff --git a/Source/GSBlocks.m b/Source/GSBlocks.m index 04bfab610..c476bd4fc 100644 --- a/Source/GSBlocks.m +++ b/Source/GSBlocks.m @@ -15,8 +15,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/GSConcreteValue.m b/Source/GSConcreteValue.m index 981a77d4d..a4296da0e 100644 --- a/Source/GSConcreteValue.m +++ b/Source/GSConcreteValue.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/GSConcreteValueTemplate.m b/Source/GSConcreteValueTemplate.m index 29e23fd43..e29c6b6b3 100644 --- a/Source/GSConcreteValueTemplate.m +++ b/Source/GSConcreteValueTemplate.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/GSCountedSet.m b/Source/GSCountedSet.m index 0d6170f9c..e16b7de8e 100644 --- a/Source/GSCountedSet.m +++ b/Source/GSCountedSet.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/GSDictionary.m b/Source/GSDictionary.m index d700925e8..2072dd51c 100644 --- a/Source/GSDictionary.m +++ b/Source/GSDictionary.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/GSDispatch.h b/Source/GSDispatch.h index cff0fd82e..5aacc2e37 100644 --- a/Source/GSDispatch.h +++ b/Source/GSDispatch.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "GNUstepBase/GSBlocks.h" diff --git a/Source/GSFFCallInvocation.m b/Source/GSFFCallInvocation.m index 921f1dc56..e5a0796e7 100644 --- a/Source/GSFFCallInvocation.m +++ b/Source/GSFFCallInvocation.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" #import "Foundation/NSException.h" diff --git a/Source/GSFFIInvocation.m b/Source/GSFFIInvocation.m index dc46061d3..a861754a4 100644 --- a/Source/GSFFIInvocation.m +++ b/Source/GSFFIInvocation.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/GSFTPURLHandle.m b/Source/GSFTPURLHandle.m index 39b2e787e..facbc1f17 100644 --- a/Source/GSFTPURLHandle.m +++ b/Source/GSFTPURLHandle.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/GSFileHandle.h b/Source/GSFileHandle.h index 0aa36d126..66e46c4e4 100644 --- a/Source/GSFileHandle.h +++ b/Source/GSFileHandle.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __GSFileHandle_h_GNUSTEP_BASE_INCLUDE diff --git a/Source/GSFileHandle.m b/Source/GSFileHandle.m index 13a9c29b7..bb596d701 100644 --- a/Source/GSFileHandle.m +++ b/Source/GSFileHandle.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/GSFormat.m b/Source/GSFormat.m index c1773af9e..23a587407 100644 --- a/Source/GSFormat.m +++ b/Source/GSFormat.m @@ -34,8 +34,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #include "common.h" diff --git a/Source/GSHTTPAuthentication.m b/Source/GSHTTPAuthentication.m index db2ef64bd..293b2b3d1 100644 --- a/Source/GSHTTPAuthentication.m +++ b/Source/GSHTTPAuthentication.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/GSHTTPURLHandle.m b/Source/GSHTTPURLHandle.m index e767b99ab..babb489fe 100644 --- a/Source/GSHTTPURLHandle.m +++ b/Source/GSHTTPURLHandle.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/GSICUString.m b/Source/GSICUString.m index bc2fda16d..aace61730 100644 --- a/Source/GSICUString.m +++ b/Source/GSICUString.m @@ -16,8 +16,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. $Date: 2010-09-18 16:09:58 +0100 (Sat, 18 Sep 2010) $ $Revision: 31371 $ */ diff --git a/Source/GSInternal.h b/Source/GSInternal.h index 3449e2264..a55fee24c 100644 --- a/Source/GSInternal.h +++ b/Source/GSInternal.h @@ -17,8 +17,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/GSInvocation.h b/Source/GSInvocation.h index 090eab41e..6c1eef180 100644 --- a/Source/GSInvocation.h +++ b/Source/GSInvocation.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __GSInvocation_h_GNUSTEP_BASE_INCLUDE diff --git a/Source/GSLocale.m b/Source/GSLocale.m index bfe8848f5..aacf68ff8 100644 --- a/Source/GSLocale.m +++ b/Source/GSLocale.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" #import "GSPrivate.h" diff --git a/Source/GSMDNSNetServices.m b/Source/GSMDNSNetServices.m index d818bd7ad..fd22705e1 100644 --- a/Source/GSMDNSNetServices.m +++ b/Source/GSMDNSNetServices.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/GSNetServices.h b/Source/GSNetServices.h index 707cd39fe..400f52406 100644 --- a/Source/GSNetServices.h +++ b/Source/GSNetServices.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/GSNetwork.h b/Source/GSNetwork.h index 5573e3aa2..5f2d7dcc5 100644 --- a/Source/GSNetwork.h +++ b/Source/GSNetwork.h @@ -24,8 +24,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #include diff --git a/Source/GSOrderedSet.m b/Source/GSOrderedSet.m index 6f8f409a7..38960341b 100644 --- a/Source/GSOrderedSet.m +++ b/Source/GSOrderedSet.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/GSPThread.h b/Source/GSPThread.h index dbec4e213..884fbff21 100644 --- a/Source/GSPThread.h +++ b/Source/GSPThread.h @@ -17,8 +17,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _GSPThread_h_ #define _GSPThread_h_ diff --git a/Source/GSPortPrivate.h b/Source/GSPortPrivate.h index af45e31ba..8e8036271 100644 --- a/Source/GSPortPrivate.h +++ b/Source/GSPortPrivate.h @@ -17,8 +17,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __GSPortPrivate_h_ diff --git a/Source/GSPrivate.h b/Source/GSPrivate.h index 741d10e66..af2282690 100644 --- a/Source/GSPrivate.h +++ b/Source/GSPrivate.h @@ -17,8 +17,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _GSPrivate_h_ diff --git a/Source/GSPrivateHash.m b/Source/GSPrivateHash.m index 0e860e854..06a266ea9 100644 --- a/Source/GSPrivateHash.m +++ b/Source/GSPrivateHash.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "GSPrivate.h" diff --git a/Source/GSQuickSort.m b/Source/GSQuickSort.m index 17275d6ea..afc4212a9 100644 --- a/Source/GSQuickSort.m +++ b/Source/GSQuickSort.m @@ -21,8 +21,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/GSRunLoopCtxt.h b/Source/GSRunLoopCtxt.h index 2ae010ccf..8dfc2ab90 100644 --- a/Source/GSRunLoopCtxt.h +++ b/Source/GSRunLoopCtxt.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. $Date$ $Revision$ */ diff --git a/Source/GSRunLoopWatcher.h b/Source/GSRunLoopWatcher.h index 3ac7b9b34..1a8489717 100644 --- a/Source/GSRunLoopWatcher.h +++ b/Source/GSRunLoopWatcher.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. $Date$ $Revision$ */ diff --git a/Source/GSRunLoopWatcher.m b/Source/GSRunLoopWatcher.m index cfe2ef6fe..3f20fc411 100644 --- a/Source/GSRunLoopWatcher.m +++ b/Source/GSRunLoopWatcher.m @@ -17,8 +17,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. $Date: 2009-02-23 20:42:32 +0000 (Mon, 23 Feb 2009) $ $Revision: 27962 $ */ diff --git a/Source/GSSet.m b/Source/GSSet.m index cf19517e2..82c6caac9 100644 --- a/Source/GSSet.m +++ b/Source/GSSet.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/GSShellSort.m b/Source/GSShellSort.m index e2df4cba1..3f0bf9989 100644 --- a/Source/GSShellSort.m +++ b/Source/GSShellSort.m @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/GSSocketStream.h b/Source/GSSocketStream.h index d7d44f747..684f04661 100644 --- a/Source/GSSocketStream.h +++ b/Source/GSSocketStream.h @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/GSSocketStream.m b/Source/GSSocketStream.m index 67cc13e31..fc669fb83 100644 --- a/Source/GSSocketStream.m +++ b/Source/GSSocketStream.m @@ -17,8 +17,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/GSSocksParser/GSSocks4Parser.h b/Source/GSSocksParser/GSSocks4Parser.h index 1ca8de75b..558cf7e7e 100644 --- a/Source/GSSocksParser/GSSocks4Parser.h +++ b/Source/GSSocksParser/GSSocks4Parser.h @@ -19,8 +19,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110 USA. + * Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "GSSocksParser.h" diff --git a/Source/GSSocksParser/GSSocks4Parser.m b/Source/GSSocksParser/GSSocks4Parser.m index 5b3e82c21..d463af1aa 100644 --- a/Source/GSSocksParser/GSSocks4Parser.m +++ b/Source/GSSocksParser/GSSocks4Parser.m @@ -19,8 +19,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110 USA. + * Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. * * $Date$ $Revision$ */ diff --git a/Source/GSSocksParser/GSSocks5Parser.h b/Source/GSSocksParser/GSSocks5Parser.h index 633526da0..9154d5944 100644 --- a/Source/GSSocksParser/GSSocks5Parser.h +++ b/Source/GSSocksParser/GSSocks5Parser.h @@ -19,8 +19,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110 USA. + * Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. * * $Date$ $Revision$ */ diff --git a/Source/GSSocksParser/GSSocks5Parser.m b/Source/GSSocksParser/GSSocks5Parser.m index 0448c4ab2..f67ae0833 100644 --- a/Source/GSSocksParser/GSSocks5Parser.m +++ b/Source/GSSocksParser/GSSocks5Parser.m @@ -19,8 +19,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110 USA. + * Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. * * $Date$ $Revision$ */ diff --git a/Source/GSSocksParser/GSSocksParser.h b/Source/GSSocksParser/GSSocksParser.h index 063e74b1e..7cce6c5fa 100644 --- a/Source/GSSocksParser/GSSocksParser.h +++ b/Source/GSSocksParser/GSSocksParser.h @@ -19,8 +19,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110 USA. + * Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. * * $Date$ $Revision$ */ diff --git a/Source/GSSocksParser/GSSocksParser.m b/Source/GSSocksParser/GSSocksParser.m index 0d1f057e5..852d9ca5b 100644 --- a/Source/GSSocksParser/GSSocksParser.m +++ b/Source/GSSocksParser/GSSocksParser.m @@ -19,8 +19,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110 USA. + * Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. * * $Date$ $Revision$ */ diff --git a/Source/GSSocksParser/GSSocksParserPrivate.h b/Source/GSSocksParser/GSSocksParserPrivate.h index 122b1e785..59cf42640 100644 --- a/Source/GSSocksParser/GSSocksParserPrivate.h +++ b/Source/GSSocksParser/GSSocksParserPrivate.h @@ -19,8 +19,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110 USA. + * Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. * * $Date$ $Revision$ */ diff --git a/Source/GSSocksParser/GSSocksParserPrivate.m b/Source/GSSocksParser/GSSocksParserPrivate.m index bdd5456aa..5c1a8ad7f 100644 --- a/Source/GSSocksParser/GSSocksParserPrivate.m +++ b/Source/GSSocksParser/GSSocksParserPrivate.m @@ -19,8 +19,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110 USA. + * Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. * * $Date$ $Revision$ */ diff --git a/Source/GSSorting.h b/Source/GSSorting.h index eb90ab184..51e766264 100644 --- a/Source/GSSorting.h +++ b/Source/GSSorting.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSSortDescriptor.h" diff --git a/Source/GSStream.h b/Source/GSStream.h index 5b537a27a..fb4b7a98e 100644 --- a/Source/GSStream.h +++ b/Source/GSStream.h @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSInputStream and NSOutputStream are clusters rather than concrete classes The inherance graph is: diff --git a/Source/GSStream.m b/Source/GSStream.m index b2a3af520..2763f4bd3 100644 --- a/Source/GSStream.m +++ b/Source/GSStream.m @@ -17,8 +17,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/GSString.m b/Source/GSString.m index cd84bb21f..c7c185e57 100644 --- a/Source/GSString.m +++ b/Source/GSString.m @@ -29,8 +29,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/GSTLS.m b/Source/GSTLS.m index 4cabfada2..24ec20eee 100644 --- a/Source/GSTLS.m +++ b/Source/GSTLS.m @@ -16,8 +16,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/GSTimSort.m b/Source/GSTimSort.m index 8707a2ab2..69080a681 100644 --- a/Source/GSTimSort.m +++ b/Source/GSTimSort.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/GSURLPrivate.h b/Source/GSURLPrivate.h index 69a31464d..dcc6406a5 100644 --- a/Source/GSURLPrivate.h +++ b/Source/GSURLPrivate.h @@ -17,8 +17,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __GSURLPrivate_h_ diff --git a/Source/GSValue.m b/Source/GSValue.m index b8c23c31a..976a44e2e 100644 --- a/Source/GSValue.m +++ b/Source/GSValue.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/GSeq.h b/Source/GSeq.h index 209f75d0c..5854f3ff0 100644 --- a/Source/GSeq.h +++ b/Source/GSeq.h @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ /* diff --git a/Source/Makefile.postamble b/Source/Makefile.postamble index dc09bd72e..e3671cc39 100644 --- a/Source/Makefile.postamble +++ b/Source/Makefile.postamble @@ -23,7 +23,7 @@ # You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. # If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# 31 Milk Street #960789 Boston, MA 02196 USA. # # Makefile.postamble diff --git a/Source/Makefile.preamble b/Source/Makefile.preamble index be5f929d8..af2f0b97a 100644 --- a/Source/Makefile.preamble +++ b/Source/Makefile.preamble @@ -23,7 +23,7 @@ # You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. # If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# 31 Milk Street #960789 Boston, MA 02196 USA. # # Makefile.preamble diff --git a/Source/NSAffineTransform.m b/Source/NSAffineTransform.m index b6637c840..bb3d212b7 100644 --- a/Source/NSAffineTransform.m +++ b/Source/NSAffineTransform.m @@ -25,8 +25,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSAppleEventDescriptor.m b/Source/NSAppleEventDescriptor.m index 1758b038b..8b30f1d0b 100644 --- a/Source/NSAppleEventDescriptor.m +++ b/Source/NSAppleEventDescriptor.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSAppleEventDescriptor.h" diff --git a/Source/NSAppleEventManager.m b/Source/NSAppleEventManager.m index 84fcb591e..ffb595a7d 100644 --- a/Source/NSAppleEventManager.m +++ b/Source/NSAppleEventManager.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSAppleEventManager.h" diff --git a/Source/NSAppleScript.m b/Source/NSAppleScript.m index 314833a3b..c02d5637f 100644 --- a/Source/NSAppleScript.m +++ b/Source/NSAppleScript.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSAppleScript.h" diff --git a/Source/NSArchiver.m b/Source/NSArchiver.m index b769cf724..1e1733633 100644 --- a/Source/NSArchiver.m +++ b/Source/NSArchiver.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSArchiver class reference */ diff --git a/Source/NSArray.m b/Source/NSArray.m index 4529f85a2..ea966e873 100644 --- a/Source/NSArray.m +++ b/Source/NSArray.m @@ -23,8 +23,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSArray class reference $Date$ $Revision$ diff --git a/Source/NSAssertionHandler.m b/Source/NSAssertionHandler.m index fb5289c82..958e29aff 100644 --- a/Source/NSAssertionHandler.m +++ b/Source/NSAssertionHandler.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSAssertionHandler class reference $Date$ $Revision$ diff --git a/Source/NSAttributedString.m b/Source/NSAttributedString.m index a0ae24804..04331b6ad 100644 --- a/Source/NSAttributedString.m +++ b/Source/NSAttributedString.m @@ -27,8 +27,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSAttributedString class reference $Date$ $Revision$ diff --git a/Source/NSAutoreleasePool.m b/Source/NSAutoreleasePool.m index 4aa6cee6a..ed8c69f7a 100644 --- a/Source/NSAutoreleasePool.m +++ b/Source/NSAutoreleasePool.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSAutoreleasePool class reference $Date$ $Revision$ diff --git a/Source/NSBackgroundActivityScheduler.m b/Source/NSBackgroundActivityScheduler.m index 372b4df95..16dc2d614 100644 --- a/Source/NSBackgroundActivityScheduler.m +++ b/Source/NSBackgroundActivityScheduler.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSBackgroundActivityScheduler.h" diff --git a/Source/NSBundle.m b/Source/NSBundle.m index 117b6402b..5ceee153a 100644 --- a/Source/NSBundle.m +++ b/Source/NSBundle.m @@ -23,8 +23,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSBundle class reference diff --git a/Source/NSByteCountFormatter.m b/Source/NSByteCountFormatter.m index bf40fa79b..8fd360962 100644 --- a/Source/NSByteCountFormatter.m +++ b/Source/NSByteCountFormatter.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #define GS_NSByteCountFormatter_IVARS \ diff --git a/Source/NSCache.m b/Source/NSCache.m index bfc72c135..84333f8e2 100644 --- a/Source/NSCache.m +++ b/Source/NSCache.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSCachedURLResponse.m b/Source/NSCachedURLResponse.m index eaf2e2b82..52602310a 100644 --- a/Source/NSCachedURLResponse.m +++ b/Source/NSCachedURLResponse.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSCalendar.m b/Source/NSCalendar.m index 949eda54d..867b15563 100644 --- a/Source/NSCalendar.m +++ b/Source/NSCalendar.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; see the file COPYING.LIB. If not, see or write to the - Free Software Foundation, 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. + Free Software Foundation, 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSCalendarDate.m b/Source/NSCalendarDate.m index 5f8a52abc..df52a74bb 100644 --- a/Source/NSCalendarDate.m +++ b/Source/NSCalendarDate.m @@ -21,8 +21,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSCalendarDate class reference $Date$ $Revision$ diff --git a/Source/NSCallBacks.h b/Source/NSCallBacks.h index 234cf729e..f6dc389b4 100644 --- a/Source/NSCallBacks.h +++ b/Source/NSCallBacks.h @@ -21,8 +21,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110 USA. */ + * Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __NSCallBacks_h_OBJECTS_INCLUDE #define __NSCallBacks_h_OBJECTS_INCLUDE 1 diff --git a/Source/NSCallBacks.m b/Source/NSCallBacks.m index da4e2c8aa..ca82d4508 100644 --- a/Source/NSCallBacks.m +++ b/Source/NSCallBacks.m @@ -24,8 +24,7 @@ NSCallBacks class reference $Date$ $Revision$ - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110 USA. */ + * Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ /**** Included Headers *******************************************************/ diff --git a/Source/NSCharacterSet.m b/Source/NSCharacterSet.m index 6aa8154de..5363887a4 100644 --- a/Source/NSCharacterSet.m +++ b/Source/NSCharacterSet.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSCharacterSet class reference $Date$ $Revision$ diff --git a/Source/NSClassDescription.m b/Source/NSClassDescription.m index 10a78d257..4843255e7 100644 --- a/Source/NSClassDescription.m +++ b/Source/NSClassDescription.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSClassDescription class reference $Date$ $Revision$ diff --git a/Source/NSCoder.m b/Source/NSCoder.m index baa50ba77..ae6d9ab38 100644 --- a/Source/NSCoder.m +++ b/Source/NSCoder.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSCoder class reference $Date$ $Revision$ diff --git a/Source/NSConcreteHashTable.m b/Source/NSConcreteHashTable.m index 31ed406ab..75b49fb34 100644 --- a/Source/NSConcreteHashTable.m +++ b/Source/NSConcreteHashTable.m @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. $Date: 2008-06-08 11:38:33 +0100 (Sun, 08 Jun 2008) $ $Revision: 26606 $ */ diff --git a/Source/NSConcreteMapTable.m b/Source/NSConcreteMapTable.m index 86c0adffd..755765663 100644 --- a/Source/NSConcreteMapTable.m +++ b/Source/NSConcreteMapTable.m @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. $Date: 2008-06-08 11:38:33 +0100 (Sun, 08 Jun 2008) $ $Revision: 26606 $ */ diff --git a/Source/NSConcretePointerFunctions.h b/Source/NSConcretePointerFunctions.h index ec1fa8bda..2290ef52e 100644 --- a/Source/NSConcretePointerFunctions.h +++ b/Source/NSConcretePointerFunctions.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/NSConcretePointerFunctions.m b/Source/NSConcretePointerFunctions.m index ce5a78a23..6a0a15ac9 100644 --- a/Source/NSConcretePointerFunctions.m +++ b/Source/NSConcretePointerFunctions.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/NSConnection.m b/Source/NSConnection.m index b168b4080..590ff1986 100644 --- a/Source/NSConnection.m +++ b/Source/NSConnection.m @@ -22,8 +22,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSConnection class reference $Date$ $Revision$ diff --git a/Source/NSCopyObject.m b/Source/NSCopyObject.m index a8716eddd..ac7d70c24 100644 --- a/Source/NSCopyObject.m +++ b/Source/NSCopyObject.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSCopyObject class reference $Date$ $Revision$ diff --git a/Source/NSCountedSet.m b/Source/NSCountedSet.m index 896994f78..a21d68072 100644 --- a/Source/NSCountedSet.m +++ b/Source/NSCountedSet.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSCountedSet class reference $Date$ $Revision$ diff --git a/Source/NSData.m b/Source/NSData.m index b074be81e..08c891cf0 100644 --- a/Source/NSData.m +++ b/Source/NSData.m @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSData class reference $Date$ $Revision$ diff --git a/Source/NSDate.m b/Source/NSDate.m index de43f312f..0a9e38454 100644 --- a/Source/NSDate.m +++ b/Source/NSDate.m @@ -21,8 +21,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSDate class reference $Date$ $Revision$ diff --git a/Source/NSDateComponentsFormatter.m b/Source/NSDateComponentsFormatter.m index 123241f3d..e9ad55f88 100644 --- a/Source/NSDateComponentsFormatter.m +++ b/Source/NSDateComponentsFormatter.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSDateComponentsFormatter.h" diff --git a/Source/NSDateFormatter.m b/Source/NSDateFormatter.m index b93758bac..46ac499c5 100644 --- a/Source/NSDateFormatter.m +++ b/Source/NSDateFormatter.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSDateFormatter class reference $Date$ $Revision$ diff --git a/Source/NSDateInterval.m b/Source/NSDateInterval.m index ede531dd3..4f17c5140 100644 --- a/Source/NSDateInterval.m +++ b/Source/NSDateInterval.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSDateInterval.h" diff --git a/Source/NSDateIntervalFormatter.m b/Source/NSDateIntervalFormatter.m index 42862c3f8..75d849d20 100644 --- a/Source/NSDateIntervalFormatter.m +++ b/Source/NSDateIntervalFormatter.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSDateIntervalFormatter.h" diff --git a/Source/NSDatePrivate.h b/Source/NSDatePrivate.h index 07075d748..15ea55768 100644 --- a/Source/NSDatePrivate.h +++ b/Source/NSDatePrivate.h @@ -17,8 +17,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import diff --git a/Source/NSDebug.m b/Source/NSDebug.m index 20c67621b..526c11e6e 100644 --- a/Source/NSDebug.m +++ b/Source/NSDebug.m @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSDebug utilities reference $Date$ $Revision$ diff --git a/Source/NSDecimal.m b/Source/NSDecimal.m index c1a4983cc..059e62939 100644 --- a/Source/NSDecimal.m +++ b/Source/NSDecimal.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSDecimal class reference $Date$ $Revision$ diff --git a/Source/NSDecimalNumber.m b/Source/NSDecimalNumber.m index a18e04908..062387320 100644 --- a/Source/NSDecimalNumber.m +++ b/Source/NSDecimalNumber.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSDecimalNumber class reference $Date$ $Revision$ diff --git a/Source/NSDictionary.m b/Source/NSDictionary.m index 7e63eca6f..647afd2ba 100644 --- a/Source/NSDictionary.m +++ b/Source/NSDictionary.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSDictionary class reference $Date$ $Revision$ diff --git a/Source/NSDistantObject.m b/Source/NSDistantObject.m index b9dbe35f4..20c3b4e55 100644 --- a/Source/NSDistantObject.m +++ b/Source/NSDistantObject.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSDistantObject class reference $Date$ $Revision$ diff --git a/Source/NSDistributedLock.m b/Source/NSDistributedLock.m index 6dd828d6d..a0c31e4e4 100644 --- a/Source/NSDistributedLock.m +++ b/Source/NSDistributedLock.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSDistributedLock class reference $Date$ $Revision$ diff --git a/Source/NSDistributedNotificationCenter.m b/Source/NSDistributedNotificationCenter.m index 4677cd397..e68d40493 100644 --- a/Source/NSDistributedNotificationCenter.m +++ b/Source/NSDistributedNotificationCenter.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSDistributedNotificationCenter class reference $Date$ $Revision$ diff --git a/Source/NSEnergyFormatter.m b/Source/NSEnergyFormatter.m index 151c9476b..4eab665d8 100644 --- a/Source/NSEnergyFormatter.m +++ b/Source/NSEnergyFormatter.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSEnergyFormatter.h" diff --git a/Source/NSEnumerator.m b/Source/NSEnumerator.m index 97a447ba9..cf6735b33 100644 --- a/Source/NSEnumerator.m +++ b/Source/NSEnumerator.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSEnumerator class reference $Date$ $Revision$ diff --git a/Source/NSError.m b/Source/NSError.m index ef7a0f677..dd77b146f 100644 --- a/Source/NSError.m +++ b/Source/NSError.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSException.m b/Source/NSException.m index 7384dc22b..eb44878c3 100644 --- a/Source/NSException.m +++ b/Source/NSException.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. $Date$ $Revision$ */ diff --git a/Source/NSExtensionContext.m b/Source/NSExtensionContext.m index f2014b008..45f8d37af 100644 --- a/Source/NSExtensionContext.m +++ b/Source/NSExtensionContext.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSExtensionContext.h" diff --git a/Source/NSExtensionItem.m b/Source/NSExtensionItem.m index 1f3ccc664..e039d0f4b 100644 --- a/Source/NSExtensionItem.m +++ b/Source/NSExtensionItem.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSExtensionItem.h" diff --git a/Source/NSFileCoordinator.m b/Source/NSFileCoordinator.m index ab28a277e..ca026b4dc 100644 --- a/Source/NSFileCoordinator.m +++ b/Source/NSFileCoordinator.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import diff --git a/Source/NSFileHandle.m b/Source/NSFileHandle.m index 29a7715dd..18cadbdc1 100644 --- a/Source/NSFileHandle.m +++ b/Source/NSFileHandle.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSFileHandle class reference $Date$ $Revision$ diff --git a/Source/NSFileManager.m b/Source/NSFileManager.m index ee1772b7c..497faf426 100644 --- a/Source/NSFileManager.m +++ b/Source/NSFileManager.m @@ -30,8 +30,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSFileManager class reference $Date$ $Revision$ diff --git a/Source/NSFileVersion.m b/Source/NSFileVersion.m index c6439d872..07eae798c 100644 --- a/Source/NSFileVersion.m +++ b/Source/NSFileVersion.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSFileVersion.h" diff --git a/Source/NSFileWrapper.m b/Source/NSFileWrapper.m index 87efcb865..7f9d6b750 100644 --- a/Source/NSFileWrapper.m +++ b/Source/NSFileWrapper.m @@ -26,8 +26,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; see the file COPYING.LIB. If not, see or write to the - Free Software Foundation, 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. + Free Software Foundation, 31 Milk Street #960789 Boston, MA 02196 USA. */ #include "config.h" diff --git a/Source/NSFormatter.m b/Source/NSFormatter.m index 3fd10e596..465b47224 100644 --- a/Source/NSFormatter.m +++ b/Source/NSFormatter.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSFormatter class reference $Date$ $Revision$ diff --git a/Source/NSGarbageCollector.m b/Source/NSGarbageCollector.m index 1ad9d6867..ec305207e 100644 --- a/Source/NSGarbageCollector.m +++ b/Source/NSGarbageCollector.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/NSGeometry.m b/Source/NSGeometry.m index c5c7185cf..a3d15538f 100644 --- a/Source/NSGeometry.m +++ b/Source/NSGeometry.m @@ -18,8 +18,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110 USA. + * Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSGeometry class reference $Date$ $Revision$ diff --git a/Source/NSHFSFileTypes.m b/Source/NSHFSFileTypes.m index b57ceb282..f5b96aeea 100644 --- a/Source/NSHFSFileTypes.m +++ b/Source/NSHFSFileTypes.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSHFSFileTypes.h" diff --git a/Source/NSHTTPCookie.m b/Source/NSHTTPCookie.m index c3c6da6a5..6decc8baa 100644 --- a/Source/NSHTTPCookie.m +++ b/Source/NSHTTPCookie.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ /* diff --git a/Source/NSHTTPCookieStorage.m b/Source/NSHTTPCookieStorage.m index 4b507e59e..37e46f815 100644 --- a/Source/NSHTTPCookieStorage.m +++ b/Source/NSHTTPCookieStorage.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSHashTable.m b/Source/NSHashTable.m index 908eed339..f19a07e77 100644 --- a/Source/NSHashTable.m +++ b/Source/NSHashTable.m @@ -17,8 +17,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110 USA. + * Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. * * NSHashTable class reference * $Date$ $Revision$ diff --git a/Source/NSHost.m b/Source/NSHost.m index 9583e5d3f..47a1fcaa2 100644 --- a/Source/NSHost.m +++ b/Source/NSHost.m @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSHost class reference $Date$ $Revision$ diff --git a/Source/NSISO8601DateFormatter.m b/Source/NSISO8601DateFormatter.m index efc10830b..7f8bad4cc 100644 --- a/Source/NSISO8601DateFormatter.m +++ b/Source/NSISO8601DateFormatter.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSCoder.h" diff --git a/Source/NSIndexPath.m b/Source/NSIndexPath.m index 2bdda18ba..5170fdeff 100644 --- a/Source/NSIndexPath.m +++ b/Source/NSIndexPath.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/NSIndexSet.m b/Source/NSIndexSet.m index 73d6a2528..bff2519e8 100644 --- a/Source/NSIndexSet.m +++ b/Source/NSIndexSet.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/NSInvocation.m b/Source/NSInvocation.m index f6f25f83e..a5af4863c 100644 --- a/Source/NSInvocation.m +++ b/Source/NSInvocation.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSInvocation class reference $Date$ $Revision$ diff --git a/Source/NSInvocationOperation.m b/Source/NSInvocationOperation.m index 0f9b423d3..ba7e2d672 100644 --- a/Source/NSInvocationOperation.m +++ b/Source/NSInvocationOperation.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSInvocationOperation class reference $Date$ $Revision$ diff --git a/Source/NSItemProvider.m b/Source/NSItemProvider.m index a18a7658f..53313dc51 100644 --- a/Source/NSItemProvider.m +++ b/Source/NSItemProvider.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSItemProvider.h" diff --git a/Source/NSItemProviderReadingWriting.m b/Source/NSItemProviderReadingWriting.m index 89bf8cd47..fb912e572 100644 --- a/Source/NSItemProviderReadingWriting.m +++ b/Source/NSItemProviderReadingWriting.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSItemProviderReadingWriting.h" diff --git a/Source/NSJSONSerialization.m b/Source/NSJSONSerialization.m index a83405fdd..15072670c 100644 --- a/Source/NSJSONSerialization.m +++ b/Source/NSJSONSerialization.m @@ -25,8 +25,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSKeyValueCoding+Caching.h b/Source/NSKeyValueCoding+Caching.h index f5c45fdf4..024197540 100644 --- a/Source/NSKeyValueCoding+Caching.h +++ b/Source/NSKeyValueCoding+Caching.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ /** diff --git a/Source/NSKeyValueCoding+Caching.m b/Source/NSKeyValueCoding+Caching.m index 07dc3ec39..11643c8fa 100644 --- a/Source/NSKeyValueCoding+Caching.m +++ b/Source/NSKeyValueCoding+Caching.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import diff --git a/Source/NSKeyValueCoding.m b/Source/NSKeyValueCoding.m index 8e648d62c..c83758ddc 100644 --- a/Source/NSKeyValueCoding.m +++ b/Source/NSKeyValueCoding.m @@ -17,8 +17,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSKeyValueCoding informal protocol reference $Date$ $Revision$ diff --git a/Source/NSKeyValueMutableArray.m b/Source/NSKeyValueMutableArray.m index 697f28f95..8ad0b6a36 100644 --- a/Source/NSKeyValueMutableArray.m +++ b/Source/NSKeyValueMutableArray.m @@ -17,8 +17,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. $Date: 2007-06-08 04: 04: 14 -0400 (Fri, 08 Jun 2007) $ $Revision: 25230 $ */ diff --git a/Source/NSKeyValueMutableSet.m b/Source/NSKeyValueMutableSet.m index 0ce871220..0fd15fefc 100644 --- a/Source/NSKeyValueMutableSet.m +++ b/Source/NSKeyValueMutableSet.m @@ -17,8 +17,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. $Date: 2007-06-08 04:04:14 -0400 (Fri, 08 Jun 2007) $ $Revision: 25230 $ */ diff --git a/Source/NSKeyValueObserving.m b/Source/NSKeyValueObserving.m index 30a497d34..2f1d2f96a 100644 --- a/Source/NSKeyValueObserving.m +++ b/Source/NSKeyValueObserving.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. $Date$ $Revision$ */ diff --git a/Source/NSKeyedArchiver.m b/Source/NSKeyedArchiver.m index 02ac8e904..0c80e23bd 100644 --- a/Source/NSKeyedArchiver.m +++ b/Source/NSKeyedArchiver.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/NSKeyedUnarchiver.m b/Source/NSKeyedUnarchiver.m index 8301e43b6..6da12f5d3 100644 --- a/Source/NSKeyedUnarchiver.m +++ b/Source/NSKeyedUnarchiver.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/NSLengthFormatter.m b/Source/NSLengthFormatter.m index 855cc34d8..262988754 100644 --- a/Source/NSLengthFormatter.m +++ b/Source/NSLengthFormatter.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSLengthFormatter.h" diff --git a/Source/NSLinguisticTagger.m b/Source/NSLinguisticTagger.m index eeab3fe88..8fc3471fb 100644 --- a/Source/NSLinguisticTagger.m +++ b/Source/NSLinguisticTagger.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSLinguisticTagger.h" diff --git a/Source/NSLocale.m b/Source/NSLocale.m index 8c78407ba..5c2744b7d 100644 --- a/Source/NSLocale.m +++ b/Source/NSLocale.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; see the file COPYING.LIB. If not, see or write to the - Free Software Foundation, 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. + Free Software Foundation, 31 Milk Street #960789 Boston, MA 02196 USA. */ #define EXPOSE_NSLocale_IVARS 1 diff --git a/Source/NSLock.m b/Source/NSLock.m index df5ae502f..bcfa51ee9 100644 --- a/Source/NSLock.m +++ b/Source/NSLock.m @@ -15,8 +15,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSLock class reference All autogsdoc markup is in the header diff --git a/Source/NSLog.m b/Source/NSLog.m index ee3c5aea4..b06c03c63 100644 --- a/Source/NSLog.m +++ b/Source/NSLog.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSLog reference $Date$ $Revision$ diff --git a/Source/NSMapTable.m b/Source/NSMapTable.m index e085d0f69..070ff4c96 100644 --- a/Source/NSMapTable.m +++ b/Source/NSMapTable.m @@ -17,8 +17,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110 USA. + * Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. * * NSMapTable class reference * $Date$ $Revision$ diff --git a/Source/NSMassFormatter.m b/Source/NSMassFormatter.m index 0d633b872..dd86cae65 100644 --- a/Source/NSMassFormatter.m +++ b/Source/NSMassFormatter.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSMassFormatter.h" diff --git a/Source/NSMeasurement.m b/Source/NSMeasurement.m index a617e1df8..c8ea19009 100644 --- a/Source/NSMeasurement.m +++ b/Source/NSMeasurement.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSArchiver.h" diff --git a/Source/NSMeasurementFormatter.m b/Source/NSMeasurementFormatter.m index 1252e7339..31363179e 100644 --- a/Source/NSMeasurementFormatter.m +++ b/Source/NSMeasurementFormatter.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSLocale.h" diff --git a/Source/NSMessagePort.m b/Source/NSMessagePort.m index 5b37c1e26..e99f28ebd 100644 --- a/Source/NSMessagePort.m +++ b/Source/NSMessagePort.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSMessagePortNameServer.m b/Source/NSMessagePortNameServer.m index 88f09c49b..80cfc4872 100644 --- a/Source/NSMessagePortNameServer.m +++ b/Source/NSMessagePortNameServer.m @@ -16,8 +16,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSMessagePortNameServer class reference $Date$ $Revision$ diff --git a/Source/NSMetadata.m b/Source/NSMetadata.m index 3a3ff6219..176adc6ac 100644 --- a/Source/NSMetadata.m +++ b/Source/NSMetadata.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSMetadataAttributes.m b/Source/NSMetadataAttributes.m index 0d3a21a5d..f3c9fdb21 100644 --- a/Source/NSMetadataAttributes.m +++ b/Source/NSMetadataAttributes.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSMetadataAttributes.h" diff --git a/Source/NSMethodSignature.m b/Source/NSMethodSignature.m index 0b9b8da7a..f2612dca0 100644 --- a/Source/NSMethodSignature.m +++ b/Source/NSMethodSignature.m @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSMethodSignature class reference $Date$ $Revision$ diff --git a/Source/NSNetServices.m b/Source/NSNetServices.m index 4ffedcdeb..7b32ca141 100644 --- a/Source/NSNetServices.m +++ b/Source/NSNetServices.m @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSNotification.m b/Source/NSNotification.m index 79ae9412e..421590d07 100644 --- a/Source/NSNotification.m +++ b/Source/NSNotification.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSNotification class reference $Date$ $Revision$ diff --git a/Source/NSNotificationCenter.m b/Source/NSNotificationCenter.m index d33ceed09..2dcd479f4 100644 --- a/Source/NSNotificationCenter.m +++ b/Source/NSNotificationCenter.m @@ -22,8 +22,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSNotificationCenter class reference */ diff --git a/Source/NSNotificationQueue.m b/Source/NSNotificationQueue.m index 7aed76440..6c6abde99 100644 --- a/Source/NSNotificationQueue.m +++ b/Source/NSNotificationQueue.m @@ -21,8 +21,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSNotificationQueue class reference $Date$ $Revision$ diff --git a/Source/NSNull.m b/Source/NSNull.m index 318f61247..e31dc6326 100644 --- a/Source/NSNull.m +++ b/Source/NSNull.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSNull class reference */ diff --git a/Source/NSNumber.m b/Source/NSNumber.m index ecff803dc..da05e4162 100644 --- a/Source/NSNumber.m +++ b/Source/NSNumber.m @@ -23,8 +23,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/NSNumberFormatter.m b/Source/NSNumberFormatter.m index 5d24664b1..9f2488976 100644 --- a/Source/NSNumberFormatter.m +++ b/Source/NSNumberFormatter.m @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSNumberFormatter class reference $Date$ $Revision$ diff --git a/Source/NSObjCRuntime.m b/Source/NSObjCRuntime.m index 415bde2f9..96ded4dd2 100644 --- a/Source/NSObjCRuntime.m +++ b/Source/NSObjCRuntime.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSObjCRuntime class reference */ diff --git a/Source/NSObject+NSComparisonMethods.m b/Source/NSObject+NSComparisonMethods.m index e93134e41..e9366e449 100644 --- a/Source/NSObject+NSComparisonMethods.m +++ b/Source/NSObject+NSComparisonMethods.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSObject+NSComparisonMethods category reference */ diff --git a/Source/NSObject.m b/Source/NSObject.m index 04e795e6e..cd910b712 100644 --- a/Source/NSObject.m +++ b/Source/NSObject.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSObject class reference $Date$ $Revision$ diff --git a/Source/NSObjectScripting.m b/Source/NSObjectScripting.m index 5c1fb89e1..e94559c00 100644 --- a/Source/NSObjectScripting.m +++ b/Source/NSObjectScripting.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSObjectScripting.h" diff --git a/Source/NSOperation.m b/Source/NSOperation.m index 145c8f9b8..f60aea49f 100644 --- a/Source/NSOperation.m +++ b/Source/NSOperation.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSOperation class reference Created: 2008-06-08 11:38:33 +0100 (Sun, 08 Jun 2008) diff --git a/Source/NSOrderedSet.m b/Source/NSOrderedSet.m index 42f3f5ac7..522563e55 100644 --- a/Source/NSOrderedSet.m +++ b/Source/NSOrderedSet.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSOrthography.m b/Source/NSOrthography.m index 6ace31654..b87f43db5 100644 --- a/Source/NSOrthography.m +++ b/Source/NSOrthography.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSArray.h" diff --git a/Source/NSPage.m b/Source/NSPage.m index f79871242..8fec5c6ed 100644 --- a/Source/NSPage.m +++ b/Source/NSPage.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSPage class reference $Date$ $Revision$ diff --git a/Source/NSPathUtilities.m b/Source/NSPathUtilities.m index 5fae1a138..77f84adc4 100644 --- a/Source/NSPathUtilities.m +++ b/Source/NSPathUtilities.m @@ -22,8 +22,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSPathUtilities function reference */ diff --git a/Source/NSPersonNameComponents.m b/Source/NSPersonNameComponents.m index 3085e95ed..0d182614f 100644 --- a/Source/NSPersonNameComponents.m +++ b/Source/NSPersonNameComponents.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSPersonNameComponentsFormatter.m b/Source/NSPersonNameComponentsFormatter.m index 819237451..67de10353 100644 --- a/Source/NSPersonNameComponentsFormatter.m +++ b/Source/NSPersonNameComponentsFormatter.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSString.h" diff --git a/Source/NSPipe.m b/Source/NSPipe.m index 8289896d0..9981806f9 100644 --- a/Source/NSPipe.m +++ b/Source/NSPipe.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSPointerArray.m b/Source/NSPointerArray.m index 9a1d9a0f0..84d297864 100644 --- a/Source/NSPointerArray.m +++ b/Source/NSPointerArray.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/NSPointerFunctions.m b/Source/NSPointerFunctions.m index 02bd67273..421286732 100644 --- a/Source/NSPointerFunctions.m +++ b/Source/NSPointerFunctions.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/NSPort.m b/Source/NSPort.m index 99a3908e0..da0f3a138 100644 --- a/Source/NSPort.m +++ b/Source/NSPort.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSPort class reference $Date$ $Revision$ diff --git a/Source/NSPortCoder.m b/Source/NSPortCoder.m index 233cdfb71..17c80cdfb 100644 --- a/Source/NSPortCoder.m +++ b/Source/NSPortCoder.m @@ -26,8 +26,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSPortCoder class reference $Date$ $Revision$ diff --git a/Source/NSPortMessage.m b/Source/NSPortMessage.m index 8223ef429..d3f6d1975 100644 --- a/Source/NSPortMessage.m +++ b/Source/NSPortMessage.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSPortMessage class reference $Date$ $Revision$ diff --git a/Source/NSPortNameServer.m b/Source/NSPortNameServer.m index b66437281..51724ade5 100644 --- a/Source/NSPortNameServer.m +++ b/Source/NSPortNameServer.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSPortNameServer class reference $Date$ $Revision$ diff --git a/Source/NSPredicate.m b/Source/NSPredicate.m index 433d9a0e1..a10d2d434 100644 --- a/Source/NSPredicate.m +++ b/Source/NSPredicate.m @@ -22,8 +22,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSProcessInfo.m b/Source/NSProcessInfo.m index 70bd47be2..348add4b0 100644 --- a/Source/NSProcessInfo.m +++ b/Source/NSProcessInfo.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSProcessInfo class reference $Date$ $Revision$ diff --git a/Source/NSProgress.m b/Source/NSProgress.m index 55efd5b78..d864dd41a 100644 --- a/Source/NSProgress.m +++ b/Source/NSProgress.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #define GS_NSProgress_IVARS \ diff --git a/Source/NSPropertyList.m b/Source/NSPropertyList.m index b88ad267c..45264eaac 100644 --- a/Source/NSPropertyList.m +++ b/Source/NSPropertyList.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/NSProtocolChecker.m b/Source/NSProtocolChecker.m index 93ea49a15..26a87e328 100644 --- a/Source/NSProtocolChecker.m +++ b/Source/NSProtocolChecker.m @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSProtocolChecker class reference $Date$ $Revision$ diff --git a/Source/NSProxy.m b/Source/NSProxy.m index 30dfd5f01..3a7f132e1 100644 --- a/Source/NSProxy.m +++ b/Source/NSProxy.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSProxy class reference $Date$ $Revision$ diff --git a/Source/NSRange.m b/Source/NSRange.m index e2b91e8be..ab01c93f1 100644 --- a/Source/NSRange.m +++ b/Source/NSRange.m @@ -18,8 +18,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110 USA. + * Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSRange class reference $Date$ $Revision$ diff --git a/Source/NSRegularExpression.m b/Source/NSRegularExpression.m index 548bec106..ca359f4f0 100644 --- a/Source/NSRegularExpression.m +++ b/Source/NSRegularExpression.m @@ -16,8 +16,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/NSRunLoop.m b/Source/NSRunLoop.m index 61a4f13d3..297226e6b 100644 --- a/Source/NSRunLoop.m +++ b/Source/NSRunLoop.m @@ -22,8 +22,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSRunLoop class reference $Date$ $Revision$ diff --git a/Source/NSScanner.m b/Source/NSScanner.m index b98aa2bb1..07e58d811 100644 --- a/Source/NSScanner.m +++ b/Source/NSScanner.m @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSScanner class reference $Date$ $Revision$ diff --git a/Source/NSScriptClassDescription.m b/Source/NSScriptClassDescription.m index 9a2d3705c..ed4646ee3 100644 --- a/Source/NSScriptClassDescription.m +++ b/Source/NSScriptClassDescription.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSScriptClassDescription.h" diff --git a/Source/NSScriptCoercionHandler.m b/Source/NSScriptCoercionHandler.m index b844a2529..528ead13e 100644 --- a/Source/NSScriptCoercionHandler.m +++ b/Source/NSScriptCoercionHandler.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSScriptCoercionHandler.h" diff --git a/Source/NSScriptCommand.m b/Source/NSScriptCommand.m index d26174252..5209a890f 100644 --- a/Source/NSScriptCommand.m +++ b/Source/NSScriptCommand.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSScriptCommand.h" diff --git a/Source/NSScriptCommandDescription.m b/Source/NSScriptCommandDescription.m index a6941074b..f6fbb1e47 100644 --- a/Source/NSScriptCommandDescription.m +++ b/Source/NSScriptCommandDescription.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSScriptCommandDescription.h" diff --git a/Source/NSScriptExecutionContext.m b/Source/NSScriptExecutionContext.m index a68ad2fe0..8e3b269ea 100644 --- a/Source/NSScriptExecutionContext.m +++ b/Source/NSScriptExecutionContext.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSScriptExecutionContext.h" diff --git a/Source/NSScriptKeyValueCoding.m b/Source/NSScriptKeyValueCoding.m index c0d38e875..9fe992a75 100644 --- a/Source/NSScriptKeyValueCoding.m +++ b/Source/NSScriptKeyValueCoding.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSScriptKeyValueCoding.h" diff --git a/Source/NSScriptObjectSpecifiers.m b/Source/NSScriptObjectSpecifiers.m index 42229f62c..6776004a8 100644 --- a/Source/NSScriptObjectSpecifiers.m +++ b/Source/NSScriptObjectSpecifiers.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSScriptObjectSpecifiers.h" diff --git a/Source/NSScriptStandardSuiteCommands.m b/Source/NSScriptStandardSuiteCommands.m index dbee65987..9eecc9f69 100644 --- a/Source/NSScriptStandardSuiteCommands.m +++ b/Source/NSScriptStandardSuiteCommands.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSScriptStandardSuiteCommands.h" diff --git a/Source/NSScriptSuiteRegistry.m b/Source/NSScriptSuiteRegistry.m index 14366a1c9..f2884d18c 100644 --- a/Source/NSScriptSuiteRegistry.m +++ b/Source/NSScriptSuiteRegistry.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSScriptSuiteRegistry.h" diff --git a/Source/NSSerializer.m b/Source/NSSerializer.m index 54e5b2df7..4ece88982 100644 --- a/Source/NSSerializer.m +++ b/Source/NSSerializer.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSSerializer class reference */ diff --git a/Source/NSSet.m b/Source/NSSet.m index dde76e35d..784613309 100644 --- a/Source/NSSet.m +++ b/Source/NSSet.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSSet class reference $Date$ $Revision$ diff --git a/Source/NSSocketPort.m b/Source/NSSocketPort.m index c6eeba7bb..0682eaeed 100644 --- a/Source/NSSocketPort.m +++ b/Source/NSSocketPort.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSSocketPortNameServer.m b/Source/NSSocketPortNameServer.m index c80b2bf23..9d53a8946 100644 --- a/Source/NSSocketPortNameServer.m +++ b/Source/NSSocketPortNameServer.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. $Date$ $Revision$ */ diff --git a/Source/NSSortDescriptor.m b/Source/NSSortDescriptor.m index 8e725f82f..a4251f4a2 100644 --- a/Source/NSSortDescriptor.m +++ b/Source/NSSortDescriptor.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSSpellServer.m b/Source/NSSpellServer.m index 21ec36bf2..6384415a8 100644 --- a/Source/NSSpellServer.m +++ b/Source/NSSpellServer.m @@ -24,7 +24,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSString.m b/Source/NSString.m index 8c7a29693..1d6f818a9 100644 --- a/Source/NSString.m +++ b/Source/NSString.m @@ -24,8 +24,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSString class reference */ diff --git a/Source/NSTask.m b/Source/NSTask.m index 21abcbc36..2809a2cc2 100644 --- a/Source/NSTask.m +++ b/Source/NSTask.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSTask class reference */ diff --git a/Source/NSTextCheckingResult.m b/Source/NSTextCheckingResult.m index fe8a77870..31c52dfb3 100644 --- a/Source/NSTextCheckingResult.m +++ b/Source/NSTextCheckingResult.m @@ -14,8 +14,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSThread.m b/Source/NSThread.m index 860e63876..0d29b7cce 100644 --- a/Source/NSThread.m +++ b/Source/NSThread.m @@ -24,8 +24,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSThread class reference */ diff --git a/Source/NSTimeZone.m b/Source/NSTimeZone.m index ee78a4c0d..3f478c775 100644 --- a/Source/NSTimeZone.m +++ b/Source/NSTimeZone.m @@ -21,8 +21,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSTimeZone class reference $Date$ $Revision$ diff --git a/Source/NSTimer.m b/Source/NSTimer.m index 1646c124c..c567546c5 100644 --- a/Source/NSTimer.m +++ b/Source/NSTimer.m @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSTimer class reference $Date$ $Revision$ diff --git a/Source/NSURL.m b/Source/NSURL.m index 40d767301..341f7d6ac 100644 --- a/Source/NSURL.m +++ b/Source/NSURL.m @@ -24,8 +24,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSURL class reference */ diff --git a/Source/NSURLAuthenticationChallenge.m b/Source/NSURLAuthenticationChallenge.m index d182762d5..b01f1a0ed 100644 --- a/Source/NSURLAuthenticationChallenge.m +++ b/Source/NSURLAuthenticationChallenge.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSURLCache.m b/Source/NSURLCache.m index 3be94331a..2d390d2d4 100644 --- a/Source/NSURLCache.m +++ b/Source/NSURLCache.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSURLConnection.m b/Source/NSURLConnection.m index d2ccc8a1a..b980f20d2 100644 --- a/Source/NSURLConnection.m +++ b/Source/NSURLConnection.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSURLCredential.m b/Source/NSURLCredential.m index 965983ff0..48a96cbb3 100644 --- a/Source/NSURLCredential.m +++ b/Source/NSURLCredential.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSURLCredentialStorage.m b/Source/NSURLCredentialStorage.m index cd4d37036..58e1470aa 100644 --- a/Source/NSURLCredentialStorage.m +++ b/Source/NSURLCredentialStorage.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSURLDownload.m b/Source/NSURLDownload.m index 1390ac327..2d7d1947c 100644 --- a/Source/NSURLDownload.m +++ b/Source/NSURLDownload.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSURLHandle.m b/Source/NSURLHandle.m index aa0310b76..7f0f09d68 100644 --- a/Source/NSURLHandle.m +++ b/Source/NSURLHandle.m @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSURLHandle class reference $Date$ $Revision$ diff --git a/Source/NSURLProtectionSpace.m b/Source/NSURLProtectionSpace.m index a93ad843e..c1c059c77 100644 --- a/Source/NSURLProtectionSpace.m +++ b/Source/NSURLProtectionSpace.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSURLProtocol.m b/Source/NSURLProtocol.m index 911ab3ca7..fd1f8f1d7 100644 --- a/Source/NSURLProtocol.m +++ b/Source/NSURLProtocol.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSURLRequest.m b/Source/NSURLRequest.m index 2725423c8..c178eeda5 100644 --- a/Source/NSURLRequest.m +++ b/Source/NSURLRequest.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSURLResponse.m b/Source/NSURLResponse.m index cfbf63802..b0fb6402f 100644 --- a/Source/NSURLResponse.m +++ b/Source/NSURLResponse.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSURLSession.m b/Source/NSURLSession.m index 3453458ab..d649f8ea1 100644 --- a/Source/NSURLSession.m +++ b/Source/NSURLSession.m @@ -24,8 +24,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110 USA. + * Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "NSURLSessionPrivate.h" diff --git a/Source/NSURLSessionConfiguration.m b/Source/NSURLSessionConfiguration.m index 3de770538..2f4172207 100644 --- a/Source/NSURLSessionConfiguration.m +++ b/Source/NSURLSessionConfiguration.m @@ -24,8 +24,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110 USA. + * Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSURLSession.h" diff --git a/Source/NSURLSessionPrivate.h b/Source/NSURLSessionPrivate.h index 08c65344a..690de46d4 100644 --- a/Source/NSURLSessionPrivate.h +++ b/Source/NSURLSessionPrivate.h @@ -24,8 +24,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110 USA. + * Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSURLSessionTask.m b/Source/NSURLSessionTask.m index 7c4dea175..2cedc15db 100644 --- a/Source/NSURLSessionTask.m +++ b/Source/NSURLSessionTask.m @@ -23,8 +23,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110 USA. + * Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "NSURLSessionPrivate.h" diff --git a/Source/NSURLSessionTaskPrivate.h b/Source/NSURLSessionTaskPrivate.h index c28bdd053..ae25f9dbf 100644 --- a/Source/NSURLSessionTaskPrivate.h +++ b/Source/NSURLSessionTaskPrivate.h @@ -24,8 +24,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free - * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110 USA. + * Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSDictionary.h" diff --git a/Source/NSUUID.m b/Source/NSUUID.m index 68a8e4b6a..bed4509e5 100644 --- a/Source/NSUUID.m +++ b/Source/NSUUID.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/NSUbiquitousKeyValueStore.m b/Source/NSUbiquitousKeyValueStore.m index 6b2c5c117..cd7fc42c5 100644 --- a/Source/NSUbiquitousKeyValueStore.m +++ b/Source/NSUbiquitousKeyValueStore.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSUnarchiver.m b/Source/NSUnarchiver.m index 6f87c65d9..22345a3e9 100644 --- a/Source/NSUnarchiver.m +++ b/Source/NSUnarchiver.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSUnarchiver class reference $Date$ $Revision$ diff --git a/Source/NSUndoManager.m b/Source/NSUndoManager.m index f0f5f14e0..213e59dad 100644 --- a/Source/NSUndoManager.m +++ b/Source/NSUndoManager.m @@ -17,8 +17,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSUndoManager class reference */ diff --git a/Source/NSUnit.m b/Source/NSUnit.m index 8cfd77dd5..eb8a12d55 100644 --- a/Source/NSUnit.m +++ b/Source/NSUnit.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSArchiver.h" diff --git a/Source/NSUserActivity.m b/Source/NSUserActivity.m index c3be01c49..55599e0ae 100644 --- a/Source/NSUserActivity.m +++ b/Source/NSUserActivity.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSUserActivity.h" diff --git a/Source/NSUserDefaults.m b/Source/NSUserDefaults.m index 2574490fe..8acf311f4 100644 --- a/Source/NSUserDefaults.m +++ b/Source/NSUserDefaults.m @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSUserDefaults class reference $Date$ $Revision$ diff --git a/Source/NSUserNotification.m b/Source/NSUserNotification.m index 9916d38b8..a45f4fd4b 100644 --- a/Source/NSUserNotification.m +++ b/Source/NSUserNotification.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import diff --git a/Source/NSUserScriptTask.m b/Source/NSUserScriptTask.m index 62c1a7178..2df26490b 100644 --- a/Source/NSUserScriptTask.m +++ b/Source/NSUserScriptTask.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSUserScriptTask.h" diff --git a/Source/NSValue.m b/Source/NSValue.m index 4dc85f150..ace17dac0 100644 --- a/Source/NSValue.m +++ b/Source/NSValue.m @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSValue class reference $Date$ $Revision$ diff --git a/Source/NSValueTransformer.m b/Source/NSValueTransformer.m index 9ed8e4135..a260d8087 100644 --- a/Source/NSValueTransformer.m +++ b/Source/NSValueTransformer.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSXMLDTD.m b/Source/NSXMLDTD.m index 75ccde93f..37ece64df 100644 --- a/Source/NSXMLDTD.m +++ b/Source/NSXMLDTD.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSXMLDTDNode.m b/Source/NSXMLDTDNode.m index 43f560146..1e315536d 100644 --- a/Source/NSXMLDTDNode.m +++ b/Source/NSXMLDTDNode.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSXMLDocument.m b/Source/NSXMLDocument.m index e5a5b99d1..9b8ceb77c 100644 --- a/Source/NSXMLDocument.m +++ b/Source/NSXMLDocument.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSXMLElement.m b/Source/NSXMLElement.m index e6eea3dd6..7fe43cfa6 100644 --- a/Source/NSXMLElement.m +++ b/Source/NSXMLElement.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSXMLNode.m b/Source/NSXMLNode.m index 1af5623e5..b2918d425 100644 --- a/Source/NSXMLNode.m +++ b/Source/NSXMLNode.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/NSXMLParser.m b/Source/NSXMLParser.m index ba5345535..0e0e4d2f1 100644 --- a/Source/NSXMLParser.m +++ b/Source/NSXMLParser.m @@ -20,8 +20,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/NSXMLPrivate.h b/Source/NSXMLPrivate.h index d549d19e6..6457c75a6 100644 --- a/Source/NSXMLPrivate.h +++ b/Source/NSXMLPrivate.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef _INCLUDED_NSXMLPRIVATE_H diff --git a/Source/NSXPCConnection.m b/Source/NSXPCConnection.m index 81bb955d3..680a91c40 100644 --- a/Source/NSXPCConnection.m +++ b/Source/NSXPCConnection.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "Foundation/NSXPCConnection.h" diff --git a/Source/NSZone.m b/Source/NSZone.m index a6fc91a28..b39298d96 100644 --- a/Source/NSZone.m +++ b/Source/NSZone.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSZone class reference $Date$ $Revision$ diff --git a/Source/ObjectiveC2/GNUmakefile b/Source/ObjectiveC2/GNUmakefile index 5ebbe1290..137440342 100644 --- a/Source/ObjectiveC2/GNUmakefile +++ b/Source/ObjectiveC2/GNUmakefile @@ -19,8 +19,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02111 USA. +# Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. # PACKAGE_NAME = gnustep-base diff --git a/Source/ObjectiveC2/Makefile.preamble b/Source/ObjectiveC2/Makefile.preamble index 7e419f49d..7aa3b3f55 100644 --- a/Source/ObjectiveC2/Makefile.preamble +++ b/Source/ObjectiveC2/Makefile.preamble @@ -23,7 +23,7 @@ # You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. # If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# 31 Milk Street #960789 Boston, MA 02196 USA. # # Makefile.preamble diff --git a/Source/ObjectiveC2/sync.m b/Source/ObjectiveC2/sync.m index 9a95b5cc7..0c03142e5 100644 --- a/Source/ObjectiveC2/sync.m +++ b/Source/ObjectiveC2/sync.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #include diff --git a/Source/callframe.h b/Source/callframe.h index d25d8e832..f61150dee 100644 --- a/Source/callframe.h +++ b/Source/callframe.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110 USA. - */ + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef callframe_h_INCLUDE #define callframe_h_INCLUDE diff --git a/Source/callframe.m b/Source/callframe.m index 410c3634a..e86ac1aaa 100644 --- a/Source/callframe.m +++ b/Source/callframe.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/cifframe.h b/Source/cifframe.h index de0e2d273..c20e5155a 100644 --- a/Source/cifframe.h +++ b/Source/cifframe.h @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef cifframe_h_INCLUDE diff --git a/Source/cifframe.m b/Source/cifframe.m index 8d9c62cac..928639ddc 100644 --- a/Source/cifframe.m +++ b/Source/cifframe.m @@ -19,8 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/dld-load.h b/Source/dld-load.h index 65200b3e2..ceba6824a 100644 --- a/Source/dld-load.h +++ b/Source/dld-load.h @@ -14,7 +14,7 @@ PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. BUGS: - object files loaded by dld must be loaded with 'ld -r' rather diff --git a/Source/externs.m b/Source/externs.m index 1f123f3db..13b558760 100644 --- a/Source/externs.m +++ b/Source/externs.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/hpux-load.h b/Source/hpux-load.h index 9afe42823..c00655163 100644 --- a/Source/hpux-load.h +++ b/Source/hpux-load.h @@ -14,7 +14,7 @@ PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/libgnustep-base-entry.m b/Source/libgnustep-base-entry.m index 69212e0a6..c74d55c04 100644 --- a/Source/libgnustep-base-entry.m +++ b/Source/libgnustep-base-entry.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/null-load.h b/Source/null-load.h index 81081d4e8..183689e1e 100644 --- a/Source/null-load.h +++ b/Source/null-load.h @@ -14,7 +14,7 @@ PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/objc-load.h b/Source/objc-load.h index bfb6ab0a9..96a6a2013 100644 --- a/Source/objc-load.h +++ b/Source/objc-load.h @@ -23,8 +23,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __objc_load_h_INCLUDE diff --git a/Source/objc-load.m b/Source/objc-load.m index b193ed30a..375d80e16 100644 --- a/Source/objc-load.m +++ b/Source/objc-load.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ /* PS: Unloading modules is not implemented. */ diff --git a/Source/preface.m b/Source/preface.m index 52f8cd49a..c4c688536 100644 --- a/Source/preface.m +++ b/Source/preface.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "common.h" diff --git a/Source/simple-load.h b/Source/simple-load.h index 4f9040c28..5b661ab62 100644 --- a/Source/simple-load.h +++ b/Source/simple-load.h @@ -15,7 +15,7 @@ PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. BUGS: - In SunOS 4.1, dlopen will only resolve references into the main diff --git a/Source/typeEncodingHelper.h b/Source/typeEncodingHelper.h index 9fc95cdb8..3a24741ef 100644 --- a/Source/typeEncodingHelper.h +++ b/Source/typeEncodingHelper.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __TYPE_ENCODING_HELPER_H diff --git a/Source/unix/GNUmakefile b/Source/unix/GNUmakefile index d397a8500..1a9fc44a2 100644 --- a/Source/unix/GNUmakefile +++ b/Source/unix/GNUmakefile @@ -19,8 +19,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. -# +# Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA.# PACKAGE_NAME = gnustep-base GNUSTEP_LOCAL_ADDITIONAL_MAKEFILES=../../base.make diff --git a/Source/unix/Makefile.preamble b/Source/unix/Makefile.preamble index 66eb677b0..c72770ecb 100644 --- a/Source/unix/Makefile.preamble +++ b/Source/unix/Makefile.preamble @@ -23,7 +23,7 @@ # You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. # If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# 31 Milk Street #960789 Boston, MA 02196 USA. # # Makefile.preamble diff --git a/Source/unix/NSStream.m b/Source/unix/NSStream.m index 6918a1de0..6cd1ff59d 100644 --- a/Source/unix/NSStream.m +++ b/Source/unix/NSStream.m @@ -17,8 +17,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/win32-def.top b/Source/win32-def.top index 83294f9cc..7eeed96c6 100644 --- a/Source/win32-def.top +++ b/Source/win32-def.top @@ -23,7 +23,6 @@ ; ; You should have received a copy of the GNU Lesser General Public ; License along with this library; if not, write to the Free -; Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. -; +; Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA.; LIBRARY libgnustep-base EXPORTS diff --git a/Source/win32-load.h b/Source/win32-load.h index d379641e9..871076ece 100644 --- a/Source/win32-load.h +++ b/Source/win32-load.h @@ -15,7 +15,7 @@ PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Source/win32/GNUmakefile b/Source/win32/GNUmakefile index ae1923b9a..1f64021b9 100644 --- a/Source/win32/GNUmakefile +++ b/Source/win32/GNUmakefile @@ -19,8 +19,7 @@ # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. -# +# Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA.# PACKAGE_NAME = gnustep-base GNUSTEP_LOCAL_ADDITIONAL_MAKEFILES=../../base.make diff --git a/Source/win32/GSFileHandle.m b/Source/win32/GSFileHandle.m index 109ae8666..e180cfb2b 100644 --- a/Source/win32/GSFileHandle.m +++ b/Source/win32/GSFileHandle.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #include "common.h" diff --git a/Source/win32/Makefile.preamble b/Source/win32/Makefile.preamble index 66eb677b0..c72770ecb 100644 --- a/Source/win32/Makefile.preamble +++ b/Source/win32/Makefile.preamble @@ -23,7 +23,7 @@ # You should have received a copy of the GNU Lesser General Public # License along with this library; see the file COPYING.LIB. # If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# 31 Milk Street #960789 Boston, MA 02196 USA. # # Makefile.preamble diff --git a/Source/win32/NSMessagePort.m b/Source/win32/NSMessagePort.m index 5b3ad754c..a0123b77a 100644 --- a/Source/win32/NSMessagePort.m +++ b/Source/win32/NSMessagePort.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. - */ + 31 Milk Street #960789 Boston, MA 02196 USA. */ #include "common.h" #define EXPOSE_NSPort_IVARS 1 diff --git a/Source/win32/NSMessagePortNameServer.m b/Source/win32/NSMessagePortNameServer.m index bb975bfd7..00924e9b7 100644 --- a/Source/win32/NSMessagePortNameServer.m +++ b/Source/win32/NSMessagePortNameServer.m @@ -17,8 +17,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, - Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. - + Inc., 31 Milk Street #960789 Boston, MA 02196 USA. NSMessagePortNameServer class reference */ diff --git a/Source/win32/NSStream.m b/Source/win32/NSStream.m index b66e78dee..456d055a9 100644 --- a/Source/win32/NSStream.m +++ b/Source/win32/NSStream.m @@ -17,8 +17,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #include "common.h" diff --git a/Source/win32/NSString+Win32Additions.h b/Source/win32/NSString+Win32Additions.h index 3c46fef1a..6328460dd 100644 --- a/Source/win32/NSString+Win32Additions.h +++ b/Source/win32/NSString+Win32Additions.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import diff --git a/Source/win32/NSString+Win32Additions.m b/Source/win32/NSString+Win32Additions.m index d52f1e868..77e3c3e9e 100644 --- a/Source/win32/NSString+Win32Additions.m +++ b/Source/win32/NSString+Win32Additions.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "NSString+Win32Additions.h" diff --git a/Tests/GNUmakefile b/Tests/GNUmakefile index f81d6a556..73c2c5ab9 100644 --- a/Tests/GNUmakefile +++ b/Tests/GNUmakefile @@ -19,8 +19,7 @@ # # You should have received a copy of the GNU General Public # License along with this library; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02111 USA +# Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA # ifeq ($(GNUSTEP_MAKEFILES),) diff --git a/Tests/base/NSString/bom.m b/Tests/base/NSString/bom.m index e659561b5..27dfa17fd 100644 --- a/Tests/base/NSString/bom.m +++ b/Tests/base/NSString/bom.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ /* diff --git a/Tools/AGSHtml.h b/Tools/AGSHtml.h index b89e276e0..d1ccc4ea6 100644 --- a/Tools/AGSHtml.h +++ b/Tools/AGSHtml.h @@ -18,7 +18,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/AGSHtml.m b/Tools/AGSHtml.m index 14e94851b..f2090f946 100644 --- a/Tools/AGSHtml.m +++ b/Tools/AGSHtml.m @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/AGSIndex.h b/Tools/AGSIndex.h index bdb365dde..0e4dfc3ab 100644 --- a/Tools/AGSIndex.h +++ b/Tools/AGSIndex.h @@ -18,7 +18,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/AGSIndex.m b/Tools/AGSIndex.m index a022309fb..ca4b1aac4 100644 --- a/Tools/AGSIndex.m +++ b/Tools/AGSIndex.m @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/AGSOutput.h b/Tools/AGSOutput.h index cdb438e67..59625c26e 100644 --- a/Tools/AGSOutput.h +++ b/Tools/AGSOutput.h @@ -18,7 +18,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/AGSOutput.m b/Tools/AGSOutput.m index 560399bbd..cb0ff96b0 100644 --- a/Tools/AGSOutput.m +++ b/Tools/AGSOutput.m @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/AGSParser.h b/Tools/AGSParser.h index a4ea954fa..ae7cd1122 100644 --- a/Tools/AGSParser.h +++ b/Tools/AGSParser.h @@ -18,7 +18,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. This is the AGSParser class ... and some autogsdoc examples. diff --git a/Tools/AGSParser.m b/Tools/AGSParser.m index 0dc674b79..a2ab7fa97 100644 --- a/Tools/AGSParser.m +++ b/Tools/AGSParser.m @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/DocMakefile b/Tools/DocMakefile index 9ad387456..7824fe096 100644 --- a/Tools/DocMakefile +++ b/Tools/DocMakefile @@ -19,8 +19,7 @@ # # You should have received a copy of the GNU General Public # License along with this library; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02111 USA +# Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA # MAKEFILE_NAME = DocMakefile diff --git a/Tools/GNUmakefile b/Tools/GNUmakefile index 22a03f1df..cbc5433f9 100644 --- a/Tools/GNUmakefile +++ b/Tools/GNUmakefile @@ -18,8 +18,7 @@ # # You should have received a copy of the GNU General Public # License along with this library; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02111 USA. +# Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. ifeq ($(GNUSTEP_MAKEFILES),) GNUSTEP_MAKEFILES := $(shell gnustep-config --variable=GNUSTEP_MAKEFILES 2>/dev/null) diff --git a/Tools/HTMLLinker.m b/Tools/HTMLLinker.m index 3d747695a..1f188cf3d 100644 --- a/Tools/HTMLLinker.m +++ b/Tools/HTMLLinker.m @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/Makefile.postamble b/Tools/Makefile.postamble index 289399c1f..302d0b157 100644 --- a/Tools/Makefile.postamble +++ b/Tools/Makefile.postamble @@ -15,7 +15,7 @@ # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. # # Project specific makefile rules # diff --git a/Tools/Makefile.preamble b/Tools/Makefile.preamble index d98fc5211..f68a5547f 100644 --- a/Tools/Makefile.preamble +++ b/Tools/Makefile.preamble @@ -19,8 +19,7 @@ # # You should have received a copy of the GNU General Public # License along with this library; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02111 USA. +# Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. # # diff --git a/Tools/NSPropertyList+PLUtil.h b/Tools/NSPropertyList+PLUtil.h index b1b0a5ce3..2b62d851a 100644 --- a/Tools/NSPropertyList+PLUtil.h +++ b/Tools/NSPropertyList+PLUtil.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/NSPropertyList+PLUtil.m b/Tools/NSPropertyList+PLUtil.m index 87f9913e9..86cae9fbe 100644 --- a/Tools/NSPropertyList+PLUtil.m +++ b/Tools/NSPropertyList+PLUtil.m @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ #import "NSPropertyList+PLUtil.h" diff --git a/Tools/autogsdoc.m b/Tools/autogsdoc.m index 96a275ce4..7b50b1796 100644 --- a/Tools/autogsdoc.m +++ b/Tools/autogsdoc.m @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. autogsdoc diff --git a/Tools/cvtenc.m b/Tools/cvtenc.m index e206f07b0..dfc6f36aa 100644 --- a/Tools/cvtenc.m +++ b/Tools/cvtenc.m @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/defaults.m b/Tools/defaults.m index ccab2075d..7238c7687 100644 --- a/Tools/defaults.m +++ b/Tools/defaults.m @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/gdnc.h b/Tools/gdnc.h index 773870596..7c1589395 100644 --- a/Tools/gdnc.h +++ b/Tools/gdnc.h @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYING. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/gdnc.m b/Tools/gdnc.m index 5890c4b6b..d5ad55aad 100644 --- a/Tools/gdnc.m +++ b/Tools/gdnc.m @@ -13,7 +13,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYING. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/gdomap.c b/Tools/gdomap.c index f1324466d..c04fb522c 100644 --- a/Tools/gdomap.c +++ b/Tools/gdomap.c @@ -18,8 +18,7 @@ You should have received a copy of the GNU General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. */ /* Ported to mingw 07/12/00 by Bjorn Giesler */ diff --git a/Tools/gdomap.h b/Tools/gdomap.h index e5657d730..c1ebcc588 100644 --- a/Tools/gdomap.h +++ b/Tools/gdomap.h @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYING. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/gsdoc-0_6_5.dtd b/Tools/gsdoc-0_6_5.dtd index 973270bfd..1a5c6428f 100644 --- a/Tools/gsdoc-0_6_5.dtd +++ b/Tools/gsdoc-0_6_5.dtd @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. --> diff --git a/Tools/gsdoc-0_6_6.dtd b/Tools/gsdoc-0_6_6.dtd index eefd4e23c..04234562b 100644 --- a/Tools/gsdoc-0_6_6.dtd +++ b/Tools/gsdoc-0_6_6.dtd @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. --> diff --git a/Tools/gsdoc-0_6_7.dtd b/Tools/gsdoc-0_6_7.dtd index ee915734c..15d69372a 100644 --- a/Tools/gsdoc-0_6_7.dtd +++ b/Tools/gsdoc-0_6_7.dtd @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. --> diff --git a/Tools/gsdoc-1_0_0.dtd b/Tools/gsdoc-1_0_0.dtd index 01c12347a..33168f12d 100644 --- a/Tools/gsdoc-1_0_0.dtd +++ b/Tools/gsdoc-1_0_0.dtd @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. --> diff --git a/Tools/gsdoc-1_0_1.dtd b/Tools/gsdoc-1_0_1.dtd index 82afb5005..78d123dfa 100644 --- a/Tools/gsdoc-1_0_1.dtd +++ b/Tools/gsdoc-1_0_1.dtd @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. --> diff --git a/Tools/gsdoc-1_0_1.rnc b/Tools/gsdoc-1_0_1.rnc index bf9bde4ec..baaa6e3e0 100644 --- a/Tools/gsdoc-1_0_1.rnc +++ b/Tools/gsdoc-1_0_1.rnc @@ -18,8 +18,7 @@ # # You should have received a copy of the GNU General # Public License along with this software; if not, write to the -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02111 USA. +# Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. ############################################################################# diff --git a/Tools/gsdoc-1_0_2.dtd b/Tools/gsdoc-1_0_2.dtd index c078e185c..cd60163cc 100644 --- a/Tools/gsdoc-1_0_2.dtd +++ b/Tools/gsdoc-1_0_2.dtd @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. --> diff --git a/Tools/gsdoc-1_0_3.dtd b/Tools/gsdoc-1_0_3.dtd index fcf684c52..0b9697fdf 100644 --- a/Tools/gsdoc-1_0_3.dtd +++ b/Tools/gsdoc-1_0_3.dtd @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. --> diff --git a/Tools/gsdoc-1_0_4.dtd b/Tools/gsdoc-1_0_4.dtd index e25820919..b02f0e98e 100644 --- a/Tools/gsdoc-1_0_4.dtd +++ b/Tools/gsdoc-1_0_4.dtd @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. --> diff --git a/Tools/gspath.m b/Tools/gspath.m index 5b4ba5365..9775337bf 100644 --- a/Tools/gspath.m +++ b/Tools/gspath.m @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/locale_alias.m b/Tools/locale_alias.m index 3f7c0f573..79fcf42a2 100644 --- a/Tools/locale_alias.m +++ b/Tools/locale_alias.m @@ -19,7 +19,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/make_strings/GNUmakefile b/Tools/make_strings/GNUmakefile index 60b5f7d10..e2c1b9557 100644 --- a/Tools/make_strings/GNUmakefile +++ b/Tools/make_strings/GNUmakefile @@ -18,8 +18,7 @@ # # You should have received a copy of the GNU General Public # License along with this library; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02111 USA. +# Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. PACKAGE_NAME = gnustep-base GNUSTEP_LOCAL_ADDITIONAL_MAKEFILES=../../base.make diff --git a/Tools/make_strings/GNUmakefile.postamble b/Tools/make_strings/GNUmakefile.postamble index a5419943b..dc812a78f 100644 --- a/Tools/make_strings/GNUmakefile.postamble +++ b/Tools/make_strings/GNUmakefile.postamble @@ -15,7 +15,7 @@ # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. # # Project specific makefile rules # diff --git a/Tools/make_strings/GNUmakefile.preamble b/Tools/make_strings/GNUmakefile.preamble index 6fbf6464b..4880511e5 100644 --- a/Tools/make_strings/GNUmakefile.preamble +++ b/Tools/make_strings/GNUmakefile.preamble @@ -19,8 +19,7 @@ # # You should have received a copy of the GNU General Public # License along with this library; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02111 USA. +# Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. # # diff --git a/Tools/make_strings/SourceEntry.h b/Tools/make_strings/SourceEntry.h index b13828b42..92e18d403 100644 --- a/Tools/make_strings/SourceEntry.h +++ b/Tools/make_strings/SourceEntry.h @@ -15,7 +15,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/make_strings/SourceEntry.m b/Tools/make_strings/SourceEntry.m index 8104bacdb..2456c4a4d 100644 --- a/Tools/make_strings/SourceEntry.m +++ b/Tools/make_strings/SourceEntry.m @@ -15,7 +15,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/make_strings/StringsEntry.h b/Tools/make_strings/StringsEntry.h index 562aae748..139c47a7b 100644 --- a/Tools/make_strings/StringsEntry.h +++ b/Tools/make_strings/StringsEntry.h @@ -15,7 +15,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/make_strings/StringsEntry.m b/Tools/make_strings/StringsEntry.m index 058feda5f..9c85f5f94 100644 --- a/Tools/make_strings/StringsEntry.m +++ b/Tools/make_strings/StringsEntry.m @@ -15,7 +15,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/make_strings/StringsFile.h b/Tools/make_strings/StringsFile.h index 1dc8301f4..a8346aba7 100644 --- a/Tools/make_strings/StringsFile.h +++ b/Tools/make_strings/StringsFile.h @@ -15,7 +15,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/make_strings/StringsFile.m b/Tools/make_strings/StringsFile.m index 20d46bd69..bd086a46f 100644 --- a/Tools/make_strings/StringsFile.m +++ b/Tools/make_strings/StringsFile.m @@ -15,7 +15,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/make_strings/make_strings.h b/Tools/make_strings/make_strings.h index 56fabb345..4611f450f 100644 --- a/Tools/make_strings/make_strings.h +++ b/Tools/make_strings/make_strings.h @@ -15,7 +15,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/make_strings/make_strings.m b/Tools/make_strings/make_strings.m index 03e29805e..1143a34e8 100644 --- a/Tools/make_strings/make_strings.m +++ b/Tools/make_strings/make_strings.m @@ -15,7 +15,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/pl.m b/Tools/pl.m index b1c88bf3c..69e4b9319 100644 --- a/Tools/pl.m +++ b/Tools/pl.m @@ -18,7 +18,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/pl2link.m b/Tools/pl2link.m index 0275a1ac4..de1aacd9f 100644 --- a/Tools/pl2link.m +++ b/Tools/pl2link.m @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ #import diff --git a/Tools/pldes.m b/Tools/pldes.m index 3ad539be0..0aaaac7e4 100644 --- a/Tools/pldes.m +++ b/Tools/pldes.m @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/plget.m b/Tools/plget.m index 4b8293a66..4b0568ef2 100644 --- a/Tools/plget.m +++ b/Tools/plget.m @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/plist-0_9.dtd b/Tools/plist-0_9.dtd index 821776ddc..7c1bf1b35 100644 --- a/Tools/plist-0_9.dtd +++ b/Tools/plist-0_9.dtd @@ -16,8 +16,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02111 USA. + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA. --> diff --git a/Tools/plmerge.m b/Tools/plmerge.m index 85c6e2541..e801fc99a 100644 --- a/Tools/plmerge.m +++ b/Tools/plmerge.m @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/plparse.m b/Tools/plparse.m index 9eb57c428..ad1939e92 100644 --- a/Tools/plparse.m +++ b/Tools/plparse.m @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/plser.m b/Tools/plser.m index fcec87ba5..cb125f9e2 100644 --- a/Tools/plser.m +++ b/Tools/plser.m @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/plutil.m b/Tools/plutil.m index 47add5991..80cddfbe9 100644 --- a/Tools/plutil.m +++ b/Tools/plutil.m @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/sfparse.m b/Tools/sfparse.m index d7d96736b..addec7348 100644 --- a/Tools/sfparse.m +++ b/Tools/sfparse.m @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/Tools/xmlparse.m b/Tools/xmlparse.m index d11b1d271..11bc462b7 100644 --- a/Tools/xmlparse.m +++ b/Tools/xmlparse.m @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with this program; see the file COPYINGv3. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ diff --git a/base.make.in b/base.make.in index bd5ef148b..f27ca240c 100644 --- a/base.make.in +++ b/base.make.in @@ -18,7 +18,7 @@ # You should have received a copy of the GNU General Public # License along with this library; see the file COPYING.LIB. # If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# 31 Milk Street #960789 Boston, MA 02196 USA. ifeq ($(BASE_MAKE_LOADED),) BASE_MAKE_LOADED=yes diff --git a/configure.ac b/configure.ac index 1af4fe77b..617e4dc98 100644 --- a/configure.ac +++ b/configure.ac @@ -20,8 +20,7 @@ # # You should have received a copy of the GNU General Public # License along with this library; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02111 USA +# Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA # # DEPENDENCIES POLICY diff --git a/macosx/GNUstepBase/preface.h b/macosx/GNUstepBase/preface.h index 0dc5fd112..33f51b20c 100644 --- a/macosx/GNUstepBase/preface.h +++ b/macosx/GNUstepBase/preface.h @@ -18,8 +18,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. -*/ + Software Foundation, Inc., 31 Milk Street #960789 Boston, MA 02196 USA.*/ #ifndef __preface_h_OBJECTS_INCLUDE #define __preface_h_OBJECTS_INCLUDE diff --git a/macosx/config.h b/macosx/config.h index 66800eb89..a7a944dbc 100644 --- a/macosx/config.h +++ b/macosx/config.h @@ -21,7 +21,7 @@ You should have received a copy of the GNU Lesser General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + 31 Milk Street #960789 Boston, MA 02196 USA. */ #ifndef __config_h__ From e708f2f4c350d384dcfa6f0a95032eaa6c7215ff Mon Sep 17 00:00:00 2001 From: rfm Date: Thu, 7 Nov 2024 15:02:18 +0000 Subject: [PATCH 19/21] Revert --- NSTimeZones/NSTimeZones.tar | Bin 942041 -> 942080 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/NSTimeZones/NSTimeZones.tar b/NSTimeZones/NSTimeZones.tar index 39753a3053307fdb51c984dde813c44131cec015..5191ae51453a788116015845cb733298d57be83a 100644 GIT binary patch delta 222 zcmcb)-?HI=WkU;N3sVbo3rh=Y3tJ0&3r7oQ3s(zw3(pqb2u>4ILj|{@#JudB%shqQ zlA_eq5*-D%%(RjW1-G31{30DLWd#MN{Nj@QJRJpJM+E~TLqo&u^_;xhE)&+OfJJM} aUEYi0WNDoa)VgH4g9o47cCl}~hcf{T!bgn& delta 178 zcmZoTV0m-DWkU;N3sVbo3rh=Y3tJ0&3r7oQ3s(zw3(pqb2u^ilLj~W=oNR^QlA_eq z5(Q;TGXrxAO9iL=;*$J49R*)U1p^~POSA1goV?pE6RUc9^;g~{+okUD>WUMqWjjzy GYZd@L3O42d From 82bd12198e063e865b960e7e432dc2140244810d Mon Sep 17 00:00:00 2001 From: rfm Date: Fri, 8 Nov 2024 10:10:03 +0000 Subject: [PATCH 20/21] Update FSF address --- NSTimeZones/NSTimeZones.tar | Bin 942080 -> 942080 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/NSTimeZones/NSTimeZones.tar b/NSTimeZones/NSTimeZones.tar index 5191ae51453a788116015845cb733298d57be83a..ec9800bda005ea67ec7732897e46349fc3ad8e5e 100644 GIT binary patch delta 3805 zcmb_feMnVl9`1a-=iGD8apf)V^_+Wc@4Di+<;wNjB*ckuBAk%MjgSZlXK-67X`LOX zZNm+>jgYW%=SoP)T=T@Nu;OifB_yPkkU>HQi3o{^kdTOQ%+yTx_ncurVE-D}KhAT1 zAJ6aO{XFM(Ozi5I*wuY;Yk6UDVQF!Bap{(LVR5{)d`qnK>gAHAlq3Zu&ziT*lw~qm z@G@CdMW~OhD<1EcRF5yq%;R&4n&j6F!3&sfcuoT|J?9`Zgww)SH40)n8TP^21Zy>0 z)jh5%s^EQ+q>8Pz@@Bx}&os(cgM4GiTqTpgQP*YR9M@OLe~fbTF2<7l8hJVyB98^B zE9a$!GF`!dAtKj;8;a*N2UX9xXc6qSsO;Gw^PJ-rK@4!#V#1jYN~Ul-txe5y24U?1 z=>epBfQL|rEgDZc)G0tOpcS_3fR{na-2#ZB)Fr??D03)35;TSL)RLHR4^S216#4RU z5EZLHdu*|r4tfdsp1am2wO$WTF5oFTsDLyEU>Hdgqz1rvkUIDsARp=wiVq;-3e-+G z=AkyBm+O$$A+^Ih3ur{dH$hsE$>5qUwhl>Do-bN7xp$cVT9E@g4HGukPU9qg?lcs5#dOqgBY z9HI!}q_I`XcuuE6`*rN#9tk^mR-x>@MCM=VhU~eShT*xdOy;?&X?kuI&6m4BK+p`B zgZCB-+AlLx82;>FWP5|NoBF6wn5F0m$Qe%?(H8tpt!!c{7d+vEulLO@4 zkM!M8I|BrH2-}TRW00od&4<*A*t4KiqT~o7y1?s0FAYIexJ`y3C$^urEm6>Eya^^Y zJ8eVkJZrqwyzCZ(CHntpn#D+&hNN5;rbVf%t7>L8A#k zheHT%2He3^JU8fkRG72}B98-fGTa>~Jp@-Jq%|}V^KF2s0O$caRFOdg^m!PL8ahk- z=*?yfWzfP2ngj#q;&%w^#?%erLFHyVX_VZashj=RCxe{t_yd< z?+A{sOp1;M=q}6}3cROg2N8W2!=J)zSpjPMXmEx0cDsp9#F1nYE!IIwr#sKRr<-!( z4@GIZ*!iu#swHN=uvL+_q_1m<1HY$T5VvUhg*&O6wD#?^%D;G}zta-apVQL(@}d4# zyO~1+%bBA|q)-|1K8E)KqvIUaTAYJ4bA?X%1zaSTbb38)Q*g=)=+wL00Rw|hoq$%rFrW$Gf_cWT)6Y~ULPzK#_4qvAsLS-G;_1ZV z1{LR5==SB06g9>7t8yyTwy7mEj;hIwdU|S&WJWjrUS!FP7LpIs?=dr(aXLMf(es{O zu}5W17U458%H5W!C8w1xXs3q;>$J$!sM{yg4Ib)*9B!219D?(Oyh?M>?0-E>%5>F7 zp31n&Z^1cEY&w8Mc4tX^L8Q(tb+xz|U zZN6p7w>i z5^*&;4JKocPJy8r1&j3@)CHOvJ|MwY<@*lcjmTdpn(T#hRpy1KDNi_^7B*amH)fMc z88W}a8#Da1O4j@EFGK2wQ~@a$^z%?V0Q=|-7@pJK(Sp{iFbu&TMfOL4M#RhlM&UgU zI16=&S`7Drat>-Uq#j5!fJHzy;0a(i;45UVL4pR&@WN$K>!FUT>di3Xx50D|P=bJA zI74tuK)nXFRwFKiO3-#d8Umvg6Yxx>b#bOtTDY%qxY~JM%MtO5^aa(76exgJdD*7`j-4T7_f`>RvboVVj0D3Frbm zM1s?RS5Wg+LxfNGYu2FB>nq%)nO@k0zYhLWDrJmmOoXe|ceE)E(pAaVX(#e;n33Xx zy6ib!v?rZRKnzeKsVRrHEu9~*efsqgAD6#f}+6HI@rCY)&wjKJA&=j| z*V~4*rX{RiW{OZH?hAf~{$}t3nI=2*)IVIOaO;gr+~cokxp=#7rnqIxsh{!Dg5tR%s%|1YKhAM`=oj~mUcz9gjJKaq>+%YUfW-078d`f7RmoR gu0{K!A6JXU)nWXr);4?TAEK@;I4u3Y@Nz8upST?_@Bjb+ delta 3825 zcmbtXeMnVl8tqJB=-SQnILK=~fK|+R*AtXW^*LA}!GcD77e&?_GXIa=q{P}!; zyzg_KbL<$|-7&Je=j@h5VIrD{7w(F0ipCPr!uY00;e{_2>e3#M&*K=irj|AgMc{1M zFa`eeXU4kdWIZqxCu`1-oUCy}bF!X;dTJ;(Yl2c)3xGY8%E|!DfUN|z4NwZm2kZlMLz@fA22A>NZgu!P8n>CTAv)F$ zNGkxnuv84`x<&n3Wq@Xg?f_bR61SfFJQBBueej!uvj0(KWgYsUN{F zff@tE4KmUVL|So;y5N=V3U0W9A~-C;wgl88P|sj=*jT0W9{17tS&a~^`Bp`Tg+<9> z$EGc(N?JY{a$J^?4<^6 z#bHP3me>w2wcJR=Q&n@=q)Nx5YJy{D(~a5p01ChcFhC_h0OZqCVAq541KI%1fDS+g zpcb%~BHLY{z6K1cRP!a3It=xwXyPWMhXI$N`bJ%$Giy=lH0%LL`vE5q@oWameYB4PgK(IJ>jK~w z@-q03La_|lMNqQ{cLuD4n8#sv1&Vf1xuD7c8SrfdrGt70j|spi0w}1tSr-&;oz>T6 zCy))Jb?CbRFA=O7u!ayNNYw;I0oZFetxCxHAghDjBp?E9Eno>I46-V)r(u@^HVDN$ zWD|fXRMQCRYiPp=Isn-fKrt=ZKnAoG(Dp#q18NxY_Jf*)>>j9M*mZ(E0ceMb->2}v z9q)Tu-)Cq9#%NSnB`Mf#T6;{Pt;92*x(g}pRXCd!yaFv2fyU38!&;E=lx-HV=N9o? zSOx@|NV?Dpt(%Yt(<%l%7j7ofBYk}a&i}T6v44yC{$XmNb6@xB5DXVkAgZcQl%51YEXT@TQlr7({8ZmU{^;oWUoo8lH9&7 zf69+Wq!CZD|Fx;}ygkyg>|_^6N^)_Ds^7U^dP{kKLnVDuCjE;l&!>-)WnlLs#Tx2p#SuzwALytP9;d+`M_V0| zNMC)OGQDc;^XPpP<`0oz0da03#7hL5fzKf*4!9;@%RnuI`T@Qz(0-2u-Jps^>U&Ya z+p1pCC|QN<(Vfs%yq+(~c(c{XbkUVKgJFrrIy5IjnuDm9k+=r^3?X|jpaD^9QC2nB zTS(jrR)EKI1nYyx2pZjrI;KDkL#yGqk3m)ij{*2*0BR&s+<~?SL7Nev4R(X#X2*`h z_cT1>2-OIWVVKloMhB2`9&Sfb+BO)U0oCu83$_WqSKy%|XbITMZX#$Gpm+uLFx>H@97hl0jKx@TQZSz}}ore$NTdkBgI z&9R!`Fhk$O);{5#n%=Uc(p`i-G)GngeTi8QV9DT94$E_3vuRaX{h%fw%caq?Zg>do zS`TejYmPKSP%lB#}Bx6tEeP2e&>{)8&Xu%&29YpN%J%5JiR9jg|>vzX)b+BT+%SiKiP%RXwjxvA`z!@cEu7gDx)YCi~h8X z46{Vs{a?$7{D(65$)A}Q=+>g*tmm&0XQ`TJ(-|CjCNx2oHJ&^*YECUZ$nH!k#e{&(2#`8VOtMz;U} From 9df544fffce7cacb29d9a0bc3fe0b8b9e86edc28 Mon Sep 17 00:00:00 2001 From: rfm Date: Fri, 8 Nov 2024 10:10:20 +0000 Subject: [PATCH 21/21] Fix for issue 459 --- Source/NSString.m | 46 ++++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/Source/NSString.m b/Source/NSString.m index 1d6f818a9..d73985ee3 100644 --- a/Source/NSString.m +++ b/Source/NSString.m @@ -609,7 +609,8 @@ - (instancetype) initWithMask: (NSUInteger) aMask locale: (NSLocale *) aLocale return self; } -- (void) dealloc { +- (void) dealloc +{ RELEASE(locale); if (collator != NULL) { @@ -630,33 +631,37 @@ - (void) _setStringCollatorCache: (id)cache; static UCollator * GSICUCachedCollator(NSStringCompareOptions mask, NSLocale *locale) { - NSThread *current; - GSICUCollatorCache *cache; + NSThread *current; + GSICUCollatorCache *cache; current = [NSThread currentThread]; cache = [current _stringCollatorCache]; - if (nil == cache) { - cache = [[GSICUCollatorCache alloc] initWithMask: mask locale: locale]; - [current _setStringCollatorCache: cache]; - [cache release]; - return cache->collator; - } + if (nil == cache) + { + cache = [[GSICUCollatorCache alloc] initWithMask: mask locale: locale]; + [current _setStringCollatorCache: cache]; + [cache release]; + return cache->collator; + } - // Do a pointer comparison first to avoid the overhead of isEqual: - // The locale instance is likely a global constant object. - // If this fails, do a full comparison. - if ((cache->locale == locale || [cache->locale isEqual: locale]) && mask == cache->mask) + /* Do a pointer comparison first to avoid the overhead of isEqual: + * The locale instance is likely a global constant object. + * If this fails, do a full comparison. + */ + if ((cache->locale == locale || [cache->locale isEqual: locale]) + && mask == cache->mask) { return cache->collator; } else - { + { cache = [[GSICUCollatorCache alloc] initWithMask: mask locale: locale]; [current _setStringCollatorCache: cache]; [cache release]; return cache->collator; - } + } } +#endif // GS_USE_ICU @implementation NSString @@ -772,7 +777,7 @@ @implementation NSString 0)) #else arginfo_func)) -#endif +#endif // PRINTF_ATSIGN_VA_LIST [NSException raise: NSGenericException format: @"register printf handling of %%@ failed"]; #elif defined(HAVE_REGISTER_PRINTF_FUNCTION) @@ -781,10 +786,10 @@ @implementation NSString 0)) #else arginfo_func)) -#endif +#endif // PRINTF_ATSIGN_VA_LIST [NSException raise: NSGenericException format: @"register printf handling of %%@ failed"]; -#endif +#endif // defined(HAVE_REGISTER_PRINTF_FUNCTION) } @@ -872,7 +877,6 @@ - (NSString *) _normalizedICUStringOfType: (const char*)normalization return AUTORELEASE(newString); } #endif -#endif + (void) atExit { @@ -6393,14 +6397,12 @@ - (void) enumerateSubstringsInRange: (NSRange)range uint8_t substringType; BOOL isReverse; BOOL substringNotRequired; - BOOL localized; NSUInteger currentLocation; BOOL stop = NO; substringType = opts & 0xFF; isReverse = opts & NSStringEnumerationReverse; substringNotRequired = opts & NSStringEnumerationSubstringNotRequired; - localized = opts & NSStringEnumerationLocalized; if (isReverse) { @@ -6511,7 +6513,7 @@ - (void) enumerateSubstringsInRange: (NSRange)range /* @ss=standard will use lists of common abbreviations, * such as Mr., Mrs., etc. */ - locale = localized + locale = (opts & NSStringEnumerationLocalized) ? [[[[NSLocale currentLocale] localeIdentifier] stringByAppendingString: @"@ss=standard"] UTF8String] : "en_US_POSIX";