RebOldes' code below is not as fast as possible yet, I think,
though less likely to write a bug by missing or adding
an extra  [ next dir-port ], and it is less code to
maintain, still...

If you look at source delete, it is opening
a directory port to do its work.
Better to use remove on a direct port, rather than delete, no?

I refer you to http://rebol.com/docs/core23/rebolcore.html
Chapter 14 - Ports, section 8.3 Direct Port Access

See an example using remove at bottom.....

> If there is too many files you may try to open the directory as a
> port without buffering:
> 
> files: open/direct base
> while [not tail? files][
>     file: first files
>     if find file "editpost" [
>        if error? set/any 'err try [delete base/:file][
>           print mold disarm err
>        ]
>     ]
>     files: next files
> ]
> close files
> 
> -- 
> Best regards,
>  rebOldes -----------------[ http://oldes.multimedia.cz/ ]


; create some files to play with
repeat n 10 [save join %editpos [#"p" + to-integer (n / 2) n // 2] none]

; list the files
foreach file read %. [print file]

prin "Press enter key..." input ""

; selectively delete some of the files
base: %. ; current directory
dir-port: open/direct base
while [not tail? dir-port][
        file: first dir-port
        ?? file
        either find file "editpost" [
                either error? set/any 'err try [remove dir-port][
                        print mold disarm err
                        ; remove not successful, therefore must move to the next file
                        dir-port: next dir-port
                ][
                        ; successfully removed a file from dir-port
                        print "------- removed"
                ]
        ][
                ; didn't match selection, move to the next file
                dir-port: next dir-port
        ]
]
close dir-port

Anton.
-- 
To unsubscribe from this list, just send an email to
[EMAIL PROTECTED] with unsubscribe as the subject.

Reply via email to