mirror of
https://github.com/gnustep/libs-base.git
synced 2025-04-23 09:04:13 +00:00
Changes from richard and wacko.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@2521 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
7a235b4935
commit
ab180cbd8c
9 changed files with 163 additions and 117 deletions
17
ChangeLog
17
ChangeLog
|
@ -1,3 +1,20 @@
|
|||
Fri Oct 17 09:16:36 1997 Adam Fedor <fedor@doc.com>
|
||||
|
||||
* checks/Makefile.postamble: Add English.lproj dir to copy-dist.
|
||||
|
||||
* src/NSCalendarDate.m (-descriptionWithCalendarFormat:locale):
|
||||
Use VSPRINTF_LENGTH macro to return string length.
|
||||
* src/NSData.m ([NSMutableDataMalloc -setCapacity:): Use realloc
|
||||
instead of objc_realloc.
|
||||
* src/NSHost.m (-_initWithHostEntry:): Use memcpy instead of
|
||||
memmove.
|
||||
* src/UnixFileHandle.m (getAddr): Remove uneeded htonl.
|
||||
Changes from Richard Frith-Macdonald <richard@brainstorm.co.uk>.
|
||||
|
||||
* src/NSTimeZone.m: Reformat with better spacing.
|
||||
([NSTimeZone +initialize]): Find local time zone.
|
||||
Changes from Yoo C. Chung <wacko@laplace.snu.ac.kr>.
|
||||
|
||||
Thu Oct 16 16:14:31 1997 Scott Christley <scottc@net-community.com>
|
||||
|
||||
* checks/Makefile: Add variables to create bundle example.
|
||||
|
|
|
@ -612,9 +612,9 @@ static id long_month[12] = {@"January",
|
|||
case 'y':
|
||||
++i;
|
||||
if (ycent)
|
||||
k = sprintf(&(buf[j]), "%04d", yd);
|
||||
k = VSPRINTF_LENGTH(sprintf(&(buf[j]), "%04d", yd));
|
||||
else
|
||||
k = sprintf(&(buf[j]), "%02d", (yd - 1900));
|
||||
k = VSPRINTF_LENGTH(sprintf(&(buf[j]), "%02d", (yd - 1900)));
|
||||
j += k;
|
||||
break;
|
||||
|
||||
|
@ -629,12 +629,12 @@ static id long_month[12] = {@"January",
|
|||
{
|
||||
// +++ Translate to locale character string
|
||||
if (mname)
|
||||
k = sprintf(&(buf[j]), "%s", [short_month[md-1] cString]);
|
||||
k = VSPRINTF_LENGTH(sprintf(&(buf[j]), "%s", [short_month[md-1] cString]));
|
||||
else
|
||||
k = sprintf(&(buf[j]), "%s", [long_month[md-1] cString]);
|
||||
k = VSPRINTF_LENGTH(sprintf(&(buf[j]), "%s", [long_month[md-1] cString]));
|
||||
}
|
||||
else
|
||||
k = sprintf(&(buf[j]), "%02d", md);
|
||||
k = VSPRINTF_LENGTH(sprintf(&(buf[j]), "%02d", md));
|
||||
j += k;
|
||||
break;
|
||||
|
||||
|
@ -654,7 +654,7 @@ static id long_month[12] = {@"January",
|
|||
k = 0;
|
||||
}
|
||||
else
|
||||
k = sprintf(&(buf[j]), "%02d", dd);
|
||||
k = VSPRINTF_LENGTH(sprintf(&(buf[j]), "%02d", dd));
|
||||
j += k;
|
||||
break;
|
||||
|
||||
|
@ -665,21 +665,21 @@ static id long_month[12] = {@"January",
|
|||
nhd = 12; // 12pm not 0pm
|
||||
case 'H':
|
||||
++i;
|
||||
k = sprintf(&(buf[j]), "%02d", nhd);
|
||||
k = VSPRINTF_LENGTH(sprintf(&(buf[j]), "%02d", nhd));
|
||||
j += k;
|
||||
break;
|
||||
|
||||
// is it the minute
|
||||
case 'M':
|
||||
++i;
|
||||
k = sprintf(&(buf[j]), "%02d", mnd);
|
||||
k = VSPRINTF_LENGTH(sprintf(&(buf[j]), "%02d", mnd));
|
||||
j += k;
|
||||
break;
|
||||
|
||||
// is it the second
|
||||
case 'S':
|
||||
++i;
|
||||
k = sprintf(&(buf[j]), "%02d", sd);
|
||||
k = VSPRINTF_LENGTH(sprintf(&(buf[j]), "%02d", sd));
|
||||
j += k;
|
||||
break;
|
||||
|
||||
|
@ -687,17 +687,17 @@ static id long_month[12] = {@"January",
|
|||
case 'p':
|
||||
++i;
|
||||
if (hd >= 12)
|
||||
k = sprintf(&(buf[j]), "PM");
|
||||
k = VSPRINTF_LENGTH(sprintf(&(buf[j]), "PM"));
|
||||
else
|
||||
k = sprintf(&(buf[j]), "AM");
|
||||
k = VSPRINTF_LENGTH(sprintf(&(buf[j]), "AM"));
|
||||
j += k;
|
||||
break;
|
||||
|
||||
// is it the zone name
|
||||
case 'Z':
|
||||
++i;
|
||||
k = sprintf(&(buf[j]), "%s",
|
||||
[[time_zone timeZoneAbbreviation] cStringNoCopy]);
|
||||
k = VSPRINTF_LENGTH(sprintf(&(buf[j]), "%s",
|
||||
[[time_zone timeZoneAbbreviation] cStringNoCopy]));
|
||||
j += k;
|
||||
break;
|
||||
|
||||
|
|
|
@ -1626,7 +1626,12 @@ readContentsOfFile(NSString* path, void** buf, unsigned* len)
|
|||
{
|
||||
if (size != capacity)
|
||||
{
|
||||
void* tmp = objc_realloc(bytes, size);
|
||||
void* tmp;
|
||||
|
||||
if (bytes)
|
||||
tmp = realloc(bytes, size);
|
||||
else
|
||||
tmp = malloc(size);
|
||||
|
||||
if (tmp == 0)
|
||||
[NSException raise:NSMallocException
|
||||
|
|
|
@ -109,7 +109,7 @@ static NSMutableDictionary *_hostCache = nil;
|
|||
for (i = 0, ptr = entry->h_addr_list[0]; ptr != NULL; i++,
|
||||
ptr = entry->h_addr_list[i])
|
||||
{
|
||||
memmove((void *)&in.s_addr, (const void *)ptr,
|
||||
memcpy((void *)&in.s_addr, (const void *)ptr,
|
||||
entry->h_length);
|
||||
[addresses addObject:[NSString
|
||||
stringWithCString:inet_ntoa(in)]];
|
||||
|
|
|
@ -184,13 +184,14 @@ static BOOL debug_connected_coder = NO;
|
|||
|
||||
- (void) _doEncodeBycopyObject: anObj
|
||||
{
|
||||
BOOL old = _is_by_copy;
|
||||
id obj;
|
||||
BOOL old = _is_by_copy;
|
||||
id obj;
|
||||
Class cls;
|
||||
|
||||
_is_by_copy = YES;
|
||||
obj = [anObj classForPortCoder];
|
||||
[self encodeClass: obj];
|
||||
obj = [anObj replacementObjectForPortCoder: (NSPortCoder*)self];
|
||||
cls = [obj classForPortCoder];
|
||||
[self encodeClass: cls];
|
||||
[obj encodeWithCoder: (NSCoder*)self];
|
||||
_is_by_copy = old;
|
||||
}
|
||||
|
|
|
@ -6,17 +6,17 @@
|
|||
|
||||
This file is part of the GNUstep Base Library.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library 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
|
||||
Library General Public License for more details.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
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., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
|
||||
|
@ -31,9 +31,9 @@
|
|||
time and such for every entry in the dictionary.
|
||||
|
||||
The local time zone can be specified with the user defaults
|
||||
database (when it's properly implemented, that is), the TZ
|
||||
environment variable, or the fallback local time zone, with the
|
||||
ones listed first having precedence.
|
||||
database, the TZ environment variable, the file LOCAL_TIME_FILE, or
|
||||
the fallback local time zone, with the ones listed first having
|
||||
precedence.
|
||||
|
||||
Any time zone must be a file name in ZONES_DIR.
|
||||
|
||||
|
@ -46,13 +46,13 @@
|
|||
#include <string.h>
|
||||
#include <Foundation/NSArray.h>
|
||||
#include <Foundation/NSCoder.h>
|
||||
#include <Foundation/NSDate.h>
|
||||
#include <Foundation/NSDictionary.h>
|
||||
#include <Foundation/NSDate.h>
|
||||
#include <Foundation/NSDictionary.h>
|
||||
#include <Foundation/NSException.h>
|
||||
#include <Foundation/NSLock.h>
|
||||
#include <Foundation/NSObject.h>
|
||||
#include <Foundation/NSProcessInfo.h>
|
||||
#include <Foundation/NSString.h>
|
||||
#include <Foundation/NSString.h>
|
||||
#include <Foundation/NSUserDefaults.h>
|
||||
#include <Foundation/NSUtilities.h>
|
||||
#include <Foundation/NSZone.h>
|
||||
|
@ -85,6 +85,9 @@
|
|||
whitespace, and each line must not be longer than 80 characters. */
|
||||
#define REGIONS_FILE TIME_ZONE_DIR "regions"
|
||||
|
||||
/* Name of the file that contains the name of the local time zone. */
|
||||
#define LOCAL_TIME_FILE TIME_ZONE_DIR "localtime"
|
||||
|
||||
/* Directory that contains the actual time zones. */
|
||||
#define ZONES_DIR TIME_ZONE_DIR "zones/"
|
||||
|
||||
|
@ -144,10 +147,10 @@ decode (const void *ptr)
|
|||
|
||||
|
||||
@interface NSInternalTimeTransition : NSObject
|
||||
{
|
||||
{
|
||||
int trans_time; // When the transition occurs
|
||||
char detail_index; // Index of time zone detail
|
||||
}
|
||||
}
|
||||
|
||||
- initWithTime: (int)aTime withIndex: (char)anIndex;
|
||||
- (int)transTime;
|
||||
|
@ -164,19 +167,20 @@ decode (const void *ptr)
|
|||
|
||||
- initWithName: (NSString*)aName withTransitions: (NSArray*)trans
|
||||
withDetails: (NSArray*)zoneDetails;
|
||||
@end
|
||||
@end
|
||||
|
||||
|
||||
@interface NSConcreteAbsoluteTimeZone : NSTimeZone
|
||||
{
|
||||
NSString *name;
|
||||
id detail;
|
||||
int offset; // Offset from UTC in seconds.
|
||||
}
|
||||
|
||||
+ timeZoneWithOffset: (int)anOffset;
|
||||
|
||||
- initWithOffset: (int)anOffset withName: (NSString*)aName;
|
||||
@end
|
||||
@end
|
||||
|
||||
|
||||
@interface NSConcreteTimeZoneDetail : NSTimeZoneDetail
|
||||
|
@ -188,7 +192,7 @@ decode (const void *ptr)
|
|||
|
||||
- initWithAbbrev: (NSString*)anAbbrev withOffset: (int)anOffset
|
||||
withDST: (BOOL)isDST;
|
||||
@end
|
||||
@end
|
||||
|
||||
|
||||
@implementation NSInternalAbbrevDict
|
||||
|
@ -196,25 +200,25 @@ decode (const void *ptr)
|
|||
+ allocWithZone: (NSZone*)zone
|
||||
{
|
||||
return NSAllocateObject(self, 0, zone);
|
||||
}
|
||||
}
|
||||
|
||||
- init
|
||||
{
|
||||
{
|
||||
return self;
|
||||
}
|
||||
}
|
||||
|
||||
- (unsigned)count
|
||||
{
|
||||
{
|
||||
return [[NSTimeZone abbreviationMap] count];
|
||||
}
|
||||
}
|
||||
|
||||
- (NSEnumerator*)keyEnumerator
|
||||
{
|
||||
{
|
||||
return [[NSTimeZone abbreviationMap] keyEnumerator];
|
||||
}
|
||||
}
|
||||
|
||||
- (NSEnumerator*)objectEnumerator
|
||||
{
|
||||
{
|
||||
/* FIXME: this is a memory hungry implementation */
|
||||
id e, name, a;
|
||||
|
||||
|
@ -224,20 +228,20 @@ decode (const void *ptr)
|
|||
[a addObject: [[[NSTimeZone abbreviationMap] objectForKey: name]
|
||||
objectAtIndex: 0]];
|
||||
return [a objectEnumerator];
|
||||
}
|
||||
}
|
||||
|
||||
- objectForKey: key
|
||||
{
|
||||
{
|
||||
return [[[NSTimeZone abbreviationMap] objectForKey: key] objectAtIndex: 0];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
@end
|
||||
|
||||
|
||||
@implementation NSInternalTimeTransition
|
||||
|
||||
- (NSString*)description
|
||||
{
|
||||
{
|
||||
return [NSString
|
||||
stringWithFormat: @"(trans: %d, idx: %d)",
|
||||
trans_time, (int)detail_index];
|
||||
|
@ -249,40 +253,40 @@ decode (const void *ptr)
|
|||
trans_time = aTime;
|
||||
detail_index = anIndex;
|
||||
return self;
|
||||
}
|
||||
}
|
||||
|
||||
- (int)transTime
|
||||
{
|
||||
{
|
||||
return trans_time;
|
||||
}
|
||||
}
|
||||
|
||||
- (char)detailIndex
|
||||
{
|
||||
{
|
||||
return detail_index;
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
@end
|
||||
|
||||
|
||||
@implementation NSConcreteTimeZone
|
||||
|
||||
- initWithName: (NSString*)aName withTransitions: (NSArray*)trans
|
||||
withDetails: (NSArray*)zoneDetails
|
||||
{
|
||||
{
|
||||
[super init];
|
||||
name = [aName retain];
|
||||
transitions = [trans retain];
|
||||
details = [zoneDetails retain];
|
||||
return self;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
{
|
||||
[name release];
|
||||
[transitions release];
|
||||
[details release];
|
||||
[super dealloc];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)encodeWithCoder: aCoder
|
||||
{
|
||||
|
@ -291,14 +295,14 @@ decode (const void *ptr)
|
|||
}
|
||||
|
||||
- initWithDecoder: aDecoder
|
||||
{
|
||||
{
|
||||
/* FIXME?: is this right? */
|
||||
self = [super initWithCoder: aDecoder];
|
||||
return (self = (id)[NSTimeZone timeZoneWithName: [aDecoder decodeObject]]);
|
||||
}
|
||||
}
|
||||
|
||||
- (NSString*)description
|
||||
{
|
||||
{
|
||||
return [NSString stringWithFormat: @"(trans: %@, details: %@)",
|
||||
[transitions description], [details description]];
|
||||
}
|
||||
|
@ -341,24 +345,22 @@ decode (const void *ptr)
|
|||
- (NSArray*)timeZoneDetailArray
|
||||
{
|
||||
return details;
|
||||
}
|
||||
}
|
||||
|
||||
- (NSString*)timeZoneName
|
||||
{
|
||||
{
|
||||
return name;
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
@end
|
||||
|
||||
|
||||
@implementation NSConcreteAbsoluteTimeZone
|
||||
|
||||
+ timeZoneWithOffset: (int)anOffset
|
||||
{
|
||||
{
|
||||
id newName, zone;
|
||||
|
||||
|
||||
|
||||
newName = [NSString stringWithFormat: @"%d", anOffset];
|
||||
zone = [zoneDictionary objectForKey: newName];
|
||||
if (zone == nil)
|
||||
|
@ -373,15 +375,18 @@ decode (const void *ptr)
|
|||
{
|
||||
[super init];
|
||||
name = [aName retain];
|
||||
detail = [[NSConcreteTimeZoneDetail alloc]
|
||||
initWithAbbrev: name withOffset: offset withDST: NO];
|
||||
offset = anOffset;
|
||||
return self;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
{
|
||||
[name release];
|
||||
[detail release];
|
||||
[super dealloc];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)encodeWithCoder: aCoder
|
||||
{
|
||||
|
@ -390,7 +395,7 @@ decode (const void *ptr)
|
|||
}
|
||||
|
||||
- initWithCoder: aDecoder
|
||||
{
|
||||
{
|
||||
self = [super initWithCoder: aDecoder];
|
||||
name = [aDecoder decodeObject];
|
||||
offset = [name intValue];
|
||||
|
@ -400,23 +405,21 @@ decode (const void *ptr)
|
|||
- (NSString*)description
|
||||
{
|
||||
return [NSString stringWithFormat: @"(offset: %d)", offset];
|
||||
}
|
||||
}
|
||||
|
||||
- (NSTimeZoneDetail*)timeZoneDetailForDate: (NSDate*)date
|
||||
{
|
||||
return [[[NSConcreteTimeZoneDetail alloc]
|
||||
initWithAbbrev: name withOffset: offset withDST: NO]
|
||||
autorelease];
|
||||
{
|
||||
return detail;
|
||||
}
|
||||
|
||||
- (NSString*)timeZoneName
|
||||
{
|
||||
return name;
|
||||
}
|
||||
}
|
||||
|
||||
- (NSArray*)timeZoneDetailArray
|
||||
{
|
||||
return [NSArray arrayWithObject: [self timeZoneDetailForDate: nil]];
|
||||
{
|
||||
return [NSArray arrayWithObject: detail];
|
||||
}
|
||||
|
||||
@end
|
||||
|
@ -426,16 +429,16 @@ decode (const void *ptr)
|
|||
|
||||
- initWithAbbrev: (NSString*)anAbbrev withOffset: (int)anOffset
|
||||
withDST: (BOOL)isDST
|
||||
{
|
||||
{
|
||||
[super init];
|
||||
abbrev = [anAbbrev retain];
|
||||
offset = anOffset;
|
||||
is_dst = isDST;
|
||||
return self;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
{
|
||||
[abbrev release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
@ -455,16 +458,16 @@ decode (const void *ptr)
|
|||
[aDecoder decodeValueOfObjCType: @encode(int) at: &offset];
|
||||
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &is_dst];
|
||||
return self;
|
||||
}
|
||||
}
|
||||
|
||||
- (NSString*)description
|
||||
{
|
||||
{
|
||||
return [NSString stringWithFormat: @"(abbrev: %@, offset: %d, is_dst: %d)",
|
||||
abbrev, offset, (int)is_dst];
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)isDaylightSavingTimeZone
|
||||
{
|
||||
{
|
||||
return is_dst;
|
||||
}
|
||||
|
||||
|
@ -476,7 +479,7 @@ decode (const void *ptr)
|
|||
- (int)timeZoneSecondsFromGMT
|
||||
{
|
||||
return offset;
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
@ -484,21 +487,33 @@ decode (const void *ptr)
|
|||
@implementation NSTimeZone
|
||||
|
||||
+ (void)initialize
|
||||
{
|
||||
{
|
||||
if (self == [NSTimeZone class])
|
||||
{
|
||||
id localZoneString = nil;
|
||||
|
||||
zone_mutex = [NSLock new];
|
||||
|
||||
/* Don't use this for now. */
|
||||
#if 0
|
||||
localZoneString = [[NSUserDefaults standardUserDefaults]
|
||||
stringForKey: @LOCALDBKEY];
|
||||
#endif
|
||||
if (localZoneString == nil)
|
||||
/* Try to get timezone from environment. */
|
||||
localZoneString = [[[NSProcessInfo processInfo]
|
||||
environment] objectForKey: @"TZ"];
|
||||
if (localZoneString == nil)
|
||||
/* Try to get timezone from LOCAL_TIME_FILE. */
|
||||
{
|
||||
char zone_name[80];
|
||||
FILE *fp;
|
||||
|
||||
fp = fopen(LOCAL_TIME_FILE, "r");
|
||||
if (fp != NULL)
|
||||
{
|
||||
fscanf(fp, "%79s", zone_name);
|
||||
localZoneString = [NSString stringWithCString: zone_name];
|
||||
fclose(fp);
|
||||
}
|
||||
}
|
||||
if (localZoneString != nil)
|
||||
localTimeZone = [NSTimeZone timeZoneWithName: localZoneString];
|
||||
else
|
||||
|
@ -510,10 +525,8 @@ decode (const void *ptr)
|
|||
if (localTimeZone == nil)
|
||||
localTimeZone = [NSTimeZone timeZoneForSecondsFromGMT: 0];
|
||||
|
||||
[localTimeZone retain];
|
||||
|
||||
fake_abbrev_dict = [[NSInternalAbbrevDict alloc] init];
|
||||
zoneDictionary = [[NSMutableDictionary dictionary] retain];
|
||||
zoneDictionary = [[NSMutableDictionary alloc] init];
|
||||
[zoneDictionary setObject: localTimeZone
|
||||
forKey: [localTimeZone timeZoneName]];
|
||||
}
|
||||
|
@ -653,7 +666,7 @@ decode (const void *ptr)
|
|||
NSZoneFree(NSDefaultMallocZone(), zone_abbrevs);
|
||||
|
||||
/* Create time zone details. */
|
||||
detailsArray = [NSMutableArray array];
|
||||
detailsArray = [[NSMutableArray alloc] init];
|
||||
for (i = 0; i < n_types; i++)
|
||||
[detailsArray
|
||||
addObject: [[NSConcreteTimeZoneDetail alloc]
|
||||
|
@ -663,7 +676,7 @@ decode (const void *ptr)
|
|||
NSZoneFree(NSDefaultMallocZone(), abbrevsArray);
|
||||
NSZoneFree(NSDefaultMallocZone(), types);
|
||||
zone = [[NSConcreteTimeZone alloc]
|
||||
initWithName: aTimeZoneName
|
||||
initWithName: [aTimeZoneName copy]
|
||||
withTransitions: transArray
|
||||
withDetails: detailsArray];
|
||||
[zoneDictionary setObject: zone forKey: aTimeZoneName];
|
||||
|
@ -713,12 +726,12 @@ decode (const void *ptr)
|
|||
return abbreviationDictionary;
|
||||
|
||||
/* Read dictionary from file. */
|
||||
abbreviationDictionary = [[NSMutableDictionary dictionary] retain];
|
||||
abbreviationDictionary = [[NSMutableDictionary alloc] init];
|
||||
file = fopen(ABBREV_DICT, "r");
|
||||
if (file == NULL)
|
||||
[NSException raise: NSInternalInconsistencyException
|
||||
format: @"Failed to open time zone abbreviation dictionary"];
|
||||
while (fscanf(file, "%s %s", abbrev, name) == 2)
|
||||
while (fscanf(file, "%79s %79s", abbrev, name) == 2)
|
||||
{
|
||||
id a, the_name, the_abbrev;
|
||||
|
||||
|
@ -727,7 +740,7 @@ decode (const void *ptr)
|
|||
a = [abbreviationDictionary objectForKey: the_abbrev];
|
||||
if (a == nil)
|
||||
{
|
||||
a = [NSMutableArray array];
|
||||
a = [[NSMutableArray alloc] init];
|
||||
[abbreviationDictionary setObject: a forKey: the_abbrev];
|
||||
}
|
||||
[a addObject: the_name];
|
||||
|
@ -735,15 +748,15 @@ decode (const void *ptr)
|
|||
fclose(file);
|
||||
|
||||
return abbreviationDictionary;
|
||||
}
|
||||
}
|
||||
|
||||
- (NSString*)timeZoneName
|
||||
{
|
||||
{
|
||||
return [self subclassResponsibility: _cmd];
|
||||
}
|
||||
}
|
||||
|
||||
+ (NSArray*)timeZoneArray
|
||||
{
|
||||
{
|
||||
/* We create the array only when we need it to reduce overhead. */
|
||||
|
||||
static NSArray *regionsArray = nil;
|
||||
|
@ -756,25 +769,25 @@ decode (const void *ptr)
|
|||
return regionsArray;
|
||||
|
||||
for (i = 0; i < 24; i++)
|
||||
temp_array[i] = [NSMutableArray array];
|
||||
temp_array[i] = [[NSMutableArray alloc] init];
|
||||
|
||||
file = fopen(REGIONS_FILE, "r");
|
||||
if (file == NULL)
|
||||
[NSException raise: NSInternalInconsistencyException
|
||||
format: @"Failed to open regions array file"];
|
||||
while (fscanf(file, "%d %s", &index, name) == 2)
|
||||
[temp_array[index] addObject: [NSString stringWithCString: name]];
|
||||
[temp_array[index] addObject: [[NSString alloc] initWithCString: name]];
|
||||
fclose(file);
|
||||
regionsArray = [[NSArray alloc] initWithObjects: temp_array count: 24];
|
||||
return regionsArray;
|
||||
}
|
||||
}
|
||||
|
||||
- (NSArray*)timeZoneDetailArray
|
||||
{
|
||||
{
|
||||
return [self subclassResponsibility: _cmd];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
@end
|
||||
|
||||
|
||||
@implementation NSTimeZoneDetail
|
||||
|
@ -785,18 +798,26 @@ decode (const void *ptr)
|
|||
}
|
||||
|
||||
- (BOOL)isDaylightSavingTimeZone
|
||||
{
|
||||
{
|
||||
[self subclassResponsibility: _cmd];
|
||||
return NO;
|
||||
}
|
||||
}
|
||||
|
||||
- (NSString*)timeZoneAbbreviation
|
||||
{
|
||||
{
|
||||
return [self subclassResponsibility: _cmd];
|
||||
}
|
||||
}
|
||||
|
||||
- (int)timeZoneSecondsFromGMT
|
||||
{
|
||||
{
|
||||
[self subclassResponsibility: _cmd];
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -90,7 +90,7 @@ getAddr(NSString* name, NSString* svc, NSString* pcl, struct sockaddr_in *sin)
|
|||
name = [host address];
|
||||
|
||||
#ifndef HAVE_INET_ATON
|
||||
sin->sin_addr.s_addr = htonl(inet_addr([name cStringNoCopy]));
|
||||
sin->sin_addr.s_addr = inet_addr([name cStringNoCopy]);
|
||||
#else
|
||||
if (inet_aton([name cStringNoCopy], &sin->sin_addr.s_addr) == 0)
|
||||
return NO;
|
||||
|
|
|
@ -143,7 +143,7 @@ MyCategory.h \
|
|||
SecondClass.h
|
||||
|
||||
DIST_FILES = $(SRCS) $(HDRS) $(DYNAMIC_MFILES) $(DYNAMIC_HFILES) \
|
||||
Makefile Makefile.preamble Makefile.postamble NXStringTable.example
|
||||
Makefile Makefile.preamble Makefile.postamble
|
||||
|
||||
-include Makefile.preamble
|
||||
|
||||
|
|
|
@ -76,3 +76,5 @@ copy-dist: $(DIST_FILES)
|
|||
for f in $(DIST_FILES); do \
|
||||
cp $$f ../snap/checks ; \
|
||||
done
|
||||
mkdir ../snap/checks/English.lproj
|
||||
cp English.lproj/NXStringTable.example ../snap/checks/English.lproj
|
||||
|
|
Loading…
Reference in a new issue