Remove indirection on get_name and get_version operations

For a package to be loaded from any of our backends, these two fields
are always required upfront. Due to this fact, we don't need them to be
backend-specific operations and can just refer to the field directly.

Additionally, our static (and thus private) cache package accessors had
a NULL check on pkg before returning the relevant field. Eliminate this
since they only way they are ever called is via the packages attached
callback struct, which would have caused the NULL pointer dereference in
the first place.

Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
Dan McGee 2011-03-28 12:54:47 -05:00
parent dd8cf0c12d
commit dff2d916ba
3 changed files with 2 additions and 27 deletions

View File

@ -52,7 +52,6 @@
do { \
ALPM_LOG_FUNC; \
ASSERT(handle != NULL, return (errret)); \
ASSERT(pkg != NULL, return (errret)); \
if(pkg->origin != PKG_FROM_FILE && !(pkg->infolevel & info)) { \
_alpm_local_db_read(pkg->origin_data.db, pkg, info); \
} \
@ -71,18 +70,6 @@ static const char *_cache_get_filename(pmpkg_t *pkg)
return pkg->filename;
}
static const char *_cache_get_name(pmpkg_t *pkg)
{
ASSERT(pkg != NULL, return NULL);
return pkg->name;
}
static const char *_cache_get_version(pmpkg_t *pkg)
{
ASSERT(pkg != NULL, return NULL);
return pkg->version;
}
static const char *_cache_get_desc(pmpkg_t *pkg)
{
LAZY_LOAD(INFRQ_DESC, NULL);
@ -161,7 +148,6 @@ static int _cache_has_scriptlet(pmpkg_t *pkg)
/* Sanity checks */
ASSERT(handle != NULL, return -1);
ASSERT(pkg != NULL, return -1);
if(!(pkg->infolevel & INFRQ_SCRIPTLET)) {
_alpm_local_db_read(pkg->origin_data.db, pkg, INFRQ_SCRIPTLET);
@ -211,7 +197,6 @@ static alpm_list_t *_cache_get_files(pmpkg_t *pkg)
/* Sanity checks */
ASSERT(handle != NULL, return NULL);
ASSERT(pkg != NULL, return NULL);
if(pkg->origin == PKG_FROM_LOCALDB
&& !(pkg->infolevel & INFRQ_FILES)) {
@ -226,7 +211,6 @@ static alpm_list_t *_cache_get_backup(pmpkg_t *pkg)
/* Sanity checks */
ASSERT(handle != NULL, return NULL);
ASSERT(pkg != NULL, return NULL);
if(pkg->origin == PKG_FROM_LOCALDB
&& !(pkg->infolevel & INFRQ_FILES)) {
@ -247,7 +231,6 @@ static void *_cache_changelog_open(pmpkg_t *pkg)
/* Sanity checks */
ASSERT(handle != NULL, return NULL);
ASSERT(pkg != NULL, return NULL);
char clfile[PATH_MAX];
snprintf(clfile, PATH_MAX, "%s/%s/%s-%s/changelog",
@ -299,8 +282,6 @@ static int _cache_changelog_close(const pmpkg_t *pkg, void *fp)
*/
static struct pkg_operations local_pkg_ops = {
.get_filename = _cache_get_filename,
.get_name = _cache_get_name,
.get_version = _cache_get_version,
.get_desc = _cache_get_desc,
.get_url = _cache_get_url,
.get_builddate = _cache_get_builddate,

View File

@ -99,8 +99,6 @@ int SYMEXPORT alpm_pkg_checkmd5sum(pmpkg_t *pkg)
* a lazy-load cache. However, the defaults will work just fine for fully-
* populated package structures. */
static const char *_pkg_get_filename(pmpkg_t *pkg) { return pkg->filename; }
static const char *_pkg_get_name(pmpkg_t *pkg) { return pkg->name; }
static const char *_pkg_get_version(pmpkg_t *pkg) { return pkg->version; }
static const char *_pkg_get_desc(pmpkg_t *pkg) { return pkg->desc; }
static const char *_pkg_get_url(pmpkg_t *pkg) { return pkg->url; }
static time_t _pkg_get_builddate(pmpkg_t *pkg) { return pkg->builddate; }
@ -133,8 +131,6 @@ static int _pkg_changelog_close(const pmpkg_t *pkg, void *fp) { return EOF; }
*/
struct pkg_operations default_pkg_ops = {
.get_filename = _pkg_get_filename,
.get_name = _pkg_get_name,
.get_version = _pkg_get_version,
.get_desc = _pkg_get_desc,
.get_url = _pkg_get_url,
.get_builddate = _pkg_get_builddate,
@ -173,12 +169,12 @@ const char SYMEXPORT *alpm_pkg_get_filename(pmpkg_t *pkg)
const char SYMEXPORT *alpm_pkg_get_name(pmpkg_t *pkg)
{
return pkg->ops->get_name(pkg);
return pkg->name;
}
const char SYMEXPORT *alpm_pkg_get_version(pmpkg_t *pkg)
{
return pkg->ops->get_version(pkg);
return pkg->version;
}
const char SYMEXPORT *alpm_pkg_get_desc(pmpkg_t *pkg)

View File

@ -46,8 +46,6 @@ typedef enum _pmpkgfrom_t {
*/
struct pkg_operations {
const char *(*get_filename) (pmpkg_t *);
const char *(*get_name) (pmpkg_t *);
const char *(*get_version) (pmpkg_t *);
const char *(*get_desc) (pmpkg_t *);
const char *(*get_url) (pmpkg_t *);
time_t (*get_builddate) (pmpkg_t *);