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@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to