kbx: Change return type of search functions to gpg_error_t.
authorWerner Koch <wk@gnupg.org>
Wed, 13 Jan 2016 14:08:42 +0000 (15:08 +0100)
committerWerner Koch <wk@gnupg.org>
Wed, 13 Jan 2016 14:08:42 +0000 (15:08 +0100)
* kbx/keybox-search.c (keybox_search_reset): Change return type to
gpg_error_t.
(keybox_search): Ditto.  Also handle GPG_ERR_EOF.
* sm/keydb.c (keydb_search_reset): Ditto.

Signed-off-by: Werner Koch <wk@gnupg.org>
kbx/keybox-search.c
kbx/keybox.h
sm/keydb.c
sm/keydb.h

index 1edb4ae..681d5c0 100644 (file)
@@ -732,7 +732,7 @@ release_sn_array (struct sn_array_s *array, size_t size)
 
 */
 
-int
+gpg_error_t
 keybox_search_reset (KEYBOX_HANDLE hd)
 {
   if (!hd)
@@ -760,12 +760,12 @@ keybox_search_reset (KEYBOX_HANDLE hd)
    If WANT_BLOBTYPE is not 0 only blobs of this type are considered.
    The value at R_SKIPPED is updated by the number of skipped long
    records (counts PGP and X.509). */
-int
+gpg_error_t
 keybox_search (KEYBOX_HANDLE hd, KEYBOX_SEARCH_DESC *desc, size_t ndesc,
                keybox_blobtype_t want_blobtype,
                size_t *r_descindex, unsigned long *r_skipped)
 {
-  int rc;
+  gpg_error_t rc;
   size_t n;
   int need_words, any_skip;
   KEYBOXBLOB blob = NULL;
@@ -1021,7 +1021,7 @@ keybox_search (KEYBOX_HANDLE hd, KEYBOX_SEARCH_DESC *desc, size_t ndesc,
       hd->found.pk_no = pk_no;
       hd->found.uid_no = uid_no;
     }
-  else if (rc == -1)
+  else if (rc == -1 || gpg_err_code (rc) == GPG_ERR_EOF)
     {
       _keybox_release_blob (blob);
       hd->eof = 1;
index 9f91c53..3c60971 100644 (file)
@@ -91,10 +91,11 @@ int keybox_get_cert (KEYBOX_HANDLE hd, ksba_cert_t *ret_cert);
 #endif /*KEYBOX_WITH_X509*/
 int keybox_get_flags (KEYBOX_HANDLE hd, int what, int idx, unsigned int *value);
 
-int keybox_search_reset (KEYBOX_HANDLE hd);
-int keybox_search (KEYBOX_HANDLE hd, KEYBOX_SEARCH_DESC *desc, size_t ndesc,
-                   keybox_blobtype_t want_blobtype,
-                   size_t *r_descindex, unsigned long *r_skipped);
+gpg_error_t keybox_search_reset (KEYBOX_HANDLE hd);
+gpg_error_t keybox_search (KEYBOX_HANDLE hd,
+                           KEYBOX_SEARCH_DESC *desc, size_t ndesc,
+                           keybox_blobtype_t want_blobtype,
+                           size_t *r_descindex, unsigned long *r_skipped);
 
 off_t keybox_offset (KEYBOX_HANDLE hd);
 gpg_error_t keybox_seek (KEYBOX_HANDLE hd, off_t offset);
index 0ef3c8f..f5705cb 100644 (file)
@@ -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;
     }
index 03de1c6..3c0f2d6 100644 (file)
@@ -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);