From 63e6d7bba3f3044fe3f1fb8d0bc47688c3e70378 Mon Sep 17 00:00:00 2001 From: CaS Date: Tue, 2 Oct 2001 12:00:25 +0000 Subject: [PATCH] Output UTF8 in log messages. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@11074 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 5 +++++ Source/NSLog.m | 26 ++++++++++++++++++++++---- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 19bc29220..e61595e86 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2001-10-02 Richard Frith-Macdonald + + * Source/NSLog.m: _NSLog_standard_printf_handler() modified to output + message as UTF8 data if it can't be done as ASCII + 2001-09-27 Richard Frith-Macdonald * Source/NSString: setupQuotables() ... add several characters to the diff --git a/Source/NSLog.m b/Source/NSLog.m index f967639ab..2f53a4b9a 100644 --- a/Source/NSLog.m +++ b/Source/NSLog.m @@ -31,6 +31,7 @@ #include #include #include +#include #ifdef HAVE_SYSLOG_H #include @@ -41,12 +42,29 @@ static void _NSLog_standard_printf_handler (NSString* message) { - unsigned len = [message cStringLength]; - char buf[len+1]; + NSData *d; + const char *buf; + unsigned len; - [message getCString: buf]; - buf[len] = '\0'; + d = [message dataUsingEncoding: NSASCIIStringEncoding + allowLossyConversion: NO]; + if (d == nil) + { + d = [message dataUsingEncoding: NSUTF8StringEncoding + allowLossyConversion: NO]; + } + if (d == nil) // Should never happen. + { + buf = [message lossyCString]; + len = strlen(buf); + } + else + { + buf = (const char*)[d bytes]; + len = [d length]; + } + #ifdef HAVE_SYSLOG if (write(2, buf, len) != len)