forked from rebol/rebol
-
Notifications
You must be signed in to change notification settings - Fork 2
Make dir
angerangel edited this page Mar 19, 2013
·
1 revision
MAKE-DIR path /deep
Creates the specified directory. No error if already exists.
MAKE-DIR is a function value.
- path (file! url!)
- /deep -- Create subdirectories too
#SOURCE
make-dir: make function! [ [
{Creates the specified directory. No error if already exists.}
path [file! url!]
/deep "Create subdirectories too"
/local dirs end created
][
if empty? path [return path]
if slash <> last path [path: dirize path]
if exists? path [
if dir? path [return path]
cause-error 'access 'cannot-open path
]
if any [not deep url? path] [
create path
return path
]
path: copy path
dirs: copy []
while [
all [
not empty? path
not exists? path
remove back tail path
]
] [
end: any [find/last/tail path slash path]
insert dirs copy end
clear end
]
created: copy []
foreach dir dirs [
path: either empty? path [dir] [path/:dir]
append path slash
if error? try [make-dir path] [
foreach dir created [attempt [delete dir] ]
cause-error 'access 'cannot-open path
]
insert created path
]
path
] ]