How to skip permission denied exceptions if iterate through directories?

Clas Onnebrink clas at gmx.net
Fri Jan 24 15:46:03 PST 2014


Hi,

Im a newbie in D and I have a small problem. Thats my method

  //*********************************
    private void searchAndRunAction() {
       foreach (entry;dirEntries(paramPath,
                                 paramSearchType,
                                 (paramSwitchRecursiveOn ? 
SpanMode.breadth : SpanMode.shallow)))
       {
          filesCount++;

          if (isDuplicate(entry.name)) {
             filesDupCount++;
             if (paramSwitchDeleteOn)
                remove(entry.name);
          }

          printProgress(entry.name);
       }
    }

I want work through a directory on my linux server but there are 
some
directories I have no permissions to access so I get following:

~/Projects/cltools/smdups $ source/smdups -r 
-p=/media/clas/Elements2 -e=*.*
std.file.FileException at ../../../../src/libphobos/src/std/file.d(2353): 
/media/clas/Elements2/lost+found: Permission denied
----------------
/home/clas/Projects/cltools/smdups/source/smdups() [0x43cb1d]
/home/clas/Projects/cltools/smdups/source/smdups() [0x43eab4]
/home/clas/Projects/cltools/smdups/source/smdups() [0x404768]
/home/clas/Projects/cltools/smdups/source/smdups() [0x404116]
/home/clas/Projects/cltools/smdups/source/smdups() [0x404d2d]
/home/clas/Projects/cltools/smdups/source/smdups() [0x41a71f]
/home/clas/Projects/cltools/smdups/source/smdups() [0x41ae7f]
/home/clas/Projects/cltools/smdups/source/smdups() [0x41b0b0]
/home/clas/Projects/cltools/smdups/source/smdups() [0x41ae7f]
/home/clas/Projects/cltools/smdups/source/smdups() [0x41b018]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) 
[0x7f66a29c8de5]
/home/clas/Projects/cltools/smdups/source/smdups() [0x403e63]
----------------
~/Projects/cltools/smdups $ 
std.file.FileException at ../../../../src/libphobos/src/std/file.d(2353): 
/media/clas/Elements2/lost+found: Permission denied
std.file.FileException at ../../../../src/libphobos/src/std/file.d(2353):: 
command not found

My question: How to skip any exceptions in dirEntries. I tried it 
with filter.
But no chance. Is there a way to do it like in C# with 
LINQ-Expressions?

greets

clas


More information about the Digitalmars-d-learn mailing list