2
0
Эх сурвалжийг харах

stdin removed (use fdopen(STDIN_FILENO...) instead)

Alexander Shiryaev 8 жил өмнө
parent
commit
e999ee48d7

BIN
BlackBox/_FreeBSDLinuxOpenBSD_/Host/Mod/Console.odc


+ 5 - 0
BlackBox/_FreeBSDLinuxOpenBSD_/Lin/Mod/gen-Libc/Libc.txt.templ

@@ -49,6 +49,10 @@ MODULE LinLibc ["libc.so%%libver%%"];
 		SEEK_CUR* = 1;
 		SEEK_END* = 2;
 
+		STDIN_FILENO* = 0;
+		STDOUT_FILENO* = 1;
+		STDERR_FILENO* = 2;
+
 		P_tmpdir* = "/tmp";
 
 		(* O_RDWR, O_NONBLOCK (intFlags) *)
@@ -179,6 +183,7 @@ MODULE LinLibc ["libc.so%%libver%%"];
 
 	(* ANSI C 89 *)
 		PROCEDURE [ccall] fopen* (path, mode: PtrSTR): PtrFILE;
+		PROCEDURE [ccall] fdopen* (fildes: int; mode: PtrSTR): PtrFILE;
 		PROCEDURE [ccall] fclose* (stream: PtrFILE): int;
 		PROCEDURE [ccall] fread* (ptr: PtrVoid; size: size_t; nmemb: size_t; stream: PtrFILE): size_t;
 		PROCEDURE [ccall] fwrite* (ptr: PtrVoid; size: size_t; nmemb: size_t; stream: PtrFILE): size_t;

BIN
BlackBox/_FreeBSDLinux_/Host/Mod/Console.odc


+ 3 - 1
BlackBox/_FreeBSD_/Lin/Mod/gen-Libc/custom

@@ -1,6 +1,8 @@
+(*
 	VAR
-		(* errno*: INTEGER; *)
+		errno*: INTEGER;
 		stdin* ["__stdinp"]: PtrFILE;
+*)
 
 	PROCEDURE [ccall] __errno_location* ["__error"] (): PtrVoid;
 

BIN
BlackBox/_Linux_/Lin/Mod/Libc.odc


+ 7 - 0
BlackBox/_Linux_/Lin/Mod/Libc.txt

@@ -246,6 +246,10 @@ MODULE LinLibc ["libc.so.6"];
 
 		SIGSTKSZ* = 8192;
 
+		STDIN_FILENO* = 0;
+		STDOUT_FILENO* = 1;
+		STDERR_FILENO* = 2;
+
 	TYPE 
 		__ftw_func_t* = PROCEDURE (fileName: PtrSTR; VAR [nil] stat: stat_t; flag: INTEGER): INTEGER;
 		PtrVoid* = INTEGER;
@@ -396,7 +400,9 @@ MODULE LinLibc ["libc.so.6"];
 
 	VAR
 		timezone*: INTEGER; (* seconds from GMT *)		
+(*
 		stdin*, stdout*, stderr* : PtrFILE;
+*)
 
 	PROCEDURE [ccall] calloc* (num, size: size_t): PtrVoid;
 	PROCEDURE [ccall] clock* (): clock_t;
@@ -406,6 +412,7 @@ MODULE LinLibc ["libc.so.6"];
 	PROCEDURE [ccall] fclose* (fp: PtrFILE): INTEGER;
 	PROCEDURE [ccall] fflush* (fp: PtrFILE): INTEGER;
 	PROCEDURE [ccall] fopen* (filename, mode: PtrSTR): PtrFILE;
+	PROCEDURE [ccall] fdopen* (fildes: INTEGER; mode: PtrSTR): PtrFILE;
 	PROCEDURE [ccall] feof* (fp: PtrFILE): INTEGER;
 	PROCEDURE [ccall] fread* (ptr: PtrVoid; size, nobj: size_t; stream: PtrFILE): size_t;
 	PROCEDURE [ccall] fseek* (stream: PtrFILE; offset, origin: INTEGER): INTEGER;

BIN
BlackBox/_OpenBSD_/BlackBox1.run


BIN
BlackBox/_OpenBSD_/Host/Mod/Console.odc


+ 7 - 0
BlackBox/_OpenBSD_/Lin/Mod/Libc.txt

@@ -335,6 +335,10 @@ MODULE LinLibc ["libc.so.89.2"];
 		SEEK_CUR* = 1;
 		SEEK_END* = 2;
 
+		STDIN_FILENO* = 0;
+		STDOUT_FILENO* = 1;
+		STDERR_FILENO* = 2;
+
 		P_tmpdir* = "/tmp";
 
 		(* O_RDWR, O_NONBLOCK (intFlags) *)
@@ -586,6 +590,7 @@ MODULE LinLibc ["libc.so.89.2"];
 	(* POSIX.1 *)
 		PROCEDURE [ccall] stat* (path: PtrSTR; VAR sp: stat_t): int;
 *)
+(*
 	VAR
 		(* OpenBSD: stdin, stdout, stderr *)
 			__sF*: ARRAY [untagged] 3 OF FILE; (* OpenBSD 5.8 /usr/include/stdio.h *)
@@ -594,6 +599,7 @@ MODULE LinLibc ["libc.so.89.2"];
 					stdout = SYSTEM.ADR(__sF[1])
 					stderr = SYSTEM.ADR(__sF[2])
 				*)
+*)
 
 	PROCEDURE [ccall] __errno_location* ["__errno"] (): PtrVoid;
 
@@ -645,6 +651,7 @@ MODULE LinLibc ["libc.so.89.2"];
 
 	(* ANSI C 89 *)
 		PROCEDURE [ccall] fopen* (path, mode: PtrSTR): PtrFILE;
+		PROCEDURE [ccall] fdopen* (fildes: int; mode: PtrSTR): PtrFILE;
 		PROCEDURE [ccall] fclose* (stream: PtrFILE): int;
 		PROCEDURE [ccall] fread* (ptr: PtrVoid; size: size_t; nmemb: size_t; stream: PtrFILE): size_t;
 		PROCEDURE [ccall] fwrite* (ptr: PtrVoid; size: size_t; nmemb: size_t; stream: PtrFILE): size_t;

+ 2 - 0
BlackBox/_OpenBSD_/Lin/Mod/gen-Libc/custom

@@ -1,3 +1,4 @@
+(*
 	VAR
 		(* OpenBSD: stdin, stdout, stderr *)
 			__sF*: ARRAY [untagged] 3 OF FILE; (* OpenBSD 5.8 /usr/include/stdio.h *)
@@ -6,6 +7,7 @@
 					stdout = SYSTEM.ADR(__sF[1])
 					stderr = SYSTEM.ADR(__sF[2])
 				*)
+*)
 
 	PROCEDURE [ccall] __errno_location* ["__errno"] (): PtrVoid;
 

BIN
BlackBox/_OpenBSD_/libBB.so


BIN
BlackBox/_OpenBSD_/libBB0.so


+ 2 - 3
README

@@ -152,9 +152,8 @@ Files:
 	new:
 		Console:
 			System/Mod/Console.odc: Console interface
-			_FreeBSDLinux_/Host/Mod/Console.odc: Console implementation for Linux and FreeBSD
-			_OpenBSD_/Host/Mod/Console.odc:
-				_Linux_/Host/Mod/Console.odc: stdin -> SYSTEM.ADR(__sF[0]) (OpenBSD-specific)
+			_FreeBSDLinuxOpenBSD_/Host/Mod/Console.odc:
+				Console implementation for Linux and FreeBSD, and OpenBSD
 			_Windows_{GUI,Interp}/Host/Mod/Console.odc:
 				Console implementation for Windows
 		Cons/Mod