OK, that really does sound like you are encountering a problem with the
combination of the code and your file system - not an inherent limit.
"File Lister 2" should only recurse as deeply as your file system (i.e.
it enters a recursion for each level of subfolder - but then exits it
again), so to see a "recursion limit" error suggests that it is failing,
rather than hitting an actual limit.
Following is a wild guess, and a request / suggestion for an
investigation attempt.
The start of the code in question (from
http://lessons.runrev.com/m/4071/l/17080-files-and-folders-part-2 ) is
*function*listFiles pFolder, pRecurse
* local*tTotalFiles, tCurrentFiles, tFolders
* set*thedefaultFoldertopFolder
* put*filteredFiles()intotCurrentFiles
Now that is risky code !!
If the "set the defaultfolder to pFolder" fails, then you remain in the
same directory, and redo the same work, and get stuck in infinite
recursion. This could (maybe??) happen because of permission failures,
or maybe folder naming issues, or something else I haven't thought of :-)
So I would change it by adding as follows
set the defaultfolder to pFolder
if the defaultfolder <> pFolder then
put "Failure :" && the defaultfolder && "::" && pFolder &CR after msg
exit listFiles
end if
...
and see what that does.
Thanks
-- Alex.**
On 30/09/2014 00:47, JB wrote:
That is a good question. The way I found out it was limited is
I was using the code supplied in the File Lister 2 tutorial. I was
accessing a folder with a lot of files and subfolders but I do not
think it had 400,000 files and sub folders in it so I am thinking it
is limited to 400,000 recursive attempts. What happened is the
script quit while trying to access the files and sub folders and a
dialog appeared and said recursive is limited to 400,000. That
is worse than being limited to 400,000 files and folders.
I think we need to have the NSFIleManager.
I have Xcode examples and I was going to try to write an extension
since Trevor provided the link for Objective-C externals but I have
Mavericks and the latest version of Xcode. I also have xcide 2.4 on
this computer and it runs but when I try to compile using the code
from Trevor it says something about I can’t use it with this version
of OS X or whatever I do not remember, any way it makes me think
I need to set up my old system to compile unless someone knows
how to make it work with the latest Xcode and then I will probably
need all of the older SDK software too. Since I really am not very
familiar with any of the above yet I am working on other parts of
my program but I will eventually work on putting it all together.
With the NSFIleManager I would think we would be able to access
directories as fast as Apple since they wrote the code. It looks like
it will be pretty easy once I figure a few thing out and write a couple
of sample externals with Objective-C. There is not much to using
the NSFileManager itself from what I have seen.
John Balgenorth
On Sep 29, 2014, at 4:10 PM, Alex Tweedly <a...@tweedly.net> wrote:
"recursive is limited to 400,000" ? Is that 400,000 files, or folders, or ??
The File Walker link (i.e.
http://www.sonsothunder.com/devres/livecode/tips/file007.htm ) should work - it
would be very interesting to find out why it doesn't (maybe URL encoding of the
file names??)
However, it too is recursive. Here's a non-recursive version of it, which is
somewhat faster in some cases: (be careful testing this - you need to run it
repeatedly to avoid file-system caching effects).
on dirWalk whatFolder
local temp, tCount, tDirList, tDirsToDo
set the itemDel to "/"
set the directory to whatFolder
put whatfolder &CR into tDirsToDo
repeat forever
put line 1 of tDirsToDo into whatFolder
set the directory to whatFolder
delete line 1 of tDirsToDo
put the files into temp
add the number of lines of temp to tCount
sort temp
repeat for each line x in temp
put whatFolder & "/" & x & cr after gHierList
end repeat
put the folders into tDirList
sort tDirList
delete line 1 of tDirList
repeat for each line x in tDirList
put whatFolder & "/" & x & CR after tDirsToDo
end repeat
if the number of lines in tDirsToDo = 0 then exit repeat
end repeat
end dirWalk
-- Alex.
_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode