@@ -24,41 +24,22 @@ #include #include #import "OFStdIOStream.h" +#import "OFStdIOStream+Private.h" #import "OFDate.h" #import "OFApplication.h" #import "OFOutOfRangeException.h" #import "OFReadFailedException.h" #import "OFWriteFailedException.h" -#ifdef OF_WINDOWS -# include -#endif - OFStdIOStream *of_stdin = nil; OFStdIOStream *of_stdout = nil; OFStdIOStream *of_stderr = nil; -#ifdef OF_WINDOWS -UINT originalConsoleCP; -UINT originalConsoleOutputCP; - -static void -restoreCodepage(void) -{ - SetConsoleCP(originalConsoleCP); - SetConsoleOutputCP(originalConsoleOutputCP); -} -#endif - -@interface OFStdIOStream () -- (instancetype)OF_initWithFileDescriptor: (int)fd; -@end - void of_log(OFConstantString *format, ...) { void *pool = objc_autoreleasePoolPush(); OFDate *date; @@ -79,27 +60,17 @@ objc_autoreleasePoolPop(pool); } @implementation OFStdIOStream +#ifndef OF_WINDOWS + (void)load { of_stdin = [[OFStdIOStream alloc] OF_initWithFileDescriptor: 0]; of_stdout = [[OFStdIOStream alloc] OF_initWithFileDescriptor: 1]; of_stderr = [[OFStdIOStream alloc] OF_initWithFileDescriptor: 2]; } - -#ifdef OF_WINDOWS -+ (void)initialize -{ - originalConsoleCP = GetConsoleCP(); - originalConsoleOutputCP = GetConsoleOutputCP(); - atexit(restoreCodepage); - - SetConsoleCP(CP_UTF8); - SetConsoleOutputCP(CP_UTF8); -} #endif - init { OF_INVALID_INIT_METHOD