瀏覽代碼

Kernel.littleEndian

Alexander Shiryaev 12 年之前
父節點
當前提交
e590d9d65c

二進制
BlackBox/_Linux_/Host/Mod/Console.odc


+ 8 - 9
BlackBox/_Linux_/Host/Mod/Console.txt

@@ -3,13 +3,7 @@ MODULE HostConsole;
 	(* THIS IS TEXT COPY OF Console.odc *)
 	(* DO NOT EDIT *)
 
-	(*
-		A. V. Shiryaev, 2012.10
-
-		Console implementation for Linux
-	*)
-
-	IMPORT SYSTEM, Console, Libc := LinLibc, Iconv := LinIconv, HostLang;
+	IMPORT SYSTEM, Console, Libc := LinLibc, Iconv := LinIconv, HostLang, Kernel;
 
 	CONST
 		defCh = '?';
@@ -136,8 +130,13 @@ MODULE HostConsole;
 
 	PROCEDURE Init;
 	BEGIN
-		e := Iconv.iconv_open(HostLang.enc, "UCS-2LE");
-		d := Iconv.iconv_open("UCS-2LE", HostLang.enc);
+		IF Kernel.littleEndian THEN
+			e := Iconv.iconv_open(HostLang.enc, "UCS-2LE");
+			d := Iconv.iconv_open("UCS-2LE", HostLang.enc)
+		ELSE
+			e := Iconv.iconv_open(HostLang.enc, "UCS-2BE");
+			d := Iconv.iconv_open("UCS-2BE", HostLang.enc)
+		END;
 
 		NEW(cons);
 		Console.SetConsole(cons)

二進制
BlackBox/_Linux_/Host/Mod/Files.odc


+ 7 - 6
BlackBox/_Linux_/Host/Mod/Files.txt

@@ -3,10 +3,6 @@ MODULE HostFiles;
 	(* THIS IS TEXT COPY OF Files.odc *)
 	(* DO NOT EDIT *)
 
-	(*
-		A. V. Shiryaev, 2012.10: filenames encoding translation implemented
-	*)
-
 	IMPORT SYSTEM, Kernel, Files, LinLibc, Iconv := LinIconv;
 
 	CONST
@@ -201,8 +197,13 @@ MODULE HostFiles;
 	BEGIN
 		GetEnc(enc, ok);
 		IF ok THEN
-			e := Iconv.iconv_open(enc, "UCS-2LE");
-			d := Iconv.iconv_open("UCS-2LE", enc)
+			IF Kernel.littleEndian THEN
+				e := Iconv.iconv_open(enc, "UCS-2LE");
+				d := Iconv.iconv_open("UCS-2LE", enc)
+			ELSE
+				e := Iconv.iconv_open(enc, "UCS-2BE");
+				d := Iconv.iconv_open("UCS-2BE", enc)
+			END
 		ELSE e := -1; d := -1
 		END
 	END InitConv;

二進制
BlackBox/_Linux_/libBB.so


二進制
BlackBox/_Linux_/libBB0.so


二進制
BlackBox/_OpenBSD_/Host/Mod/Console.odc


+ 8 - 9
BlackBox/_OpenBSD_/Host/Mod/Console.txt

@@ -3,13 +3,7 @@ MODULE HostConsole;
 	(* THIS IS TEXT COPY OF Console.odc *)
 	(* DO NOT EDIT *)
 
-	(*
-		A. V. Shiryaev, 2012.10
-
-		Console implementation for OpenBSD
-	*)
-
-	IMPORT SYSTEM, Console, Libc := LinLibc, Iconv := LinIconv, HostLang;
+	IMPORT SYSTEM, Console, Libc := LinLibc, Iconv := LinIconv, HostLang, Kernel;
 
 	CONST
 		defCh = '?';
@@ -136,8 +130,13 @@ MODULE HostConsole;
 
 	PROCEDURE Init;
 	BEGIN
-		e := Iconv.iconv_open(HostLang.enc, "UCS-2LE");
-		d := Iconv.iconv_open("UCS-2LE", HostLang.enc);
+		IF Kernel.littleEndian THEN
+			e := Iconv.iconv_open(HostLang.enc, "UCS-2LE");
+			d := Iconv.iconv_open("UCS-2LE", HostLang.enc)
+		ELSE
+			e := Iconv.iconv_open(HostLang.enc, "UCS-2BE");
+			d := Iconv.iconv_open("UCS-2BE", HostLang.enc)
+		END;
 
 		NEW(cons);
 		Console.SetConsole(cons)

二進制
BlackBox/_OpenBSD_/Host/Mod/Files.odc


+ 7 - 6
BlackBox/_OpenBSD_/Host/Mod/Files.txt

@@ -3,10 +3,6 @@ MODULE HostFiles;
 	(* THIS IS TEXT COPY OF Files.odc *)
 	(* DO NOT EDIT *)
 
-	(*
-		A. V. Shiryaev, 2012.10: filenames encoding translation implemented
-	*)
-
 	IMPORT SYSTEM, Kernel, Files, LinLibc, Iconv := LinIconv;
 
 	CONST
@@ -201,8 +197,13 @@ MODULE HostFiles;
 	BEGIN
 		GetEnc(enc, ok);
 		IF ok THEN
-			e := Iconv.iconv_open(enc, "UCS-2LE");
-			d := Iconv.iconv_open("UCS-2LE", enc)
+			IF Kernel.littleEndian THEN
+				e := Iconv.iconv_open(enc, "UCS-2LE");
+				d := Iconv.iconv_open("UCS-2LE", enc)
+			ELSE
+				e := Iconv.iconv_open(enc, "UCS-2BE");
+				d := Iconv.iconv_open("UCS-2BE", enc)
+			END
 		ELSE e := -1; d := -1
 		END
 	END InitConv;

二進制
BlackBox/_OpenBSD_/libBB.so


二進制
BlackBox/_OpenBSD_/libBB0.so