Rebol Programming/make-dir
Appearance
USAGE:
[edit | edit source]MAKE-DIR path /deep
DESCRIPTION:
[edit | edit source]Creates the specified directory. No error if already exists.
MAKE-DIR is a function value.
ARGUMENTS:
[edit | edit source]- path -- (Type: file url)
REFINEMENTS:
[edit | edit source]- /deep -- Create subdirectories too
(SPECIAL ATTRIBUTES)
[edit | edit source]- catch
SOURCE CODE
[edit | edit source]make-dir: func [ {Creates the specified directory. No error if already exists.} [catch] 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] return make error! reduce ['access 'cannot-open path] ] if any [not deep url? path] [ close throw-on-error [open/new 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]] return make error! reduce ['access 'cannot-open path] ] insert created path ] path ]