diff --git a/CK2SFTPFileHandle.h b/CK2SFTPFileHandle.h index 33ebed4..f3b1f4c 100644 --- a/CK2SFTPFileHandle.h +++ b/CK2SFTPFileHandle.h @@ -27,6 +27,7 @@ - (BOOL)closeFile:(NSError **)error; +- (BOOL)writeData:(NSData *)data error:(NSError **)error; - (NSInteger)write:(const uint8_t *)buffer maxLength:(NSUInteger)length error:(NSError **)error; - (NSInteger)write:(const uint8_t *)buffer maxLength:(NSUInteger)length; diff --git a/CK2SFTPFileHandle.m b/CK2SFTPFileHandle.m index 035331f..4b88a0d 100644 --- a/CK2SFTPFileHandle.m +++ b/CK2SFTPFileHandle.m @@ -59,6 +59,15 @@ - (void)dealloc; } - (void)writeData:(NSData *)data; +{ + NSError *error; + if (![self writeData:data error:&error]) + { + [NSException raise:NSFileHandleOperationException format:@"%@", [error localizedDescription]]; + } +} + +- (BOOL)writeData:(NSData *)data error:(NSError **)error; { NSUInteger offset = 0; NSUInteger remainder = [data length]; @@ -67,17 +76,14 @@ - (void)writeData:(NSData *)data; { const void *bytes = [data bytes]; - NSError *error; - NSInteger written = [self write:bytes+offset maxLength:remainder error:&error]; - - if (written < 0) - { - [NSException raise:NSFileHandleOperationException format:@"%@", [error localizedDescription]]; - } + NSInteger written = [self write:bytes+offset maxLength:remainder error:error]; + if (written < 0) return NO; offset+=written; remainder-=written; } + + return YES; } - (NSInteger)write:(const uint8_t *)buffer maxLength:(NSUInteger)length error:(NSError **)error;