]> git.g-eek.se Git - interimap.git/commitdiff
Ignore mailboxes with '\NoSelect' attribute.
authorGuilhem Moulin <guilhem@fripost.org>
Wed, 29 Jul 2015 22:57:14 +0000 (00:57 +0200)
committerGuilhem Moulin <guilhem@fripost.org>
Wed, 29 Jul 2015 23:27:04 +0000 (01:27 +0200)
imapsync

index ae6bc79a9c5fb67406e311b62e22e1239b64771e..9bcc7b5d1e75e81620c6ba7ef23af62ecacddde5 100755 (executable)
--- a/imapsync
+++ b/imapsync
@@ -280,15 +280,15 @@ sub check_delim($) {
 # Return true if $mailbox exists on $name
 sub mbx_exists($$) {
     my ($name, $mailbox) = @_;
-    my $flags = $IMAP->{$name}->{mailboxes}->{$mailbox};
-    return (defined $flags and !grep {lc $_ eq lc '\NonExistent'} @$flags) ? 1 : 0;
+    my $attrs = $IMAP->{$name}->{mailboxes}->{$mailbox};
+    return (defined $attrs and !grep {lc $_ eq lc '\NonExistent'} @$attrs) ? 1 : 0;
 }
 
 # Return true if $mailbox is subscribed to on $name
 sub mbx_subscribed($$) {
     my ($name, $mailbox) = @_;
-    my $flags = $IMAP->{$name}->{mailboxes}->{$mailbox};
-    return (defined $flags and grep {lc $_ eq lc '\Subscribed'} @$flags) ? 1 : 0;
+    my $attrs = $IMAP->{$name}->{mailboxes}->{$mailbox};
+    return (defined $attrs and grep {lc $_ eq lc '\Subscribed'} @$attrs) ? 1 : 0;
 }
 
 
@@ -413,8 +413,14 @@ my @MAILBOXES;
         my ($lExists, $rExists) = map {mbx_exists($_,$mailbox)} qw/local remote/;
         next unless $lExists or $rExists;
 
+        my @attrs = do {
+            my %attrs = map {$_ => 1} (@{$IMAP->{local}->{mailboxes}->{$mailbox}  // []},
+                                       @{$IMAP->{remote}->{mailboxes}->{$mailbox} // []});
+            keys %attrs;
+        };
+
         check_delim($mailbox); # ensure that the delimiter match
-        push @MAILBOXES, $mailbox;
+        push @MAILBOXES, $mailbox unless grep {lc $_ eq lc '\NoSelect'} @attrs;
 
         $STH_GET_INDEX->execute($mailbox);
         my ($idx,$subscribed) = $STH_GET_INDEX->fetchrow_array();