Index: trunk/lib/MP3/Find/DB.pm
===================================================================
--- trunk/lib/MP3/Find/DB.pm	(revision 10)
+++ trunk/lib/MP3/Find/DB.pm	(revision 12)
@@ -123,4 +123,5 @@
         warn "Multiple records for $$mp3{FILENAME}\n" if @$records > 1;
         
+        #TODO: maybe print status updates somewhere else?
         if (@$records == 0) {
             $insert_sth->execute(map { $mp3->{$$_[0]} } @COLUMNS);
@@ -138,4 +139,5 @@
     # (see http://rt.cpan.org/Ticket/Display.html?id=9643#txn-120724)
     foreach ($mtime_sth, $insert_sth, $update_sth) {
+        $_->{RaiseError} = 0;  # don't die on error
         $_->{Active} = 1;
         $_->finish;
Index: trunk/lib/MP3/Find/Filesystem.pm
===================================================================
--- trunk/lib/MP3/Find/Filesystem.pm	(revision 10)
+++ trunk/lib/MP3/Find/Filesystem.pm	(revision 12)
@@ -30,7 +30,17 @@
     }
     
+    if ($$options{exclude_path}) {
+        my $ref = ref $$options{exclude_path};
+        if ($ref eq 'ARRAY') {
+            $$options{exclude_path} = '(' . join('|', @{ $$options{exclude_path} }) . ')';
+        }
+        unless ($ref eq 'Regexp') {
+            $$options{exclude_path} = qr[$$options{exclude_path}];
+        }
+    }
+    
     # run the actual find
     my @results;
-    find(sub { match_mp3($File::Find::name, $query, \@results) }, $_) foreach @$dirs;
+    find(sub { match_mp3($File::Find::name, $query, \@results, $options) }, $_) foreach @$dirs;
     
     # sort the results
@@ -54,7 +64,11 @@
 
 sub match_mp3 {
-    my ($filename, $query, $results) = @_;
+    my ($filename, $query, $results, $options) = @_;
     
     return unless $filename =~ m{[^/]\.mp3$};
+    if ($$options{exclude_path}) {
+        return if $filename =~ $$options{exclude_path};
+    }
+    
     my $mp3 = {
         FILENAME => $filename,
@@ -103,6 +117,10 @@
 =head2 Special Options
 
-There are no special options for B<MP3::Find::Filesystem>. See
-L<MP3::Find> for the description of the general options.
+=over
+
+=item C<exclude_path>
+
+Scalar or arrayref; any file whose name matches any of these paths
+will be skipped.
 
 =head1 SEE ALSO
