Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=112a29de8f6aef05dd311053d322a6c6a8e9bf8c
commit 112a29de8f6aef05dd311053d322a6c6a8e9bf8c Author: Michel Hermier <[email protected]> Date: Mon Apr 28 08:25:26 2014 +0200 libpacman: s/_pacman_pkg_dup/libpacman::Package::dup/ diff --git a/lib/libpacman/cache.cpp b/lib/libpacman/cache.cpp index 15b7fe4..d548a78 100644 --- a/lib/libpacman/cache.cpp +++ b/lib/libpacman/cache.cpp @@ -116,7 +116,7 @@ int _pacman_db_add_pkgincache(Database *db, Package *pkg) return(-1); } - newpkg = _pacman_pkg_dup(pkg); + newpkg = pkg->dup(); if(newpkg == NULL) { return(-1); } diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp index ead6a11..d881f82 100644 --- a/lib/libpacman/package.cpp +++ b/lib/libpacman/package.cpp @@ -62,10 +62,54 @@ Package::Package(const char *name, const char *version) } } +Package::Package(const libpacman::Package &other) +{ + database = other.database; + STRNCPY(name, other.name, PKG_NAME_LEN); + STRNCPY(version, other.version, PKG_VERSION_LEN); + STRNCPY(desc, other.desc, PKG_DESC_LEN); + STRNCPY(url, other.url, PKG_URL_LEN); + STRNCPY(builddate, other.builddate, PKG_DATE_LEN); + STRNCPY(buildtype, other.buildtype, PKG_DATE_LEN); + STRNCPY(installdate, other.installdate, PKG_DATE_LEN); + STRNCPY(packager, other.packager, PKG_PACKAGER_LEN); + STRNCPY(md5sum, other.md5sum, PKG_MD5SUM_LEN); + STRNCPY(sha1sum, other.sha1sum, PKG_SHA1SUM_LEN); + STRNCPY(arch, other.arch, PKG_ARCH_LEN); + size = other.size; + usize = other.usize; + force = other.force; + stick = other.stick; + scriptlet = other.scriptlet; + reason = other.reason; + license = _pacman_list_strdup(other.license); + desc_localized = _pacman_list_strdup(other.desc_localized); + requiredby = _pacman_list_strdup(other.requiredby); + conflicts = _pacman_list_strdup(other.conflicts); + files = _pacman_list_strdup(other.files); + backup = _pacman_list_strdup(other.backup); + depends = _pacman_list_strdup(other.depends); + removes = _pacman_list_strdup(other.removes); + groups = _pacman_list_strdup(other.groups); + provides = _pacman_list_strdup(other.provides); + replaces = _pacman_list_strdup(other.replaces); + triggers = _pacman_list_strdup(other.triggers); + + /* internal */ + origin = other.origin; + data = (origin == PKG_FROM_FILE) ? strdup(other.data) : other.data; + infolevel = other.infolevel; +} + Package::~Package() { } +libpacman::Package *Package::dup() const +{ + return new Package(*this); +} + /* static unsigned int _pacman_pkg_parm_to_flag(unsigned char parm) @@ -132,52 +176,6 @@ Package *_pacman_pkg_new_from_filename(const char *filename, int witharch) return pkg; } -Package *_pacman_pkg_dup(Package *pkg) -{ - Package* newpkg = _pacman_malloc(sizeof(Package)); - - if(newpkg == NULL) { - return(NULL); - } - - STRNCPY(newpkg->name, pkg->name, PKG_NAME_LEN); - STRNCPY(newpkg->version, pkg->version, PKG_VERSION_LEN); - STRNCPY(newpkg->desc, pkg->desc, PKG_DESC_LEN); - STRNCPY(newpkg->url, pkg->url, PKG_URL_LEN); - STRNCPY(newpkg->builddate, pkg->builddate, PKG_DATE_LEN); - STRNCPY(newpkg->buildtype, pkg->buildtype, PKG_DATE_LEN); - STRNCPY(newpkg->installdate, pkg->installdate, PKG_DATE_LEN); - STRNCPY(newpkg->packager, pkg->packager, PKG_PACKAGER_LEN); - STRNCPY(newpkg->md5sum, pkg->md5sum, PKG_MD5SUM_LEN); - STRNCPY(newpkg->sha1sum, pkg->sha1sum, PKG_SHA1SUM_LEN); - STRNCPY(newpkg->arch, pkg->arch, PKG_ARCH_LEN); - newpkg->size = pkg->size; - newpkg->usize = pkg->usize; - newpkg->force = pkg->force; - newpkg->stick = pkg->stick; - newpkg->scriptlet = pkg->scriptlet; - newpkg->reason = pkg->reason; - newpkg->license = _pacman_list_strdup(pkg->license); - newpkg->desc_localized = _pacman_list_strdup(pkg->desc_localized); - newpkg->requiredby = _pacman_list_strdup(pkg->requiredby); - newpkg->conflicts = _pacman_list_strdup(pkg->conflicts); - newpkg->files = _pacman_list_strdup(pkg->files); - newpkg->backup = _pacman_list_strdup(pkg->backup); - newpkg->depends = _pacman_list_strdup(pkg->depends); - newpkg->removes = _pacman_list_strdup(pkg->removes); - newpkg->groups = _pacman_list_strdup(pkg->groups); - newpkg->provides = _pacman_list_strdup(pkg->provides); - newpkg->replaces = _pacman_list_strdup(pkg->replaces); - newpkg->triggers = _pacman_list_strdup(pkg->triggers); - - /* internal */ - newpkg->origin = pkg->origin; - newpkg->data = (newpkg->origin == PKG_FROM_FILE) ? strdup(pkg->data) : pkg->data; - newpkg->infolevel = pkg->infolevel; - - return(newpkg); -} - int _pacman_pkg_delete(Package *self) { ASSERT(_pacman_pkg_fini(self) == 0, RET_ERR(PM_ERR_WRONG_ARGS, -1)); diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h index 0de6772..1a14d94 100644 --- a/lib/libpacman/package.h +++ b/lib/libpacman/package.h @@ -93,8 +93,11 @@ class Package public: Package(); Package(const char *name, const char *version); + Package(const libpacman::Package &other); virtual ~Package(); + virtual libpacman::Package *dup() const; + virtual int read(unsigned int flags); virtual int write(unsigned int flags); /* Optional */ virtual int remove(); /* Optional */ @@ -150,7 +153,6 @@ do { \ #define FREELISTPKGS(p) _FREELIST(p, _pacman_pkg_delete) libpacman::Package *_pacman_pkg_new_from_filename(const char *filename, int witharch); -libpacman::Package *_pacman_pkg_dup(libpacman::Package *pkg); int _pacman_pkg_delete(libpacman::Package *self); int _pacman_pkg_init(libpacman::Package *self, libpacman::Database *db); _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
