diff options
Diffstat (limited to '')
-rw-r--r-- | sm/keydb.c | 14 | ||||
-rw-r--r-- | sm/keydb.h | 2 |
2 files changed, 9 insertions, 7 deletions
diff --git a/sm/keydb.c b/sm/keydb.c index 0ef3c8f42..f5705cb45 100644 --- a/sm/keydb.c +++ b/sm/keydb.c @@ -928,10 +928,11 @@ keydb_rebuild_caches (void) /* * Start the next search on this handle right at the beginning */ -int +gpg_error_t keydb_search_reset (KEYDB_HANDLE hd) { - int i, rc = 0; + int i; + gpg_error_t rc = 0; if (!hd) return gpg_error (GPG_ERR_INV_VALUE); @@ -950,8 +951,7 @@ keydb_search_reset (KEYDB_HANDLE hd) break; } } - return rc; /* fixme: we need to map error codes or share them with - all modules*/ + return rc; } /* @@ -980,8 +980,10 @@ keydb_search (KEYDB_HANDLE hd, KEYDB_SEARCH_DESC *desc, size_t ndesc) NULL, &skipped); break; } - if (rc == -1) /* EOF -> switch to next resource */ - hd->current++; + if (rc == -1 || gpg_err_code (rc) == GPG_ERR_EOF) + { /* EOF -> switch to next resource */ + hd->current++; + } else if (!rc) hd->found = hd->current; } diff --git a/sm/keydb.h b/sm/keydb.h index 03de1c69e..3c0f2d6ee 100644 --- a/sm/keydb.h +++ b/sm/keydb.h @@ -54,7 +54,7 @@ int keydb_delete (KEYDB_HANDLE hd, int unlock); int keydb_locate_writable (KEYDB_HANDLE hd, const char *reserved); void keydb_rebuild_caches (void); -int keydb_search_reset (KEYDB_HANDLE hd); +gpg_error_t keydb_search_reset (KEYDB_HANDLE hd); int keydb_search (KEYDB_HANDLE hd, KEYDB_SEARCH_DESC *desc, size_t ndesc); int keydb_search_first (KEYDB_HANDLE hd); int keydb_search_next (KEYDB_HANDLE hd); |