I mentioned before that it's not too hard to make an iterative using dirent,
especially if you just call it directly yourself. You can see how it works by
doing:
IN: scratchpad \ (directory-entries) see
Nothing technical prevents it, only that right now the iteration is hidden
behind that word where it produces a list of entries.
In normal use, where a single directory doesn't have that many entries, this is
not a performance issue. But, like anything with software, if you have a
different use case we can adapt the code to it.
> On Sep 30, 2015, at 1:59 PM, HP wei <[email protected]> wrote:
>
> I see. That is how factor distinguishes stat and lstat :) Thanks.
>
> Now I can try out the process on a folder with many subfolders and
> with millions of files.
> [ I wish in factor, there is a facility to make an iterator type of object
> out of dirent. ]
>
> --HP
>
>
>> On Wed, Sep 30, 2015 at 4:47 PM, Doug Coleman <[email protected]> wrote:
>> You can do link-info instead.
>>
>>
>>> On Wed, Sep 30, 2015, 13:42 HP wei <[email protected]> wrote:
>>> While trying out the word each-file, I bumped into presumably
>>> a bug in
>>>
>>> file-info ( path -- info )
>>>
>>> Under linux,
>>> if the path is a softlink (symbolic link),
>>>
>>> path file-info symbolic-link?
>>>
>>> gives 'f' ---- and this is wrong.
>>>
>>> I looked at the implementation of file-info
>>> and saw that it calls file-status which in turn calls
>>> stat-func.
>>> The latter calls __xstat64 ---- this seems to be related to stat function.
>>>
>>> Under linux, there are two functions that returns the stat-structure.
>>> One is stat, the other lstat.
>>> If a path is a symbolic link,
>>> It is lstat that will return info about the link.
>>>
>>> -------------------------------------------
>>>
>>> As a result of this 'bug', the following (as suggested by John the other
>>> day)
>>> could not do what is intended (to get the size of a folder).
>>>
>>> 0 a_path_to_folder t [ file-info dup symbolic-link? [ drop ] [ size>> + ]
>>> if ] each-file
>>>
>>>
>>> --HP Wei
>>>
>>> ------------------------------------------------------------------------------
>>> _______________________________________________
>>> Factor-talk mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/factor-talk
>>
>> ------------------------------------------------------------------------------
>>
>> _______________________________________________
>> Factor-talk mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/factor-talk
>
> ------------------------------------------------------------------------------
> _______________________________________________
> Factor-talk mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/factor-talk
------------------------------------------------------------------------------
_______________________________________________
Factor-talk mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/factor-talk