Re: Walk_Dir and a modified returned order
On Mon, 07 Mar 2005 06:11:33 -0800, Jay <guest at RapidEuphoria.com>
wrote:
>Why is my_dir set to -2 by default?
An illegal value that walk_dir can explicitly test for, which is not
likely to be confused with a -1 (undefined) error from routine_id.
>
>To point to my own custom dir() do I have to right a function that mimics
>the regular dir() and then add coding to change the order of the returned
> sequence? If so I'm afraid that's way out beyond my limits.
>
>What I want is to have the sorted order of the directory I read com back
>with the oldest file first and then progressively the next newest and so on.
OK, here is a complete example:
include sort.e
include file.e
function by_date(sequence file1, sequence file2)
-- compare two files by date, for custom_sort
return compare(file1[D_YEAR..D_SECOND],file2[D_YEAR..D_SECOND])
end function
function dir_oldest_first(sequence path)
-- Custom directory sorting function for walk_dir().
object d
d = dir(path)
if atom(d) then return d end if
return custom_sort(routine_id("by_date"),d)
end function
my_dir = routine_id("dir_oldest_first") -- for walk_dir
function process(sequence path, sequence dirinfo)
path = dirinfo[1..1]&reverse(dirinfo[4..6])&dirinfo[7..9]
printf(1,"%s %02d/%02d/%04d %02d:%02d:%02d\n",path)
return 0 -- carry on
end function
if walk_dir(".",routine_id("process"),0) then
puts(1,"walk_dir error")
end if
Regards,
Pete
|
Not Categorized, Please Help
|
|