Minor bugfix - reset non-blocking mode before closing file

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@4638 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
richard 1999-07-23 20:16:13 +00:00
parent 1daeda4dfc
commit 95d9e13da4
2 changed files with 86 additions and 78 deletions

View file

@ -1,3 +1,8 @@
Fri Jul 23 21:20:00 1999 Richard Frith-Macdonald <richard@brainstorm.co.uk>
* Source/UnixFileHandle.m: Tidy a little and make sure that
non-blocking mode is reset when a descriptor is closed.
Thu Jul 22 13:55:00 1999 Richard Frith-Macdonald <richard@brainstorm.co.uk> Thu Jul 22 13:55:00 1999 Richard Frith-Macdonald <richard@brainstorm.co.uk>
* Source/NSTimeZone.m: ([-initWithOffset:]) bugfix by Kai Henningsen * Source/NSTimeZone.m: ([-initWithOffset:]) bugfix by Kai Henningsen

View file

@ -1,5 +1,5 @@
/* Implementation for UnixFileHandle for GNUStep /* Implementation for UnixFileHandle for GNUStep
Copyright (C) 1997 Free Software Foundation, Inc. Copyright (C) 1997-1999 Free Software Foundation, Inc.
Written by: Richard Frith-Macdonald <richard@brainstorm.co.uk> Written by: Richard Frith-Macdonald <richard@brainstorm.co.uk>
Date: 1997 Date: 1997
@ -192,13 +192,13 @@ getAddr(NSString* name, NSString* svc, NSString* pcl, struct sockaddr_in *sin)
if (descriptor != -1) if (descriptor != -1)
{ {
if (isNonBlocking != wasNonBlocking)
[self setNonBlocking: wasNonBlocking];
if (closeOnDealloc == YES) if (closeOnDealloc == YES)
{ {
close(descriptor); close(descriptor);
descriptor = -1; descriptor = -1;
} }
else if (isNonBlocking != wasNonBlocking)
[self setNonBlocking: wasNonBlocking];
} }
[readInfo release]; [readInfo release];
[writeInfo release]; [writeInfo release];
@ -212,9 +212,9 @@ getAddr(NSString* name, NSString* svc, NSString* pcl, struct sockaddr_in *sin)
return [self initWithNullDevice]; return [self initWithNullDevice];
} }
- (id)initAsClientAtAddress: a - (id) initAsClientAtAddress: (NSString*)a
service: s service: (NSString*)s
protocol: p protocol: (NSString*)p
{ {
int net; int net;
struct sockaddr_in sin; struct sockaddr_in sin;
@ -259,10 +259,10 @@ getAddr(NSString* name, NSString* svc, NSString* pcl, struct sockaddr_in *sin)
return self; return self;
} }
- (id)initAsClientInBackgroundAtAddress: a - (id) initAsClientInBackgroundAtAddress: (NSString*)a
service: s service: (NSString*)s
protocol: p protocol: (NSString*)p
forModes: modes forModes: (NSArray*)modes
{ {
int net; int net;
struct sockaddr_in sin; struct sockaddr_in sin;
@ -322,9 +322,9 @@ getAddr(NSString* name, NSString* svc, NSString* pcl, struct sockaddr_in *sin)
return self; return self;
} }
- (id)initAsServerAtAddress: a - (id) initAsServerAtAddress: (NSString*)a
service: s service: (NSString*)s
protocol: p protocol: (NSString*)p
{ {
int status = 1; int status = 1;
int net; int net;
@ -493,7 +493,8 @@ getAddr(NSString* name, NSString* svc, NSString* pcl, struct sockaddr_in *sin)
{ {
self = [self initWithFileDescriptor: open("/dev/null", O_RDWR|O_BINARY) self = [self initWithFileDescriptor: open("/dev/null", O_RDWR|O_BINARY)
closeOnDealloc: YES]; closeOnDealloc: YES];
if (self) { if (self)
{
isNullDevice = YES; isNullDevice = YES;
} }
return self; return self;
@ -944,6 +945,8 @@ getAddr(NSString* name, NSString* svc, NSString* pcl, struct sockaddr_in *sin)
[self ignoreReadDescriptor]; [self ignoreReadDescriptor];
[self ignoreWriteDescriptor]; [self ignoreWriteDescriptor];
if (isNonBlocking != wasNonBlocking)
[self setNonBlocking: wasNonBlocking];
(void)close(descriptor); (void)close(descriptor);
descriptor = -1; descriptor = -1;
acceptOK = NO; acceptOK = NO;