fix to allow reading from stdin

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@31221 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
rfm 2010-08-31 14:32:40 +00:00
parent c32d3f1eb4
commit 3f2de3c45f
3 changed files with 33 additions and 22 deletions

View file

@ -1,6 +1,6 @@
2010-08-31 Richard Frith-Macdonald <rfm@gnu.org> 2010-08-31 Richard Frith-Macdonald <rfm@gnu.org>
* Tools/cvtenc.m: Add -Unicode option * Tools/cvtenc.m: Add -Unicode option. Fix to allow reading from stdin
* Tools/cvtenc.1: update * Tools/cvtenc.1: update
2010-08-30 Richard Frith-Macdonald <rfm@gnu.org> 2010-08-30 Richard Frith-Macdonald <rfm@gnu.org>

View file

@ -243,14 +243,14 @@ getAddr(NSString* name, NSString* svc, NSString* pcl, struct sockaddr_in *sin)
- (void) dealloc - (void) dealloc
{ {
RELEASE(address); DESTROY(address);
RELEASE(service); DESTROY(service);
RELEASE(protocol); DESTROY(protocol);
[self finalize]; [self finalize];
RELEASE(readInfo); DESTROY(readInfo);
RELEASE(writeInfo); DESTROY(writeInfo);
[super dealloc]; [super dealloc];
} }
@ -273,6 +273,7 @@ getAddr(NSString* name, NSString* svc, NSString* pcl, struct sockaddr_in *sin)
if (gzDescriptor != 0) if (gzDescriptor != 0)
{ {
gzclose(gzDescriptor); gzclose(gzDescriptor);
gzDescriptor = 0;
} }
#endif #endif
if (descriptor != -1) if (descriptor != -1)
@ -1023,10 +1024,10 @@ NSString * const GSSOCKSRecvAddr = @"GSSOCKSRecvAddr";
{ {
self = [self initWithFileDescriptor: 2 closeOnDealloc: NO]; self = [self initWithFileDescriptor: 2 closeOnDealloc: NO];
fh_stderr = self; fh_stderr = self;
} if (self)
if (self) {
{ readOK = NO;
readOK = NO; }
} }
return self; return self;
} }
@ -1041,10 +1042,10 @@ NSString * const GSSOCKSRecvAddr = @"GSSOCKSRecvAddr";
{ {
self = [self initWithFileDescriptor: 0 closeOnDealloc: NO]; self = [self initWithFileDescriptor: 0 closeOnDealloc: NO];
fh_stdin = self; fh_stdin = self;
} if (self)
if (self) {
{ writeOK = NO;
writeOK = NO; }
} }
return self; return self;
} }
@ -1059,10 +1060,10 @@ NSString * const GSSOCKSRecvAddr = @"GSSOCKSRecvAddr";
{ {
self = [self initWithFileDescriptor: 1 closeOnDealloc: NO]; self = [self initWithFileDescriptor: 1 closeOnDealloc: NO];
fh_stdout = self; fh_stdout = self;
} if (self)
if (self) {
{ readOK = NO;
readOK = NO; }
} }
return self; return self;
} }
@ -1810,9 +1811,9 @@ NSString * const GSSOCKSRecvAddr = @"GSSOCKSRecvAddr";
if ([writeInfo count] > 0) if ([writeInfo count] > 0)
{ {
NSMutableDictionary* info = [writeInfo objectAtIndex: 0]; NSMutableDictionary *info = [writeInfo objectAtIndex: 0];
modes=(NSArray*)[info objectForKey: NSFileHandleNotificationMonitorModes]; modes = [info objectForKey: NSFileHandleNotificationMonitorModes];
} }
if (modes && [modes count]) if (modes && [modes count])

View file

@ -139,7 +139,7 @@ main(int argc, char** argv, char **env)
{ {
NSString *file = [args objectAtIndex: i]; NSString *file = [args objectAtIndex: i];
if ([file hasPrefix: @"-"] == YES) if ([file hasPrefix: @"-"] == YES && NO == [file isEqual: @"-"])
{ {
i++; i++;
continue; continue;
@ -149,7 +149,15 @@ main(int argc, char** argv, char **env)
{ {
NSData *myData; NSData *myData;
myData = [[NSData alloc] initWithContentsOfFile: file]; if (YES == [file isEqual: @"-"])
{
myData = [[[NSFileHandle fileHandleWithStandardInput]
readDataToEndOfFile] retain];
}
else
{
myData = [[NSData alloc] initWithContentsOfFile: file];
}
if (myData == nil) if (myData == nil)
{ {
NSLog(@"File read operation failed for %@.", file); NSLog(@"File read operation failed for %@.", file);
@ -299,10 +307,12 @@ main(int argc, char** argv, char **env)
else else
{ {
NSFileHandle *out; NSFileHandle *out;
CREATE_AUTORELEASE_POOL(arp);
out = [NSFileHandle fileHandleWithStandardOutput]; out = [NSFileHandle fileHandleWithStandardOutput];
[out writeData: myData]; [out writeData: myData];
[out synchronizeFile]; [out synchronizeFile];
RELEASE(arp);
} }
} }
} }