RosettaCodeData/Task/Make-directory-path/Phix/make-directory-path-2.phix

38 lines
961 B
Plaintext

global function create_directory(string name, integer mode=0o700, bool make_parent=1)
bool ret
if not finit then initf() end if
if length(name)=0 then
?9/0
end if
name = get_proper_path(name)
-- Remove any trailing slash.
if name[$]=SLASH then
name = name[1..$-1]
end if
if make_parent then
integer pos = rfind(SLASH, name)
if pos!=0 then
string parent = name[1..pos-1]
if file_exists(parent) then
if file_type(parent)!=FILETYPE_DIRECTORY then ?9/0 end if
else
if not create_directory(parent, mode, make_parent) then
return 0
end if
end if
end if
end if
if platform()=LINUX then
ret = not c_func(xCreateDirectory, {name, mode})
elsif platform()=WINDOWS then
ret = c_func(xCreateDirectory, {name, 0})
end if
return ret
end function