In pkgdb_remove(), use the return value from (*db->del), rather than

explicitly setting and checking errno.

Do some CSE in pkgdb_iter().

Use the db access functions in the proper manner.
This commit is contained in:
agc 2003-01-06 10:03:44 +00:00
parent b2b3b18bd8
commit 60c7c151cc
1 changed files with 11 additions and 20 deletions

View File

@ -1,8 +1,8 @@
/* $NetBSD: pkgdb.c,v 1.11 2003/01/05 21:49:59 agc Exp $ */ /* $NetBSD: pkgdb.c,v 1.12 2003/01/06 10:03:44 agc Exp $ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
#ifndef lint #ifndef lint
__RCSID("$NetBSD: pkgdb.c,v 1.11 2003/01/05 21:49:59 agc Exp $"); __RCSID("$NetBSD: pkgdb.c,v 1.12 2003/01/06 10:03:44 agc Exp $");
#endif #endif
/* /*
@ -85,7 +85,7 @@ void
pkgdb_close(void) pkgdb_close(void)
{ {
if (pkgdbp != NULL) { if (pkgdbp != NULL) {
(void) (pkgdbp->close) (pkgdbp); (void) (*pkgdbp->close) (pkgdbp);
pkgdbp = NULL; pkgdbp = NULL;
} }
} }
@ -113,7 +113,7 @@ pkgdb_store(const char *key, const char *val)
if (keyd.size > FILENAME_MAX || vald.size > FILENAME_MAX) if (keyd.size > FILENAME_MAX || vald.size > FILENAME_MAX)
return -1; return -1;
return (pkgdbp->put) (pkgdbp, &keyd, &vald, R_NOOVERWRITE); return (*pkgdbp->put) (pkgdbp, &keyd, &vald, R_NOOVERWRITE);
} }
/* /*
@ -137,7 +137,7 @@ pkgdb_retrieve(const char *key)
vald.data = (void *)NULL; vald.data = (void *)NULL;
vald.size = 0; vald.size = 0;
status = (pkgdbp->get) (pkgdbp, &keyd, &vald, 0); status = (*pkgdbp->get) (pkgdbp, &keyd, &vald, 0);
if (status) { if (status) {
vald.data = NULL; vald.data = NULL;
vald.size = 0; vald.size = 0;
@ -157,7 +157,6 @@ int
pkgdb_remove(const char *key) pkgdb_remove(const char *key)
{ {
DBT keyd; DBT keyd;
int status;
if (pkgdbp == NULL) if (pkgdbp == NULL)
return -1; return -1;
@ -167,15 +166,7 @@ pkgdb_remove(const char *key)
if (keyd.size > FILENAME_MAX) if (keyd.size > FILENAME_MAX)
return -1; return -1;
errno = 0; return (*pkgdbp->del) (pkgdbp, &keyd, 0);
status = (pkgdbp->del) (pkgdbp, &keyd, 0);
if (status) {
if (errno)
return -1; /* error */
else
return 1; /* key not present */
} else
return 0; /* everything fine */
} }
/* /*
@ -188,17 +179,17 @@ char *
pkgdb_iter(void) pkgdb_iter(void)
{ {
DBT key, val; DBT key, val;
int status; int type;
if (pkgdb_iter_flag == 0) { if (pkgdb_iter_flag == 0) {
pkgdb_iter_flag = 1; pkgdb_iter_flag = 1;
type = R_FIRST;
status = (pkgdbp->seq) (pkgdbp, &key, &val, R_FIRST);
} else } else
status = (pkgdbp->seq) (pkgdbp, &key, &val, R_NEXT); type = R_NEXT;
if (status) if ((*pkgdbp->seq)(pkgdbp, &key, &val, type) != 0) {
key.data = NULL; key.data = NULL;
}
return (char *) key.data; return (char *) key.data;
} }