File Walker

JB sundown at pacifier.com
Tue Sep 30 19:14:34 EDT 2014


I could not get it to work.

Here is what i did.  At the top
I put the following line,

 put field "Folder" into whatFolder

at the bottom I tried both of these lines
and nothing was put in the field
   put tDirsToDo into field "list"
   put tDirList into field “list”

then I tried this line

put "tDirList" into field “list”

and it put the word tDirList in the vld
as would be expected.

This was accessing a folder with no
sub folders and only a few hundred
files.  All of the other file Lister even
the recursive had no problems with
this folder.  What am I supposed to be
putting in the field?

John Balgenorth




On Sep 30, 2014, at 3:45 PM, Alex Tweedly <alex at tweedly.net> wrote:

> On 30/09/2014 21:32, JB wrote:
>> And what do you mean by folders that cannot
>> be accessed?  Since when are they not able
>> to be accessed?  I access them all of the time.
>> I am a typical user who accesses files & folders
>> everyday the same way.
> 
> Yes, most folders and files can be accessed. But there are *some* folders that cannot be accessed, and because File Lister tries to access every folder within the starting folder, it will find those few that cannot be accessed - even though they may never be encountered any other time.
> 
> There are a variety of reasons for folders being inaccessible.
> 
> 1. Permissions.
> Try this (in Terminal or other shell).
> mkdir sub
> cd sub
> pwd
>     --- it properly shows you as being in ....../sub
> cd ..
> chmod 000 sub    (i.e. make the folder inaccessible)
> cd sub
>   -- gives an error message of permission denied
> 
> Similarly, if you no wtry to access in Finder, it will just not "go" into that directory.
> And if you run the original "File Lister 2", it will wrongly report a recursion limit reached; you need a safety check - whether the one I gave or another equivalent - to be added.
> 
> 
> 
> 2. "Not really a folder"
> 
> There are various pseudo-folders within application bundles that aren't really folders. You would be unlikely to encounter these in Finder - it doesn't even show the top level of folders with "Applications". Even in Terminal, they are hidden - but they are there, and are seen by File Lister - and in some cases they are inaccessible, so caused the apparent "recursion" error report.
> 
> 3. This is a Livecode issue !!!   Non-ASCII characters in filenames
> I have some albums in my iTunes library by foreign artists (Icelandic), who have characters from the extended character set in their names. In LC, those don't come out right - so they also fail with the (incorrect) recursion report. My earlier suggested addition to the code will avoid this becoming a problem - though you do still have an issue.  I suspect that with LC 7.0 this will cease to be a problem - though it might still need a "URLEncode" or two to fix it completely.
> 
> 4. Weird folders (:-)
> 
> Inside my iBooks library there are a number of weird folders - they show up looking like garbage names in LC, and also in Finder and in Terminal. They have permissions set to allow access - but in fact they don't - to Finder and terminal as well as to LC.
>> 
>> So you are telling me they cannot be accessed
>> and I encourage you to put a program on the
>> market and explain that to those who access
>> their folders every day and your program does
>> not allow them to access it.
> Remember - most if not all of these 'folders' aren't really folders, so don't contain users' files, don't contain user accessible data, and won't be seen by users.
>> They will read your response and quit your program
>> and continue to access their folders as usual and you
>> will not hear from them again because they do not want
>> to spend their time explaining to you they are able to
>> access their folders without your program.
> No, they won't - because (with the modified code) they will be able to see all (*) the files and folders they can see in Finder.
> (*) with the exception of the Unicode issues mentioned in 3 above.
>> 
>> If it causes me problems it will cause someone else
>> problems and I am not going to explain to them do
>> not use those folders with my program or block it
>> and give them a dialog stating it cannot be accessed.
>> 
>> I liked the idea of recursive but it does not work good
>> for me.
> It's not "recursive" that's the problem - my non-recursive version had exactly the same issue (in its first version). Attached below is an updated version with the 'safety check' that should have been there in the first place - it now builds a list of "inaccessible' folders in global variable 'gFailedFolders' as well as the list of files and folders.
> (btw - I also changed one "after" to "before" - a marginal extra cost in LC processing, but gains a large benefit in file access locality).
> 
> 
> 
> 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
>      if the directory <> whatfolder then
>         put whatfolder &CR after gFailedFolders
>         if the number of lines in tDirsToDo = 0 then exit repeat
>         next repeat
>      end if
>      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 before 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 at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
> 




More information about the use-livecode mailing list