I was sure sort/compare could be used, so I tried again and came up
with this...

dir-sort: func [a b][
    either any [
        all [#"/" = last a #"/" = last b]
        all [#"/" <> last a #"/" <> last b]
    ][
        a < b
    ][
        #"/" = last a ; Change to b to place files first.
    ]
]

; To test...

dir: %./ ; Current directory.
result: sort/compare read dir :dir-sort

It'll fall over if there's a file without any characters to its name,
(is that likely to exist on any systems?), but otherwise it seems to
work.

Carl.


On 27-Sep-02, Anton wrote:

> You could also do it like this,
> which does not use dir? and does not
> use any extra functions:

>     dir: %./ ; current directory
>     result: copy []
>     dirs: copy []
>     files: copy []
>     foreach file read dir [
>         append either #"/" = last file [dirs][files] file
>     ]
>     result: compose [(sort dirs) (sort files)]

> I have found it handy to have the files and dirs
> in separate blocks for other processing, so that
> may make this way preferable.

> Anton.

>> << How do I get the code, listing: sort read %., to sort
>> alphabetically by directories first then by filenames? So, the
>> result looks like this: [%dir1/ %dir2/ %dir3/ %file1 %file2 %file3]
>>>> 

-- 
Carl Read

-- 
To unsubscribe from this list, please send an email to
[EMAIL PROTECTED] with "unsubscribe" in the 
subject, without the quotes.

Reply via email to