with Interfaces.C.Strings;
package body File_Manager is
-- Import of POSIX mkdtemp(3) to create a temporary directory.
--
function mkdtemp (template : in out Interfaces.C.char_array)
return Interfaces.C.Strings.chars_ptr
with Import, Convention => C, External_Name => "mkdtemp";
function Create_Temporary_Directory (Template : String) return String
is
C_Template : Interfaces.C.char_array := Interfaces.C.To_C (Template);
C_Result : constant Interfaces.C.Strings.chars_ptr := mkdtemp (C_Template);
begin
if Interfaces.C.Strings."=" (C_Result, Interfaces.C.Strings.Null_Ptr) then
raise Creation_Error;
end if;
return Interfaces.C.Strings.Value (C_Result);
end Create_Temporary_Directory;
end File_Manager;