summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2021-03-11 13:51:53 +0100
committerJustus Winter <justus@sequoia-pgp.org>2021-03-11 13:51:53 +0100
commit0ed7e4178c462946774d62016338c9f623aeab2e (patch)
tree506367176b97abc62bb1063630833a6b6e6a0751
parent17f87e4cdf35307683734f2a2be557a58be94b08 (diff)
sq: Fix filtering certificates.
-rw-r--r--sq/src/commands/keyring.rs10
1 files changed, 7 insertions, 3 deletions
diff --git a/sq/src/commands/keyring.rs b/sq/src/commands/keyring.rs
index c1d8ff87..04ae90b9 100644
--- a/sq/src/commands/keyring.rs
+++ b/sq/src/commands/keyring.rs
@@ -77,11 +77,15 @@ pub fn dispatch(config: Config, m: &clap::ArgMatches) -> Result<()> {
let key_predicate = |_key: &Key<_, _>| false;
let filter_fn = |c: Cert| -> Option<Cert> {
- if ! (c.userids().any(|c| uid_predicate(&c))
- || c.user_attributes().any(|c| ua_predicate(&c))
- || c.keys().subkeys().any(|c| key_predicate(&c))) {
+ if ! (any_uid_predicates
+ || any_ua_predicates
+ || any_key_predicates) {
// If there are no filters, pass it through.
Some(c)
+ } else if ! (c.userids().any(|c| uid_predicate(&c))
+ || c.user_attributes().any(|c| ua_predicate(&c))
+ || c.keys().subkeys().any(|c| key_predicate(&c))) {
+ None
} else if m.is_present("prune-certs") {
let c = c
.retain_userids(|c| {