Rebol Programming/rm

From Wikibooks, open books for an open world
Jump to navigation Jump to search

USAGE:[edit | edit source]

RM target /any 

DESCRIPTION:[edit | edit source]

Deletes the specified file(s).

RM is a function value.

ARGUMENTS[edit | edit source]

  • target -- the file to delete (Type: file url)

REFINEMENTS[edit | edit source]

  • /any -- allow wild cards

(SPECIAL ATTRIBUTES)[edit | edit source]

  • catch

SOURCE CODE[edit | edit source]

rm: func [
    "Deletes the specified file(s)." 
    [catch] 
    target [file! url!] "the file to delete" 
    /any "allow wild cards" 
    /local p dir blk file ret err
][
    dir: throw-on-error [open first p: split-path clean-path target] 
    error? set/any 'err try [
        either any [
            blk: copy dir 
            foreach file blk [
                ret: find/match/any file second p 
                if none? ret [ret: file] 
                either tail? ret [
                    remove dir
                ] [
                    dir: next dir
                ]
            ]
        ] [
            blk: copy dir 
            either not none? blk: find blk second p [
                remove skip dir (index? blk) - 1
            ] [
                make error! reduce ['access 'no-delete target]
            ]
        ]
    ] 
    attempt [close dir] 
    either error? get/any 'err [throw err] [get/any 'err]
]