Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=4c05e1dfa3a2d6114416174c6f1970e6181565c1

commit 4c05e1dfa3a2d6114416174c6f1970e6181565c1
Author: Michel Hermier <[email protected]>
Date:   Tue Apr 29 13:58:13 2014 +0200

libpacman: More Package objectifications.

diff --git a/lib/libpacman/db/localdb.cpp b/lib/libpacman/db/localdb.cpp
index d7338b2..1d2c623 100644
--- a/lib/libpacman/db/localdb.cpp
+++ b/lib/libpacman/db/localdb.cpp
@@ -123,7 +123,7 @@ LocalDatabase::~LocalDatabase()
}

static
-Package *_pacman_localdb_pkg_new(Database *db, const struct dirent *dirent, 
unsigned int inforeq)
+LocalPackage *_pacman_localdb_pkg_new(Database *db, const struct dirent 
*dirent, unsigned int inforeq)
{
Package *pkg;
const char *dname;
@@ -132,8 +132,9 @@ Package *_pacman_localdb_pkg_new(Database *db, const struct 
dirent *dirent, unsi
ASSERT(dirent != NULL, return NULL);

dname = dirent->d_name;
-       if((pkg = _pacman_pkg_new_from_filename(dname, 0, db)) == NULL ||
-               db->read(pkg, inforeq) == -1) {
+       if((pkg = new LocalPackage(db)) == NULL ||
+                       !pkg->set_filename(dname, 0) ||
+                       db->read(pkg, inforeq) == -1) {
_pacman_log(PM_LOG_ERROR, _("invalid name for dabatase entry '%s'"), dname);
delete pkg;
pkg = NULL;
diff --git a/lib/libpacman/db/syncdb.cpp b/lib/libpacman/db/syncdb.cpp
index a7a6bd4..1e99dcb 100644
--- a/lib/libpacman/db/syncdb.cpp
+++ b/lib/libpacman/db/syncdb.cpp
@@ -124,7 +124,7 @@ SyncDatabase::~SyncDatabase()
}

static
-Package *_pacman_syncdb_pkg_new(Database *db, const struct archive_entry 
*entry, unsigned int inforeq)
+SyncPackage *_pacman_syncdb_pkg_new(Database *db, const struct archive_entry 
*entry, unsigned int inforeq)
{
Package *pkg;
const char *dname;
@@ -133,8 +133,9 @@ Package *_pacman_syncdb_pkg_new(Database *db, const struct 
archive_entry *entry,
ASSERT(entry != NULL, return NULL);

dname = archive_entry_pathname((struct archive_entry *)entry);
-       if((pkg = _pacman_pkg_new_from_filename(dname, 0, db)) == NULL ||
-               db->read(pkg, inforeq) == -1) {
+       if((pkg = new SyncPackage(db)) == NULL ||
+                       !pkg->set_filename(dname, 0) ||
+                       db->read(pkg, inforeq) == -1) {
_pacman_log(PM_LOG_ERROR, _("invalid name for dabatase entry '%s'"), dname);
delete pkg;
pkg = NULL;
diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp
index a0c4fe8..8a178a9 100644
--- a/lib/libpacman/package.cpp
+++ b/lib/libpacman/package.cpp
@@ -180,17 +180,9 @@ unsigned int _pacman_pkg_parm_to_flag(unsigned char parm)
}
*/

-Package *_pacman_pkg_new_from_filename(const char *filename, int witharch, 
Database *database)
+bool Package::set_filename(const char *filename, int witharch)
{
-       Package *pkg;
-
-       ASSERT(pkg = new Package(database), return NULL);
-
-       if(_pacman_pkg_splitname(filename, pkg->name, pkg->version, witharch) 
== -1) {
-               delete pkg;
-               pkg = NULL;
-       }
-       return pkg;
+       return Package::splitname(filename, name, version, witharch);
}

int _pacman_pkg_delete(Package *self)
@@ -292,13 +284,13 @@ Package *_pacman_pkg_isin(const char *needle, pmlist_t 
*haystack)
return(NULL);
}

-int _pacman_pkg_splitname(const char *target, char *name, char *version, int 
witharch)
+bool Package::splitname(const char *target, char *name, char *version, int 
witharch)
{
char *tmp;
char *p, *q;

if ((tmp = _pacman_basename(target)) == NULL) {
-               return -1;
+               return false;
}
/* trim file extension (if any) */
if((p = strstr(tmp, PM_EXT_PKG))) {
@@ -315,11 +307,11 @@ int _pacman_pkg_splitname(const char *target, char *name, 
char *version, int wit

for(q = --p; *q && *q != '-'; q--);
if(*q != '-' || q == tmp) {
-               return(-1);
+               return false;
}
for(p = --q; *p && *p != '-'; p--);
if(*p != '-' || p == tmp) {
-               return(-1);
+               return false;
}
if(version) {
STRNCPY(version, p+1, PKG_VERSION_LEN);
@@ -330,7 +322,7 @@ int _pacman_pkg_splitname(const char *target, char *name, 
char *version, int wit
STRNCPY(name, tmp, PKG_NAME_LEN);
}

-       return(0);
+       return true;
}

int Package::read(unsigned int flags)
diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h
index 216f3f7..1ede18d 100644
--- a/lib/libpacman/package.h
+++ b/lib/libpacman/package.h
@@ -105,6 +105,9 @@ public:
int filename(char *str, size_t size) const;
char *fileneedbackup(const char *file) const;

+       bool set_filename(const char *filename, int witharch);
+       static bool splitname(const char *target, char *name, char *version, 
int witharch);
+
libpacman::Database *database;

unsigned int flags;
@@ -148,13 +151,11 @@ public:

#define FREELISTPKGS(p) _FREELIST(p, _pacman_pkg_delete)

-libpacman::Package *_pacman_pkg_new_from_filename(const char *filename, int 
witharch, libpacman::Database *database = 0);
int _pacman_pkg_delete(libpacman::Package *self);

int _pacman_pkg_cmp(const void *p1, const void *p2);
int _pacman_pkg_is_valid(const libpacman::Package *pkg, const pmtrans_t *trans, 
const char *pkgfile);
libpacman::Package *_pacman_pkg_isin(const char *needle, pmlist_t *haystack);
-int _pacman_pkg_splitname(const char *target, char *name, char *version, int 
witharch);

void *_pacman_pkg_getinfo(libpacman::Package *pkg, unsigned char parm);
pmlist_t *_pacman_pkg_getowners(const char *filename);
diff --git a/lib/libpacman/package/packagecache.cpp 
b/lib/libpacman/package/packagecache.cpp
index e441787..090af3a 100644
--- a/lib/libpacman/package/packagecache.cpp
+++ b/lib/libpacman/package/packagecache.cpp
@@ -31,6 +31,8 @@
#include "package.h"
#include "handle.h"

+using namespace libpacman;
+
int _pacman_packagecache_clean(int level)
{
char dirpath[PATH_MAX];
@@ -70,7 +72,7 @@ int _pacman_packagecache_clean(int level)
if(strstr(str, PM_EXT_PKG ".part")) {
continue;
}
-                       if(_pacman_pkg_splitname(str, name, version, 1) != 0) {
+                       if(!Package::splitname(str, name, version, 1)) {
clean = _pacman_stringlist_append(clean, str);
continue;
}
@@ -84,7 +86,7 @@ int _pacman_packagecache_clean(int level)
if(strstr(s, PM_EXT_PKG ".part")) {
continue;
}
-                               if(_pacman_pkg_splitname(s, n, v, 1) != 0) {
+                               if(!Package::splitname(s, n, v, 1)) {
continue;
}
if(!strcmp(name, n)) {
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to