Explorar el Código

Ted2 console can now handle utf8.

Mark Sibly hace 9 años
padre
commit
17b362f426

+ 2 - 2
modules/monkey/native/bbmonkey.cpp

@@ -15,7 +15,7 @@ void bbMain();
 #include <android/log.h>
 
 void bb_print( bbString str ){
-	__android_log_print( ANDROID_LOG_INFO,"MX2","%s",str.c_str() );
+	__android_log_print( ANDROID_LOG_INFO,"MX2","%s",str.utf8_str() );
 }
 
 void bb_printf( const char *fmt,... ){
@@ -28,7 +28,7 @@ void bb_printf( const char *fmt,... ){
 #else
 
 void bb_print( bbString str ){
-	puts( str.c_str() );fflush( stdout );
+	puts( str.utf8_str() );fflush( stdout );
 }
 
 void bb_printf( const char *fmt,... ){

+ 14 - 2
modules/monkey/native/bbstring.cpp

@@ -85,9 +85,21 @@ const char *bbString::c_str()const{
 		free( _tmp );
 		_tmp=(char*)malloc( _sz=sz );
 	}
+	toCString( _tmp,sz );
+	return _tmp;
+}
+
+const char *bbString::utf8_str()const{
+
+	static int _sz;
+	static char *_tmp;
 	
-	for( int i=0;i<length();++i ) _tmp[i]=data()[i];
-	_tmp[length()]=0;
+	int sz=utf8Length()+1;
+	if( sz>_sz ){
+		free( _tmp );
+		_tmp=(char*)malloc( _sz=sz );
+	}
+	toUtf8String( _tmp,sz );
 	return _tmp;
 }
 

+ 2 - 0
modules/monkey/native/bbstring.h

@@ -64,6 +64,8 @@ class bbString{
 	
 	const char *c_str()const;
 	
+	const char *utf8_str()const;
+	
 	bbString():_rep( &_nullRep ){
 	}
 	

+ 1 - 1
modules/std/process/native/process.cpp

@@ -276,7 +276,7 @@ bbString bbProcess::readStdout(){
 
 	if( !_rep || !_rep->stdoutAvail ) return "";
 
-	bbString str=bbString::fromCString( _rep->stdoutGet,_rep->stdoutAvail );
+	bbString str=bbString::fromUtf8String( _rep->stdoutGet,_rep->stdoutAvail );
 	
 	_rep->stdoutAvail=0;