summaryrefslogtreecommitdiffstats
path: root/sm/keydb.c
diff options
context:
space:
mode:
Diffstat (limited to 'sm/keydb.c')
-rw-r--r--sm/keydb.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/sm/keydb.c b/sm/keydb.c
index 564d449..10d878f 100644
--- a/sm/keydb.c
+++ b/sm/keydb.c
@@ -941,9 +941,10 @@ keydb_search (ctrl_t ctrl, KEYDB_HANDLE hd,
rc = lock_all (hd);
if (rc)
return rc;
- rc = -1;
+ rc = gpg_error (GPG_ERR_EOF);
- while (rc == -1 && hd->current >= 0 && hd->current < hd->used)
+ while (gpg_err_code (rc) == GPG_ERR_EOF
+ && hd->current >= 0 && hd->current < hd->used)
{
switch (hd->active[hd->current].type)
{
@@ -954,9 +955,11 @@ keydb_search (ctrl_t ctrl, KEYDB_HANDLE hd,
rc = keybox_search (hd->active[hd->current].u.kr, desc, ndesc,
KEYBOX_BLOBTYPE_X509,
NULL, &skipped);
+ if (rc == -1) /* Map legacy code. */
+ rc = gpg_error (GPG_ERR_EOF);
break;
}
- if (rc == -1 || gpg_err_code (rc) == GPG_ERR_EOF)
+ if (gpg_err_code (rc) == GPG_ERR_EOF)
{ /* EOF -> switch to next resource */
hd->current++;
}
@@ -964,6 +967,10 @@ keydb_search (ctrl_t ctrl, KEYDB_HANDLE hd,
hd->found = hd->current;
}
+ /* The NOTHING_FOUND error is triggered by a NEXT command. */
+ if (gpg_err_code (rc) == GPG_ERR_EOF
+ || gpg_err_code (rc) == GPG_ERR_NOTHING_FOUND)
+ rc = gpg_error (GPG_ERR_NOT_FOUND);
return rc;
}
@@ -1102,7 +1109,7 @@ keydb_store_cert (ctrl_t ctrl, ksba_cert_t cert, int ephemeral, int *existed)
return rc;
rc = keydb_search_fpr (ctrl, kh, fpr);
- if (rc != -1)
+ if (gpg_err_code (rc) != GPG_ERR_NOT_FOUND)
{
keydb_release (kh);
if (!rc)
@@ -1194,9 +1201,7 @@ keydb_set_cert_flags (ctrl_t ctrl, ksba_cert_t cert, int ephemeral,
err = keydb_search_fpr (ctrl, kh, fpr);
if (err)
{
- if (err == -1)
- err = gpg_error (GPG_ERR_NOT_FOUND);
- else
+ if (gpg_err_code (err) != gpg_error (GPG_ERR_NOT_FOUND))
log_error (_("problem re-searching certificate: %s\n"),
gpg_strerror (err));
keydb_release (kh);
@@ -1313,7 +1318,7 @@ keydb_clear_some_cert_flags (ctrl_t ctrl, strlist_t names)
}
}
}
- if (rc && rc != -1)
+ if (rc && gpg_err_code (rc) != GPG_ERR_NOT_FOUND)
log_error ("%s failed: %s\n", __func__, gpg_strerror (rc));
leave: