aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/g-os_lib.adb
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ada/g-os_lib.adb')
-rw-r--r--gcc/ada/g-os_lib.adb107
1 files changed, 55 insertions, 52 deletions
diff --git a/gcc/ada/g-os_lib.adb b/gcc/ada/g-os_lib.adb
index 24f6297b639..d568d364a7a 100644
--- a/gcc/ada/g-os_lib.adb
+++ b/gcc/ada/g-os_lib.adb
@@ -32,6 +32,7 @@
------------------------------------------------------------------------------
with System.Case_Util;
+with System.CRTL;
with System.Soft_Links;
with Unchecked_Conversion;
with System; use System;
@@ -82,8 +83,7 @@ package body GNAT.OS_Lib is
function To_Path_String_Access
(Path_Addr : Address;
- Path_Len : Integer)
- return String_Access;
+ Path_Len : Integer) return String_Access;
-- Converts a C String to an Ada String. We could do this making use of
-- Interfaces.C.Strings but we prefer not to import that entire package
@@ -143,8 +143,7 @@ package body GNAT.OS_Lib is
-----------------------------
function Argument_String_To_List
- (Arg_String : String)
- return Argument_List_Access
+ (Arg_String : String) return Argument_List_Access
is
Max_Args : constant Integer := Arg_String'Length;
New_Argv : Argument_List (1 .. Max_Args);
@@ -397,8 +396,7 @@ package body GNAT.OS_Lib is
function Copy_Attributes
(From, To : System.Address;
- Mode : Integer)
- return Integer;
+ Mode : Integer) return Integer;
pragma Import (C, Copy_Attributes, "__gnat_copy_attribs");
-- Mode = 0 - copy only time stamps.
-- Mode = 1 - copy time stamps and read/write/execute attributes
@@ -558,8 +556,7 @@ package body GNAT.OS_Lib is
function Copy_Attributes
(From, To : System.Address;
- Mode : Integer)
- return Integer;
+ Mode : Integer) return Integer;
pragma Import (C, Copy_Attributes, "__gnat_copy_attribs");
-- Mode = 0 - copy only time stamps.
-- Mode = 1 - copy time stamps and read/write/execute attributes
@@ -611,13 +608,11 @@ package body GNAT.OS_Lib is
function Create_File
(Name : C_File_Name;
- Fmode : Mode)
- return File_Descriptor
+ Fmode : Mode) return File_Descriptor
is
function C_Create_File
(Name : C_File_Name;
- Fmode : Mode)
- return File_Descriptor;
+ Fmode : Mode) return File_Descriptor;
pragma Import (C, C_Create_File, "__gnat_open_create");
begin
@@ -626,8 +621,7 @@ package body GNAT.OS_Lib is
function Create_File
(Name : String;
- Fmode : Mode)
- return File_Descriptor
+ Fmode : Mode) return File_Descriptor
is
C_Name : String (1 .. Name'Length + 1);
@@ -643,13 +637,11 @@ package body GNAT.OS_Lib is
function Create_New_File
(Name : C_File_Name;
- Fmode : Mode)
- return File_Descriptor
+ Fmode : Mode) return File_Descriptor
is
function C_Create_New_File
(Name : C_File_Name;
- Fmode : Mode)
- return File_Descriptor;
+ Fmode : Mode) return File_Descriptor;
pragma Import (C, C_Create_New_File, "__gnat_open_new");
begin
@@ -658,8 +650,7 @@ package body GNAT.OS_Lib is
function Create_New_File
(Name : String;
- Fmode : Mode)
- return File_Descriptor
+ Fmode : Mode) return File_Descriptor
is
C_Name : String (1 .. Name'Length + 1);
@@ -679,8 +670,7 @@ package body GNAT.OS_Lib is
is
function Open_New_Temp
(Name : System.Address;
- Fmode : Mode)
- return File_Descriptor;
+ Fmode : Mode) return File_Descriptor;
pragma Import (C, Open_New_Temp, "__gnat_open_new_temp");
begin
@@ -1225,8 +1215,7 @@ package body GNAT.OS_Lib is
-------------------------
function Locate_Exec_On_Path
- (Exec_Name : String)
- return String_Access
+ (Exec_Name : String) return String_Access
is
function Locate_Exec_On_Path (C_Exec_Name : Address) return Address;
pragma Import (C, Locate_Exec_On_Path, "__gnat_locate_exec_on_path");
@@ -1262,8 +1251,7 @@ package body GNAT.OS_Lib is
function Locate_Regular_File
(File_Name : C_File_Name;
- Path : C_File_Name)
- return String_Access
+ Path : C_File_Name) return String_Access
is
function Locate_Regular_File
(C_File_Name, Path_Val : Address) return Address;
@@ -1291,8 +1279,7 @@ package body GNAT.OS_Lib is
function Locate_Regular_File
(File_Name : String;
- Path : String)
- return String_Access
+ Path : String) return String_Access
is
C_File_Name : String (1 .. File_Name'Length + 1);
C_Path : String (1 .. Path'Length + 1);
@@ -1313,8 +1300,7 @@ package body GNAT.OS_Lib is
function Non_Blocking_Spawn
(Program_Name : String;
- Args : Argument_List)
- return Process_Id
+ Args : Argument_List) return Process_Id
is
Junk : Integer;
Pid : Process_Id;
@@ -1428,8 +1414,7 @@ package body GNAT.OS_Lib is
(Name : String;
Directory : String := "";
Resolve_Links : Boolean := True;
- Case_Sensitive : Boolean := True)
- return String
+ Case_Sensitive : Boolean := True) return String
is
Max_Path : Integer;
pragma Import (C, Max_Path, "__gnat_max_path_len");
@@ -1465,13 +1450,11 @@ package body GNAT.OS_Lib is
function Readlink
(Path : System.Address;
Buf : System.Address;
- Bufsiz : Integer)
- return Integer;
+ Bufsiz : Integer) return Integer;
pragma Import (C, Readlink, "__gnat_readlink");
function To_Canonical_File_Spec
- (Host_File : System.Address)
- return System.Address;
+ (Host_File : System.Address) return System.Address;
pragma Import
(C, To_Canonical_File_Spec, "__gnat_to_canonical_file_spec");
@@ -1909,13 +1892,11 @@ package body GNAT.OS_Lib is
function Open_Read
(Name : C_File_Name;
- Fmode : Mode)
- return File_Descriptor
+ Fmode : Mode) return File_Descriptor
is
function C_Open_Read
(Name : C_File_Name;
- Fmode : Mode)
- return File_Descriptor;
+ Fmode : Mode) return File_Descriptor;
pragma Import (C, C_Open_Read, "__gnat_open_read");
begin
@@ -1924,8 +1905,7 @@ package body GNAT.OS_Lib is
function Open_Read
(Name : String;
- Fmode : Mode)
- return File_Descriptor
+ Fmode : Mode) return File_Descriptor
is
C_Name : String (1 .. Name'Length + 1);
@@ -1941,13 +1921,11 @@ package body GNAT.OS_Lib is
function Open_Read_Write
(Name : C_File_Name;
- Fmode : Mode)
- return File_Descriptor
+ Fmode : Mode) return File_Descriptor
is
function C_Open_Read_Write
(Name : C_File_Name;
- Fmode : Mode)
- return File_Descriptor;
+ Fmode : Mode) return File_Descriptor;
pragma Import (C, C_Open_Read_Write, "__gnat_open_rw");
begin
@@ -1956,8 +1934,7 @@ package body GNAT.OS_Lib is
function Open_Read_Write
(Name : String;
- Fmode : Mode)
- return File_Descriptor
+ Fmode : Mode) return File_Descriptor
is
C_Name : String (1 .. Name'Length + 1);
@@ -1967,6 +1944,20 @@ package body GNAT.OS_Lib is
return Open_Read_Write (C_Name (C_Name'First)'Address, Fmode);
end Open_Read_Write;
+ ----------
+ -- Read --
+ ----------
+
+ function Read
+ (FD : File_Descriptor;
+ A : System.Address;
+ N : Integer) return Integer
+ is
+ begin
+ return Integer (System.CRTL.read
+ (System.CRTL.int (FD), System.CRTL.chars (A), System.CRTL.int (N)));
+ end Read;
+
-----------------
-- Rename_File --
-----------------
@@ -2031,8 +2022,7 @@ package body GNAT.OS_Lib is
function Spawn
(Program_Name : String;
- Args : Argument_List)
- return Integer
+ Args : Argument_List) return Integer
is
Junk : Process_Id;
Result : Integer;
@@ -2173,8 +2163,7 @@ package body GNAT.OS_Lib is
function To_Path_String_Access
(Path_Addr : Address;
- Path_Len : Integer)
- return String_Access
+ Path_Len : Integer) return String_Access
is
subtype Path_String is String (1 .. Path_Len);
type Path_String_Access is access Path_String;
@@ -2213,4 +2202,18 @@ package body GNAT.OS_Lib is
Success := (Status = 0);
end Wait_Process;
+ -----------
+ -- Write --
+ -----------
+
+ function Write
+ (FD : File_Descriptor;
+ A : System.Address;
+ N : Integer) return Integer
+ is
+ begin
+ return Integer (System.CRTL.write
+ (System.CRTL.int (FD), System.CRTL.chars (A), System.CRTL.int (N)));
+ end Write;
+
end GNAT.OS_Lib;