[Frugalware-git] frugalware-current: Revert e7319c39adfe232bcfa6f330e306453b0981c69e. tcl_lang is not a base catalog.

2015-02-06 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=frugalware-current.git;a=commitdiff;h=8dc89b431d642c146cd1dcf5cea8a442b9b00516

commit 8dc89b431d642c146cd1dcf5cea8a442b9b00516
Author: Michel Hermier 
Date:   Fri Feb 6 17:52:45 2015 +0100

Revert e7319c39adfe232bcfa6f330e306453b0981c69e. tcl_lang is not a base catalog.

diff --git a/t/deps-xorg.py b/t/deps-xorg.py
index 5a34ac8..1ff90c7 100755
--- a/t/deps-xorg.py
+++ b/t/deps-xorg.py
@@ -11,7 +11,7 @@ if len(sys.argv) > 1 and sys.argv[1] == "--help":
print "base packages which depend on xorg (lib->xlib is needed or so)"
sys.exit(0)

-basecats = ['base', 'apps', 'lib', 'multimedia', 'network', 'devel', 
'tcl_lang']
+basecats = ['base', 'apps', 'lib', 'multimedia', 'network', 'devel']

root = tempfile.mkdtemp()
pacman.initialize(root)
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Fix invalid pointer when invoking: pacman-g2 -Ql -p .

2014-11-23 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=429a1789eb7b97364be1a46f7cf6cc5f14e69ec5

commit 429a1789eb7b97364be1a46f7cf6cc5f14e69ec5
Author: Michel Hermier 
Date:   Mon Nov 24 08:23:37 2014 +0100

libpacman: Fix invalid pointer when invoking: pacman-g2 -Ql -p .

diff --git a/lib/libpacman/pacman.cpp b/lib/libpacman/pacman.cpp
index d44abd9..5316b7e 100644
--- a/lib/libpacman/pacman.cpp
+++ b/lib/libpacman/pacman.cpp
@@ -850,7 +850,11 @@ pmpkg_t *pacman_pkg_load(char *filename)
/* Sanity checks */
ASSERT(!_pacman_strempty(filename), RET_ERR(PM_ERR_WRONG_ARGS, NULL));

-   return c_cast(_pacman_fpmpackage_load(filename));
+   package_ptr pkg =  _pacman_fpmpackage_load(filename);
+   if (pkg != nullptr) {
+   pkg->acquire();
+   }
+   return c_cast(pkg);
}

/** Free a package.
@@ -866,6 +870,7 @@ int pacman_pkg_free(pmpkg_t *_pkg)
ASSERT(pkg != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));

/* Only free packages loaded in user space */
+   pkg->release();
return 0;
}
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Fix -Q pkgname.

2014-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=b0bcf9caba61714a8278c41b306d3ce103b77245

commit b0bcf9caba61714a8278c41b306d3ce103b77245
Author: Michel Hermier 
Date:   Tue Nov 18 10:47:45 2014 +0100

libpacman: Fix -Q pkgname.

diff --git a/src/pacman-g2/query.c b/src/pacman-g2/query.c
index ac10812..4f81b83 100644
--- a/src/pacman-g2/query.c
+++ b/src/pacman-g2/query.c
@@ -166,11 +166,8 @@ int querypkg(FStringList *targets)
return errors;
}

-   for(FPtrListIterator *targ = f_ptrlist_first(targets), *end = 
f_ptrlist_end(targets); targ != end; targ = f_ptrlistitem_next(targ)) {
-   char *package = list_data(targ);
-
/* find packages in the db */
-   if(package == NULL) {
+   if(f_ptrlist_count(targets) == 0) {
/* Do not allow -Qc , -Qi , -Ql without package arg .. */
if(config->op_q_changelog || config->op_q_info || config->op_q_list) {
ERR(NL, _("This query option require an package name as argument\n"));
@@ -241,6 +238,8 @@ int querypkg(FStringList *targets)
}
}
} else {
+   for(FPtrListIterator *targ = f_ptrlist_first(targets), *end = 
f_ptrlist_end(targets); targ != end; targ = f_ptrlistitem_next(targ)) {
+   char *package = list_data(targ);
/* Do not allow -Qe , -Qm with package arg */
if(config->op_q_orphans || config->op_q_foreign) {
ERR(NL, _("This query option cannot have an package argument\n"));
@@ -278,12 +277,10 @@ int querypkg(FStringList *targets)
char *pkgname = pacman_pkg_getinfo(info, PM_PKG_NAME);
char *pkgver = pacman_pkg_getinfo(info, PM_PKG_VERSION);
MSG(NL, "%s %s\n", pkgname, pkgver);
-
}
}
}
-
-   return(errors);
+   return errors;
}

/* vim: set ts=2 sw=2 noet: */
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: pacman-g2: Fix -Qo invocation code.

2014-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=2286690c4bda59ad0758fcc5de18a63423e11565

commit 2286690c4bda59ad0758fcc5de18a63423e11565
Author: Michel Hermier 
Date:   Tue Nov 18 10:43:22 2014 +0100

pacman-g2: Fix -Qo invocation code.

diff --git a/src/pacman-g2/query.c b/src/pacman-g2/query.c
index a7da2eb..ac10812 100644
--- a/src/pacman-g2/query.c
+++ b/src/pacman-g2/query.c
@@ -145,12 +145,12 @@ int querypkg(FStringList *targets)
return errors;
}

-   for(FPtrListIterator *targ = f_ptrlist_first(targets), *end = 
f_ptrlist_end(targets); targ != end; targ = f_ptrlistitem_next(targ)) {
-   char *package = list_data(targ);
+   /* determine the owner of a file */
+   if(config->op_q_owns) {
+   for(FPtrListIterator *targ = f_ptrlist_first(targets), *end = 
f_ptrlist_end(targets); targ != end; targ = f_ptrlistitem_next(targ)) {
+   char *package = list_data(targ);
+   PM_LIST *data;

-   /* determine the owner of a file */
-   if(config->op_q_owns) {
-   PM_LIST *data;
if((data = pacman_pkg_getowners(package)) == NULL) {
ERR(NL, _("No package owns %s\n"), package);
errors++;
@@ -163,6 +163,11 @@ int querypkg(FStringList *targets)
}
continue;
}
+   return errors;
+   }
+
+   for(FPtrListIterator *targ = f_ptrlist_first(targets), *end = 
f_ptrlist_end(targets); targ != end; targ = f_ptrlistitem_next(targ)) {
+   char *package = list_data(targ);

/* find packages in the db */
if(package == NULL) {
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: pacman-g2: Partial fix for -Q -p not returning a list.

2014-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=e3efd317074385cb4db1873d758fe031bf8cd290

commit e3efd317074385cb4db1873d758fe031bf8cd290
Author: Michel Hermier 
Date:   Tue Nov 18 10:40:35 2014 +0100

pacman-g2: Partial fix for -Q -p not returning a list.

diff --git a/src/pacman-g2/query.c b/src/pacman-g2/query.c
index 79be1ff..a7da2eb 100644
--- a/src/pacman-g2/query.c
+++ b/src/pacman-g2/query.c
@@ -85,7 +85,7 @@ int querypkg(FStringList *targets)

/* looking for groups */
if(config->group) {
-   if(targets == NULL) {
+   if(f_ptrlist_count(targets) == 0) {
pmlist_t *cache = pacman_db_getgrpcache(db_local);
for(pmlist_iterator_t *lp = pacman_list_begin(cache), *end = 
pacman_list_end(cache); lp != end; lp = pacman_list_next(lp)) {
PM_GRP *grp = pacman_list_getdata(lp);
@@ -115,15 +115,16 @@ int querypkg(FStringList *targets)
return errors;
}

-   for(FPtrListIterator *targ = f_ptrlist_first(targets), *end = 
f_ptrlist_end(targets); targ != end; targ = f_ptrlistitem_next(targ)) {
-   char *package = list_data(targ);
+   /* output info for a .tar.gz package */
+   if(config->op_q_isfile) {
+   if(f_ptrlist_count(targets) == 0) {
+   ERR(NL, _("no package file was specified for 
--file\n"));
+   return 1;
+   }
+
+   for(FPtrListIterator *targ = f_ptrlist_first(targets), *end = 
f_ptrlist_end(targets); targ != end; targ = f_ptrlistitem_next(targ)) {
+   char *package = list_data(targ);

-   /* output info for a .tar.gz package */
-   if(config->op_q_isfile) {
-   if(package == NULL) {
-   ERR(NL, _("no package file was specified for 
--file\n"));
-   return(1);
-   }
if((info = pacman_pkg_load(package)) == NULL) {
ERR(NL, _("failed to load package '%s' (%s)\n"), package, 
pacman_strerror(pm_errno));
return(1);
@@ -140,8 +141,12 @@ int querypkg(FStringList *targets)
(char *)pacman_pkg_getinfo(info, PM_PKG_VERSION));
}
FREEPKG(info);
-   continue;
}
+   return errors;
+   }
+
+   for(FPtrListIterator *targ = f_ptrlist_first(targets), *end = 
f_ptrlist_end(targets); targ != end; targ = f_ptrlistitem_next(targ)) {
+   char *package = list_data(targ);

/* determine the owner of a file */
if(config->op_q_owns) {
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: pacman-g2: Remove -Qg bug returning nothing.

2014-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=7359982407a0b1d285d4b344763d868e2ca6b686

commit 7359982407a0b1d285d4b344763d868e2ca6b686
Author: Michel Hermier 
Date:   Tue Nov 18 10:35:21 2014 +0100

pacman-g2: Remove -Qg bug returning nothing.

diff --git a/src/pacman-g2/query.c b/src/pacman-g2/query.c
index 40f9f64..79be1ff 100644
--- a/src/pacman-g2/query.c
+++ b/src/pacman-g2/query.c
@@ -83,24 +83,24 @@ int querypkg(FStringList *targets)
return(1);
}

-   for(FPtrListIterator *targ = f_ptrlist_first(targets), *end = 
f_ptrlist_end(targets); targ != end; targ = f_ptrlistitem_next(targ)) {
-   char *package = list_data(targ);
-
-   /* looking for groups */
-   if(config->group) {
-   if(targets == NULL) {
-   pmlist_t *cache = 
pacman_db_getgrpcache(db_local);
-   for(pmlist_iterator_t *lp = 
pacman_list_begin(cache), *end = pacman_list_end(cache); lp != end; lp = 
pacman_list_next(lp)) {
-   PM_GRP *grp = pacman_list_getdata(lp);
-   char *grpname = pacman_grp_getinfo(grp, 
PM_GRP_NAME);
-   pmlist_t *pkgnames = 
pacman_grp_getinfo(grp, PM_GRP_PKGNAMES);
+   /* looking for groups */
+   if(config->group) {
+   if(targets == NULL) {
+   pmlist_t *cache = pacman_db_getgrpcache(db_local);
+   for(pmlist_iterator_t *lp = pacman_list_begin(cache), 
*end = pacman_list_end(cache); lp != end; lp = pacman_list_next(lp)) {
+   PM_GRP *grp = pacman_list_getdata(lp);
+   char *grpname = pacman_grp_getinfo(grp, 
PM_GRP_NAME);
+   pmlist_t *pkgnames = pacman_grp_getinfo(grp, 
PM_GRP_PKGNAMES);

-   for(pmlist_iterator_t *lq = 
pacman_list_begin(pkgnames), *end = pacman_list_end(pkgnames); lq != end; lq = 
pacman_list_next(lq)) {
-   MSG(NL, "%s %s\n", grpname, 
(char *)pacman_list_getdata(lq));
-   }
+   for(pmlist_iterator_t *lq = 
pacman_list_begin(pkgnames), *end = pacman_list_end(pkgnames); lq != end; lq = 
pacman_list_next(lq)) {
+   MSG(NL, "%s %s\n", grpname, (char 
*)pacman_list_getdata(lq));
}
-   } else {
+   }
+   } else {
+   for(FPtrListIterator *targ = f_ptrlist_first(targets), 
*end = f_ptrlist_end(targets); targ != end; targ = f_ptrlistitem_next(targ)) {
+   char *package = list_data(targ);
PM_GRP *grp = pacman_db_readgrp(db_local, package);
+
if(grp) {
pmlist_t *pkgnames = pacman_grp_getinfo(grp, PM_GRP_PKGNAMES);
for(pmlist_iterator_t *lq = pacman_list_begin(pkgnames), *end = 
pacman_list_end(pkgnames); lq != end; lq = pacman_list_next(lq)) {
@@ -111,8 +111,12 @@ int querypkg(FStringList *targets)
return(2);
}
}
-   continue;
}
+   return errors;
+   }
+
+   for(FPtrListIterator *targ = f_ptrlist_first(targets), *end = 
f_ptrlist_end(targets); targ != end; targ = f_ptrlistitem_next(targ)) {
+   char *package = list_data(targ);

/* output info for a .tar.gz package */
if(config->op_q_isfile) {
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: pacman-g2: Reindent previous code changes.

2014-11-18 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=c44010438725c43266381e7c27f850560079be53

commit c44010438725c43266381e7c27f850560079be53
Author: Michel Hermier 
Date:   Tue Nov 18 10:54:19 2014 +0100

pacman-g2: Reindent previous code changes.

diff --git a/src/pacman-g2/query.c b/src/pacman-g2/query.c
index 4f81b83..c368554 100644
--- a/src/pacman-g2/query.c
+++ b/src/pacman-g2/query.c
@@ -166,78 +166,77 @@ int querypkg(FStringList *targets)
return errors;
}

-   /* find packages in the db */
-   if(f_ptrlist_count(targets) == 0) {
-   /* Do not allow -Qc , -Qi , -Ql without package arg .. 
*/
-   if(config->op_q_changelog || config->op_q_info || 
config->op_q_list) {
-   ERR(NL, _("This query option require an package 
name as argument\n"));
-   return(1);
-   }
+   /* find packages in the db */
+   if(f_ptrlist_count(targets) == 0) {
+   /* Do not allow -Qc , -Qi , -Ql without package arg .. */
+   if(config->op_q_changelog || config->op_q_info || 
config->op_q_list) {
+   ERR(NL, _("This query option require an package name as 
argument\n"));
+   return(1);
+   }

-   /* -Qd is not valid */
-   if(config->op_q_orphans_deps && !config->op_q_orphans) {
-   ERR(NL, _("Invalid query option , use 
'pacman-g2 -Qed'\n"));
-   return(1);
-   }
+   /* -Qd is not valid */
+   if(config->op_q_orphans_deps && !config->op_q_orphans) {
+   ERR(NL, _("Invalid query option , use 'pacman-g2 
-Qed'\n"));
+   return(1);
+   }

-   /* no target */
-   pmlist_t *cache = pacman_db_getpkgcache(db_local);
-   for(pmlist_iterator_t *lp = pacman_list_begin(cache), 
*end = pacman_list_end(cache); lp != end; lp = pacman_list_next(lp)) {
-   PM_PKG *tmpp = pacman_list_getdata(lp);
-   char *pkgname, *pkgver;
+   /* no target */
+   pmlist_t *cache = pacman_db_getpkgcache(db_local);
+   for(pmlist_iterator_t *lp = pacman_list_begin(cache), *end = 
pacman_list_end(cache); lp != end; lp = pacman_list_next(lp)) {
+   PM_PKG *tmpp = pacman_list_getdata(lp);

-   pkgname = pacman_pkg_getinfo(tmpp, PM_PKG_NAME);
-   pkgver = pacman_pkg_getinfo(tmpp, 
PM_PKG_VERSION);
-   if(config->op_q_orphans || config->op_q_foreign 
|| config->op_q_fsck) {
-   info = pacman_db_readpkg(db_local, 
pkgname);
-   if(info == NULL) {
-   /* something weird happened */
-   ERR(NL, _("package \"%s\" not 
found\n"), pkgname);
-   return(1);
-   }
-   if(config->op_q_foreign) {
-   int match = 0;
-   for(pmlist_iterator_t *i = 
pacman_list_begin(pmc_syncs), *end = pacman_list_end(pmc_syncs); i != end; i = 
pacman_list_next(i)) {
-   PM_DB *db = 
list_data(i);
-   pmlist_t *cache = 
pacman_db_getpkgcache(db);
-   for(pmlist_iterator_t 
*j = pacman_list_begin(cache), *end = pacman_list_end(cache); j != end; j = 
pacman_list_next(j)) {
-   PM_PKG *pkg = 
pacman_list_getdata(j);
-   char *haystack;
-   char *needle;
-   haystack = 
strdup(pacman_pkg_getinfo(pkg, PM_PKG_NAME));
-   needle = 
strdup(pacman_pkg_getinfo(info, PM_PKG_NAME));
-   
if(!strcmp(haystack, needle)) {
-   match = 
1;
-   }
-   FREE(haystack);
-   FREE

[Frugalware-git] pacman-g2: libpacman: Ignore ".CHANGELOG" files for now in _pacman_fpmpackage_load (don't know why the issue didn't raised earlier).

2014-11-15 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=bb9b0c22e79402f46625f757e7b8f037902370a3

commit bb9b0c22e79402f46625f757e7b8f037902370a3
Author: Michel Hermier 
Date:   Sat Nov 15 13:04:18 2014 +0100

libpacman: Ignore ".CHANGELOG" files for now in _pacman_fpmpackage_load (don't 
know why the issue didn't raised earlier).

diff --git a/lib/libpacman/package/fpmpackage.cpp 
b/lib/libpacman/package/fpmpackage.cpp
index d489c2f..fdb417b 100644
--- a/lib/libpacman/package/fpmpackage.cpp
+++ b/lib/libpacman/package/fpmpackage.cpp
@@ -194,6 +194,8 @@ package_ptr _pacman_fpmpackage_load(const char *pkgfile)
fclose(filelist);
has_filelist = true;
continue;
+   } else if (!strcmp(archive_entry_pathname (entry), 
".CHANGELOG")) {
+   /* Ignore for now */
} else {
has_scriptcheck = true;
if(!has_filelist) {
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: pactest: Add a .CHANGELOG file when generating a .fpm.

2014-11-15 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=8808f00d5c754f8f1566a3e88b66127a6e08bbde

commit 8808f00d5c754f8f1566a3e88b66127a6e08bbde
Author: Michel Hermier 
Date:   Sat Nov 15 13:05:23 2014 +0100

pactest: Add a .CHANGELOG file when generating a .fpm.

diff --git a/pactest/pmpkg.py b/pactest/pmpkg.py
index 88171ff..715c227 100644
--- a/pactest/pmpkg.py
+++ b/pactest/pmpkg.py
@@ -179,6 +179,10 @@ class pmpkg:
os.system("tar cvf /dev/null * | sort >.FILELIST")
targets += " .FILELIST *"

+   # .CHANGELOG
+   mkfile(".CHANGELOG")
+   targets += " .CHANGELOG"
+
# Generate package archive
os.system("tar zcf %s %s" % (archive, targets))
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add missing const to flib::list::any_match_if.

2014-11-15 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=8e5c57924e78c3ddef2832b7efeabbbedb1dbb4d

commit 8e5c57924e78c3ddef2832b7efeabbbedb1dbb4d
Author: Michel Hermier 
Date:   Fri Nov 14 12:06:01 2014 +0100

libpacman: Add missing const to flib::list::any_match_if.

diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h
index 503ba22..e179639 100644
--- a/lib/libpacman/util/flist.h
+++ b/lib/libpacman/util/flist.h
@@ -835,7 +835,7 @@ namespace flib
}

template 
-   bool any_match_if(UnaryPredicate pred)
+   bool any_match_if(UnaryPredicate pred) const
{
return flib::any_match_if(begin(), end(), pred);
}
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add flib::keyed_value_traits.

2014-11-15 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=c6d0c22f8e5db7b028b32ce1395101d4de3ba6f1

commit c6d0c22f8e5db7b028b32ce1395101d4de3ba6f1
Author: Michel Hermier 
Date:   Mon Nov 10 10:13:19 2014 +0100

libpacman: Add flib::keyed_value_traits.

diff --git a/lib/libpacman/package_graph.h b/lib/libpacman/package_graph.h
index 44c8db6..34925c1 100644
--- a/lib/libpacman/package_graph.h
+++ b/lib/libpacman/package_graph.h
@@ -24,7 +24,6 @@
#include "util/fset.h"

namespace libpacman {
-
class package_node
: public flib::refcounted
{
@@ -42,7 +41,34 @@ namespace libpacman {

typedef flib::refcounted_shared_ptr package_node_ptr;
bool operator < (const package_node_ptr &pn1, const package_node_ptr &pn2);
+} // namespace libpacman
+
+namespace flib {
+   template <>
+   struct keyed_value_traits
+   {
+   typedef libpacman::package_node_ptr keyed_value_type;
+   typedef flib::str key_type;
+   typedef libpacman::package_node_ptr value_type;
+
+   static const key_type &key_of(const keyed_value_type &o)
+   {
+   return o->name();
+   }

+   static value_type &value_of(keyed_value_type &o)
+   {
+   return o;
+   }
+
+   static const value_type &value_of(const keyed_value_type &o)
+   {
+   return o;
+   }
+   };
+} // namespace flib
+
+namespace libpacman {
typedef flib::set package_node_set;

class package_graph
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Drop f_stringlist_any_match.

2014-11-15 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=358d342d557a24eb9c5fd947bb045dfaa9c55702

commit 358d342d557a24eb9c5fd947bb045dfaa9c55702
Author: Michel Hermier 
Date:   Fri Nov 14 15:13:58 2014 +0100

libpacman: Drop f_stringlist_any_match.

diff --git a/lib/libpacman/kernel/fstr.cpp b/lib/libpacman/kernel/fstr.cpp
index c30fed6..d95d975 100644
--- a/lib/libpacman/kernel/fstr.cpp
+++ b/lib/libpacman/kernel/fstr.cpp
@@ -243,23 +243,14 @@ bool FStrMatcher::match(const str &s) const
return match(s.c_str());
}

-int f_stringlist_any_match(const FStringList *list, const FStrMatcher *matcher)
+bool FStrMatcher::match_all(const FStringList &l) const
{
-#ifndef F_NOCOMPAT
-   for(auto it = list->begin(), end = list->end(); it != end; ++it) {
-   if(matcher->match((const char *)*it) != 0) {
-   return 1;
-   }
-   }
-   return 0;
-#else
-   for(auto str: *list) {
-   if(matcher->match((const char *)str) != 0) {
-   return 1;
-   }
-   }
-   return 0;
-#endif
+   return l.all_match_if(*this);
+}
+
+bool FStrMatcher::match_any(const FStringList &l) const
+{
+   return l.any_match_if(*this);
}

/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/kernel/fstr.h b/lib/libpacman/kernel/fstr.h
index 913a99f..321325d 100644
--- a/lib/libpacman/kernel/fstr.h
+++ b/lib/libpacman/kernel/fstr.h
@@ -173,14 +173,18 @@ public:

bool match(const char *s) const;
bool match(const flib::str &s) const;
+   bool match_all(const FStringList &l) const;
+   bool match_any(const FStringList &l) const;

protected:
int m_flags;
char *m_str;
regex_t m_regex;
-};

-int f_stringlist_any_match(const FStringList *list, const FStrMatcher 
*matcher);
+private:
+   FStrMatcher(const FStrMatcher &o);
+   FStrMatcher &operator = (const FStrMatcher &o);
+};

#endif /* F_STR_H */

diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp
index d68c51d..f616f36 100644
--- a/lib/libpacman/package.cpp
+++ b/lib/libpacman/package.cpp
@@ -357,18 +357,18 @@ int _pacman_strmatcher_match(const FStrMatcher 
*strmatcher, const package_ptr &p
((flags & PM_PACKAGE_FLAG_PACKAGER) && strmatcher->match(pkg->packager)) ||
//  ((flags & PM_PACKAGE_FLAG_HASH) && ) ||
((flags & PM_PACKAGE_FLAG_ARCH) && strmatcher->match(pkg->arch)) ||
-   ((flags & PM_PACKAGE_FLAG_LOCALISED_DESCRIPTION) && 
f_stringlist_any_match(&pkg->desc_localized, strmatcher)) ||
-   ((flags & PM_PACKAGE_FLAG_LICENSE) && 
f_stringlist_any_match(&pkg->license, strmatcher)) ||
-   ((flags & PM_PACKAGE_FLAG_REPLACES) && 
f_stringlist_any_match(&pkg->replaces(), strmatcher)) ||
-   ((flags & PM_PACKAGE_FLAG_GROUPS) && 
f_stringlist_any_match(&pkg->groups(), strmatcher)) ||
-   ((flags & PM_PACKAGE_FLAG_FILES) && 
pkg->files().any_match_if(*strmatcher)) ||
-   ((flags & PM_PACKAGE_FLAG_BACKUP) && 
f_stringlist_any_match(&pkg->backup(), strmatcher)) ||
-   ((flags & PM_PACKAGE_FLAG_DEPENDS) && 
f_stringlist_any_match(&pkg->depends(), strmatcher)) ||
-   ((flags & PM_PACKAGE_FLAG_REMOVES) && 
f_stringlist_any_match(&pkg->removes(), strmatcher)) ||
-   ((flags & PM_PACKAGE_FLAG_REQUIREDBY) && 
f_stringlist_any_match(&pkg->requiredby(), strmatcher)) ||
-   ((flags & PM_PACKAGE_FLAG_CONFLICTS) && 
f_stringlist_any_match(&pkg->conflicts(), strmatcher)) ||
-   ((flags & PM_PACKAGE_FLAG_PROVIDES) && 
f_stringlist_any_match(&pkg->provides(), strmatcher)) ||
-   ((flags & PM_PACKAGE_FLAG_TRIGGERS) && 
f_stringlist_any_match(&pkg->triggers(), strmatcher))) {
+   ((flags & PM_PACKAGE_FLAG_LOCALISED_DESCRIPTION) && 
strmatcher->match_any(pkg->desc_localized)) ||
+   ((flags & PM_PACKAGE_FLAG_LICENSE) && 
strmatcher->match_any(pkg->license)) ||
+   ((flags & PM_PACKAGE_FLAG_REPLACES) && 
strmatcher->match_any(pkg->replaces())) ||
+   ((flags & PM_PACKAGE_FLAG_GROUPS) && 
strmatcher->match_any(pkg->groups())) ||
+   ((flags & PM_PACKAGE_FLAG_FILES) && 
pkg->files().any_match_if(*strmatcher)) ||
+   ((flags & PM_PACKAGE_FLAG_BACKUP) && 
strmatcher->match_any(pkg->backup())) ||
+   ((flags & PM_PACKAGE_FLAG_DEPEN

[Frugalware-git] pacman-g2: libpacman: Fix some typo/missing conversions of keyed_value in flib::set.

2014-11-15 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=efacc1af089e42d32a1f1a2e43d1c43e3d6f28ab

commit efacc1af089e42d32a1f1a2e43d1c43e3d6f28ab
Author: Michel Hermier 
Date:   Mon Nov 10 09:47:46 2014 +0100

libpacman: Fix some typo/missing conversions of keyed_value in flib::set.

diff --git a/lib/libpacman/util/fset.h b/lib/libpacman/util/fset.h
index 3ee53e9..af4e89c 100644
--- a/lib/libpacman/util/fset.h
+++ b/lib/libpacman/util/fset.h
@@ -99,10 +99,11 @@ namespace flib
{
iterator end = this->end();
/* Find insertion point. */
-   iterator next = 
find_insertion_point(keyed_value_traits::value_of(keyed_value));
+   iterator next = 
find_insertion_point(keyed_value_traits::key_of(keyed_value));

// ensure we don't have an egality
-   if(next == end || m_compare(keyed_value, *next)) {
+   if(next == end
+   || 
m_compare(keyed_value_traits::key_of(keyed_value), 
keyed_value_traits::key_of(*next))) {
typename super_type::data_holder add = new FListItem(keyed_value);
add->insert_after(next.previous());
return iterator(add);
@@ -151,7 +152,7 @@ namespace flib
{
return super_type::find_if_not(
[&] (const keyed_value_type &keyed_value) -> bool
-   { return 
m_compare(keyed_value_traits::value_of(keyed_value), key); });
+   { return 
m_compare(keyed_value_traits::key_of(keyed_value), key); });
}

Compare m_compare;
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add flib::str some compare/contains methods.

2014-11-15 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=f29ac2f83aa2ff82f839eed56ee2ea172576a614

commit f29ac2f83aa2ff82f839eed56ee2ea172576a614
Author: Michel Hermier 
Date:   Fri Nov 14 11:35:11 2014 +0100

libpacman: Add flib::str some compare/contains methods.

diff --git a/lib/libpacman/kernel/fstr.cpp b/lib/libpacman/kernel/fstr.cpp
index d91f6f8..c30fed6 100644
--- a/lib/libpacman/kernel/fstr.cpp
+++ b/lib/libpacman/kernel/fstr.cpp
@@ -105,9 +105,34 @@ str::size_type str::size() const
return 0;
}

-int str::compare(const str &s) const
+int str::compare(const char *str, case_sensitivity cs) const
{
-   return strcmp(c_str(), s.c_str());
+   switch(cs) {
+   case case_sensitive:
+   return strcmp(c_str(), str);
+   case case_insensitive:
+   return strcasecmp(c_str(), str);
+   default:
+   abort();
+   }
+}
+
+int str::indexOf(const char *str, size_type from, case_sensitivity cs) const
+{
+   ASSERT(from >= 0 && from <= size(), RET_ERR(PM_ERR_WRONG_ARGS, -1));
+   ASSERT(!empty(), RET_ERR(PM_ERR_WRONG_ARGS, -1));
+
+   const char *start = &m_str[from];
+   const char *index = NULL;
+   switch(cs) {
+   case case_sensitive:
+   index = strstr(c_str(), start);
+   case case_insensitive:
+   index = strcasestr(c_str(), start);
+   default:
+   abort();
+   }
+   return index != NULL ? index - str: -1;
}

void str::reset(const char *s)
diff --git a/lib/libpacman/kernel/fstr.h b/lib/libpacman/kernel/fstr.h
index 3c24258..913a99f 100644
--- a/lib/libpacman/kernel/fstr.h
+++ b/lib/libpacman/kernel/fstr.h
@@ -29,6 +29,12 @@
#include 

namespace flib {
+   typedef enum
+   {
+   case_insensitive = 0,
+   case_sensitive = 1,
+   } case_sensitivity;
+
class str
{
public:
@@ -82,7 +88,40 @@ namespace flib {
size_type size() const;

/* Operations */
-   int compare(const str &str) const;
+   int compare(const char *str, case_sensitivity cs = 
case_sensitive) const;
+
+   int compare(const str &str, case_sensitivity cs = 
case_sensitive) const
+   {
+   return compare(str.c_str(), cs);
+   }
+
+   int contains(const char *str, case_sensitivity cs = 
case_sensitive) const
+   {
+   return indexOf(str, 0, cs);
+   }
+
+   int contains(const str &str, case_sensitivity cs = 
case_sensitive) const
+   {
+   return indexOf(str, 0, cs);
+   }
+
+   bool equals(const char *str, case_sensitivity cs = 
case_sensitive) const
+   {
+   return compare(str, cs) == 0;
+   }
+
+   bool equals(const str &str, case_sensitivity cs = 
case_sensitive) const
+   {
+   return compare(str, cs) == 0;
+   }
+
+   int indexOf(const char *str, size_type from = 0, 
case_sensitivity cs = case_sensitive) const;
+
+   int indexOf(const str &str, size_type from = 0, 
case_sensitivity cs = case_sensitive) const
+   {
+   return indexOf(str.c_str(), from, cs);
+   }
+
void reset(const char *s = nullptr);
void swap(str &o);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Remove a variable name shadowing when loading .fpm files in _pacman_fpmpackage_load.

2014-11-15 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=d749881cfcbf49f725bfc97b840c7ce92a1bb1aa

commit d749881cfcbf49f725bfc97b840c7ce92a1bb1aa
Author: Michel Hermier 
Date:   Sat Nov 15 12:48:51 2014 +0100

libpacman: Remove a variable name shadowing when loading .fpm files in 
_pacman_fpmpackage_load.

diff --git a/lib/libpacman/package/fpmpackage.cpp 
b/lib/libpacman/package/fpmpackage.cpp
index fc7a78f..d489c2f 100644
--- a/lib/libpacman/package/fpmpackage.cpp
+++ b/lib/libpacman/package/fpmpackage.cpp
@@ -137,9 +137,7 @@ package_ptr _pacman_fpmpackage_load(const char *pkgfile)
{
char *expath;
int i, ret;
-   int config = 0;
-   int filelist = 0;
-   int scriptcheck = 0;
+   bool has_config = false, has_filelist = false, has_scriptcheck = false;
register struct archive *archive;
struct archive_entry *entry;

@@ -153,7 +151,7 @@ package_ptr _pacman_fpmpackage_load(const char *pkgfile)
}

for(i = 0; (ret = archive_read_next_header (archive, &entry)) == ARCHIVE_OK; 
i++) {
-   if(config && filelist && scriptcheck) {
+   if(has_config && has_filelist && has_scriptcheck) {
/* we have everything we need */
break;
}
@@ -171,11 +169,11 @@ package_ptr _pacman_fpmpackage_load(const char *pkgfile)
if(!info->is_valid(handle->trans, pkgfile)) {
goto error;
}
-   config = 1;
+   has_config = true;
continue;
} else if(!strcmp(archive_entry_pathname (entry), "._install") || 
!strcmp(archive_entry_pathname (entry),  ".INSTALL")) {
info->scriptlet = 1;
-   scriptcheck = 1;
+   has_scriptcheck = true;
} else if(!strcmp(archive_entry_pathname (entry), ".FILELIST")) {
/* Build info->files from the filelist */
FILE *filelist;
@@ -194,10 +192,11 @@ package_ptr _pacman_fpmpackage_load(const char *pkgfile)
}
free(str);
fclose(filelist);
+   has_filelist = true;
continue;
} else {
-   scriptcheck = 1;
-   if(!filelist) {
+   has_scriptcheck = true;
+   if(!has_filelist) {
/* no .FILELIST present in this package..  build the filelist the */
/* old-fashioned way, one at a time */
expath = strdup(archive_entry_pathname (entry));
@@ -213,7 +212,7 @@ package_ptr _pacman_fpmpackage_load(const char *pkgfile)
}
archive_read_finish (archive);

-   if(!config) {
+   if(!has_config) {
_pacman_log(PM_LOG_ERROR, _("missing package info file in %s"), pkgfile);
goto error;
}
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Propagate templates arguments when invoking falgorithms methods in flib (allow to bypass some compiler error due to bad type guess).

2014-11-15 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=81c68b4b1af92583440db4747b94e4a4389d2ac3

commit 81c68b4b1af92583440db4747b94e4a4389d2ac3
Author: Michel Hermier 
Date:   Fri Nov 14 15:13:24 2014 +0100

libpacman: Propagate templates arguments when invoking falgorithms methods in 
flib (allow to bypass some compiler error due to bad type guess).

diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h
index e179639..a0a8356 100644
--- a/lib/libpacman/util/flist.h
+++ b/lib/libpacman/util/flist.h
@@ -700,13 +700,13 @@ namespace flib
template 
iterator find_if(UnaryPredicate pred)
{
-   return flib::find_if(begin(), end(), pred);
+   return flib::find_if(begin(), 
end(), pred);
}

template 
const_iterator find_if(UnaryPredicate pred) const
{
-   return flib::find_if(begin(), end(), pred);
+   return flib::find_if(begin(), end(), pred);
}

template 
@@ -819,25 +819,25 @@ namespace flib
template 
bool all_match(const U &val) const
{
-   return flib::all_match(begin(), end(), val);
+   return flib::all_match(begin(), 
end(), val);
}

template 
bool all_match_if(UnaryPredicate pred) const
{
-   return flib::all_match_if(begin(), end(), pred);
+   return flib::all_match_if(begin(), end(), pred);
}

template 
bool any_match(const U &val) const
{
-   return flib::any_match(begin(), end(), val());
+   return flib::any_match(begin(), 
end(), val());
}

template 
bool any_match_if(UnaryPredicate pred) const
{
-   return flib::any_match_if(begin(), end(), pred);
+   return flib::any_match_if(begin(), end(), pred);
}

public:
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] frugalware-current: libdvdread-5.0.0-1-x86_64

2014-11-13 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=frugalware-current.git;a=commitdiff;h=a6cb035a2fe0549538ece4e4145556c0f3a5c672

commit a6cb035a2fe0549538ece4e4145556c0f3a5c672
Author: Michel Hermier 
Date:   Thu Nov 13 12:39:07 2014 +0100

libdvdread-5.0.0-1-x86_64

* Bump version. (no so bump)

diff --git a/source/lib/libdvdread/FrugalBuild 
b/source/lib/libdvdread/FrugalBuild
index 46e977d..c37583a 100644
--- a/source/lib/libdvdread/FrugalBuild
+++ b/source/lib/libdvdread/FrugalBuild
@@ -5,16 +5,17 @@
options+=('asneeded')

pkgname=libdvdread
-pkgver=4.9.9
+pkgver=5.0.0
pkgrel=1
pkgdesc="libdvdread provides a simple foundation for reading DVD video disks"
url="http://dvdnav.mplayerhq.hu/";
+dlurl="http://download.videolan.org/pub/videolan/$pkgname/";
groups=('lib')
archs=('i686' 'x86_64')
depends=('libdvdcss')
-up2date="Flasttar http://dvdnav.mplayerhq.hu/releases/";
-source=($url/releases/$pkgname-$pkgver.tar.xz)
-sha1sums=('5536084fc7cd9a5d9fff9f91bfe7bf3e4cf3700e')
+up2date="Flastverdir $dlurl"
+source=($dlurl/$pkgver/$pkgname-$pkgver.tar.bz2)
+sha1sums=('f1fadbf19fd8d3a9a63ff610ec8ce9021ebc6947')
Fconfopts+=" --with-libdvdcss=/usr"

# optimization OK
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] frugalware-current: deluge-1.3.10-1-x86_64

2014-11-10 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=frugalware-current.git;a=commitdiff;h=f2df39a567cca98857d29514c0007ca14cc4a7f0

commit f2df39a567cca98857d29514c0007ca14cc4a7f0
Author: Michel Hermier 
Date:   Mon Nov 10 11:32:06 2014 +0100

deluge-1.3.10-1-x86_64

* Bump version.

diff --git a/source/gnome-extra/deluge/FrugalBuild 
b/source/gnome-extra/deluge/FrugalBuild
index 04d04be..3a3f7e5 100644
--- a/source/gnome-extra/deluge/FrugalBuild
+++ b/source/gnome-extra/deluge/FrugalBuild
@@ -7,8 +7,8 @@ options+=('asneeded')
USE_DEVEL=${USE_DEVEL:-"n"}

pkgname=deluge
-pkgver=1.3.7
-pkgrel=2
+pkgver=1.3.10
+pkgrel=1
pkgdesc="BitTorrent client written in Python and GTK+."
url="http://deluge-torrent.org/";
depends=('pygtk' 'pyxdg' 'notify-python' 'notification-daemon' 'distribute' 
'librsvg' \
@@ -24,7 +24,7 @@ Finclude gnome-scriptlet

if ! Fuse DEVEL; then
source=(http://download.deluge-torrent.org/source/$pkgname-$pkgver.tar.bz2)
-   sha1sums=('f2f24d64dd139a38bcee6a4e8ee5f5a9f1136667')
+   sha1sums=('cfe1717c0856b3fba468208af29463458f9071e5')
else
pkgver=$pkgver.1.gd362a6c
_F_scm_type="git"
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Rework iterator types definitions.

2014-11-09 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=168481fe0d24da454f1bf4f8881e7fad030d251d

commit 168481fe0d24da454f1bf4f8881e7fad030d251d
Author: Michel Hermier 
Date:   Thu Nov 6 09:26:37 2014 +0100

libpacman: Rework iterator types definitions.

diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h
index f5ea6d1..7572884 100644
--- a/lib/libpacman/util/flist.h
+++ b/lib/libpacman/util/flist.h
@@ -75,7 +75,10 @@ namespace flib
public:
typedef Iterator wrapped_iterator_type;
typedef iterator_traits wrapped_iterator_traits;
+
+// typedef typename wrapped_iterator_traits::difference_type 
difference_type;
typedef typename wrapped_iterator_traits::pointer pointer;
+   typedef typename wrapped_iterator_traits::reference reference;
typedef typename wrapped_iterator_traits::size_type size_type;
typedef typename wrapped_iterator_traits::value_type value_type;

@@ -127,20 +130,20 @@ namespace flib
wrapped_iterator_type m_iterator;
};

-   template 
+   template 
struct const_iterator_wrapper
-   : public iterator_wrapper_base
+   : public iterator_wrapper_base
{
public:
-   typedef iterator_wrapper_base super_type;
+   typedef iterator_wrapper_base super_type;

-// typedef typename iterator_traits::difference_type 
difference_type;
-   typedef typename iterator_traits::iterable iterable;
-   typedef typename iterator_traits::pointer pointer;
-   typedef typename iterator_traits::size_type size_type;
-   typedef typename iterator_traits::value_type 
value_type;
+// using typename super_type::difference_type;
+   using typename super_type::pointer;
+   using typename super_type::reference;
+   using typename super_type::size_type;
+   using typename super_type::value_type;

-   explicit const_iterator_wrapper(iterable i = iterable())
+   explicit const_iterator_wrapper(Iterator i = Iterator())
: super_type(i)
{ }

@@ -185,12 +188,12 @@ namespace flib

value_type operator * () const
{
-   return 
iterator_traits::value_of(super_type::m_iterator);
+   return 
iterator_traits::value_of(super_type::m_iterator);
}

const pointer operator -> () const
{
-   return 
iterator_traits::pointer_of(super_type::m_iterator);
+   return 
iterator_traits::pointer_of(super_type::m_iterator);
}

const_iterator_wrapper next() const
@@ -211,21 +214,20 @@ namespace flib
}
};

-   template 
+   template 
struct iterator_wrapper
-   : public iterator_wrapper_base
+   : public iterator_wrapper_base
{
public:
-   typedef iterator_wrapper_base super_type;
+   typedef iterator_wrapper_base super_type;

-// typedef typename iterator_traits::difference_type 
difference_type;
-   typedef typename iterator_traits::iterable iterable;
-   typedef typename iterator_traits::pointer pointer;
-   typedef typename iterator_traits::reference reference;
-   typedef typename iterator_traits::size_type size_type;
-   typedef typename iterator_traits::value_type 
value_type;
+// using typename super_type::difference_type;
+   using typename super_type::pointer;
+   using typename super_type::reference;
+   using typename super_type::size_type;
+   using typename super_type::value_type;

-   explicit iterator_wrapper(iterable i = iterable())
+   explicit iterator_wrapper(Iterator i = Iterator())
: super_type(i)
{ }

@@ -270,22 +272,22 @@ namespace flib

reference operator * ()
{
-   return 
iterator_traits::reference_of(super_type::m_iterator);
+   return 
iterator_traits::reference_of(super_type::m_iterator);
}

value_type operator * () const
{
-   return 
iterator_traits::value_of(super_type::m_iterator);
+   return 
iterator_traits::value_of(super_type::m_iterator);
}

pointer operator -> ()
{
-   return 
iterator_traits::pointer_of(super_type::m_iterator);
+   return 
iterator_traits::pointer_of(super_type::m_iterator);
}

const pointer operator -> () const
{
-   return 
iterator_traits::pointer_of(super_type::m_iterator);
+   return 
iterator_traits::pointer_of(super_type::m_iterator);
}

iterator_wrapper next() const
@@ -525,6 +527,7 @@ namespace flib
struct iterator_traits *>
{
typedef FListItem *iterable;
+
//  typedef typename FListItem::difference_type difference_type;
typedef typename FListItem::pointer pointer;
typedef typename FListItem::reference reference;
___
Fr

[Frugalware-git] pacman-g2: libpacman: flist.h s/iterable_traits/iterator_traits/g

2014-11-09 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=ef01e453b3627142ed41fb185c6ad34148e61132

commit ef01e453b3627142ed41fb185c6ad34148e61132
Author: Michel Hermier 
Date:   Tue Nov 4 13:29:23 2014 +0100

libpacman: flist.h s/iterable_traits/iterator_traits/g

diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h
index fc4a429..a1c8e63 100644
--- a/lib/libpacman/util/flist.h
+++ b/lib/libpacman/util/flist.h
@@ -34,37 +34,37 @@

namespace flib
{
-   template 
-   struct iterable_traits
+   template 
+   struct iterator_traits
{
-   typedef Iterable iterable;
-   typedef typename iterable::difference_type difference_type;
-   typedef typename iterable::pointer pointer;
-   typedef typename iterable::reference reference;
-   typedef typename iterable::size_type size_type;
-   typedef typename iterable::value_type value_type;
+   typedef Iterator iterator;
+   typedef typename iterator::difference_type difference_type;
+   typedef typename iterator::pointer pointer;
+   typedef typename iterator::reference reference;
+   typedef typename iterator::size_type size_type;
+   typedef typename iterator::value_type value_type;

-   static iterable next(const iterable &i)
+   static iterator next(const iterator &i)
{
return i.next();
}

-   static iterable previous(const iterable &i)
+   static iterator previous(const iterator &i)
{
return i.previous();
}

-   static reference reference_of(iterable i)
+   static reference reference_of(iterator i)
{
return *i;
}

-   static pointer pointer_of(iterable i)
+   static pointer pointer_of(iterator i)
{
return i.operator -> ();
}

-   static value_type value_of(const iterable i)
+   static value_type value_of(const iterator i)
{
return *i;
}
@@ -74,11 +74,11 @@ namespace flib
struct const_iterator
{
public:
-// typedef typename iterable_traits::difference_type 
difference_type;
-   typedef typename iterable_traits::iterable iterable;
-   typedef typename iterable_traits::pointer pointer;
-   typedef typename iterable_traits::size_type size_type;
-   typedef typename iterable_traits::value_type 
value_type;
+// typedef typename iterator_traits::difference_type 
difference_type;
+   typedef typename iterator_traits::iterable iterable;
+   typedef typename iterator_traits::pointer pointer;
+   typedef typename iterator_traits::size_type size_type;
+   typedef typename iterator_traits::value_type 
value_type;

explicit const_iterator(iterable i = iterable())
: m_iterable(i)
@@ -140,12 +140,12 @@ namespace flib

value_type operator * () const
{
-   return iterable_traits::value_of(m_iterable);
+   return iterator_traits::value_of(m_iterable);
}

const pointer operator -> () const
{
-   return 
iterable_traits::pointer_of(m_iterable);
+   return 
iterator_traits::pointer_of(m_iterable);
}

const_iterator next() const
@@ -168,12 +168,12 @@ namespace flib
protected:
iterable _next() const
{
-   return !Reverse ? 
iterable_traits::next(m_iterable) : 
iterable_traits::previous(m_iterable);
+   return !Reverse ? 
iterator_traits::next(m_iterable) : 
iterator_traits::previous(m_iterable);
}

iterable _previous() const
{
-   return !Reverse ? 
iterable_traits::previous(m_iterable) : 
iterable_traits::next(m_iterable);
+   return !Reverse ? 
iterator_traits::previous(m_iterable) : 
iterator_traits::next(m_iterable);
}

iterable m_iterable;
@@ -183,12 +183,12 @@ namespace flib
struct iterator
{
public:
-// typedef typename iterable_traits::difference_type 
difference_type;
-   typedef typename iterable_traits::iterable iterable;
-   typedef typename iterable_traits::pointer pointer;
-   typedef typename iterable_traits::reference reference;
-   typedef typename iterable_traits::size_type size_type;
-   typedef typename iterable_traits::value_type 
value_type;
+// typedef typename iterator_traits::difference_type 
difference_type;
+   typedef typename iterator_traits::iterable iterable;
+   typedef typename iterator_traits::pointer pointer;
+   typedef typename iterator_traits::reference reference;
+   typedef typename iterator_traits::size_type size_type;
+   typedef typename iterator_traits::value_type 
value_type;

explicit iterator(iterable i = iterable())
: m_iterable(i)
@@ -250,22 +250,22 @@ namespace fl

[Frugalware-git] pacman-g2: lipacman: Simplify iterator_traits (remove iterator typedef).

2014-11-09 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=8b275b5b32953056d441864aee2fe384b7261bd0

commit 8b275b5b32953056d441864aee2fe384b7261bd0
Author: Michel Hermier 
Date:   Thu Nov 6 09:10:18 2014 +0100

lipacman: Simplify iterator_traits (remove iterator typedef).

diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h
index 035ac66..f5ea6d1 100644
--- a/lib/libpacman/util/flist.h
+++ b/lib/libpacman/util/flist.h
@@ -37,34 +37,33 @@ namespace flib
template 
struct iterator_traits
{
-   typedef Iterator iterator;
-   typedef typename iterator::difference_type difference_type;
-   typedef typename iterator::pointer pointer;
-   typedef typename iterator::reference reference;
-   typedef typename iterator::size_type size_type;
-   typedef typename iterator::value_type value_type;
+   typedef typename Iterator::difference_type difference_type;
+   typedef typename Iterator::pointer pointer;
+   typedef typename Iterator::reference reference;
+   typedef typename Iterator::size_type size_type;
+   typedef typename Iterator::value_type value_type;

-   static iterator next(const iterator &i)
+   static Iterator next(const Iterator &i)
{
return i.next();
}

-   static iterator previous(const iterator &i)
+   static Iterator previous(const Iterator &i)
{
return i.previous();
}

-   static reference reference_of(iterator i)
+   static reference reference_of(Iterator i)
{
return *i;
}

-   static pointer pointer_of(iterator i)
+   static pointer pointer_of(Iterator i)
{
return i.operator -> ();
}

-   static value_type value_of(const iterator i)
+   static value_type value_of(const Iterator i)
{
return *i;
}
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Suffix flib::(const_)iterator with _wrapper since they abstract another iterator type.

2014-11-09 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=57f8ddf315fa21b8172033298141ffb6c064b7cc

commit 57f8ddf315fa21b8172033298141ffb6c064b7cc
Author: Michel Hermier 
Date:   Tue Nov 4 13:39:19 2014 +0100

libpacman: Suffix flib::(const_)iterator with _wrapper since they abstract 
another iterator type.

diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h
index a1c8e63..05c6f02 100644
--- a/lib/libpacman/util/flist.h
+++ b/lib/libpacman/util/flist.h
@@ -71,7 +71,7 @@ namespace flib
};

template 
-   struct const_iterator
+   struct const_iterator_wrapper
{
public:
//  typedef typename iterator_traits::difference_type 
difference_type;
@@ -80,15 +80,15 @@ namespace flib
typedef typename iterator_traits::size_type size_type;
typedef typename iterator_traits::value_type value_type;

-   explicit const_iterator(iterable i = iterable())
+   explicit const_iterator_wrapper(iterable i = iterable())
: m_iterable(i)
{ }

-   const_iterator(const const_iterator &o)
+   const_iterator_wrapper(const const_iterator_wrapper &o)
: m_iterable(o.m_iterable)
{ }

-   ~const_iterator()
+   ~const_iterator_wrapper()
{ }

operator iterable ()
@@ -96,44 +96,44 @@ namespace flib
return m_iterable;
}

-   const_iterator &operator = (const const_iterator &o)
+   const_iterator_wrapper &operator = (const 
const_iterator_wrapper &o)
{
m_iterable = o.m_iterable;
return *this;
}

-   bool operator == (const const_iterator &o) const
+   bool operator == (const const_iterator_wrapper &o) const
{
return m_iterable == o.m_iterable;
}

-   bool operator != (const const_iterator &o) const
+   bool operator != (const const_iterator_wrapper &o) const
{
return !operator == (o);
}

-   const_iterator &operator ++ ()
+   const_iterator_wrapper &operator ++ ()
{
m_iterable = _next();
return *this;
}

-   const_iterator operator ++ (int)
+   const_iterator_wrapper operator ++ (int)
{
-   const_iterator tmp(*this);
+   const_iterator_wrapper tmp(*this);
operator ++ ();
return tmp;
}

-   const_iterator &operator -- ()
+   const_iterator_wrapper &operator -- ()
{
m_iterable = _previous();
return *this;
}

-   const_iterator operator -- (int)
+   const_iterator_wrapper operator -- (int)
{
-   const_iterator tmp(*this);
+   const_iterator_wrapper tmp(*this);
operator -- ();
return tmp;
}
@@ -148,14 +148,14 @@ namespace flib
return iterator_traits::pointer_of(m_iterable);
}

-   const_iterator next() const
+   const_iterator_wrapper next() const
{
-   return const_iterator(_next());
+   return const_iterator_wrapper(_next());
}

-   const_iterator previous() const
+   const_iterator_wrapper previous() const
{
-   return const_iterator(_previous());
+   return const_iterator_wrapper(_previous());
}

/* FIXME: temporary */
@@ -180,7 +180,7 @@ namespace flib
};

template 
-   struct iterator
+   struct iterator_wrapper
{
public:
//  typedef typename iterator_traits::difference_type 
difference_type;
@@ -190,15 +190,15 @@ namespace flib
typedef typename iterator_traits::size_type size_type;
typedef typename iterator_traits::value_type value_type;

-   explicit iterator(iterable i = iterable())
+   explicit iterator_wrapper(iterable i = iterable())
: m_iterable(i)
{ }

-   iterator(const iterator &o)
+   iterator_wrapper(const iterator_wrapper &o)
: m_iterable(o.m_iterable)
{ }

-   ~iterator()
+   ~iterator_wrapper()
{ }

operator iterable ()
@@ -206,44 +206,44 @@ namespace flib
return m_iterable;
}

-   iterator &operator = (const iterator &o)
+   iterator_wrapper &operator = (const iterator_wrapper &o)
{
m_iterable = o.m_iterable;
return *this;
}

-   bool operator == (const iterator &o) const
+   bool operator == (const iterator_wrapper &o) const
{
return m_iterable == o.m_iterable;
}

-   bool operator != (const iterator &o) const
+   bool operator != (const iterator_wrapper &o) const
{
return !operator == (o);
}

-   iterator &operator ++ ()
+   iterator_wrapper &operator ++ ()
{
m_iterable = _next();
return *this;
}

-   iterator operator ++ (int)
+   iterator_wrapper operator ++ (int)
{
-   iterator tmp(*this);
+   iterator_wrapper tmp(*this);
operator ++ ();
return tmp;
}

- 

[Frugalware-git] pacman-g2: libpacman: More iterator api rework.

2014-11-09 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=051bab1beedfd609b05b4d280164e15be772de5c

commit 051bab1beedfd609b05b4d280164e15be772de5c
Author: Michel Hermier 
Date:   Fri Nov 7 08:44:32 2014 +0100

libpacman: More iterator api rework.

diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h
index 7572884..503ba22 100644
--- a/lib/libpacman/util/flist.h
+++ b/lib/libpacman/util/flist.h
@@ -37,33 +37,35 @@ namespace flib
template 
struct iterator_traits
{
+   typedef Iterator iterator;
+
typedef typename Iterator::difference_type difference_type;
typedef typename Iterator::pointer pointer;
typedef typename Iterator::reference reference;
typedef typename Iterator::size_type size_type;
typedef typename Iterator::value_type value_type;

-   static Iterator next(const Iterator &i)
+   static iterator next(const iterator &i)
{
return i.next();
}

-   static Iterator previous(const Iterator &i)
+   static iterator previous(const iterator &i)
{
return i.previous();
}

-   static reference reference_of(Iterator i)
+   static reference reference_of(iterator i)
{
return *i;
}

-   static pointer pointer_of(Iterator i)
+   static pointer pointer_of(iterator i)
{
return i.operator -> ();
}

-   static value_type value_of(const Iterator i)
+   static value_type value_of(const iterator i)
{
return *i;
}
@@ -399,36 +401,37 @@ namespace flib
template <>
struct iterator_traits
{
-   typedef FCListItem *iterable;
+   typedef FCListItem *iterator;
+
//  typedef typename FCListItem::difference_type difference_type;
typedef typename FCListItem::pointer pointer;
typedef typename FCListItem::reference reference;
typedef typename FCListItem::size_type size_type;
typedef typename FCListItem::value_type value_type;

-   static iterable next(const FCListItem * const i)
+   static iterator next(const FCListItem * const i)
{
ASSERT(i != NULL, RET_ERR(PM_ERR_WRONG_ARGS, NULL));
return i->m_next;
}

-   static iterable previous(const FCListItem * const i)
+   static iterator previous(const FCListItem * const i)
{
ASSERT(i != NULL, RET_ERR(PM_ERR_WRONG_ARGS, NULL));
return i->m_previous;
}
#if 0
-   static reference reference_of(iterable i)
+   static reference reference_of(iterator i)
{
return i->operator * ();
}

-   static pointer pointer_of(iterable i)
+   static pointer pointer_of(iterator i)
{
return i->operator -> ();
}

-   static value_type value_of(const iterable i)
+   static value_type value_of(const iterator i)
{
return i->operator * ();
}
@@ -526,7 +529,7 @@ namespace flib
template 
struct iterator_traits *>
{
-   typedef FListItem *iterable;
+   typedef FListItem *iterator;

//  typedef typename FListItem::difference_type difference_type;
typedef typename FListItem::pointer pointer;
@@ -534,27 +537,27 @@ namespace flib
typedef typename FListItem::size_type size_type;
typedef typename FListItem::value_type value_type;

-   static iterable next(const iterable &i)
+   static iterator next(const iterator &i)
{
-   return static_cast(iterator_traits::next(i));
+   return static_cast(iterator_traits::next(i));
}

-   static iterable previous(const iterable &i)
+   static iterator previous(const iterator &i)
{
-   return static_cast(iterator_traits::previous(i));
+   return static_cast(iterator_traits::previous(i));
}

-   static reference reference_of(iterable i)
+   static reference reference_of(iterator i)
{
return i->operator * ();
}

-   static pointer pointer_of(iterable i)
+   static pointer pointer_of(iterator i)
{
return i->operator -> ();
}

-   static value_type value_of(const iterable i)
+   static value_type value_of(const iterator i)
{
return i->operator * ();
}
@@ -564,16 +567,22 @@ namespace flib
class list
: protected FCListItem
{
-   public:
-   typedef flib::FListItem *iterable;
+   protected:
+   typedef flib::FListItem *data_holder;
+   typedef flib::iterator_traits data_holder_traits;

+   public:
/* std::list compatibility */
-   typedef T value_type;
-   typedef flib::iterator_wrapper iterator;
-   typedef flib::iterator_wrapper reverse_iterator;
-   typedef flib::const_iterator_wrapper const_iterator;
-   typedef flib::const_iterator_wrapper 
const_reverse_iterator;
-   typedef size_t size_type;
+   typedef flib::iterator_wrapper 

[Frugalware-git] pacman-g2: libpacman: Remove unecessary templates overloads.

2014-11-09 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=d5b54e6f05fc96c3ace80dd4577566998c22c69f

commit d5b54e6f05fc96c3ace80dd4577566998c22c69f
Author: Michel Hermier 
Date:   Tue Nov 4 11:34:38 2014 +0100

libpacman: Remove unecessary templates overloads.

diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h
index c1ec051..a363995 100644
--- a/lib/libpacman/util/flist.h
+++ b/lib/libpacman/util/flist.h
@@ -70,78 +70,6 @@ namespace flib
}
};

-   template 
-   struct iterable_traits
-   {
-   typedef Iterable *iterable;
-   typedef ptrdiff_t difference_type;
-   typedef Iterable *pointer;
-   typedef Iterable &reference;
-   typedef size_t size_type;
-   typedef Iterable value_type;
-
-   static iterable next(const iterable &i)
-   {
-   return i->next();
-   }
-
-   static iterable previous(const iterable &i)
-   {
-   return i->previous();
-   }
-
-   static reference reference_of(iterable i)
-   {
-   return i->operator * ();
-   }
-
-   static pointer pointer_of(iterable i)
-   {
-   return i->operator -> ();
-   }
-
-   static value_type value_of(const iterable i)
-   {
-   return i->operator * ();
-   }
-   };
-
-   template 
-   struct iterable_traits
-   {
-   typedef Iterable *iterable;
-   typedef ptrdiff_t difference_type;
-   typedef const Iterable *pointer;
-   typedef const Iterable &reference;
-   typedef size_t size_type;
-   typedef Iterable value_type;
-
-   static iterable next(const iterable &i)
-   {
-   return i->next();
-   }
-
-   static iterable previous(const iterable &i)
-   {
-   return i->previous();
-   }
-
-   static reference reference_of(iterable i)
-   {
-   return i->operator * ();
-   }
-
-   static pointer pointer_of(iterable i)
-   {
-   return i->operator -> ();
-   }
-
-   static value_type value_of(const iterable i)
-   {
-   return i->operator * ();
-   }
-   };
-
template 
struct const_iterator
{
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Move FCListItem inside flib.

2014-11-09 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=e69c17d431c618857e2cb628e7d6088f2a9c94da

commit e69c17d431c618857e2cb628e7d6088f2a9c94da
Author: Michel Hermier 
Date:   Tue Nov 4 11:40:38 2014 +0100

libpacman: Move FCListItem inside flib.

diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h
index a363995..b052734 100644
--- a/lib/libpacman/util/flist.h
+++ b/lib/libpacman/util/flist.h
@@ -299,97 +299,95 @@ namespace flib
public: /* FIXME: Make protected/private */
iterable m_iterable;
};
-}

-class FCListItem
-{
-public:
-   friend struct flib::iterable_traits;
+   class FCListItem
+   {
+   public:
+   friend struct flib::iterable_traits;

-   typedef void *value_type;
-   typedef value_type *pointer;
-   typedef size_t size_type;
-   typedef value_type &reference;
+   typedef void *value_type;
+   typedef value_type *pointer;
+   typedef size_t size_type;
+   typedef value_type &reference;

-   FCListItem()
-   : FCListItem(NULL, NULL)
-   { }
+   FCListItem()
+   : FCListItem(NULL, NULL)
+   { }

-   FCListItem(FCListItem *previous, FCListItem *next)
-   : m_next(next), m_previous(previous)
-   { }
+   FCListItem(FCListItem *previous, FCListItem *next)
+   : m_next(next), m_previous(previous)
+   { }

-   virtual ~FCListItem()
-   { } // FIXME: Make pure virtual
+   virtual ~FCListItem()
+   { } // FIXME: Make pure virtual

#if 0
-   virtual void *c_data() const
-   { return m_data; } // FIXME: Make pure virtual
+   virtual void *c_data() const
+   { return m_data; } // FIXME: Make pure virtual
#endif

-   bool insert_after(FCListItem *previous)
-   {
-   FCListItem *next;
+   bool insert_after(FCListItem *previous)
+   {
+   FCListItem *next;

-   ASSERT(previous != NULL, RET_ERR(PM_ERR_WRONG_ARGS, false));
+   ASSERT(previous != NULL, RET_ERR(PM_ERR_WRONG_ARGS, 
false));

-   next = previous->m_next;
-   previous->m_next = this;
-   m_next = next;
-   m_previous = previous;
+   next = previous->m_next;
+   previous->m_next = this;
+   m_next = next;
+   m_previous = previous;
#ifndef F_NOCOMPAT
-   if (next != NULL)
+   if (next != NULL)
#endif
-   next->m_previous = this;
-   return true;
-   }
-
-   FCListItem *next() const
-   {
-   return m_next;
-   }
+   next->m_previous = this;
+   return true;
+   }

-   FCListItem *previous() const
-   {
-   return m_previous;
-   }
+   FCListItem *next() const
+   {
+   return m_next;
+   }

-   void swap(FCListItem &o)
-   {
-   std::swap(m_next, o.m_next);
-   std::swap(m_previous, o.m_previous);
-   if(m_next != &o) {
-   m_next->m_previous = this;
-   m_previous->m_next = this;
-   } else {
-   m_next = m_previous = this;
+   FCListItem *previous() const
+   {
+   return m_previous;
}
-   if(o.m_next != this) {
-   o.m_next->m_previous = &o;
-   o.m_previous->m_next = &o;
-   } else {
-   o.m_next = o.m_previous = &o;
+
+   void swap(FCListItem &o)
+   {
+   std::swap(m_next, o.m_next);
+   std::swap(m_previous, o.m_previous);
+   if(m_next != &o) {
+   m_next->m_previous = this;
+   m_previous->m_next = this;
+   } else {
+   m_next = m_previous = this;
+   }
+   if(o.m_next != this) {
+   o.m_next->m_previous = &o;
+   o.m_previous->m_next = &o;
+   } else {
+   o.m_next = o.m_previous = &o;
+   }
}
-   }

-   void remove()
-   {
-   m_next->m_previous = m_previous;
-   m_previous->m_next = m_next;
-   m_next = m_previous = NULL;
-   }
+   void remove()
+   {
+   m_next->m_previous = m_previous;
+   

[Frugalware-git] pacman-g2: libpacman: Rename FList to flib::list.

2014-11-09 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=84cd20a8a37431ba98baed9fdfc3345682d62188

commit 84cd20a8a37431ba98baed9fdfc3345682d62188
Author: Michel Hermier 
Date:   Tue Nov 4 12:13:53 2014 +0100

libpacman: Rename FList to flib::list.

diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp
index 7d8863c..8f934ca 100644
--- a/lib/libpacman/database_cache.cpp
+++ b/lib/libpacman/database_cache.cpp
@@ -42,6 +42,7 @@
#include "handle.h"
#include "error.h"

+using namespace flib;
using namespace libpacman;

static
@@ -129,7 +130,7 @@ int Database::remove_pkgfromcache(package_ptr pkg)
}

static
-Group *_pacman_db_get_grpfromlist(const FList &list, const char 
*target)
+Group *_pacman_db_get_grpfromlist(const list &list, const char 
*target)
{
if(_pacman_strempty(target)) {
return(NULL);
diff --git a/lib/libpacman/deps.cpp b/lib/libpacman/deps.cpp
index 3e76f2c..d21bf06 100644
--- a/lib/libpacman/deps.cpp
+++ b/lib/libpacman/deps.cpp
@@ -42,6 +42,7 @@
#include "versioncmp.h"
#include "handle.h"

+using namespace flib;
using namespace libpacman;

typedef struct __pmgraph_t {
@@ -50,7 +51,7 @@ typedef struct __pmgraph_t {
{ }

pmsyncpkg_t *data;
-   FList<__pmgraph_t *> children;
+   list<__pmgraph_t *> children;

int state; /* 0: untouched, -1: entered, other: leaving time */
struct __pmgraph_t *parent; /* where did we come from? */
@@ -111,7 +112,7 @@ FPtrList &_pacman_depmisslist_add(FPtrList &misslist, 
pmdepmissing_t *miss)
*/
void pmtrans_t::sortbydeps(int mode)
{
-   FList vertices;
+   list vertices;
pmgraph_t *vertex;
int found;

diff --git a/lib/libpacman/handle.h b/lib/libpacman/handle.h
index a205f8d..ceae0d6 100644
--- a/lib/libpacman/handle.h
+++ b/lib/libpacman/handle.h
@@ -65,7 +65,7 @@ public:
pmaccess_t access;
uid_t uid;
libpacman::Database *db_local;
-   FList dbs_sync;
+   flib::list dbs_sync;
FILE *logfd;
FFileLock *filelock;
pmtrans_t *trans;
diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h
index 5f1dec1..04c8567 100644
--- a/lib/libpacman/package.h
+++ b/lib/libpacman/package.h
@@ -179,7 +179,7 @@ public:
typedef flib::refcounted_shared_ptr package_ptr;
bool operator < (const package_ptr &pkg1, const package_ptr &pkg2);

-   typedef FList package_list;
+   typedef flib::list package_list;
typedef flib::set package_set;

class PackageMatcher
diff --git a/lib/libpacman/pacman_p.h b/lib/libpacman/pacman_p.h
index cbcf173..d8d57e0 100644
--- a/lib/libpacman/pacman_p.h
+++ b/lib/libpacman/pacman_p.h
@@ -54,11 +54,11 @@ DEFINE_CAST(struct __pmpkg_t, libpacman::package)
//DEFINE_CAST(struct __pmtrans_t, libpacman::Transaction)

template 
-static inline __pmlist_t *c_cast(FList &obj)
+static inline __pmlist_t *c_cast(flib::list &obj)
{ return (__pmlist_t *)&obj; }

template 
-static inline __pmlist_t *c_cast(FList *obj)
+static inline __pmlist_t *c_cast(flib::list *obj)
{ return (__pmlist_t *)obj; }

static inline struct __pmpkg_t *c_cast(const libpacman::package_ptr &obj)
diff --git a/lib/libpacman/trans.h b/lib/libpacman/trans.h
index 6b387ee..903e015 100644
--- a/lib/libpacman/trans.h
+++ b/lib/libpacman/trans.h
@@ -82,7 +82,7 @@ struct __pmtrans_t
int flags;
unsigned char state;
FStringList targets;
-   FList syncpkgs;
+   flib::list syncpkgs;
flib::str_set skiplist;
FStringList triggers;

diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h
index 17b9a69..fc4a429 100644
--- a/lib/libpacman/util/flist.h
+++ b/lib/libpacman/util/flist.h
@@ -550,309 +550,309 @@ namespace flib
return i->operator * ();
}
};
-}

-template 
-class FList
-   : protected flib::FCListItem
-{
-public:
-   typedef flib::FListItem *iterable;
-
-   /* std::list compatibility */
-   typedef T value_type;
-   typedef flib::iterator iterator;
-   typedef flib::iterator reverse_iterator;
-   typedef flib::const_iterator const_iterator;
-   typedef flib::const_iterator const_reverse_iterator;
-   typedef size_t size_type;
-
-   FList()
-   : FCListItem(this, this)
-   { }
-
-   FList(FList &&o)
-   : FList()
+   template 
+   class list
+   : protected FCListItem
{
-   swap(o);
-   }
+   public:
+   typedef flib::FListItem *iterable;

-   FList &operator = (FList &&o)
-   {
-   swap(o);
-   return *this;
-   }
+   /* std::list compatibility */
+   typedef T value_type;
+   typedef flib::iterator iterator;
+   typedef flib::iterator reverse_iterator;
+   typedef flib::const_iterator const_iterator;
+   typedef flib::const_iterator 
const_reverse_iterator;
+   typedef size_t size_type;

-   virtual ~FList() overri

[Frugalware-git] pacman-g2: libpacman: Make flib::set work more with keyed_value_traits.

2014-11-09 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=9621965cdd5d2577a357d0d00798f6a9b8df731b

commit 9621965cdd5d2577a357d0d00798f6a9b8df731b
Author: Michel Hermier 
Date:   Fri Nov 7 11:08:19 2014 +0100

libpacman: Make flib::set work more with keyed_value_traits.

diff --git a/lib/libpacman/util/fset.h b/lib/libpacman/util/fset.h
index 9056ed1..3ee53e9 100644
--- a/lib/libpacman/util/fset.h
+++ b/lib/libpacman/util/fset.h
@@ -57,13 +57,11 @@ namespace flib
{
private:
typedef flib::list super_type;
+   typedef flib::keyed_value_traits keyed_value_traits;

public:
using typename super_type::iterator;
-   using typename super_type::value_type;
-
-   typedef Compare key_compare;
-   typedef Compare value_compare;
+   using typename super_type::const_iterator;

using super_type::list;

@@ -84,33 +82,53 @@ namespace flib

using super_type::any_match_if;

+   public:
+   typedef typename keyed_value_traits::keyed_value_type 
keyed_value_type;
+   typedef typename keyed_value_traits::key_type key_type;
+   typedef typename keyed_value_traits::value_type value_type;
+
+   typedef Compare key_compare;
+   typedef Compare value_compare;
+
explicit operator const flib::list &() const
{
return *this;
}

-   virtual iterator add(const value_type &data) override
+   virtual iterator add(const keyed_value_type &keyed_value) 
override
{
iterator end = this->end();
/* Find insertion point. */
-   iterator next = find_insertion_point(data);
+   iterator next = 
find_insertion_point(keyed_value_traits::value_of(keyed_value));

// ensure we don't have an egality
-   if(next == end || m_compare(data, *next)) {
-   typename super_type::data_holder add = new 
FListItem(data);
+   if(next == end || m_compare(keyed_value, *next)) {
+   typename super_type::data_holder add = new 
FListItem(keyed_value);
add->insert_after(next.previous());
return iterator(add);
}
return end;
}

-   iterator find(const value_type &data)
+   iterator find(const key_type &key)
{
iterator end = this->end();
-   iterator it = find_insertion_point(data);
+   iterator it = find_insertion_point(key);
+
+   // ensure we have an egality
+   if(it == end || !m_compare(key, *it)) {
+   return end;
+   }
+   return it;
+   }
+
+   const_iterator find(const key_type &key) const
+   {
+   const_iterator end = this->end();
+   const_iterator it = find_insertion_point(key);

// ensure we have an egality
-   if(it == end || !m_compare(data, *it)) {
+   if(it == end || !m_compare(key, *it)) {
return end;
}
return it;
@@ -129,9 +147,11 @@ namespace flib

private:
/* Return the first iterator where value does not satisfy Compare */
-   iterator find_insertion_point(const value_type &data)
+   iterator find_insertion_point(const key_type &key)
{
-   return super_type::find_if_not([&] (const T &o) -> bool 
{ return m_compare(o, data); });
+   return super_type::find_if_not(
+   [&] (const keyed_value_type 
&keyed_value) -> bool
+   { return 
m_compare(keyed_value_traits::value_of(keyed_value), key); });
}

Compare m_compare;
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Remove unused flib::uncompared struct.

2014-11-09 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=e33d5427c2f7a5b6e97716294680a8e78a12e803

commit e33d5427c2f7a5b6e97716294680a8e78a12e803
Author: Michel Hermier 
Date:   Tue Nov 4 11:15:04 2014 +0100

libpacman: Remove unused flib::uncompared struct.

diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h
index 0bae4d6..c1ec051 100644
--- a/lib/libpacman/util/flist.h
+++ b/lib/libpacman/util/flist.h
@@ -34,10 +34,6 @@

namespace flib
{
-   /* Used as a marker to make containers unsorted */
-   struct uncompared
-   { };
-
template 
struct iterable_traits
{
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add base class for iterator wrappers.

2014-11-09 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=b01df91caa9cfe2e3dc214b36b5c195dcfd9c124

commit b01df91caa9cfe2e3dc214b36b5c195dcfd9c124
Author: Michel Hermier 
Date:   Tue Nov 4 14:29:03 2014 +0100

libpacman: Add base class for iterator wrappers.

diff --git a/lib/libpacman/trans.cpp b/lib/libpacman/trans.cpp
index 98867be..6da550c 100644
--- a/lib/libpacman/trans.cpp
+++ b/lib/libpacman/trans.cpp
@@ -1023,7 +1023,7 @@ int _pacman_fpmpackage_install(package_ptr pkg, 
pmtranstype_t type, pmtrans_t *t
}
sprintf(fn, "%s\t%s", file, sha1_pkg);
}
-   
lp.m_iterable->swap_data((const char *&)fn);
+   
lp.m_iterator->swap_data((const char *&)fn);
free(fn);
}
}
@@ -1159,7 +1159,7 @@ int _pacman_fpmpackage_install(package_ptr pkg, 
pmtranstype_t type, pmtrans_t *t
sprintf(fn, "%s\t%s", file, sha1);
FREE(sha1);
}
-   
lp.m_iterable->swap_data((const char *&)fn);
+   
lp.m_iterator->swap_data((const char *&)fn);
free(fn);
}
}
@@ -1507,7 +1507,7 @@ int __pmtrans_t::commit(FPtrList **data)
for(auto m = depends.begin(), end = depends.end(); m != end; ++m) {
if(!strcmp(*m, old->name())) {
const char *str = strdup(pkg_new->name());
-   
m.m_iterable->swap_data(str);
+   
m.m_iterator->swap_data(str);
free(str);
}
}
diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h
index 05c6f02..035ac66 100644
--- a/lib/libpacman/util/flist.h
+++ b/lib/libpacman/util/flist.h
@@ -70,10 +70,71 @@ namespace flib
}
};

+   template 
+   class iterator_wrapper_base
+   {
+   public:
+   typedef Iterator wrapped_iterator_type;
+   typedef iterator_traits wrapped_iterator_traits;
+   typedef typename wrapped_iterator_traits::pointer pointer;
+   typedef typename wrapped_iterator_traits::size_type size_type;
+   typedef typename wrapped_iterator_traits::value_type value_type;
+
+   explicit iterator_wrapper_base(wrapped_iterator_type i = 
wrapped_iterator_type())
+   : m_iterator(i)
+   { }
+
+   iterator_wrapper_base(const iterator_wrapper_base &o)
+   : m_iterator(o.m_iterator)
+   { }
+
+   iterator_wrapper_base &operator = (const iterator_wrapper_base 
&o)
+   {
+   m_iterator = o.m_iterator;
+   return *this;
+   }
+
+   /* explicit */ operator wrapped_iterator_type ()
+   {
+   return m_iterator;
+   }
+
+   bool operator == (const iterator_wrapper_base &o) const
+   {
+   return m_iterator == o.m_iterator;
+   }
+
+   bool operator != (const iterator_wrapper_base &o) const
+   {
+   return m_iterator != o.m_iterator;
+   }
+
+   wrapped_iterator_type iterator() const
+   {
+   return m_iterator;
+   }
+
+   wrapped_iterator_type iterator_next() const
+   {
+   return !Reverse ? 
wrapped_iterator_traits::next(m_iterator) : 
wrapped_iterator_traits::previous(m_iterator);
+   }
+
+   wrapped_iterator_type iterator_previous() const
+   {
+   return !Reverse ? 
wrapped_iterator_traits::previous(m_iterator) : 
wrapped_iterator_traits::next(m_iterator);
+   }
+
+   /* protected: */
+   wrapped_iterator_type m_iterator;
+   };
+
template 
struct const_iterator_wrapper
+   : public iterator_wrapper_base
{
public:
+   typedef iterator_wrapper_base super_type;
+
//  typedef typename iterator_traits::difference_type 
difference_type;
typedef typename iterator_traits::iterable iterable;
typedef typename iterator_traits::pointer pointer;
@@ -81,40 +142,25 @@ namespace flib
typedef typename iterator_traits::value_type value_type;

explicit const_iterator_wrapper(iterable i = iterable())
-   : m_iterable(i)
+   : super_type(i)
{ }

const_iterator_wrapper(const const_iterator_wrapper &o)
-   : m_iterable(o.m_iterable)
+   : super_type(o)
{ }

~const_iterator_wrapper()
{ }

-   operator iterable ()
-   {
-   return m_iterable;
-   }
-
const_iterator_wrapper &operator = (const const_iterator_wrapper &o)
{
-  

[Frugalware-git] pacman-g2: libpacman: Add keyed_value_traits, make flib::set privately inherit of flib::list.

2014-11-09 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=ed2f134709e78751b73c4d39a67befcd43346a62

commit ed2f134709e78751b73c4d39a67befcd43346a62
Author: Michel Hermier 
Date:   Fri Nov 7 10:42:39 2014 +0100

libpacman: Add keyed_value_traits, make flib::set privately inherit of 
flib::list.

diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp
index 8f934ca..73d1ac2 100644
--- a/lib/libpacman/database_cache.cpp
+++ b/lib/libpacman/database_cache.cpp
@@ -130,7 +130,7 @@ int Database::remove_pkgfromcache(package_ptr pkg)
}

static
-Group *_pacman_db_get_grpfromlist(const list &list, const char 
*target)
+Group *_pacman_db_get_grpfromlist(const group_set &list, const char *target)
{
if(_pacman_strempty(target)) {
return(NULL);
diff --git a/lib/libpacman/pacman_p.h b/lib/libpacman/pacman_p.h
index d8d57e0..a3db46a 100644
--- a/lib/libpacman/pacman_p.h
+++ b/lib/libpacman/pacman_p.h
@@ -61,6 +61,10 @@ template 
static inline __pmlist_t *c_cast(flib::list *obj)
{ return (__pmlist_t *)obj; }

+template 
+static inline __pmlist_t *c_cast(flib::set &obj)
+{ return (__pmlist_t *)&obj; }
+
static inline struct __pmpkg_t *c_cast(const libpacman::package_ptr &obj)
{ return (__pmpkg_t *)obj.get(); }

diff --git a/lib/libpacman/util/fset.h b/lib/libpacman/util/fset.h
index e8f8c22..9056ed1 100644
--- a/lib/libpacman/util/fset.h
+++ b/lib/libpacman/util/fset.h
@@ -28,13 +28,37 @@

namespace flib
{
-   template >
+   template 
+   struct keyed_value_traits
+   {
+   typedef T keyed_value_type;
+   typedef T key_type;
+   typedef T value_type;
+
+   static const key_type &key_of(const keyed_value_type &o)
+   {
+   return o;
+   }
+
+   static value_type &value_of(keyed_value_type &o)
+   {
+   return o;
+   }
+
+   static const value_type &value_of(const keyed_value_type &o)
+   {
+   return o;
+   }
+   };
+
+   template ::key_type>>
class set
-   : public flib::list
+   : private flib::list
{
-   public:
+   private:
typedef flib::list super_type;

+   public:
using typename super_type::iterator;
using typename super_type::value_type;

@@ -43,6 +67,28 @@ namespace flib

using super_type::list;

+   /* Iterators */
+   using super_type::begin;
+   using super_type::end;
+   using super_type::rbegin;
+   using super_type::rend;
+
+   /* Capacity */
+   using super_type::empty;
+   using super_type::size;
+
+   /* Element access */
+   using super_type::clear;
+   using super_type::contains;
+   using super_type::remove;
+
+   using super_type::any_match_if;
+
+   explicit operator const flib::list &() const
+   {
+   return *this;
+   }
+
virtual iterator add(const value_type &data) override
{
iterator end = this->end();
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: pacman-g2: Fix typo in dump_pkg_files.

2014-11-09 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=36bc62edd5d8ef58ec30cd7a102e701b1ce66381

commit 36bc62edd5d8ef58ec30cd7a102e701b1ce66381
Author: Michel Hermier 
Date:   Sun Nov 9 22:05:29 2014 +0100

pacman-g2: Fix typo in dump_pkg_files.

diff --git a/src/pacman-g2/package.c b/src/pacman-g2/package.c
index a66db07..2596ab3 100644
--- a/src/pacman-g2/package.c
+++ b/src/pacman-g2/package.c
@@ -176,7 +176,7 @@ void dump_pkg_files(PM_PKG *pkg)
pkgname = pacman_pkg_getinfo(pkg, PM_PKG_NAME);
pkgfiles = pacman_pkg_getinfo(pkg, PM_PKG_FILES);

-   for(pmlist_iterator_t *i = pacman_list_begin(pkgfiles), *end = 
pacman_list_begin(pkgfiles); i != end; i = pacman_list_next(i)) {
+   for(pmlist_iterator_t *i = pacman_list_begin(pkgfiles), *end = 
pacman_list_end(pkgfiles); i != end; i = pacman_list_next(i)) {
fprintf(stdout, "%s %s%s\n", (char *)pkgname, config->root, (char 
*)pacman_list_getdata(i));
}
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Move FListItem inside flib.

2014-11-09 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=1f4ed7ab83b6ad8c9cc711e8010bb818c7d779c8

commit 1f4ed7ab83b6ad8c9cc711e8010bb818c7d779c8
Author: Michel Hermier 
Date:   Tue Nov 4 11:48:17 2014 +0100

libpacman: Move FListItem inside flib.

diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h
index b052734..17b9a69 100644
--- a/lib/libpacman/util/flist.h
+++ b/lib/libpacman/util/flist.h
@@ -426,97 +426,95 @@ namespace flib
}
#endif
};
-}

-template 
-class FListItem
-   : public flib::FCListItem
-{
-public:
-   friend struct flib::iterable_traits;
+   template 
+   class FListItem
+   : public flib::FCListItem
+   {
+   public:
+   friend struct flib::iterable_traits;

-   typedef T value_type;
-   typedef value_type *pointer;
-   typedef size_t size_type;
-   typedef value_type &reference;
+   typedef T value_type;
+   typedef value_type *pointer;
+   typedef size_t size_type;
+   typedef value_type &reference;

-   explicit FListItem(const T &data = T())
-   : m_data(data)
-   { }
+   explicit FListItem(const T &data = T())
+   : m_data(data)
+   { }

-   FListItem(T &&data)
-   : m_data(std::move(data))
-   { }
+   FListItem(T &&data)
+   : m_data(std::move(data))
+   { }

-   virtual ~FListItem()
-   { }
+   virtual ~FListItem()
+   { }

#if 0
-   virtual void *c_data() const override
-   {
-   return &m_data;
-   }
+   virtual void *c_data() const override
+   {
+   return &m_data;
+   }

-   T &data()
-   {
-   return m_data;
-   }
+   T &data()
+   {
+   return m_data;
+   }

-   const T &data() const
-   {
-   return m_data;
-   }
+   const T &data() const
+   {
+   return m_data;
+   }
#endif
-   reference operator * ()
-   {
-   return m_data;
-   }
+   reference operator * ()
+   {
+   return m_data;
+   }

-   const value_type operator * () const
-   {
-   return m_data;
-   }
+   const value_type operator * () const
+   {
+   return m_data;
+   }

-   pointer operator -> ()
-   {
-   return &m_data;
-   }
+   pointer operator -> ()
+   {
+   return &m_data;
+   }

-   const pointer operator -> () const
-   {
-   return &m_data;
-   }
+   const pointer operator -> () const
+   {
+   return &m_data;
+   }

-   FListItem *next() const
-   {
-   return static_cast(m_next);
-   }
+   FListItem *next() const
+   {
+   return static_cast(m_next);
+   }

-   FListItem *previous() const
-   {
-   return static_cast(m_previous);
-   }
+   FListItem *previous() const
+   {
+   return static_cast(m_previous);
+   }

-   void swap_data(T &o)
-   {
-   std::swap(m_data, o);
-   }
+   void swap_data(T &o)
+   {
+   std::swap(m_data, o);
+   }

-   void swap_data(T *o)
-   {
-   std::swap(m_data, *o);
-   }
+   void swap_data(T *o)
+   {
+   std::swap(m_data, *o);
+   }

-//protected:
-   T m_data;
+// protected:
+   T m_data;

-private:
-   FListItem(const FListItem &o);
+   private:
+   FListItem(const FListItem &o);

-   FListItem &operator = (const FListItem &o);
-};
+   FListItem &operator = (const FListItem &o);
+   };

-namespace flib {
template 
struct iterable_traits *>
{
@@ -559,7 +557,7 @@ class FList
: protected flib::FCListItem
{
public:
-   typedef FListItem *iterable;
+   typedef flib::FListItem *iterable;

/* std::list compatibility */
typedef T value_type;
@@ -718,8 +716,8 @@ public:
{
ASSERT(position != c_end(), RET_ERR(PM_ERR_WRONG_ARGS, position));

-   FListItem *erased = (iterable)position;
-   FListItem *next = erased->next();
+   iterable erased = (iterable)position;
+   iterable next = erased->next();
erased->remove();
delete erased;
return iterator(next);
@@ -79

[Frugalware-git] pacman-g2: libpacman: Rename flib::refcounted::aboutToDestroy to about_to_destroy.

2014-11-03 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=d9fa55abc10f72f14405f4f2a17ec26465724ad5

commit d9fa55abc10f72f14405f4f2a17ec26465724ad5
Author: Michel Hermier 
Date:   Sat Nov 1 09:23:09 2014 +0100

libpacman: Rename flib::refcounted::aboutToDestroy to about_to_destroy.

diff --git a/lib/libpacman/kernel/frefcounted.cpp 
b/lib/libpacman/kernel/frefcounted.cpp
index 6be2958..49a637d 100644
--- a/lib/libpacman/kernel/frefcounted.cpp
+++ b/lib/libpacman/kernel/frefcounted.cpp
@@ -44,7 +44,7 @@ void refcounted::acquire() const
void refcounted::release() const
{
if(--m_reference_counter == 0) {
-   aboutToDestroy(const_cast(this));
+   about_to_destroy(const_cast(this));
delete this;
}
}
diff --git a/lib/libpacman/kernel/frefcounted.h 
b/lib/libpacman/kernel/frefcounted.h
index 32ebefa..4340196 100644
--- a/lib/libpacman/kernel/frefcounted.h
+++ b/lib/libpacman/kernel/frefcounted.h
@@ -30,7 +30,7 @@ namespace flib
class refcounted
{
public:
-   flib::FSignal aboutToDestroy;
+   flib::FSignal about_to_destroy;

public:
refcounted();
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add Flist (all|any)_match(_if) helpers.

2014-11-03 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=bbb2d288ec1220827d6fe5ee93310de85c6111a1

commit bbb2d288ec1220827d6fe5ee93310de85c6111a1
Author: Michel Hermier 
Date:   Mon Oct 27 17:25:45 2014 +0100

libpacman: Add Flist (all|any)_match(_if) helpers.

diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h
index b028dbe..0bae4d6 100644
--- a/lib/libpacman/util/flist.h
+++ b/lib/libpacman/util/flist.h
@@ -879,6 +879,30 @@ public:
FCListItem::swap(o);
}

+   template 
+   bool all_match(const U &val) const
+   {
+   return flib::all_match(begin(), end(), val);
+   }
+
+   template 
+   bool all_match_if(UnaryPredicate pred) const
+   {
+   return flib::all_match_if(begin(), end(), pred);
+   }
+
+   template 
+   bool any_match(const U &val) const
+   {
+   return flib::any_match(begin(), end(), val());
+   }
+
+   template 
+   bool any_match_if(UnaryPredicate pred)
+   {
+   return flib::any_match_if(begin(), end(), pred);
+   }
+
public:
iterable c_first() const
{
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Remove a now dummy goto in _pacman_trans_sysupgrade.

2014-11-03 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=23744f91caa12b79f7d5f886d21d9b3328979fd3

commit 23744f91caa12b79f7d5f886d21d9b3328979fd3
Author: Michel Hermier 
Date:   Mon Oct 27 07:42:44 2014 +0100

libpacman: Remove a now dummy goto in _pacman_trans_sysupgrade.

diff --git a/lib/libpacman/trans_sysupgrade.cpp 
b/lib/libpacman/trans_sysupgrade.cpp
index 987aefe..67c89a0 100644
--- a/lib/libpacman/trans_sysupgrade.cpp
+++ b/lib/libpacman/trans_sysupgrade.cpp
@@ -133,9 +133,7 @@ int _pacman_trans_sysupgrade(pmtrans_t *trans)
for(auto i = cache_local.begin(), end= cache_local.end(); i != end; ++i) {
int cmp;
int replace=0;
-   package_ptr local(*i);
-   package_ptr spkg = NULL;
-   pmsyncpkg_t *ps;
+   package_ptr local(*i), spkg;

for(auto j = handle->dbs_sync.begin(), end = handle->dbs_sync.end(); !spkg && j 
!= end; ++j) {
spkg = ((Database *)*j)->find(local->name());
@@ -147,8 +145,7 @@ int _pacman_trans_sysupgrade(pmtrans_t *trans)

/* we don't care about a to-be-replaced package's newer version */
for(auto j = trans->syncpkgs.begin(), end = trans->syncpkgs.end(); j != end && 
!replace; ++j) {
-   ps = *j;
-   if(_pacman_pkg_isin(spkg->name(), ps->m_replaces)) {
+   if(_pacman_pkg_isin(spkg->name(), (*j)->m_replaces)) {
replace=1;
}
}
@@ -182,9 +179,9 @@ int _pacman_trans_sysupgrade(pmtrans_t *trans)
local->name(), local->version(), local->version(), spkg->version());
/* check if spkg->name is already in the packages list. */
if(!trans->find(spkg->name())) {
-   ps = new __pmsyncpkg_t(PM_TRANS_TYPE_SYNC, 
spkg);
+   pmsyncpkg_t *ps = new 
__pmsyncpkg_t(PM_TRANS_TYPE_SYNC, spkg);
if(ps == NULL) {
-   goto error;
+   return -1;
}
trans->syncpkgs.add(ps);
} else {
@@ -192,11 +189,7 @@ int _pacman_trans_sysupgrade(pmtrans_t *trans)
}
}
}
-
-   return(0);
-
-error:
-   return(-1);
+   return 0;
}

/* vim: set ts=2 sw=2 noet: */
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add flib::refcounted_weak_ptr.

2014-11-03 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=33f9773cb39e92d4f669ae5a145ccce7d2ca0662

commit 33f9773cb39e92d4f669ae5a145ccce7d2ca0662
Author: Michel Hermier 
Date:   Mon Nov 3 12:08:04 2014 +0100

libpacman: Add flib::refcounted_weak_ptr.

diff --git a/lib/libpacman/kernel/frefcounted.h 
b/lib/libpacman/kernel/frefcounted.h
index 2eb4386..0813923 100644
--- a/lib/libpacman/kernel/frefcounted.h
+++ b/lib/libpacman/kernel/frefcounted.h
@@ -253,8 +253,10 @@ namespace flib {
template 
void reset(Y *ptr)
{
-   if(super_type::get() != nullptr) {
-   super_type::get()->release();
+   typename super_type::element_type *old_ptr = 
super_type::get();
+
+   if(old_ptr != nullptr) {
+   old_ptr->release();
}
if(ptr != nullptr) {
ptr->acquire();
@@ -267,6 +269,114 @@ namespace flib {
super_type::swap(o);
}
};
+
+   template 
+   class refcounted_weak_ptr
+   : public refcounted_ptr
+   {
+   public:
+   typedef refcounted_ptr super_type;
+
+   constexpr refcounted_weak_ptr()
+   : refcounted_weak_ptr(nullptr)
+   { }
+
+   constexpr refcounted_weak_ptr(std::nullptr_t)
+   { }
+
+   template 
+   explicit refcounted_weak_ptr(Y *refcounted_ptr)
+   : refcounted_weak_ptr()
+   {
+   reset(refcounted_ptr.get());
+   }
+
+   template 
+   refcounted_weak_ptr(const refcounted_ptr &o)
+   : refcounted_weak_ptr(o.get())
+   { }
+
+   refcounted_weak_ptr(const refcounted_ptr &o)
+   : refcounted_weak_ptr(o.get())
+   { }
+
+   template 
+   refcounted_weak_ptr(const refcounted_weak_ptr &o)
+   : refcounted_weak_ptr(o.get())
+   { }
+
+   refcounted_weak_ptr(const refcounted_weak_ptr &o)
+   : refcounted_weak_ptr(o.get())
+   { }
+
+   refcounted_weak_ptr(refcounted_weak_ptr &&o)
+   : refcounted_weak_ptr()
+   {
+   swap(o);
+   }
+
+   ~refcounted_weak_ptr()
+   {
+   reset();
+   }
+
+   template 
+   refcounted_weak_ptr &operator = (const refcounted_ptr &o)
+   {
+   reset(o.get());
+   return *this;
+   }
+
+   refcounted_weak_ptr &operator = (const refcounted_ptr &o)
+   {
+   reset(o.get());
+   return *this;
+   }
+
+   template 
+   refcounted_weak_ptr &operator = (const refcounted_weak_ptr 
&o)
+   {
+   return operator = (static_cast 
&>(o));
+   }
+
+   refcounted_weak_ptr &operator = (const refcounted_weak_ptr &o)
+   {
+   return operator = (static_cast 
&>(o));
+   }
+
+   refcounted_weak_ptr &operator = (refcounted_weak_ptr &&o)
+   {
+   swap(o);
+   return *this;
+   }
+
+   /* Manipulators */
+   void reset()
+   {
+   reset(nullptr);
+   }
+
+   template 
+   void reset(Y *ptr)
+   {
+   typename super_type::element_type *old_ptr = 
super_type::get();
+
+   if(old_ptr != nullptr) {
+   old_ptr->about_to_destroy.disconnect(this);
+   }
+   if(ptr != nullptr) {
+   ptr->about_to_destroy.connect(this, 
static_cast(&reset));
+   }
+   super_type::reset(ptr);
+   }
+
+   void swap(refcounted_weak_ptr &o)
+   {
+   typename super_type::element_type *ptr = 
super_type::get();
+   reset(o.get());
+   o.reset(ptr);
+   }
+   };
} // namespace flib

#endif /* FREFCOUNTED_H */
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Use flib::str_set to hold trans::skiplist.

2014-11-03 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=718f15cc96755e645e734125907f73e85dd2fdfd

commit 718f15cc96755e645e734125907f73e85dd2fdfd
Author: Michel Hermier 
Date:   Mon Oct 27 10:17:43 2014 +0100

libpacman: Use flib::str_set to hold trans::skiplist.

diff --git a/lib/libpacman/db/localdb.cpp b/lib/libpacman/db/localdb.cpp
index ce7590d..83c762b 100644
--- a/lib/libpacman/db/localdb.cpp
+++ b/lib/libpacman/db/localdb.cpp
@@ -48,12 +48,10 @@ using namespace libpacman;

LocalPackage::LocalPackage(LocalDatabase *database)
: package(database)
-{
-}
+{ }

LocalPackage::~LocalPackage()
-{
-}
+{ }

LocalDatabase *LocalPackage::database() const
{
@@ -176,13 +174,7 @@ int _pacman_localpackage_remove(package_ptr pkg, pmtrans_t 
*trans, int howmany,
/* check the "skip list" before removing the file.
* see the big comment block in db_find_conflicts() for an
* explanation. */
-   int skipit = 0;
-   for(auto j = trans->skiplist.begin(), end = 
trans->skiplist.end(); j != end; ++j) {
-   if(!strcmp(file, *j)) {
-   skipit = 1;
-   }
-   }
-   if(skipit) {
+   if(trans->skiplist.contains(file)) {
_pacman_log(PM_LOG_FLOW2, _("skipping removal of %s as it has moved to another 
package"),
file);
} else {
diff --git a/lib/libpacman/kernel/fstr.cpp b/lib/libpacman/kernel/fstr.cpp
index 61df894..b1c2a82 100644
--- a/lib/libpacman/kernel/fstr.cpp
+++ b/lib/libpacman/kernel/fstr.cpp
@@ -115,7 +115,7 @@ void str::reset(const char *s)
if(m_str != nullptr) {
free(m_str);
}
-   m_str = strdup(s);
+   m_str = f_strdup(s);
}

void str::swap(str &o)
diff --git a/lib/libpacman/trans.h b/lib/libpacman/trans.h
index 0cb657b..6b387ee 100644
--- a/lib/libpacman/trans.h
+++ b/lib/libpacman/trans.h
@@ -28,6 +28,7 @@ typedef struct __pmtrans_t pmtrans_t;

#include "kernel/fobject.h"
#include "util/fstringlist.h"
+#include "util/fstrset.h"

namespace libpacman {

@@ -82,7 +83,7 @@ struct __pmtrans_t
unsigned char state;
FStringList targets;
FList syncpkgs;
-   FStringList skiplist;
+   flib::str_set skiplist;
FStringList triggers;

private:
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Simplify _pacman_localdb_write* internal API by using specialisation.

2014-11-03 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=f449a11c3e3f649018abe274854d7e716eba6373

commit f449a11c3e3f649018abe274854d7e716eba6373
Author: Michel Hermier 
Date:   Mon Oct 27 11:00:18 2014 +0100

libpacman: Simplify _pacman_localdb_write* internal API by using specialisation.

diff --git a/lib/libpacman/db/localdb.cpp b/lib/libpacman/db/localdb.cpp
index 83c762b..66157ee 100644
--- a/lib/libpacman/db/localdb.cpp
+++ b/lib/libpacman/db/localdb.cpp
@@ -369,7 +369,7 @@ package_ptr LocalDatabase::scan(const char *target, 
unsigned int inforeq)
}

static
-void _pacman_localdb_write_string(const char *entry, const char *value, FILE 
*stream)
+void _pacman_localdb_write(const char *entry, const char *value, FILE *stream)
{
if(!_pacman_strempty(value)) {
fprintf(stream, "%%%s%%\n%s\n\n", entry, value);
@@ -377,7 +377,7 @@ void _pacman_localdb_write_string(const char *entry, const 
char *value, FILE *st
}

static
-void _pacman_localdb_write_stringlist(const char *entry, const FStringList 
&values, FILE *stream)
+void _pacman_localdb_write(const char *entry, const FStringList &values, FILE 
*stream)
{
if(!values.empty()) {
fprintf(stream, "%%%s%%\n", entry);
@@ -411,19 +411,19 @@ int LocalDatabase::write(package_ptr info, unsigned int 
inforeq)
retval = 1;
goto cleanup;
}
-   _pacman_localdb_write_string("NAME", info->name(), fp);
-   _pacman_localdb_write_string("VERSION", info->version(), fp);
+   _pacman_localdb_write("NAME", info->name(), fp);
+   _pacman_localdb_write("VERSION", info->version(), fp);
if(info->description()[0]) {
-   _pacman_localdb_write_stringlist("DESC", 
info->desc_localized, fp);
+   _pacman_localdb_write("DESC", info->desc_localized, fp);
}
-   _pacman_localdb_write_stringlist("GROUPS", info->groups(), fp);
-   _pacman_localdb_write_string("URL", info->url(), fp);
-   _pacman_localdb_write_stringlist("LICENSE", info->license, fp);
-   _pacman_localdb_write_string("ARCH", info->arch, fp);
-   _pacman_localdb_write_string("BUILDDATE", info->builddate, fp);
-   _pacman_localdb_write_string("BUILDTYPE", info->buildtype, fp);
-   _pacman_localdb_write_string("INSTALLDATE", info->installdate, 
fp);
-   _pacman_localdb_write_string("PACKAGER", info->packager, fp);
+   _pacman_localdb_write("GROUPS", info->groups(), fp);
+   _pacman_localdb_write("URL", info->url(), fp);
+   _pacman_localdb_write("LICENSE", info->license, fp);
+   _pacman_localdb_write("ARCH", info->arch, fp);
+   _pacman_localdb_write("BUILDDATE", info->builddate, fp);
+   _pacman_localdb_write("BUILDTYPE", info->buildtype, fp);
+   _pacman_localdb_write("INSTALLDATE", info->installdate, fp);
+   _pacman_localdb_write("PACKAGER", info->packager, fp);
if(info->size) {
fprintf(fp, "%%SIZE%%\n"
"%ld\n\n", info->size);
@@ -432,7 +432,7 @@ int LocalDatabase::write(package_ptr info, unsigned int 
inforeq)
fprintf(fp, "%%REASON%%\n"
"%d\n\n", info->reason());
}
-   _pacman_localdb_write_stringlist("TRIGGERS", info->triggers(), 
fp);
+   _pacman_localdb_write("TRIGGERS", info->triggers(), fp);
fclose(fp);
fp = NULL;
}
@@ -445,8 +445,8 @@ int LocalDatabase::write(package_ptr info, unsigned int 
inforeq)
retval = -1;
goto cleanup;
}
-   _pacman_localdb_write_stringlist("FILES", info->files(), fp);
-   _pacman_localdb_write_stringlist("BACKUP", info->backup(), fp);
+   _pacman_localdb_write("FILES", info->files(), fp);
+   _pacman_localdb_write("BACKUP", info->backup(), fp);
fclose(fp);
fp = NULL;
}
@@ -459,10 +459,10 @@ int LocalDatabase::write(package_ptr info, unsigned int 
inforeq)
retval = -1;
goto cleanup;
}
-   _pacman_localdb_write_stringlist("DEPENDS", info->depends(), 
fp);
-   _pacman_localdb_write_stringlist("REQUIREDBY", 
info->requiredby(), fp);
-   _pacman_localdb_write_stringlist("CONFLICTS", 
info->conflicts(), fp);
-   _pacman_localdb_write_stringlist("PROVIDES", info->provides(), 
fp);
+   _pacman_localdb_write("DEPENDS", info->depends(), fp);
+   _pacman_localdb_write("REQUIREDBY", info->requiredby(), fp);
+   _pacman_localdb_write("CONFLICTS", info->conflicts(), fp);
+   _pacman_localdb_write("PROVIDES", info->provides(), fp);
fclose(fp);
fp = NULL;
}
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Rename flib::refcounted_ptr to refcounted_shared_ptr.

2014-11-03 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=942fa53e37c416c4fa2dd479a8ee8474a8bea4ca

commit 942fa53e37c416c4fa2dd479a8ee8474a8bea4ca
Author: Michel Hermier 
Date:   Sat Nov 1 09:22:24 2014 +0100

libpacman: Rename flib::refcounted_ptr to refcounted_shared_ptr.

diff --git a/lib/libpacman/kernel/frefcounted.h 
b/lib/libpacman/kernel/frefcounted.h
index 71fef3a..32ebefa 100644
--- a/lib/libpacman/kernel/frefcounted.h
+++ b/lib/libpacman/kernel/frefcounted.h
@@ -65,60 +65,60 @@ namespace flib
};

template 
-   class refcounted_ptr
+   class refcounted_shared_ptr
{
public:
typedef T element_type;

-   constexpr refcounted_ptr()
-   : refcounted_ptr(nullptr)
+   constexpr refcounted_shared_ptr()
+   : refcounted_shared_ptr(nullptr)
{ }

-   constexpr refcounted_ptr(std::nullptr_t)
+   constexpr refcounted_shared_ptr(std::nullptr_t)
: m_refcounted_ptr(nullptr)
{ }

template 
-   explicit refcounted_ptr(Y *ptr)
-   : refcounted_ptr()
+   explicit refcounted_shared_ptr(Y *ptr)
+   : refcounted_shared_ptr()
{
reset(ptr);
}

template 
-   refcounted_ptr(const refcounted_ptr &o)
-   : refcounted_ptr(o.m_refcounted_ptr)
+   refcounted_shared_ptr(const refcounted_shared_ptr &o)
+   : refcounted_shared_ptr(o.m_refcounted_ptr)
{ }

-   refcounted_ptr(const refcounted_ptr &o)
-   : refcounted_ptr(o.m_refcounted_ptr)
+   refcounted_shared_ptr(const refcounted_shared_ptr &o)
+   : refcounted_shared_ptr(o.m_refcounted_ptr)
{ }

-   refcounted_ptr(refcounted_ptr &&o)
-   : refcounted_ptr()
+   refcounted_shared_ptr(refcounted_shared_ptr &&o)
+   : refcounted_shared_ptr()
{
swap(o);
}

-   ~refcounted_ptr()
+   ~refcounted_shared_ptr()
{
reset();
}

template 
-   refcounted_ptr &operator = (const refcounted_ptr &o)
+   refcounted_shared_ptr &operator = (const 
refcounted_shared_ptr &o)
{
reset(o.m_refcounted_ptr);
return *this;
}

-   refcounted_ptr &operator = (const refcounted_ptr &o)
+   refcounted_shared_ptr &operator = (const refcounted_shared_ptr 
&o)
{
reset(o.m_refcounted_ptr);
return *this;
}

-   refcounted_ptr &operator = (refcounted_ptr &&o)
+   refcounted_shared_ptr &operator = (refcounted_shared_ptr &&o)
{
swap(o);
return *this;
@@ -142,7 +142,7 @@ namespace flib
m_refcounted_ptr = ptr;
}

-   void swap(refcounted_ptr &o)
+   void swap(refcounted_shared_ptr &o)
{
std::swap(m_refcounted_ptr, o.m_refcounted_ptr);
}
@@ -179,25 +179,25 @@ namespace flib
};

template 
-   bool operator == (const refcounted_ptr &lhs, const refcounted_ptr 
&rhs)
+   bool operator == (const refcounted_shared_ptr &lhs, const 
refcounted_shared_ptr &rhs)
{
return lhs.get() == rhs.get();
}

template 
-   bool operator == (const refcounted_ptr &lhs, std::nullptr_t rhs)
+   bool operator == (const refcounted_shared_ptr &lhs, std::nullptr_t 
rhs)
{
return lhs.get() == rhs;
}

template 
-   bool operator != (const refcounted_ptr &lhs, const refcounted_ptr 
&rhs)
+   bool operator != (const refcounted_shared_ptr &lhs, const 
refcounted_shared_ptr &rhs)
{
return lhs.get() != rhs.get();
}

template 
-   bool operator != (const refcounted_ptr &lhs, std::nullptr_t rhs)
+   bool operator != (const refcounted_shared_ptr &lhs, std::nullptr_t 
rhs)
{
return lhs.get() != rhs;
}
@@ -206,13 +206,13 @@ namespace flib
namespace std
{
template 
-   bool operator == (nullptr_t lhs, const flib::refcounted_ptr &rhs)
+   bool operator == (nullptr_t lhs, const flib::refcounted_shared_ptr 
&rhs)
{
return lhs == rhs.get();
}

template 
-   bool operator != (nullptr_t lhs, const flib::refcounted_ptr &rhs)
+   bool operator != (nullptr_t lhs, const flib::refcounted_shared_ptr 
&rhs)
{
return lhs != rhs.get();
}
diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h
index 49e9812..5f1dec1 100644
--- a/lib/libpacman/package.h
+++ b/lib/libpacman/package.h
@@ -176,7 +176,7 @@ public:
char *m_path;
};

-   typedef flib::refcounted_ptr package_ptr;
+   typedef flib::refcounted_shared_ptr package_ptr;
bool operator < (const package_ptr &pkg1, const package_ptr &pkg2);

typedef FList package_list;
diff --git a/lib/libpacman/package_graph.cpp b/lib/libpacman/package_graph.cpp
index 3d95bd5..23034a8 100644
--- a/lib/libpacman/package_graph.cpp
+++ b/lib/libpacman/package_graph.cpp
@@ -68,4 +68,14 @@ bool libpacman::operator < (const

[Frugalware-git] pacman-g2: libpacman Use flib::str_set to store package files.

2014-11-03 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=be947fce4f9eb4f0f645775b52b0e7424d970cb9

commit be947fce4f9eb4f0f645775b52b0e7424d970cb9
Author: Michel Hermier 
Date:   Fri Oct 31 08:50:04 2014 +0100

libpacman Use flib::str_set to store package files.

diff --git a/lib/libpacman/conflict.cpp b/lib/libpacman/conflict.cpp
index cc04672..2aa67e7 100644
--- a/lib/libpacman/conflict.cpp
+++ b/lib/libpacman/conflict.cpp
@@ -42,6 +42,7 @@
#include 
#include 

+using namespace flib;
using namespace libpacman;

/* Returns a FPtrList* of pmdepmissing_t pointers.
@@ -198,14 +199,14 @@ FPtrList pmtrans_t::checkconflicts()
*  Hooray for set-intersects!
*  Pre-condition: both lists are sorted!
*/
-static FStringList chk_fileconflicts(const FStringList &filesA, const 
FStringList &filesB)
+static FStringList chk_fileconflicts(const str_set &filesA, const str_set 
&filesB)
{
FStringList ret;
auto pA = filesA.begin(), pB = filesB.begin();

while(pA != filesA.end() && pB != filesB.end()) {
-   const char *strA = *pA;
-   const char *strB = *pB;
+   const char *strA = pA->c_str();
+   const char *strB = pB->c_str();
/* skip directories, we don't care about dir conflicts */
if(strA[strlen(strA)-1] == '/') {
++pA;
@@ -275,7 +276,7 @@ FPtrList pmtrans_t::find_conflicts()
dbpkg = NULL;
auto &files = p->files();
for(auto j = files.begin(), j_end = files.end(); j != j_end; ++j) {
-   const char *filestr = *j;
+   const char *filestr = j->c_str();
snprintf(path, PATH_MAX, "%s%s", root, filestr);
/* is this target a file or directory? */
if(path[strlen(path)-1] == '/') {
diff --git a/lib/libpacman/db/localdb.cpp b/lib/libpacman/db/localdb.cpp
index 66157ee..c16db75 100644
--- a/lib/libpacman/db/localdb.cpp
+++ b/lib/libpacman/db/localdb.cpp
@@ -142,7 +142,7 @@ int _pacman_localpackage_remove(package_ptr pkg, pmtrans_t 
*trans, int howmany,
for(auto lp = pkg->files().rbegin(), end = pkg->files().rend(); lp != end; 
++lp) {
int nb = 0;
double percent = 0;
-   const char *file = *lp;
+   const char *file = lp->c_str();
char *hash_orig = pkg->fileneedbackup(file);

if (position != 0) {
@@ -377,6 +377,18 @@ void _pacman_localdb_write(const char *entry, const char 
*value, FILE *stream)
}

static
+void _pacman_localdb_write(const char *entry, const flib::str_set &values, 
FILE *stream)
+{
+   if(!values.empty()) {
+   fprintf(stream, "%%%s%%\n", entry);
+   for(auto lp = values.begin(), end = values.end(); lp != end; 
++lp) {
+   fprintf(stream, "%s\n", lp->c_str());
+   }
+   fputc('\n', stream);
+   }
+}
+
+static
void _pacman_localdb_write(const char *entry, const FStringList &values, FILE 
*stream)
{
if(!values.empty()) {
@@ -506,7 +518,7 @@ package_list LocalDatabase::getowners(const char *filename)
for(auto i = files.begin(), end = files.end(); i != end; ++i) {
char path[PATH_MAX];

-   snprintf(path, PATH_MAX, "%s%s", m_handle->root, *i);
+   snprintf(path, PATH_MAX, "%s%s", m_handle->root, 
i->c_str());
if(!strcmp(path, rpath)) {
ret.add(info);
if(rpath[strlen(rpath)-1] != '/') {
diff --git a/lib/libpacman/kernel/fstr.cpp b/lib/libpacman/kernel/fstr.cpp
index b1c2a82..d91f6f8 100644
--- a/lib/libpacman/kernel/fstr.cpp
+++ b/lib/libpacman/kernel/fstr.cpp
@@ -213,6 +213,11 @@ bool FStrMatcher::match(const char *str) const
return 0;
}

+bool FStrMatcher::match(const str &s) const
+{
+   return match(s.c_str());
+}
+
int f_stringlist_any_match(const FStringList *list, const FStrMatcher *matcher)
{
#ifndef F_NOCOMPAT
diff --git a/lib/libpacman/kernel/fstr.h b/lib/libpacman/kernel/fstr.h
index d0a97eb..3c24258 100644
--- a/lib/libpacman/kernel/fstr.h
+++ b/lib/libpacman/kernel/fstr.h
@@ -122,7 +122,18 @@ public:

~FStrMatcher();

-   bool match(const char *str) const;
+   bool operator () (const char *s) const
+   {
+   return match(s);
+   }
+
+   bool operator () (const flib::str &s) const
+   {
+   return match(s);
+   }
+
+   bool match(const char *s) const;
+   bool match(const flib::str &s) const;

protected:
int m_flags;
diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp
index ad87ad8..d68c51d 100644
--- a/lib/libpacman/package.cpp
+++ b/lib/libpacman/package.cpp
@@ -361,7 +361,7 @@ int _pacman_strmatcher_match(const FStrMatcher *strmatcher, 
const package_ptr &p
((flags & PM_PACKAGE_FLAG_LICENSE) && f_stringlist_any_match(&pkg->license, 
strmatcher)) ||
((flags & PM_PACKAGE_FLAG_REPLACES) && f_stringlist_any_match(&pkg->replaces(), 
strmatcher)) ||
((flags & PM_P

[Frugalware-git] pacman-g2: libpacman: Remove unused fcomparator.h.

2014-11-03 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=afa8d135fc3d9bfefd0e08659e6e01786911b401

commit afa8d135fc3d9bfefd0e08659e6e01786911b401
Author: Michel Hermier 
Date:   Mon Oct 27 07:54:29 2014 +0100

libpacman: Remove unused fcomparator.h.

diff --git a/lib/libpacman/util/fcomparator.h b/lib/libpacman/util/fcomparator.h
deleted file mode 100644
index d662b20..000
--- a/lib/libpacman/util/fcomparator.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- *  fcomparator.h
- *
- *  Copyright (c) 2014 by Michel Hermier 
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- *  USA.
- */
-#ifndef F_COMPARATOR_H
-#define F_COMPARATOR_H
-
-#include "fmatcher.h"
-
-template 
-class FComparator
-{
-public:
-   FComparator()
-   { }
-
-   virtual ~FComparator() override
-   { }
-
-   virtual int compare(const T &o) const = 0;
-
-   bool match(const T &o) const override
-   {
-   return compare(o) == 0;
-   }
-
-protected:
-   FComparator(const FComparator &o)
-   { }
-
-   FComparator &operator = (const FComparator &o)
-   {
-   return *this;
-   }
-};
-
-// FIXME: Add FComparatorList with compare_all
-
-#endif /* F_COMPARATOR_H */
-
-/* vim: set ts=2 sw=2 noet: */
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Make a more proper interaction with refcounted_ptr in refcounted_shared_ptr.

2014-11-03 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=03441a04b280b57fe20628122fc6f22a45f594e2

commit 03441a04b280b57fe20628122fc6f22a45f594e2
Author: Michel Hermier 
Date:   Mon Nov 3 08:25:54 2014 +0100

libpacman: Make a more proper interaction with refcounted_ptr in 
refcounted_shared_ptr.

diff --git a/lib/libpacman/kernel/frefcounted.h 
b/lib/libpacman/kernel/frefcounted.h
index 1b05f1e..2eb4386 100644
--- a/lib/libpacman/kernel/frefcounted.h
+++ b/lib/libpacman/kernel/frefcounted.h
@@ -67,6 +67,9 @@ namespace flib
template 
class refcounted_ptr
{
+   public:
+   typedef T element_type;
+
protected:
refcounted_ptr()
: m_refcounted_ptr(nullptr)
@@ -166,7 +169,6 @@ namespace flib {
: public refcounted_ptr
{
public:
-   typedef T element_type;
typedef refcounted_ptr super_type;

constexpr refcounted_shared_ptr()
@@ -184,14 +186,23 @@ namespace flib {
}

template 
-   refcounted_shared_ptr(const refcounted_shared_ptr &o)
+   refcounted_shared_ptr(const refcounted_ptr &o)
: refcounted_shared_ptr(o.get())
{ }

-   refcounted_shared_ptr(const refcounted_shared_ptr &o)
+   refcounted_shared_ptr(const refcounted_ptr &o)
: refcounted_shared_ptr(o.get())
{ }

+   template 
+   refcounted_shared_ptr(const refcounted_shared_ptr &o)
+   : refcounted_shared_ptr(static_cast &>(o))
+   { }
+
+   refcounted_shared_ptr(const refcounted_shared_ptr &o)
+   : refcounted_shared_ptr(static_cast &>(o))
+   { }
+
refcounted_shared_ptr(refcounted_shared_ptr &&o)
: refcounted_shared_ptr()
{
@@ -204,18 +215,29 @@ namespace flib {
}

template 
-   refcounted_shared_ptr &operator = (const 
refcounted_shared_ptr &o)
+   refcounted_shared_ptr &operator = (const refcounted_ptr &o)
{
reset(o.get());
return *this;
}

-   refcounted_shared_ptr &operator = (const refcounted_shared_ptr 
&o)
+   refcounted_shared_ptr &operator = (const refcounted_ptr &o)
{
reset(o.get());
return *this;
}

+   template 
+   refcounted_shared_ptr &operator = (const 
refcounted_shared_ptr &o)
+   {
+   return operator = (static_cast 
&>(o));
+   }
+
+   refcounted_shared_ptr &operator = (const 
refcounted_shared_ptr &o)
+   {
+   return operator = (static_cast 
&>(o));
+   }
+
refcounted_shared_ptr &operator = (refcounted_shared_ptr &&o)
{
swap(o);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Reorder flib::refcounted_ptr operators.

2014-11-03 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=bf67db25a28be13cf3d3a939e2f3cff3d038b096

commit bf67db25a28be13cf3d3a939e2f3cff3d038b096
Author: Michel Hermier 
Date:   Mon Nov 3 08:03:35 2014 +0100

libpacman: Reorder flib::refcounted_ptr operators.

diff --git a/lib/libpacman/kernel/frefcounted.h 
b/lib/libpacman/kernel/frefcounted.h
index 2412b5d..1b05f1e 100644
--- a/lib/libpacman/kernel/frefcounted.h
+++ b/lib/libpacman/kernel/frefcounted.h
@@ -120,6 +120,47 @@ namespace flib
T *m_refcounted_ptr;
};

+   template 
+   bool operator == (const refcounted_ptr &lhs, const refcounted_ptr 
&rhs)
+   {
+   return lhs.get() == rhs.get();
+   }
+
+   template 
+   bool operator == (const refcounted_ptr &lhs, std::nullptr_t rhs)
+   {
+   return lhs.get() == rhs;
+   }
+
+   template 
+   bool operator != (const refcounted_ptr &lhs, const refcounted_ptr 
&rhs)
+   {
+   return lhs.get() != rhs.get();
+   }
+
+   template 
+   bool operator != (const refcounted_ptr &lhs, std::nullptr_t rhs)
+   {
+   return lhs.get() != rhs;
+   }
+} // namespace flib
+
+namespace std
+{
+   template 
+   bool operator == (nullptr_t lhs, const flib::refcounted_ptr &rhs)
+   {
+   return lhs == rhs.get();
+   }
+
+   template 
+   bool operator != (nullptr_t lhs, const flib::refcounted_ptr &rhs)
+   {
+   return lhs != rhs.get();
+   }
+} // namespace std
+
+namespace flib {
template 
class refcounted_shared_ptr
: public refcounted_ptr
@@ -204,47 +245,8 @@ namespace flib
super_type::swap(o);
}
};
-
-   template 
-   bool operator == (const refcounted_ptr &lhs, const refcounted_ptr 
&rhs)
-   {
-   return lhs.get() == rhs.get();
-   }
-
-   template 
-   bool operator == (const refcounted_ptr &lhs, std::nullptr_t rhs)
-   {
-   return lhs.get() == rhs;
-   }
-
-   template 
-   bool operator != (const refcounted_ptr &lhs, const refcounted_ptr 
&rhs)
-   {
-   return lhs.get() != rhs.get();
-   }
-
-   template 
-   bool operator != (const refcounted_ptr &lhs, std::nullptr_t rhs)
-   {
-   return lhs.get() != rhs;
-   }
} // namespace flib

-namespace std
-{
-   template 
-   bool operator == (nullptr_t lhs, const flib::refcounted_ptr &rhs)
-   {
-   return lhs == rhs.get();
-   }
-
-   template 
-   bool operator != (nullptr_t lhs, const flib::refcounted_ptr &rhs)
-   {
-   return lhs != rhs.get();
-   }
-} // namespace std
-
#endif /* FREFCOUNTED_H */

/* vim: set ts=2 sw=2 noet: */
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add small flib::str_set class wrapper.

2014-11-03 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=b3587889e0ce6b34ca5779e762ad2d2bebad6748

commit b3587889e0ce6b34ca5779e762ad2d2bebad6748
Author: Michel Hermier 
Date:   Mon Oct 27 10:16:28 2014 +0100

libpacman: Add small flib::str_set class wrapper.

diff --git a/lib/libpacman/util/fstrset.h b/lib/libpacman/util/fstrset.h
new file mode 100644
index 000..b8e0a0e
--- /dev/null
+++ b/lib/libpacman/util/fstrset.h
@@ -0,0 +1,39 @@
+/*
+ *  fstrset.h
+ *
+ *  Copyright (c) 2014 by Michel Hermier 
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ *  USA.
+ */
+#ifndef F_STRSET_H
+#define F_STRSET_H
+
+#include "kernel/fstr.h"
+#include "util/fset.h"
+
+namespace flib
+{
+   class str_set
+   : public set
+   {
+   public:
+   using set::set;
+   };
+} // namespace flib
+
+#endif /* F_STRSET_H */
+
+/* vim: set ts=2 sw=2 noet: */
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Move package graph code to its own class.

2014-11-03 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=c3df55fcf29e4f741abd15261e4c3b65dec3f59c

commit c3df55fcf29e4f741abd15261e4c3b65dec3f59c
Author: Michel Hermier 
Date:   Mon Oct 27 10:44:19 2014 +0100

libpacman: Move package graph code to its own class.

diff --git a/lib/libpacman/CMakeLists.txt b/lib/libpacman/CMakeLists.txt
index c196048..7989e83 100644
--- a/lib/libpacman/CMakeLists.txt
+++ b/lib/libpacman/CMakeLists.txt
@@ -60,6 +60,7 @@ set(LIBPACMAN_SOURCES
group.cpp
handle.cpp
package.cpp
+   package_graph.cpp
packages_transaction.cpp
pacman.cpp
server.cpp
diff --git a/lib/libpacman/handle.h b/lib/libpacman/handle.h
index ed504fd..a205f8d 100644
--- a/lib/libpacman/handle.h
+++ b/lib/libpacman/handle.h
@@ -29,6 +29,7 @@

#include "io/ffilelock.h"
#include "package.h"
+#include "package_graph.h"
#include "trans.h"

#include "kernel/fobject.h"
diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp
index 55daac4..ad87ad8 100644
--- a/lib/libpacman/package.cpp
+++ b/lib/libpacman/package.cpp
@@ -390,26 +390,4 @@ bool PackageMatcher::match(const package_ptr package, int 
mask) const
return _pacman_strmatcher_match(m_strmatcher, package, m_flags & mask);
}

-package_node::package_node(const str &name)
-   : m_name(name) // PKG_NAME_LEN
-{ }
-
-package_node::~package_node()
-{ }
-
-bool package_node::operator < (const package_node &o) const
-{
-   return m_name < o.m_name;
-}
-
-const str &package_node::name() const
-{
-   return m_name;
-}
-
-bool libpacman::operator < (const libpacman::package_node_ptr &pn1, const 
libpacman::package_node_ptr &pn2)
-{
-   return pn1->name() < pn2->name();
-}
-
/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h
index b5dae10..915a27f 100644
--- a/lib/libpacman/package.h
+++ b/lib/libpacman/package.h
@@ -195,33 +195,6 @@ private:
int m_flags;
FStrMatcher m_strmatcher_internal;
};
-
-   class package_node
-   : public flib::refcounted
-   {
-   public:
-   package_node(const flib::str &name);
-   ~package_node();
-   bool operator < (const package_node &o) const;
-
-   const flib::str &name() const;
-
-   private:
-   flib::str m_name;
-   libpacman::package_set m_packages;
-   };
-
-   typedef flib::refcounted_ptr package_node_ptr;
-   bool operator < (const package_node_ptr &pn1, const package_node_ptr 
&pn2);
-
-   typedef flib::set package_node_set;
-
-   class package_graph
-   : package_node_set
-   {
-   public:
-   using package_node_set::package_node_set;
-   };
} // namespace libpacman

const libpacman::package_ptr _pacman_pkg_isin(const char *needle, const 
libpacman::package_list &haystack);
diff --git a/lib/libpacman/package_graph.cpp b/lib/libpacman/package_graph.cpp
new file mode 100644
index 000..3d95bd5
--- /dev/null
+++ b/lib/libpacman/package_graph.cpp
@@ -0,0 +1,71 @@
+/*
+ *  package.c
+ *
+ *  Copyright (c) 2014 by Michel Hermier 
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ *  USA.
+ */
+
+#include "config.h"
+
+/* pacman-g2 */
+#include "package.h"
+
+#include "db/localdb_files.h"
+#include "util.h"
+#include "error.h"
+#include "db.h"
+#include "deps.h"
+#include "handle.h"
+#include "pacman.h"
+#include "versioncmp.h"
+
+#include "io/archive.h"
+#include "util/log.h"
+#include "fstdlib.h"
+#include "fstring.h"
+
+#include 
+#include 
+#include 
+#include 
+
+using namespace flib;
+using namespace libpacman;
+
+package_node::package_node(const str &name)
+   : m_name(name) // PKG_NAME_LEN
+{ }
+
+package_node::~package_node()
+{ }
+
+bool package_node::operator < (const package_node &o) const
+{
+   return m_name < o.m_name;
+}
+
+const str &package_node::name() const
+{
+   return m_name;
+}
+
+bool libpacman::operator < (const libpacman::package_node_ptr &pn1, const 
libpacman::

[Frugalware-git] pacman-g2: libpacman: Make refcounted_ptr a base class of refcounted_shared_ptr.

2014-11-03 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=f35e3a39c956fcfe2ffcefe0594375f8d70bb1ec

commit f35e3a39c956fcfe2ffcefe0594375f8d70bb1ec
Author: Michel Hermier 
Date:   Mon Nov 3 08:00:39 2014 +0100

libpacman: Make refcounted_ptr a base class of refcounted_shared_ptr.

diff --git a/lib/libpacman/kernel/frefcounted.h 
b/lib/libpacman/kernel/frefcounted.h
index 4340196..2412b5d 100644
--- a/lib/libpacman/kernel/frefcounted.h
+++ b/lib/libpacman/kernel/frefcounted.h
@@ -65,33 +65,90 @@ namespace flib
};

template 
+   class refcounted_ptr
+   {
+   protected:
+   refcounted_ptr()
+   : m_refcounted_ptr(nullptr)
+   { }
+
+   /* Manipulators */
+   template 
+   void reset(Y *refcounted_ptr)
+   {
+   m_refcounted_ptr = refcounted_ptr;
+   }
+
+   public:
+   /* Accessors */
+   T *get() const
+   {
+   return m_refcounted_ptr;
+   }
+
+   T &operator * () const
+   {
+   return *operator -> ();
+   }
+
+   T *operator -> () const
+   {
+   assert(m_refcounted_ptr != nullptr);
+   return get();
+   }
+
+   explicit operator T * () const
+   {
+   return get();
+   }
+
+   operator bool () const
+   {
+   return m_refcounted_ptr != nullptr;
+   }
+
+   protected:
+   void swap(refcounted_ptr &o)
+   {
+   std::swap(m_refcounted_ptr, o.m_refcounted_ptr);
+   }
+
+   private:
+   refcounted_ptr(const refcounted_ptr &o);
+   refcounted_ptr &operator = (const refcounted_ptr &o);
+
+   T *m_refcounted_ptr;
+   };
+
+   template 
class refcounted_shared_ptr
+   : public refcounted_ptr
{
public:
typedef T element_type;
+   typedef refcounted_ptr super_type;

constexpr refcounted_shared_ptr()
: refcounted_shared_ptr(nullptr)
{ }

constexpr refcounted_shared_ptr(std::nullptr_t)
-   : m_refcounted_ptr(nullptr)
{ }

template 
-   explicit refcounted_shared_ptr(Y *ptr)
+   explicit refcounted_shared_ptr(Y *refcounted_ptr)
: refcounted_shared_ptr()
{
-   reset(ptr);
+   reset(refcounted_ptr);
}

template 
refcounted_shared_ptr(const refcounted_shared_ptr &o)
-   : refcounted_shared_ptr(o.m_refcounted_ptr)
+   : refcounted_shared_ptr(o.get())
{ }

refcounted_shared_ptr(const refcounted_shared_ptr &o)
-   : refcounted_shared_ptr(o.m_refcounted_ptr)
+   : refcounted_shared_ptr(o.get())
{ }

refcounted_shared_ptr(refcounted_shared_ptr &&o)
@@ -108,13 +165,13 @@ namespace flib
template 
refcounted_shared_ptr &operator = (const refcounted_shared_ptr &o)
{
-   reset(o.m_refcounted_ptr);
+   reset(o.get());
return *this;
}

refcounted_shared_ptr &operator = (const refcounted_shared_ptr &o)
{
-   reset(o.m_refcounted_ptr);
+   reset(o.get());
return *this;
}

@@ -133,71 +190,41 @@ namespace flib
template 
void reset(Y *ptr)
{
-   if(m_refcounted_ptr != nullptr) {
-   m_refcounted_ptr->release();
+   if(super_type::get() != nullptr) {
+   super_type::get()->release();
}
if(ptr != nullptr) {
ptr->acquire();
}
-   m_refcounted_ptr = ptr;
+   super_type::reset(ptr);
}

void swap(refcounted_shared_ptr &o)
{
-   std::swap(m_refcounted_ptr, o.m_refcounted_ptr);
-   }
-
-   /* Accessors */
-   T *get() const
-   {
-   return m_refcounted_ptr;
-   }
-
-   T &operator * () const
-   {
-   return *operator -> ();
-   }
-
-   T *operator -> () const
-   {
-   assert(m_refcounted_ptr != nullptr);
-   return get();
-   }
-
-   explicit operator T * () const
-   {
-   return get();
-   }
-
-   operator bool () const
-   {
-   return m_refcounted_ptr != nullptr;
+   super_type::swap(o);
}
-
-   private:
-   T *m_refcounted_ptr;
};

template 
-   bool operator == (const refcounted_shared_ptr &lhs, const 
r

[Frugalware-git] pacman-g2: libpacman: Add basic C string like class.

2014-11-03 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=c7c3ca5fe511a68a3155fb35c8f8fd640e966fd9

commit c7c3ca5fe511a68a3155fb35c8f8fd640e966fd9
Author: Michel Hermier 
Date:   Mon Oct 27 08:34:06 2014 +0100

libpacman: Add basic C string like class.

diff --git a/lib/libpacman/kernel/fstr.cpp b/lib/libpacman/kernel/fstr.cpp
index 2fa43d1..61df894 100644
--- a/lib/libpacman/kernel/fstr.cpp
+++ b/lib/libpacman/kernel/fstr.cpp
@@ -24,6 +24,140 @@
#include "fstring.h"
#include "util/fstringlist.h"

+using namespace flib;
+
+str::str(const char *s)
+   : str()
+{
+   reset(s);
+}
+
+str::str(const str &o)
+   : str(o.m_str)
+{ }
+
+str::str(str &&o)
+   : str()
+{
+   swap(o);
+}
+
+str::~str()
+{
+   reset();
+}
+
+str &str::operator = (const str &o)
+{
+   reset(o.m_str);
+   return *this;
+}
+
+str &str::operator = (str &&o)
+{
+   swap(o);
+   return *this;
+}
+
+str str::create(char *s)
+{
+   str ret;
+   ret.m_str = s;
+   return ret;
+}
+
+str str::create(const char *s)
+{
+   return str(s);
+}
+
+str str::format(const char *fmt, ...)
+{
+   va_list ap;
+
+   va_start(ap, fmt);
+   str ret = vformat(fmt, ap);
+   va_end(ap);
+   return ret;
+}
+
+str str::vformat(const char *fmt, va_list ap)
+{
+   char *dest;
+
+   vasprintf(&dest, fmt, ap);
+   return create(dest);
+}
+
+const char *str::data() const
+{
+   if (empty()) {
+   return "";
+   }
+   return m_str;
+}
+
+str::size_type str::size() const
+{
+   if(!empty()) {
+   return strlen(m_str);
+   }
+   return 0;
+}
+
+int str::compare(const str &s) const
+{
+   return strcmp(c_str(), s.c_str());
+}
+
+void str::reset(const char *s)
+{
+   if(m_str != nullptr) {
+   free(m_str);
+   }
+   m_str = strdup(s);
+}
+
+void str::swap(str &o)
+{
+   std::swap(m_str, o.m_str);
+}
+
+bool flib::operator == (const str &lhs, const str &rhs)
+{
+   return lhs.compare(rhs) == 0;
+}
+
+bool flib::operator == (const str &lhs, std::nullptr_t rhs)
+{
+   return lhs.compare(str(rhs)) == 0;
+}
+
+bool flib::operator != (const str &lhs, const str &rhs)
+{
+   return !(lhs == rhs);
+}
+
+bool flib::operator != (const str &lhs, std::nullptr_t rhs)
+{
+   return !(lhs == rhs);
+}
+
+bool flib::operator < (const str &lhs, const str &rhs)
+{
+   return lhs.compare(rhs) < 0;
+}
+
+bool std::operator == (nullptr_t lhs, const flib::str &rhs)
+{
+   return rhs == lhs;
+}
+
+bool std::operator != (nullptr_t lhs, const flib::str &rhs)
+{
+   return rhs != lhs;
+}
+
FStrMatcher::FStrMatcher()
: m_flags(0), m_str(NULL)
{ }
diff --git a/lib/libpacman/kernel/fstr.h b/lib/libpacman/kernel/fstr.h
index b482d05..d0a97eb 100644
--- a/lib/libpacman/kernel/fstr.h
+++ b/lib/libpacman/kernel/fstr.h
@@ -23,8 +23,85 @@

#include "fstring.h"

+#include "util/flist.h"
+
+#include 
#include 

+namespace flib {
+   class str
+   {
+   public:
+   typedef size_t size_type;
+
+   static str create(char *s);
+   static str create(const char *s);
+   static str format(const char *fmt, ...);
+   static str vformat(const char *fmt, va_list ap);
+
+   constexpr str()
+   : str(nullptr)
+   { }
+
+   constexpr str(std::nullptr_t n)
+   : m_str(n)
+   { }
+
+   str(const char *s);
+   str(const str &o);
+   str(str &&o);
+   ~str();
+
+   str &operator = (const str &o);
+   str &operator = (str &&o);
+
+   explicit operator const char * ()
+   {
+   return m_str;
+   }
+
+   /* Element access */
+   const char *c_str() const
+   {
+   return data();
+   }
+
+   const char *data() const;
+
+   /* Capacity */
+   bool empty() const
+   {
+   return m_str == nullptr || m_str[0] == '\0';
+   }
+
+   size_type length() const
+   {
+   return size();
+   }
+
+   size_type size() const;
+
+   /* Operations */
+   int compare(const str &str) const;
+   void reset(const char *s = nullptr);
+   void swap(str &o);
+
+   private:
+   char *m_str;
+   };
+
+   bool operator == (const str &lhs, const str &rhs);
+   bool operator == (const str &lhs, std::nullptr_t rhs);
+   bool operator != (const str &lhs, const str &

[Frugalware-git] pacman-g2: libpacman: Fix flib::find.

2014-11-03 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=12d98380e7bdabefee0b0d90f972e7eb608c6660

commit 12d98380e7bdabefee0b0d90f972e7eb608c6660
Author: Michel Hermier 
Date:   Mon Oct 27 07:40:04 2014 +0100

libpacman: Fix flib::find.

diff --git a/lib/libpacman/util/falgorithm.h b/lib/libpacman/util/falgorithm.h
index b6e4b24..28b2801 100644
--- a/lib/libpacman/util/falgorithm.h
+++ b/lib/libpacman/util/falgorithm.h
@@ -68,8 +68,8 @@ namespace flib
template 
InputIterator find(InputIterator first, InputIterator last, const T &val)
{
-   return find(first, last,
-   [&] (const typename InputIterator::reference o) 
-> bool
+   return find_if(first, last,
+   [&] (const typename InputIterator::value_type 
&o) -> bool
{ return o == val; });
}
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Reduce visibility stress in the compiler in package class.

2014-10-22 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=891d1ec6fb1595a3d0944c99d00b50892db37410

commit 891d1ec6fb1595a3d0944c99d00b50892db37410
Author: Michel Hermier 
Date:   Wed Oct 22 07:54:36 2014 +0200

libpacman: Reduce visibility stress in the compiler in package class.

diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h
index d8c40a7..1216d8d 100644
--- a/lib/libpacman/package.h
+++ b/lib/libpacman/package.h
@@ -95,12 +95,10 @@ namespace libpacman {
class package
: public ::flib::FObject
{
+public:
#define LIBPACMAN_PACKAGE_PROPERTY(type, name, flag)   \
-public:
\
type name();
-
#include "package_properties.h"
-
#undef LIBPACMAN_PACKAGE_PROPERTY

public:
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Remove some unused variables/functions.

2014-10-22 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=d085c009e9425f82109ec1f85bd3adba9a1d9dd2

commit d085c009e9425f82109ec1f85bd3adba9a1d9dd2
Author: Michel Hermier 
Date:   Wed Oct 22 08:06:17 2014 +0200

libpacman: Remove some unused variables/functions.

diff --git a/lib/libpacman/trans.cpp b/lib/libpacman/trans.cpp
index 76730ee..ff60957 100644
--- a/lib/libpacman/trans.cpp
+++ b/lib/libpacman/trans.cpp
@@ -208,12 +208,8 @@ int _pacman_syncpkg_cmp(const void *s1, const void *s2)
return(strcmp(((pmsyncpkg_t *)s1)->pkg_name, ((pmsyncpkg_t *)s2)->pkg_name));
}

-static int pkg_cmp(const void *p1, const void *p2)
-{
-   return(strcmp(((package *)p1)->name(), ((pmsyncpkg_t *)p2)->pkg_name));
-}
-
-static int check_olddelay(Handle *handle)
+static
+int check_olddelay(Handle *handle)
{
Timestamp tm;

@@ -470,10 +466,6 @@ int __pmtrans_t::prepare(FPtrList **data)
_pacman_trans_compute_triggers(this);

if(m_type == PM_TRANS_TYPE_SYNC) {
-   for(auto i = syncpkgs.begin(), end = syncpkgs.end(); i != end; ++i) {
-   pmsyncpkg_t *ps = *i;
-   }
-
if(!(flags & PM_TRANS_FLAG_NODEPS)) {
/* Resolve targets dependencies */
if(resolvedeps(data) == -1) {
@@ -1659,7 +1651,6 @@ int __pmtrans_t::commit(FPtrList **data)
for(auto lp = depends.begin(), lp_end = depends.end(); lp != lp_end; ++lp) {
package_ptr depinfo = NULL;
pmdepend_t depend;
-   char *data;
if(_pacman_splitdep(*lp, &depend)) {
continue;
}
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Remove FMatcher.

2014-10-22 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=e39631ea196c6c3fcd2c8700152e4891395d78c9

commit e39631ea196c6c3fcd2c8700152e4891395d78c9
Author: Michel Hermier 
Date:   Tue Oct 21 15:10:23 2014 +0200

libpacman: Remove FMatcher.

diff --git a/lib/libpacman/kernel/fstr.h b/lib/libpacman/kernel/fstr.h
index a249527..b482d05 100644
--- a/lib/libpacman/kernel/fstr.h
+++ b/lib/libpacman/kernel/fstr.h
@@ -23,14 +23,11 @@

#include "fstring.h"

-#include "util/fmatcher.h"
-
#include 

class FStringList;

-class FStrMatcher
-   : public FMatcher
+class FStrMatcher final
{
public:
enum {
@@ -48,7 +45,7 @@ public:

~FStrMatcher();

-   virtual bool match(const char *str) const override;
+   bool match(const char *str) const;

protected:
int m_flags;
diff --git a/lib/libpacman/util/fcomparator.h b/lib/libpacman/util/fcomparator.h
index 8e82dfa..d662b20 100644
--- a/lib/libpacman/util/fcomparator.h
+++ b/lib/libpacman/util/fcomparator.h
@@ -25,7 +25,6 @@

template 
class FComparator
-   : public FMatcher
{
public:
FComparator()
diff --git a/lib/libpacman/util/fmatcher.h b/lib/libpacman/util/fmatcher.h
deleted file mode 100644
index ebb8c34..000
--- a/lib/libpacman/util/fmatcher.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- *  fmatcher.h
- *
- *  Copyright (c) 2014 by Michel Hermier 
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- *  USA.
- */
-#ifndef F_MATCHER_H
-#define F_MATCHER_H
-
-#include "fstdlib.h"
-#include "util.h"
-
-template 
-class FMatcher
-{
-public:
-   FMatcher()
-   { }
-
-   virtual ~FMatcher()
-   { }
-
-   virtual bool match(T data) const = 0;
-
-protected:
-   FMatcher(const FMatcher &o)
-   { }
-
-   FMatcher &operator = (const FMatcher &o)
-   {
-   return *this;
-   }
-};
-
-namespace flib
-{
-   template 
-   bool match(const T &val, const FMatcher &matcher)
-   {
-   return flib::match(matcher, val);
-   }
-
-   template 
-   bool match(const FMatcher &matcher, const U &val)
-   {
-   return matcher.match(val);
-   }
-}
-
-#endif /* F_MATCHER_H */
-
-/* vim: set ts=2 sw=2 noet: */
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add operator < for package_ptr & package_node_ptr.

2014-10-22 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=62b941ef00c0ac01f2b938045b17c3904977c1b3

commit 62b941ef00c0ac01f2b938045b17c3904977c1b3
Author: Michel Hermier 
Date:   Tue Oct 21 15:29:53 2014 +0200

libpacman: Add operator < for package_ptr & package_node_ptr.

diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp
index a8222c2..a119579 100644
--- a/lib/libpacman/package.cpp
+++ b/lib/libpacman/package.cpp
@@ -423,4 +423,14 @@ bool package_node_less::operator () (const package_node 
*p1, const package_node
return strcmp(p1->name(), p2->name()) < 0;
}

+bool operator < (const libpacman::package_ptr &pkg1, const 
libpacman::package_ptr &pkg2)
+{
+   return strcmp(pkg1->name(), pkg2->name()) < 0;
+}
+
+bool operator < (const libpacman::package_node_ptr &pn1, const 
libpacman::package_node_ptr &pn2)
+{
+   return strcmp(pn1->name(), pn2->name()) < 0;
+}
+
/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h
index 4846d12..69fa218 100644
--- a/lib/libpacman/package.h
+++ b/lib/libpacman/package.h
@@ -233,6 +233,9 @@ private:
};
} // namespace libpacman

+bool operator < (const libpacman::package_ptr &pkg1, const 
libpacman::package_ptr &pkg2);
+bool operator < (const libpacman::package_node_ptr &pn1, const 
libpacman::package_node_ptr &pn2);
+
const libpacman::package_ptr _pacman_pkg_isin(const char *needle, const 
libpacman::package_list &haystack);

#endif /* _PACMAN_PACKAGE_H */
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Introduce package_ptr abstraction, will be a refcounted_ptr in the future.

2014-10-22 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=1bfcf55796595d334c00778d53c1b346998521c6

commit 1bfcf55796595d334c00778d53c1b346998521c6
Author: Michel Hermier 
Date:   Sat Oct 18 12:10:12 2014 +0200

libpacman: Introduce package_ptr abstraction, will be a refcounted_ptr in the 
future.

diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp
index 5983b53..e498ea9 100644
--- a/lib/libpacman/database_cache.cpp
+++ b/lib/libpacman/database_cache.cpp
@@ -56,7 +56,7 @@ int _pacman_db_load_grpcache(Database *db);
static
int _pacman_db_load_pkgcache(Database *db)
{
-   Package *info;
+   package_ptr info;

ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));

@@ -99,7 +99,7 @@ libpacman::package_set &Database::get_packages()
return pkgcache;
}

-int Database::add_pkgincache(Package *pkg)
+int Database::add_pkgincache(package_ptr pkg)
{
if(pkg == NULL) {
return(-1);
@@ -114,7 +114,7 @@ int Database::add_pkgincache(Package *pkg)
return(0);
}

-int Database::remove_pkgfromcache(Package *pkg)
+int Database::remove_pkgfromcache(package_ptr pkg)
{
if(pkg == NULL) {
return(-1);
@@ -162,7 +162,7 @@ int _pacman_db_load_grpcache(Database *db)
_pacman_log(PM_LOG_DEBUG, _("loading group cache for repository '%s'"), 
db->treename());

for(auto it = cache.begin(), end = cache.end(); it != end; ++it) {
-   Package *pkg = *it;
+   package_ptr pkg = *it;

if(!(pkg->flags & INFRQ_DESC)) {
pkg->read(INFRQ_DESC);
diff --git a/lib/libpacman/db.cpp b/lib/libpacman/db.cpp
index 3d14123..84f265c 100644
--- a/lib/libpacman/db.cpp
+++ b/lib/libpacman/db.cpp
@@ -235,7 +235,7 @@ int Database::rewind()
return -1;
}

-Package *Database::readpkg(unsigned int inforeq)
+package_ptr Database::readpkg(unsigned int inforeq)
{
return NULL;
}
diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h
index a7cfc12..2967331 100644
--- a/lib/libpacman/db.h
+++ b/lib/libpacman/db.h
@@ -65,14 +65,14 @@ public:

/* Package iterator */
virtual int rewind();
-   virtual libpacman::Package *readpkg(unsigned int inforeq);
-   virtual libpacman::Package *scan(const char *target, unsigned int 
inforeq) = 0;
+   virtual libpacman::package_ptr readpkg(unsigned int inforeq);
+   virtual libpacman::package_ptr scan(const char *target, unsigned int 
inforeq) = 0;

virtual int write(libpacman::Package *info, unsigned int inforeq);

/* Cache operations */
-   int add_pkgincache(libpacman::Package *pkg);
-   int remove_pkgfromcache(libpacman::Package *pkg);
+   int add_pkgincache(libpacman::package_ptr pkg);
+   int remove_pkgfromcache(libpacman::package_ptr pkg);
void free_pkgcache();

FList filter(const libpacman::PackageMatcher 
&packagematcher);
diff --git a/lib/libpacman/db/localdb.cpp b/lib/libpacman/db/localdb.cpp
index 93a972b..48b2c6f 100644
--- a/lib/libpacman/db/localdb.cpp
+++ b/lib/libpacman/db/localdb.cpp
@@ -228,13 +228,13 @@ LocalDatabase::~LocalDatabase()
}

static
-LocalPackage *_pacman_localdb_pkg_new(LocalDatabase *db, const struct dirent 
*dirent, unsigned int inforeq)
+package_ptr _pacman_localdb_pkg_new(LocalDatabase *db, const struct dirent 
*dirent, unsigned int inforeq)
{
LocalPackage *pkg;
const char *dname;

-   ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, NULL));
-   ASSERT(dirent != NULL, return NULL);
+   ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, nullptr));
+   ASSERT(dirent != NULL, return nullptr);

dname = dirent->d_name;
if((pkg = new LocalPackage(db)) == NULL ||
@@ -244,7 +244,7 @@ LocalPackage *_pacman_localdb_pkg_new(LocalDatabase *db, 
const struct dirent *di
pkg->release();
pkg = NULL;
}
-   return pkg;
+   return package_ptr(pkg);
}

FStringList LocalDatabase::test() const
@@ -319,7 +319,7 @@ int LocalDatabase::rewind()
return 0;
}

-Package *LocalDatabase::readpkg(unsigned int inforeq)
+package_ptr LocalDatabase::readpkg(unsigned int inforeq)
{
struct dirent *ent = NULL;
struct stat sbuf;
@@ -338,7 +338,7 @@ Package *LocalDatabase::readpkg(unsigned int inforeq)
return NULL;
}

-Package *LocalDatabase::scan(const char *target, unsigned int inforeq)
+package_ptr LocalDatabase::scan(const char *target, unsigned int inforeq)
{
struct dirent *ent = NULL;
struct stat sbuf;
diff --git a/lib/libpacman/db/localdb.h b/lib/libpacman/db/localdb.h
index dd4bc44..59d2e29 100644
--- a/lib/libpacman/db/localdb.h
+++ b/lib/libpacman/db/localdb.h
@@ -56,8 +56,8 @@ public:
virtual int close();

virtual int rewind();
-   virtual libpacman::Package *readpkg(unsigned int inforeq);
-   virtual libpacman::Package *scan(const char *target, unsigned int 
inforeq);
+   virtual libpacman::package_ptr readpkg(unsigned int inforeq);
+   virtual libpacman::package_ptr scan(const char *target, unsigned int 
inforeq);

virtual int write(libpacman::Package *info, unsigned int inforeq);

diff --git a/lib/libpacman/db/syncdb.cpp b/lib/libpacman/db/syncdb.cpp
in

[Frugalware-git] pacman-g2: libpacman: Fix errneous return value in _pacman_fpmpackage_load.

2014-10-22 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=7b3335a948bac3197e6311151af12c9cd609e6e2

commit 7b3335a948bac3197e6311151af12c9cd609e6e2
Author: Michel Hermier 
Date:   Tue Oct 21 09:49:00 2014 +0200

libpacman: Fix errneous return value in _pacman_fpmpackage_load.

diff --git a/lib/libpacman/package/fpmpackage.cpp 
b/lib/libpacman/package/fpmpackage.cpp
index 7db9a5a..ebd5913 100644
--- a/lib/libpacman/package/fpmpackage.cpp
+++ b/lib/libpacman/package/fpmpackage.cpp
@@ -182,7 +182,7 @@ package_ptr _pacman_fpmpackage_load(const char *pkgfile)
char *str;

if((str = (char *)malloc(PATH_MAX)) == NULL) {
-   RET_ERR(PM_ERR_MEMORY, (package_ptr)-1);
+   RET_ERR(PM_ERR_MEMORY, nullptr);
}
filelist = _pacman_archive_read_fropen(archive);
while(!feof(filelist)) {
@@ -227,9 +227,7 @@ error:
if(!ret) {
archive_read_finish (archive);
}
-   pm_errno = PM_ERR_PKG_CORRUPTED;
-
-   return(NULL);
+   RET_ERR(PM_ERR_PKG_CORRUPTED, nullptr);
}

/* vim: set ts=2 sw=2 noet: */
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Use package_ptr where possible.

2014-10-22 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=efa637d6f4021768bb3156f583e57f9b7f688928

commit efa637d6f4021768bb3156f583e57f9b7f688928
Author: Michel Hermier 
Date:   Tue Oct 21 00:01:17 2014 +0200

libpacman: Use package_ptr where possible.

diff --git a/lib/libpacman/conflict.cpp b/lib/libpacman/conflict.cpp
index f413e23..5617527 100644
--- a/lib/libpacman/conflict.cpp
+++ b/lib/libpacman/conflict.cpp
@@ -50,7 +50,7 @@ using namespace libpacman;
*/
FPtrList pmtrans_t::checkconflicts()
{
-   Package *info = NULL;
+   package_ptr info = NULL;
FPtrList baddeps;
pmdepmissing_t *miss = NULL;
int howmany, remain;
@@ -64,7 +64,7 @@ FPtrList pmtrans_t::checkconflicts()
howmany = syncpkgs.size();

for(auto i = syncpkgs.begin(), end = syncpkgs.end(); i != end; ++i) {
-   Package *tp = (*i)->pkg_new;
+   package_ptr tp = (*i)->pkg_new;
if(tp == NULL) {
continue;
}
@@ -88,7 +88,7 @@ FPtrList pmtrans_t::checkconflicts()
_pacman_log(PM_LOG_DEBUG, _("checkconflicts: targ '%s' vs db"), tp->name());
auto &cache = db_local->get_packages();
for(auto k = cache.begin(), k_end = cache.end(); k != k_end; ++k) {
-   Package *dp = *k;
+   package_ptr dp = *k;
if(!strcmp(dp->name(), tp->name())) {
/* a package cannot conflict with itself -- that's just not nice */
continue;
@@ -116,7 +116,7 @@ FPtrList pmtrans_t::checkconflicts()
/* CHECK 2: check targets against targets */
_pacman_log(PM_LOG_DEBUG, _("checkconflicts: targ '%s' vs targs"), tp->name());
for(auto k = syncpkgs.begin(), k_end = syncpkgs.end(); k != k_end; ++k) {
-   Package *otp = (*k)->pkg_new;
+   package_ptr otp = (*k)->pkg_new;
if(!strcmp(otp->name(), tp->name())) {
/* a package cannot conflict with itself -- that's just not nice */
continue;
@@ -157,7 +157,7 @@ FPtrList pmtrans_t::checkconflicts()
* conflicts list from the new package, not the old one (*info)
*/
for(auto j = syncpkgs.begin(), j_end = syncpkgs.end(); j != j_end; ++j) {
-   Package *pkg = (*j)->pkg_new;
+   package_ptr pkg = (*j)->pkg_new;
if(!strcmp(pkg->name(), info->name())) {
/* Use the new, to-be-installed package's conflicts */
conflicts = &pkg->conflicts();
@@ -235,7 +235,7 @@ FPtrList pmtrans_t::find_conflicts()
char path[PATH_MAX+1];
struct stat buf;
FPtrList conflicts;
-   Package *p, *dbpkg;
+   package_ptr p, dbpkg;
double percent;
int howmany, remain;
Database *db_local = m_handle->db_local;
@@ -248,12 +248,12 @@ FPtrList pmtrans_t::find_conflicts()

/* CHECK 1: check every target against every target */
for(auto i = syncpkgs.begin(), end = syncpkgs.end(); i != end; ++i) {
-   Package *p1 = (*i)->pkg_new;
+   package_ptr p1 = (*i)->pkg_new;
remain = flib::count(i, end);
percent = (double)(howmany - remain + 1) / howmany;
PROGRESS(this, PM_TRANS_PROGRESS_CONFLICTS_START, "", (percent * 100), howmany, 
howmany - remain + 1);
for(auto j = i; j != end; ++j) {
-   Package *p2 = (*j)->pkg_new;
+   package_ptr p2 = (*j)->pkg_new;
if(strcmp(p1->name(), p2->name())) {
auto ret = chk_fileconflicts(p1->files(), p2->files());
for(auto k = ret.begin(), k_end = ret.end(); k != k_end; ++k) {
@@ -303,11 +303,10 @@ FPtrList pmtrans_t::find_conflicts()
if(!ok) {
/* Look at all the targets */
for(auto k = syncpkgs.begin(), k_end = syncpkgs.end(); k != k_end && !ok; ++k) {
-   Package *p2 = 
(*k)->pkg_new;
+   package_ptr p2 = 
(*k)->pkg_new;
/* As long as they're not the current package */
if(strcmp(p2->name(), p->name())) {
-   Package *dbpkg2 
= NULL;
-   dbpkg2 = 
db_local->find(p2->name());
+   package_ptr 
dbpkg2(db_local->find(p2->name()));
if(dbpkg2 && !(dbpkg2->flags & INFRQ_FILES)) {
_pacman_log(PM_LOG_DEBUG, _("loading FILES info for '%s'"), dbpkg2->name());
dbpkg2->read(INFRQ_FILES);
diff --git a/lib/libpacman/db.cpp b/lib/libpacman/db.cpp
index e572171..db4bf81 100644
--- a/lib/libpacman/db.cpp
+++ b/lib/libpacman/db.cpp
@@ -98,7 +98,7 @@ package_list Database::filter(const PackageMatcher 
&packagematcher)

auto &cache = get_packages();
for(auto it = cache.begin(), end = cache.end(); it != end; ++it) {
-   Package *pkg = (Package *)*it;
+   package_ptr pkg = *it;

if(packagematcher.match(pkg)) {
ret.add(pkg);
@@ -128,7 +128,7 @@

[Frugalware-git] pacman-g2: libpacman: Make package_ptr refcounted.

2014-10-22 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=8131ef1eb9cd5b5934c780472d9f2074ee496b5b

commit 8131ef1eb9cd5b5934c780472d9f2074ee496b5b
Author: Michel Hermier 
Date:   Tue Oct 21 14:40:41 2014 +0200

libpacman: Make package_ptr refcounted.

diff --git a/lib/libpacman/kernel/frefcounted.h 
b/lib/libpacman/kernel/frefcounted.h
index 32147bb..6ab9f08 100644
--- a/lib/libpacman/kernel/frefcounted.h
+++ b/lib/libpacman/kernel/frefcounted.h
@@ -90,18 +90,40 @@ namespace flib
: refcounted_ptr(o.m_refcounted_ptr)
{ }

+   refcounted_ptr(const refcounted_ptr &o)
+   : refcounted_ptr(o.m_refcounted_ptr)
+   { }
+
+   refcounted_ptr(refcounted_ptr &&o)
+   : refcounted_ptr()
+   {
+   swap(o);
+   }
+
~refcounted_ptr()
{
reset();
}

template 
-   refcounted_ptr &operator = (const refcounted_ptr &o)
+   refcounted_ptr &operator = (const refcounted_ptr &o)
+   {
+   reset(o.m_refcounted_ptr);
+   return *this;
+   }
+
+   refcounted_ptr &operator = (const refcounted_ptr &o)
{
reset(o.m_refcounted_ptr);
return *this;
}

+   refcounted_ptr &operator = (refcounted_ptr &&o)
+   {
+   swap(o);
+   return *this;
+   }
+
/* Manipulators */
void reset()
{
diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h
index 38612c6..6524fd8 100644
--- a/lib/libpacman/package.h
+++ b/lib/libpacman/package.h
@@ -177,11 +177,7 @@ public:
char *m_path;
};

-   #if 0
typedef flib::refcounted_ptr package_ptr;
-   #else
-   typedef package *package_ptr;
-   #endif

template 
struct less;
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Simplify trans_t::syncpkgs.remove calls, no need to use slow _pacman_syncpkg_cmp, we allready got the pointer from the list (this path is still optimisable with

2014-10-22 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=e300e952004046ea0f6f9c05b07a8e8efa2640aa

commit e300e952004046ea0f6f9c05b07a8e8efa2640aa
Author: Michel Hermier 
Date:   Wed Oct 22 10:53:46 2014 +0200

libpacman: Simplify trans_t::syncpkgs.remove calls, no need to use slow 
_pacman_syncpkg_cmp, we allready got the pointer from the list (this path is 
still optimisable with iterators though).

diff --git a/lib/libpacman/trans.cpp b/lib/libpacman/trans.cpp
index ff60957..98867be 100644
--- a/lib/libpacman/trans.cpp
+++ b/lib/libpacman/trans.cpp
@@ -200,14 +200,6 @@ int _pacman_trans_set_state(pmtrans_t *trans, int 
new_state)
return(0);
}

-/* Helper functions for _pacman_list_remove
- */
-static
-int _pacman_syncpkg_cmp(const void *s1, const void *s2)
-{
-   return(strcmp(((pmsyncpkg_t *)s1)->pkg_name, ((pmsyncpkg_t 
*)s2)->pkg_name));
-}
-
static
int check_olddelay(Handle *handle)
{
@@ -587,11 +579,8 @@ int __pmtrans_t::prepare(FPtrList **data)
}
if(rmpkg) {
pmsyncpkg_t *rsync = find(rmpkg);
-   pmsyncpkg_t *spkg = 
NULL;
-
_pacman_log(PM_LOG_FLOW2, _("removing '%s' from target list"), rmpkg);
-   syncpkgs.remove(rsync, 
_pacman_syncpkg_cmp, &spkg);
-   delete spkg;
+   syncpkgs.remove(rsync);
continue;
}
}
@@ -622,11 +611,8 @@ int __pmtrans_t::prepare(FPtrList **data)
ps->m_replaces.add(q);
if(rsync) {
/* remove it from the target list */
-   pmsyncpkg_t 
*spkg = NULL;
-
_pacman_log(PM_LOG_FLOW2, _("removing '%s' from target list"), 
miss->depend.name);
-   
syncpkgs.remove(rsync, _pacman_syncpkg_cmp, &spkg);
-   delete spkg;
+   
syncpkgs.remove(rsync);
}
} else {
/* abort */
diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h
index 815e3a9..b028dbe 100644
--- a/lib/libpacman/util/flist.h
+++ b/lib/libpacman/util/flist.h
@@ -28,9 +28,6 @@

#include 

-/* Sort comparison callback function declaration */
-typedef int (*_pacman_fn_cmp)(const void *, const void *);
-
#ifdef __cplusplus

#include "util/falgorithm.h"
@@ -878,27 +875,6 @@ public:
return iterator(newItem);
}

-   bool remove(void *ptr, _pacman_fn_cmp fn, value_type *data)
-   {
-   return remove(fn, ptr, data);
-   }
-
-   bool remove(_pacman_fn_cmp fn, void *ptr, value_type *data = nullptr)
-   {
-   for(auto i = c_first(), end = c_end(); i != end; i = i->next()) 
{
-   if(fn(ptr, i->m_data) == 0) {
-   /* we found a matching item */
-   i->remove();
-   if(data != nullptr) {
-   *data = i->m_data;
-   }
-   delete i;
-   return true;
-   }
-   }
-   return false;
-   }
-
void swap(FList &o) {
FCListItem::swap(o);
}
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Simplify type declarations in package.h

2014-10-22 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=7a01e8db54afcd3c49b6476b33d720c448154f3f

commit 7a01e8db54afcd3c49b6476b33d720c448154f3f
Author: Michel Hermier 
Date:   Tue Oct 21 15:23:55 2014 +0200

libpacman: Simplify type declarations in package.h

diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp
index c8d81ef..a8222c2 100644
--- a/lib/libpacman/package.cpp
+++ b/lib/libpacman/package.cpp
@@ -93,6 +93,7 @@ bool package::set_filename(const char *filename, int witharch)

/* Helper function for comparing packages
*/
+static
int _pacman_pkg_cmp(const package_ptr p1, const package_ptr p2)
{
package *pkg1 = (package *)p1;
diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h
index 6524fd8..4846d12 100644
--- a/lib/libpacman/package.h
+++ b/lib/libpacman/package.h
@@ -178,16 +178,13 @@ public:
};

typedef flib::refcounted_ptr package_ptr;
-
template 
struct less;
-
template <>
struct less
{
bool operator () (const package_ptr pkg1, const package_ptr pkg2);
};
-
typedef FList package_list;
typedef flib::set> 
package_set;

@@ -221,12 +218,12 @@ private:
libpacman::package_set m_packages;
};

+   typedef flib::refcounted_ptr package_node_ptr;
struct package_node_less
{
bool operator () (const package_node *p1, const package_node *p2);
};
-
-   typedef flib::set, 
package_node_less> package_node_set;
+   typedef flib::set 
package_node_set;

class package_graph
: package_node_set
@@ -236,7 +233,6 @@ private:
};
} // namespace libpacman

-int _pacman_pkg_cmp(const libpacman::package pkg1, const 
libpacman::package_ptr pkg2);
const libpacman::package_ptr _pacman_pkg_isin(const char *needle, const 
libpacman::package_list &haystack);

#endif /* _PACMAN_PACKAGE_H */
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Make refcounted_ptr a little bit more usefull/usable.

2014-10-22 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=1c317890d22c8b6019aa8542ca5b11876d3479e5

commit 1c317890d22c8b6019aa8542ca5b11876d3479e5
Author: Michel Hermier 
Date:   Sat Oct 18 12:09:07 2014 +0200

libpacman: Make refcounted_ptr a little bit more usefull/usable.

diff --git a/lib/libpacman/kernel/frefcounted.h 
b/lib/libpacman/kernel/frefcounted.h
index 64f95ba..c5c9921 100644
--- a/lib/libpacman/kernel/frefcounted.h
+++ b/lib/libpacman/kernel/frefcounted.h
@@ -71,6 +71,10 @@ namespace flib
typedef T element_type;

constexpr refcounted_ptr()
+   : refcounted_ptr(nullptr)
+   { }
+
+   constexpr refcounted_ptr(std::nullptr_t)
: m_refcounted_ptr(nullptr)
{ }

@@ -83,6 +87,11 @@ namespace flib
}
}

+   template 
+   refcounted_ptr(const refcounted_ptr &o)
+   : refcounted_ptr(o.m_refcounted_ptr)
+   { }
+
~refcounted_ptr()
{
if(m_refcounted_ptr != nullptr) {
@@ -90,6 +99,13 @@ namespace flib
}
}

+   template 
+   refcounted_ptr &operator = (const refcounted_ptr &o)
+   {
+   reset(o.m_refcounted_ptr);
+   return *this;
+   }
+
/* Manipulators */
void reset()
{
@@ -102,7 +118,7 @@ namespace flib
swap(*this, refcounted_ptr(ptr));
}

-   void swap(refcounted_ptr &o)
+   void swap(refcounted_ptr &o)
{
std::swap(m_refcounted_ptr, o.m_refcounted_ptr);
}
@@ -139,6 +155,18 @@ namespace flib
};
}

+template 
+bool operator == (const flib::refcounted_ptr &lhs, const 
flib::refcounted_ptr &rhs)
+{
+   return lhs.get() == rhs.get();
+}
+
+template 
+bool operator != (const flib::refcounted_ptr &lhs, const 
flib::refcounted_ptr &rhs)
+{
+   return lhs.get() != rhs.get();
+}
+
#endif /* FREFCOUNTED_H */

/* vim: set ts=2 sw=2 noet: */
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: pacman-g2: Fix uninitialised pointer.

2014-10-22 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=19aed4319d4bbc87b4ebbb0568c4ec3e9a643bc4

commit 19aed4319d4bbc87b4ebbb0568c4ec3e9a643bc4
Author: Michel Hermier 
Date:   Sun Oct 19 11:14:47 2014 +0200

pacman-g2: Fix uninitialised pointer.

diff --git a/src/pacman-g2/sync.c b/src/pacman-g2/sync.c
index c3babd2..89dee4e 100644
--- a/src/pacman-g2/sync.c
+++ b/src/pacman-g2/sync.c
@@ -420,7 +420,7 @@ int syncpkg(FStringList *targets)
if(!found) {
/* targ not found in sync db, searching for providers... */
PM_PKG *pkg;
-   char *pname;
+   char *pname = NULL;
for(FPtrListIterator *j = f_ptrlist_first(pmc_syncs), *end = 
f_ptrlist_end(pmc_syncs); j != end; j = f_ptrlistitem_next(j)) {
PM_DB *db = list_data(j);
PM_LIST *k = pacman_db_whatprovides(db, targ);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Fix up operators so that the compiler find them.

2014-10-22 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=bea74a0abf0357e99ece870d710fb0f33d79fe59

commit bea74a0abf0357e99ece870d710fb0f33d79fe59
Author: Michel Hermier 
Date:   Wed Oct 22 07:51:49 2014 +0200

libpacman: Fix up operators so that the compiler find them.

diff --git a/lib/libpacman/kernel/frefcounted.h 
b/lib/libpacman/kernel/frefcounted.h
index 68f7a5e..71fef3a 100644
--- a/lib/libpacman/kernel/frefcounted.h
+++ b/lib/libpacman/kernel/frefcounted.h
@@ -160,7 +160,7 @@ namespace flib

T *operator -> () const
{
-   assert(*this);
+   assert(m_refcounted_ptr != nullptr);
return get();
}

@@ -177,43 +177,46 @@ namespace flib
private:
T *m_refcounted_ptr;
};
-}

-template 
-bool operator == (const flib::refcounted_ptr &lhs, const 
flib::refcounted_ptr &rhs)
-{
-   return lhs.get() == rhs.get();
-}
+   template 
+   bool operator == (const refcounted_ptr &lhs, const refcounted_ptr 
&rhs)
+   {
+   return lhs.get() == rhs.get();
+   }

-template 
-bool operator == (const flib::refcounted_ptr &lhs, std::nullptr_t rhs)
-{
-   return lhs.get() == rhs;
-}
+   template 
+   bool operator == (const refcounted_ptr &lhs, std::nullptr_t rhs)
+   {
+   return lhs.get() == rhs;
+   }

-template 
-bool operator == (std::nullptr_t lhs, const flib::refcounted_ptr &rhs)
-{
-   return lhs == rhs.get();
-}
+   template 
+   bool operator != (const refcounted_ptr &lhs, const refcounted_ptr 
&rhs)
+   {
+   return lhs.get() != rhs.get();
+   }

-template 
-bool operator != (const flib::refcounted_ptr &lhs, const 
flib::refcounted_ptr &rhs)
-{
-   return lhs.get() != rhs.get();
-}
+   template 
+   bool operator != (const refcounted_ptr &lhs, std::nullptr_t rhs)
+   {
+   return lhs.get() != rhs;
+   }
+} // namespace flib

-template 
-bool operator != (const flib::refcounted_ptr &lhs, std::nullptr_t rhs)
+namespace std
{
-   return lhs.get() != rhs;
-}
+   template 
+   bool operator == (nullptr_t lhs, const flib::refcounted_ptr &rhs)
+   {
+   return lhs == rhs.get();
+   }

-template 
-bool operator != (std::nullptr_t lhs, const flib::refcounted_ptr &rhs)
-{
-   return lhs != rhs.get();
-}
+   template 
+   bool operator != (nullptr_t lhs, const flib::refcounted_ptr &rhs)
+   {
+   return lhs != rhs.get();
+   }
+} // namespace std

#endif /* FREFCOUNTED_H */

diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp
index 3b447b3..52ba318 100644
--- a/lib/libpacman/package.cpp
+++ b/lib/libpacman/package.cpp
@@ -329,11 +329,6 @@ bool package::match(const pmdepend_t &depend)
}
}

-bool less::operator () (const package_ptr &pkg1, const 
package_ptr &pkg2)
-{
-   return pkg1 < pkg2;
-}
-
typedef struct FPackageStrMatcher FPackageStrMatcher;

struct FPackageStrMatcher
@@ -407,17 +402,12 @@ const char *package_node::name() const
return m_name;
}

-bool package_node_less::operator () (const package_node_ptr p1, const 
package_node_ptr p2)
-{
-   return strcmp(p1->name(), p2->name()) < 0;
-}
-
-bool operator < (const libpacman::package_ptr &pkg1, const 
libpacman::package_ptr &pkg2)
+bool libpacman::operator < (const libpacman::package_ptr &pkg1, const 
libpacman::package_ptr &pkg2)
{
return strcmp(pkg1->name(), pkg2->name()) < 0;
}

-bool operator < (const libpacman::package_node_ptr &pn1, const 
libpacman::package_node_ptr &pn2)
+bool libpacman::operator < (const libpacman::package_node_ptr &pn1, const 
libpacman::package_node_ptr &pn2)
{
return strcmp(pn1->name(), pn2->name()) < 0;
}
diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h
index f8a6f4b..d8c40a7 100644
--- a/lib/libpacman/package.h
+++ b/lib/libpacman/package.h
@@ -178,15 +178,10 @@ public:
};

typedef flib::refcounted_ptr package_ptr;
-   template 
-   struct less;
-   template <>
-   struct less
-   {
-   bool operator () (const package_ptr &pkg1, const package_ptr 
&pkg2);
-   };
+   bool operator < (const package_ptr &pkg1, const package_ptr &pkg2);
+
typedef FList package_list;
-   typedef flib::set> 
package_set;
+   typedef flib::set package_set;

class PackageMatcher
{
@@ -219,11 +214,9 @@ private:
};

typedef flib::refcounted_ptr package_node_ptr;
-   struct package_node_less
-   {
-   bool operator () (const package_node_ptr p1, const 
package_node_ptr p2);
-   };
-   typedef flib::set 
package_node_set;
+   bool operator < (const package_node_ptr &pn1, const package_node_ptr 
&pn2);
+
+   typedef flib::set package_node_set;

class package_graph
: package_node_set
@@ -233,9 +226,6 @@ p

[Frugalware-git] pacman-g2: libpacman: Move a bunch of NULL to nullptr in preparation of the refcounted package_ptr.

2014-10-22 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=f660790ff114e6f8e56535c6047bb1eb72b2d6d4

commit f660790ff114e6f8e56535c6047bb1eb72b2d6d4
Author: Michel Hermier 
Date:   Tue Oct 21 10:40:47 2014 +0200

libpacman: Move a bunch of NULL to nullptr in preparation of the refcounted 
package_ptr.

diff --git a/lib/libpacman/conflict.cpp b/lib/libpacman/conflict.cpp
index 5617527..cc04672 100644
--- a/lib/libpacman/conflict.cpp
+++ b/lib/libpacman/conflict.cpp
@@ -65,7 +65,7 @@ FPtrList pmtrans_t::checkconflicts()

for(auto i = syncpkgs.begin(), end = syncpkgs.end(); i != end; ++i) {
package_ptr tp = (*i)->pkg_new;
-   if(tp == NULL) {
+   if(tp == nullptr) {
continue;
}
remain = flib::count(i, end);
@@ -289,7 +289,7 @@ FPtrList pmtrans_t::find_conflicts()
/* if it's a directory, then we have no conflict */
ok = 1;
} else {
-   if(dbpkg == NULL) {
+   if(dbpkg == nullptr) {
dbpkg = db_local->find(p->name());
}
if(dbpkg && !(dbpkg->flags & INFRQ_FILES)) {
diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp
index 4720fe4..7d8863c 100644
--- a/lib/libpacman/database_cache.cpp
+++ b/lib/libpacman/database_cache.cpp
@@ -69,7 +69,7 @@ int _pacman_db_load_pkgcache(Database *db)
inforeq, db->treename());

db->rewind();
-   while((info = db->readpkg(inforeq)) != NULL) {
+   while((info = db->readpkg(inforeq)) != nullptr) {
/* add to the collective */
db->pkgcache.add(info);
}
@@ -101,7 +101,7 @@ libpacman::package_set &Database::get_packages()

int Database::add_pkgincache(package_ptr pkg)
{
-   if(pkg == NULL) {
+   if(pkg == nullptr) {
return(-1);
}

@@ -115,7 +115,7 @@ int Database::add_pkgincache(package_ptr pkg)

int Database::remove_pkgfromcache(package_ptr pkg)
{
-   if(pkg == NULL) {
+   if(pkg == nullptr) {
return(-1);
}

diff --git a/lib/libpacman/db.cpp b/lib/libpacman/db.cpp
index db4bf81..8efa4ce 100644
--- a/lib/libpacman/db.cpp
+++ b/lib/libpacman/db.cpp
@@ -157,7 +157,7 @@ package_ptr Database::find(const PackageMatcher 
&packagematcher)
if(packagematcher.match(pkg)) {
if(packagematcher.match(pkg, ~PM_PACKAGE_FLAG_PROVIDES)) {
return pkg;
-   } else if (ret == NULL) {
+   } else if (ret == nullptr) {
/* Store provide match */
ret = pkg;
}
@@ -247,7 +247,7 @@ const char *Database::treename() const

int Database::write(package_ptr info, unsigned int inforeq)
{
-   ASSERT(info != NULL, RET_ERR(PM_ERR_PKG_INVALID, -1));
+   ASSERT(info != nullptr, RET_ERR(PM_ERR_PKG_INVALID, -1));
RET_ERR(PM_ERR_WRONG_ARGS, -1); // Not supported
}

diff --git a/lib/libpacman/db/fakedb.cpp b/lib/libpacman/db/fakedb.cpp
index 16101ff..8c4bafd 100644
--- a/lib/libpacman/db/fakedb.cpp
+++ b/lib/libpacman/db/fakedb.cpp
@@ -41,7 +41,7 @@ package_ptr _pacman_fakedb_pkg_new(const char *name)
char *str = NULL;

package_ptr dummy(new package(NULL, NULL));
-   if(dummy == NULL) {
+   if(dummy == nullptr) {
RET_ERR(PM_ERR_MEMORY, NULL);
}

diff --git a/lib/libpacman/db/localdb.cpp b/lib/libpacman/db/localdb.cpp
index 185bb83..ce7590d 100644
--- a/lib/libpacman/db/localdb.cpp
+++ b/lib/libpacman/db/localdb.cpp
@@ -61,7 +61,7 @@ LocalDatabase *LocalPackage::database() const
}

static
-int _pacman_localpkg_file_reader(Database *db, package_ptr pkg, unsigned int 
flags, unsigned int flags_masq, const char *file, int (*reader)(package *, FILE 
*))
+int _pacman_localpkg_file_reader(Database *db, package *pkg, unsigned int 
flags, unsigned int flags_masq, const char *file, int (*reader)(package *, FILE 
*))
{
int ret = 0;

@@ -403,7 +403,7 @@ int LocalDatabase::write(package_ptr info, unsigned int 
inforeq)
mode_t oldmask;
int retval = 0;

-   ASSERT(info != NULL, RET_ERR(PM_ERR_PKG_INVALID, -1));
+   ASSERT(info != nullptr, RET_ERR(PM_ERR_PKG_INVALID, -1));

snprintf(path, PATH_MAX, "%s/%s-%s", this->path, info->name(), info->version());
oldmask = umask();
diff --git a/lib/libpacman/db/localdb_files.cpp 
b/lib/libpacman/db/localdb_files.cpp
index b84c90a..16fbe26 100644
--- a/lib/libpacman/db/localdb_files.cpp
+++ b/lib/libpacman/db/localdb_files.cpp
@@ -60,7 +60,7 @@ int _pacman_db_read_lines(FStringList &list, char *s, size_t 
size, FILE *fp)
return lines;
}

-int _pacman_localdb_desc_fread(package_ptr info, FILE *fp)
+int _pacman_localdb_desc_fread(package *info, FILE *fp)
{
char line[512];
int sline = sizeof(line)-1;
@@ -183,7 +183,7 @@ error:
return -1;
}

-int _pacman_localdb_depends_fread(package_ptr info, FILE *fp)
+int _pacman_localdb_depends_fread(package *info, FILE *fp)
{
char line[512];
int sline = sizeof(line)-1;
@@ -219,7 +219,7 @@ int _pacman_localdb_depends_fread(package_ptr info, FILE 
*fp)
return 0;
}

-int _pacman_localdb_files_fread(package_ptr info, FILE *fp)
+int _pacman_localdb_files_fread(packag

[Frugalware-git] pacman-g2: libpacman: Wrap FList in package_list.

2014-10-22 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=d6789017f4f7fcf46a67d81a7f97a181fb11d3d1

commit d6789017f4f7fcf46a67d81a7f97a181fb11d3d1
Author: Michel Hermier 
Date:   Mon Oct 20 19:31:53 2014 +0200

libpacman: Wrap FList in package_list.

diff --git a/lib/libpacman/db.cpp b/lib/libpacman/db.cpp
index 84f265c..e572171 100644
--- a/lib/libpacman/db.cpp
+++ b/lib/libpacman/db.cpp
@@ -92,9 +92,9 @@ bool Database::add_server(const char *url)
return true;
}

-FList Database::filter(const PackageMatcher &packagematcher)
+package_list Database::filter(const PackageMatcher &packagematcher)
{
-   FList ret;
+   package_list ret;

auto &cache = get_packages();
for(auto it = cache.begin(), end = cache.end(); it != end; ++it) {
@@ -107,14 +107,14 @@ FList Database::filter(const PackageMatcher 
&packagematcher)
return ret;
}

-FList Database::filter(const FStrMatcher *strmatcher, int 
packagestrmatcher_flags)
+package_list Database::filter(const FStrMatcher *strmatcher, int 
packagestrmatcher_flags)
{
return filter(PackageMatcher(strmatcher, packagestrmatcher_flags));
}

-FList Database::filter(const FStringList &needles, int 
packagestrmatcher_flags, int strmatcher_flags)
+package_list Database::filter(const FStringList &needles, int 
packagestrmatcher_flags, int strmatcher_flags)
{
-   FList ret;
+   package_list ret;

for(auto i = needles.begin(), end = needles.end(); i != end; ++i) {
const char *pattern = (const char *)*i;
@@ -138,12 +138,12 @@ FList Database::filter(const FStringList 
&needles, int packagestrmatc
return ret;
}

-FList Database::filter(const char *pattern, int 
packagestrmatcher_flags, int strmatcher_flags)
+package_list Database::filter(const char *pattern, int 
packagestrmatcher_flags, int strmatcher_flags)
{
if(!f_strempty(pattern)) {
return filter(PackageMatcher(pattern, packagestrmatcher_flags, 
strmatcher_flags));
}
-   return FList();
+   return package_list();
}

Package *Database::find(const PackageMatcher &packagematcher)
@@ -179,7 +179,7 @@ Package *Database::find(const char *pattern, int 
packagestrmatcher_flags, int st
return NULL;
}

-FList Database::whatPackagesProvide(const char *target)
+package_list Database::whatPackagesProvide(const char *target)
{
return filter(target, PM_PACKAGE_FLAG_PROVIDES);
}
@@ -251,9 +251,9 @@ int Database::write(Package *info, unsigned int inforeq)
RET_ERR(PM_ERR_WRONG_ARGS, -1); // Not supported
}

-FList Database::getowners(const char *filename)
+package_list Database::getowners(const char *filename)
{
-   return FList();
+   return package_list();
}

/* Reads dbpath/treename.lastupdate and populates *ts with the contents.
diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h
index 2967331..209b084 100644
--- a/lib/libpacman/db.h
+++ b/lib/libpacman/db.h
@@ -75,10 +75,10 @@ public:
int remove_pkgfromcache(libpacman::package_ptr pkg);
void free_pkgcache();

-   FList filter(const libpacman::PackageMatcher 
&packagematcher);
-   FList filter(const FStrMatcher *strmatcher, int 
packagestrmatcher_flags);
-   FList filter(const FStringList &needles, int 
packagestrmatcher_flags, int strmatcher_flags = FStrMatcher::EQUAL);
-   FList filter(const char *pattern, int 
packagestrmatcher_flags, int strmatcher_flags = FStrMatcher::EQUAL);
+   libpacman::package_list filter(const libpacman::PackageMatcher 
&packagematcher);
+   libpacman::package_list filter(const FStrMatcher *strmatcher, int 
packagestrmatcher_flags);
+   libpacman::package_list filter(const FStringList &needles, int 
packagestrmatcher_flags, int strmatcher_flags = FStrMatcher::EQUAL);
+   libpacman::package_list filter(const char *pattern, int 
packagestrmatcher_flags, int strmatcher_flags = FStrMatcher::EQUAL);
libpacman::Package *find(const libpacman::PackageMatcher &packagematcher);
libpacman::Package *find(const FStrMatcher *strmatcher, int 
packagestrmatcher_flags);
libpacman::Package *find(const char *target,
@@ -87,9 +87,9 @@ public:
libpacman::Group *find_group(const char *target);
libpacman::package_set &get_packages();
libpacman::group_set &get_groups();
-   FList whatPackagesProvide(const char *target);
+   libpacman::package_list whatPackagesProvide(const char *target);

-   virtual FList getowners(const char *filename); /* 
Make pure virtual */
+   virtual libpacman::package_list getowners(const char *filename); /* 
Make pure virtual */

::libpacman::Handle *m_handle;
char *path;
diff --git a/lib/libpacman/db/localdb.cpp b/lib/libpacman/db/localdb.cpp
index 95754e2..01b0009 100644
--- a/lib/libpacman/db/localdb.cpp
+++ b/lib/libpacman/db/localdb.cpp
@@ -488,12 +488,12 @@ cleanup:
return(retval);
}

-FList LocalDatabase::getowners(const char *filename)
+package_list LocalDatabase::getowners(const char *filename)
{
struct stat buf;
int gotcha = 0;
char rpath[PATH_MAX];
-   FList ret;
+   package_l

[Frugalware-git] pacman-g2: libpacman: Remove a bunch of unused code in fptrlist.

2014-10-22 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=513af9c907d53b2820726f4f66ca937cd5d9f4d1

commit 513af9c907d53b2820726f4f66ca937cd5d9f4d1
Author: Michel Hermier 
Date:   Sun Oct 19 11:22:51 2014 +0200

libpacman: Remove a bunch of unused code in fptrlist.

diff --git a/lib/libpacman/util/fptrlist.cpp b/lib/libpacman/util/fptrlist.cpp
index 7001937..2e68cc8 100644
--- a/lib/libpacman/util/fptrlist.cpp
+++ b/lib/libpacman/util/fptrlist.cpp
@@ -84,46 +84,10 @@ FPtrListIterator *f_ptrlist_end(FPtrList *self)
return self->end();
}

-const FPtrListIterator *f_ptrlist_end_const(const FPtrList *self)
-{
-   ASSERT(self != NULL, RET_ERR(PM_ERR_WRONG_ARGS, NULL));
-   return self->end();
-}
-
FPtrListIterator *f_ptrlist_first(FPtrList *self)
{
ASSERT(self != NULL, RET_ERR(PM_ERR_WRONG_ARGS, NULL));
return self->begin();
}

-const FPtrListIterator *f_ptrlist_first_const(const FPtrList *self)
-{
-   ASSERT(self != NULL, RET_ERR(PM_ERR_WRONG_ARGS, NULL));
-   return self->begin();
-}
-
-FPtrListIterator *f_ptrlist_last(FPtrList *self)
-{
-   ASSERT(self != NULL, RET_ERR(PM_ERR_WRONG_ARGS, NULL));
-   return self->last();
-}
-
-const FPtrListIterator *f_ptrlist_last_const(const FPtrList *self)
-{
-   ASSERT(self != NULL, RET_ERR(PM_ERR_WRONG_ARGS, NULL));
-   return self->last();
-}
-
-FPtrListIterator *f_ptrlist_rend(FPtrList *self)
-{
-   ASSERT(self != NULL, RET_ERR(PM_ERR_WRONG_ARGS, NULL));
-   return self->rend();
-}
-
-const FPtrListIterator *f_ptrlist_rend_const(const FPtrList *self)
-{
-   ASSERT(self != NULL, RET_ERR(PM_ERR_WRONG_ARGS, NULL));
-   return self->rend();
-}
-
/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/util/fptrlist.h b/lib/libpacman/util/fptrlist.h
index a43261b..0300f6b 100644
--- a/lib/libpacman/util/fptrlist.h
+++ b/lib/libpacman/util/fptrlist.h
@@ -53,13 +53,7 @@ int f_ptrlist_delete(FPtrList *list);
FPtrList *f_ptrlist_add(FPtrList *list, void *data);
size_t f_ptrlist_count(const FPtrList *self);
FPtrListIterator *f_ptrlist_end(FPtrList *self);
-const FPtrListIterator *f_ptrlist_end_const(const FPtrList *self);
FPtrListIterator *f_ptrlist_first(FPtrList *self);
-const FPtrListIterator *f_ptrlist_first_const(const FPtrList *self);
-FPtrListIterator *f_ptrlist_last(FPtrList *self);
-const FPtrListIterator *f_ptrlist_last_const(const FPtrList *self);
-FPtrListIterator *f_ptrlist_rend(FPtrList *self);
-const FPtrListIterator *f_ptrlist_rend_const(const FPtrList *self);

#ifdef __cplusplus
}
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Remove _pacman_pkg_cmp.

2014-10-22 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=f22b658368b1df3a5e346af8a69d19f871515dbd

commit f22b658368b1df3a5e346af8a69d19f871515dbd
Author: Michel Hermier 
Date:   Tue Oct 21 16:04:56 2014 +0200

libpacman: Remove _pacman_pkg_cmp.

diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp
index a1f035c..3b447b3 100644
--- a/lib/libpacman/package.cpp
+++ b/lib/libpacman/package.cpp
@@ -91,17 +91,6 @@ bool package::set_filename(const char *filename, int 
witharch)
return false;
}

-/* Helper function for comparing packages
- */
-static
-int _pacman_pkg_cmp(const package_ptr p1, const package_ptr p2)
-{
-   package *pkg1 = (package *)p1;
-   package *pkg2 = (package *)p2;
-
-   return pkg1 == pkg2 ? 0: strcmp(pkg1->name(), pkg2->name());
-}
-
bool package::is_valid(const pmtrans_t *trans, const char *pkgfile) const
{
struct utsname name;
@@ -340,9 +329,9 @@ bool package::match(const pmdepend_t &depend)
}
}

-bool less::operator () (const package_ptr pkg1, 
const package_ptr pkg2)
+bool less::operator () (const package_ptr &pkg1, const 
package_ptr &pkg2)
{
-   return _pacman_pkg_cmp(pkg1, pkg2) < 0;
+   return pkg1 < pkg2;
}

typedef struct FPackageStrMatcher FPackageStrMatcher;
diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h
index ee51686..f8a6f4b 100644
--- a/lib/libpacman/package.h
+++ b/lib/libpacman/package.h
@@ -181,12 +181,12 @@ public:
template 
struct less;
template <>
-   struct less
+   struct less
{
-   bool operator () (const package_ptr pkg1, const package_ptr 
pkg2);
+   bool operator () (const package_ptr &pkg1, const package_ptr 
&pkg2);
};
typedef FList package_list;
-   typedef flib::set> package_set;
+   typedef flib::set> 
package_set;

class PackageMatcher
{
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Make refcounted_ptr auto conversion operator to pointer explicit.

2014-10-22 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=7c73094180a8190c89bf76e02394555ea8d467d3

commit 7c73094180a8190c89bf76e02394555ea8d467d3
Author: Michel Hermier 
Date:   Tue Oct 21 15:45:21 2014 +0200

libpacman: Make refcounted_ptr auto conversion operator to pointer explicit.

diff --git a/lib/libpacman/deps.cpp b/lib/libpacman/deps.cpp
index a07cae6..3e76f2c 100644
--- a/lib/libpacman/deps.cpp
+++ b/lib/libpacman/deps.cpp
@@ -503,7 +503,7 @@ int pmtrans_t::resolvedeps(FPtrList **data)
int usedep = 1;
if(m_handle->ignorepkg.contains(ps->name())) {
package_ptr dummypkg(new package(miss->target, NULL));
-   QUESTION(this, PM_TRANS_CONV_INSTALL_IGNOREPKG, 
dummypkg, ps, NULL, &usedep);
+   QUESTION(this, PM_TRANS_CONV_INSTALL_IGNOREPKG, 
dummypkg.get(), ps.get(), NULL, &usedep);
}
if(usedep) {
_pacman_log(PM_LOG_DEBUG, _("pulling dependency %s"), ps->name());
diff --git a/lib/libpacman/handle.cpp b/lib/libpacman/handle.cpp
index bd52f31..e0efbfe 100644
--- a/lib/libpacman/handle.cpp
+++ b/lib/libpacman/handle.cpp
@@ -173,7 +173,6 @@ Database *Handle::getDatabase(const char *treename)
return sdb;
}
}
-
return NULL;
}

diff --git a/lib/libpacman/kernel/frefcounted.h 
b/lib/libpacman/kernel/frefcounted.h
index 6ab9f08..68f7a5e 100644
--- a/lib/libpacman/kernel/frefcounted.h
+++ b/lib/libpacman/kernel/frefcounted.h
@@ -164,7 +164,7 @@ namespace flib
return get();
}

-   operator T * () const
+   explicit operator T * () const
{
return get();
}
diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp
index a119579..a1f035c 100644
--- a/lib/libpacman/package.cpp
+++ b/lib/libpacman/package.cpp
@@ -418,7 +418,7 @@ const char *package_node::name() const
return m_name;
}

-bool package_node_less::operator () (const package_node *p1, const 
package_node *p2)
+bool package_node_less::operator () (const package_node_ptr p1, const 
package_node_ptr p2)
{
return strcmp(p1->name(), p2->name()) < 0;
}
diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h
index 69fa218..ee51686 100644
--- a/lib/libpacman/package.h
+++ b/lib/libpacman/package.h
@@ -221,7 +221,7 @@ private:
typedef flib::refcounted_ptr package_node_ptr;
struct package_node_less
{
-   bool operator () (const package_node *p1, const package_node 
*p2);
+   bool operator () (const package_node_ptr p1, const 
package_node_ptr p2);
};
typedef flib::set 
package_node_set;

diff --git a/lib/libpacman/package/fpmpackage.cpp 
b/lib/libpacman/package/fpmpackage.cpp
index 67d92a9..fc7a78f 100644
--- a/lib/libpacman/package/fpmpackage.cpp
+++ b/lib/libpacman/package/fpmpackage.cpp
@@ -221,7 +221,7 @@ package_ptr _pacman_fpmpackage_load(const char *pkgfile)
/* internal */
info->m_path = strdup(pkgfile);

-   return(info);
+   return info;

error:
if(!ret) {
diff --git a/lib/libpacman/pacman.cpp b/lib/libpacman/pacman.cpp
index 8685c2a..d44abd9 100644
--- a/lib/libpacman/pacman.cpp
+++ b/lib/libpacman/pacman.cpp
@@ -932,7 +932,7 @@ void *pacman_sync_getinfo(pmsyncpkg_t *ps, unsigned char 
parm)
switch(parm) {
case PM_SYNC_TYPE: data = (void *)(long)ps->type; break;
case PM_SYNC_NAME: data = ps->pkg_name; break;
-   case PM_SYNC_PKG:  data = ps->pkg_new; break;
+   case PM_SYNC_PKG:  data = ps->pkg_new.get(); break;
case PM_SYNC_REPLACES: data = &ps->m_replaces; break;
default:
data = NULL;
diff --git a/lib/libpacman/pacman_p.h b/lib/libpacman/pacman_p.h
index dcaaff5..cbcf173 100644
--- a/lib/libpacman/pacman_p.h
+++ b/lib/libpacman/pacman_p.h
@@ -24,6 +24,7 @@
#include "pacman.h"

#include "util/fptrlist.h"
+#include "package.h"

#define DEFINE_CAST(c_type, cxx_type) \
static inline c_type *c_cast(cxx_type *obj)   \
@@ -60,6 +61,9 @@ template 
static inline __pmlist_t *c_cast(FList *obj)
{ return (__pmlist_t *)obj; }

+static inline struct __pmpkg_t *c_cast(const libpacman::package_ptr &obj)
+{ return (__pmpkg_t *)obj.get(); }
+
#undef DEFINE_CAST

#endif /* _PACMAN_P_H */
diff --git a/lib/libpacman/trans.cpp b/lib/libpacman/trans.cpp
index cb587e4..76730ee 100644
--- a/lib/libpacman/trans.cpp
+++ b/lib/libpacman/trans.cpp
@@ -333,7 +333,7 @@ int __pmtrans_t::add(const char *target, pmtranstype_t 
type, int flags, pmsyncpk
if(cmp > 0) {
/* pkg_local version is newer -- get confirmation before adding */
int resp = 0;
-   QUESTION(this, PM_TRANS_CONV_LOCAL_NEWER, 
pkg_local, NULL, NULL, &resp);
+   QUESTION(this, PM_TRANS_CONV_LOCAL_NEWER, 
pkg_local.get(), NULL, NULL, &resp);
if(!resp) {
_pacman_log(PM_LOG_WARNING, _("%s-%s: local version is newer -- skipping"), 
pkg_local->name(), pkg_local->version());
return(0);
@@ -341,7 +341,7 @@ int __pmtrans_t::add(const char *target, pmtranstype_t 
t

[Frugalware-git] pacman-g2: libpacman: make FFunction and FSignal less dependent to ASSERT.

2014-10-22 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=f294a59b4092511d5ed2caac51bee37fd95f42dc

commit f294a59b4092511d5ed2caac51bee37fd95f42dc
Author: Michel Hermier 
Date:   Sun Oct 19 11:45:49 2014 +0200

libpacman: make FFunction and FSignal less dependent to ASSERT.

diff --git a/lib/libpacman/kernel/fsignal.h b/lib/libpacman/kernel/fsignal.h
index af82569..933de6c 100644
--- a/lib/libpacman/kernel/fsignal.h
+++ b/lib/libpacman/kernel/fsignal.h
@@ -70,10 +70,11 @@ public:

bool connect(const flib::FFunction& function)
{
-   ASSERT(function, return false);
-
-   m_connections.push_back(function);
-   return true;
+   if(function) {
+   m_connections.push_back(function);
+   return true;
+   }
+   return false;
}

template 
diff --git a/lib/libpacman/util/ffunctional.h b/lib/libpacman/util/ffunctional.h
index 4527447..fd9db4a 100644
--- a/lib/libpacman/util/ffunctional.h
+++ b/lib/libpacman/util/ffunctional.h
@@ -27,8 +27,6 @@

#include "util/ftype_traits.h"

-#include "util.h" // For ASSERT
-
namespace flib
{

@@ -307,10 +305,9 @@ class FFunction
template 
void _connect(Pointer pointer, MethodSignature method)
{
-   ASSERT(pointer != nullptr, return;);
-   ASSERT(method != nullptr, return;);
-
-   d = shared_ptr(new flib::detail::FMethodImpl(pointer, method));
+   if(pointer != nullptr && method != nullptr) {
+   d = shared_ptr(new 
flib::detail::FMethodImpl(pointer, method));
+   }
}

public:
@@ -328,17 +325,17 @@ public:
template 
FFunction(FunctionR (*function)(FunctionArgs...))
{
-   ASSERT(function != nullptr, return;);
-
-   d = shared_ptr(new flib::detail::FFunctionImpl(function));
+   if(function != nullptr) {
+   d = shared_ptr(new 
flib::detail::FFunctionImpl(function));
+   }
}

template 
FFunction(CallbackR (*callback)(CallbackData, CallbackArgs...), 
CallbackDataHolder data)
{
-   ASSERT(callback != nullptr, return;);
-
-   d = shared_ptr(new flib::detail::FCallbackImpl(callback, data));
+   if(callback != nullptr) {
+   d = shared_ptr(new 
flib::detail::FCallbackImpl(callback, data));
+   }
}

template 
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Drop explicit refcounting calls (will be replace with implicit refcounting using refcounted_ptr).

2014-10-22 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=8bb58b314bc1993c363d36e39ddb1b9c013685b7

commit 8bb58b314bc1993c363d36e39ddb1b9c013685b7
Author: Michel Hermier 
Date:   Mon Oct 20 13:10:16 2014 +0200

libpacman: Drop explicit refcounting calls (will be replace with implicit 
refcounting using refcounted_ptr).

diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp
index e498ea9..4720fe4 100644
--- a/lib/libpacman/database_cache.cpp
+++ b/lib/libpacman/database_cache.cpp
@@ -86,7 +86,7 @@ void Database::free_pkgcache()
_pacman_log(PM_LOG_DEBUG, _("freeing package cache for repository '%s'"),
treename());

-   pkgcache.clear(flib::fRelease);
+   pkgcache.clear();

_pacman_db_clear_grpcache(this);
}
@@ -105,7 +105,6 @@ int Database::add_pkgincache(package_ptr pkg)
return(-1);
}

-   pkg->acquire(); // FIXME: Should not be necessary, but required during 
migration to refcounted object
_pacman_log(PM_LOG_DEBUG, _("adding entry '%s' in '%s' cache"), pkg->name(), 
treename());
pkgcache.add(pkg);

@@ -124,13 +123,9 @@ int Database::remove_pkgfromcache(package_ptr pkg)
/* package not found */
return(-1);
}
-
_pacman_log(PM_LOG_DEBUG, _("removing entry '%s' from '%s' cache"), 
pkg->name(), treename());
-   pkg->release(); // FIXME: Should not be necessary, but required during 
migration to refcounted object
-
_pacman_db_clear_grpcache(this);
-
-   return(0);
+   return 0;
}

static
diff --git a/lib/libpacman/db/fakedb.cpp b/lib/libpacman/db/fakedb.cpp
index baee4c9..098ac8e 100644
--- a/lib/libpacman/db/fakedb.cpp
+++ b/lib/libpacman/db/fakedb.cpp
@@ -72,7 +72,6 @@ Package *_pacman_fakedb_pkg_new(const char *name)
}
free(str);
if(dummy->m_name[0] == 0 || dummy->m_version[0] == 0) {
-   dummy->release();
RET_ERR(PM_ERR_PKG_INVALID_NAME, NULL);
}
return dummy;
diff --git a/lib/libpacman/db/localdb.cpp b/lib/libpacman/db/localdb.cpp
index 48b2c6f..95754e2 100644
--- a/lib/libpacman/db/localdb.cpp
+++ b/lib/libpacman/db/localdb.cpp
@@ -241,7 +241,6 @@ package_ptr _pacman_localdb_pkg_new(LocalDatabase *db, 
const struct dirent *dire
!pkg->set_filename(dname, 0) ||
pkg->read(inforeq) == -1) {
_pacman_log(PM_LOG_ERROR, _("invalid name for dabatase entry '%s'"), dname);
-   pkg->release();
pkg = NULL;
}
return package_ptr(pkg);
diff --git a/lib/libpacman/db/syncdb.cpp b/lib/libpacman/db/syncdb.cpp
index 8e8e35c..30166bd 100644
--- a/lib/libpacman/db/syncdb.cpp
+++ b/lib/libpacman/db/syncdb.cpp
@@ -141,7 +141,6 @@ package_ptr _pacman_syncdb_pkg_new(SyncDatabase *db, const 
struct archive_entry
!pkg->set_filename(dname, 0) ||
pkg->read(inforeq) == -1) {
_pacman_log(PM_LOG_ERROR, _("invalid name for dabatase entry '%s'"), dname);
-   pkg->release();
pkg = NULL;
}
return package_ptr(pkg);
diff --git a/lib/libpacman/deps.cpp b/lib/libpacman/deps.cpp
index d86d3f1..11b1c0b 100644
--- a/lib/libpacman/deps.cpp
+++ b/lib/libpacman/deps.cpp
@@ -505,7 +505,6 @@ int pmtrans_t::resolvedeps(FPtrList **data)
if(m_handle->ignorepkg.contains(ps->name())) {
Package *dummypkg = new Package(miss->target, NULL);
QUESTION(this, PM_TRANS_CONV_INSTALL_IGNOREPKG, dummypkg, ps, NULL, &usedep);
-   dummypkg->release();
}
if(usedep) {
_pacman_log(PM_LOG_DEBUG, _("pulling dependency %s"), ps->name());
diff --git a/lib/libpacman/kernel/fobject.h b/lib/libpacman/kernel/fobject.h
index d2f19e0..feaa0c4 100644
--- a/lib/libpacman/kernel/fobject.h
+++ b/lib/libpacman/kernel/fobject.h
@@ -45,20 +45,6 @@ public:
virtual int set(unsigned val, unsigned long data);
};

-static inline void fAcquire(flib::FObject *object)
-{
-   if(object != nullptr) {
-   object->acquire();
-   }
-}
-
-static inline void fRelease(flib::FObject *object)
-{
-   if(object != nullptr) {
-   object->release();
-   }
-}
-
}

#endif /* FOBJECT_H */
diff --git a/lib/libpacman/kernel/frefcounted.cpp 
b/lib/libpacman/kernel/frefcounted.cpp
index 6789ef5..6be2958 100644
--- a/lib/libpacman/kernel/frefcounted.cpp
+++ b/lib/libpacman/kernel/frefcounted.cpp
@@ -30,12 +30,11 @@
using namespace flib;

refcounted::refcounted()
-   : m_reference_counter(1)
+   : m_reference_counter(0)
{ }

refcounted::~refcounted()
-{
-}
+{ }

void refcounted::acquire() const
{
diff --git a/lib/libpacman/package/fpmpackage.cpp 
b/lib/libpacman/package/fpmpackage.cpp
index b61bb5e..2cd9721 100644
--- a/lib/libpacman/package/fpmpackage.cpp
+++ b/lib/libpacman/package/fpmpackage.cpp
@@ -225,7 +225,6 @@ Package *_pacman_fpmpackage_load(const char *pkgfile)
return(info);

error:
-   info->release();
if(!ret) {
archive_read_finish (archive);
}
diff --git a/lib/libpacman/pacman.cpp b/lib/libpacman/pacman.cpp
index af94ec6..e

[Frugalware-git] pacman-g2: libpacman: Remove ASSERTs on f_ptrlist_first, f_ptrlist_end.

2014-10-22 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=83ad22202f715b4aadd717b2b6337364f9302517

commit 83ad22202f715b4aadd717b2b6337364f9302517
Author: Michel Hermier 
Date:   Sun Oct 19 11:29:12 2014 +0200

libpacman: Remove ASSERTs on f_ptrlist_first, f_ptrlist_end.

diff --git a/lib/libpacman/util/fptrlist.cpp b/lib/libpacman/util/fptrlist.cpp
index 2e68cc8..3d7b9d9 100644
--- a/lib/libpacman/util/fptrlist.cpp
+++ b/lib/libpacman/util/fptrlist.cpp
@@ -80,14 +80,18 @@ size_t f_ptrlist_count(const FPtrList *self)

FPtrListIterator *f_ptrlist_end(FPtrList *self)
{
-   ASSERT(self != NULL, RET_ERR(PM_ERR_WRONG_ARGS, NULL));
-   return self->end();
+   if(self != NULL) {
+   return self->end();
+   }
+   return NULL;
}

FPtrListIterator *f_ptrlist_first(FPtrList *self)
{
-   ASSERT(self != NULL, RET_ERR(PM_ERR_WRONG_ARGS, NULL));
-   return self->begin();
+   if(self != NULL) {
+   return self->begin();
+   }
+   return NULL;
}

/* vim: set ts=2 sw=2 noet: */
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Optimise FList::remove_if.

2014-10-22 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=a367403df7c673f3ac3f02e82db018fa5a4aff9a

commit a367403df7c673f3ac3f02e82db018fa5a4aff9a
Author: Michel Hermier 
Date:   Tue Oct 21 15:09:30 2014 +0200

libpacman: Optimise FList::remove_if.

diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h
index 608fffb..815e3a9 100644
--- a/lib/libpacman/util/flist.h
+++ b/lib/libpacman/util/flist.h
@@ -830,7 +830,7 @@ public:
size_type size = 0;
iterator it = begin(), end = this->end();

-   while((it = find_if(pred)) != end) {
+   while((it = flib::find_if(it, end, pred)) != end) {
fn(*it);
it = erase(it);
++size;
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: pacman-g2: Fix ouput when querying info.

2014-10-17 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=f396da9d16475abd6675557a166edbd693ea89d7

commit f396da9d16475abd6675557a166edbd693ea89d7
Author: Michel Hermier 
Date:   Fri Oct 17 16:48:02 2014 +0200

pacman-g2: Fix ouput when querying info.

diff --git a/src/pacman-g2/query.c b/src/pacman-g2/query.c
index e7232a6..40f9f64 100644
--- a/src/pacman-g2/query.c
+++ b/src/pacman-g2/query.c
@@ -58,7 +58,7 @@ int querypkg(FStringList *targets)
PM_PKG *pkg = pacman_list_getdata(j);

printf("local/%s %s-%s [Desc: %s]\n",
-   (char 
*)pacman_list_getdata(pacman_pkg_getinfo(pkg, PM_PKG_GROUPS)),
+   (char 
*)pacman_list_getdata(pacman_list_begin(pacman_pkg_getinfo(pkg, 
PM_PKG_GROUPS))),
(char *)pacman_pkg_getinfo(pkg, PM_PKG_NAME),
(char *)pacman_pkg_getinfo(pkg, PM_PKG_VERSION),
(char *)pacman_pkg_getinfo(pkg, PM_PKG_DESC));
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Drop unused f_stringlist_add_stringlist.

2014-10-17 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=164021c2a93f68f1705097371307dac2891846a6

commit 164021c2a93f68f1705097371307dac2891846a6
Author: Michel Hermier 
Date:   Fri Oct 17 16:10:00 2014 +0200

libpacman: Drop unused f_stringlist_add_stringlist.

diff --git a/lib/libpacman/util/fstringlist.cpp 
b/lib/libpacman/util/fstringlist.cpp
index b93cc08..4f454e6 100644
--- a/lib/libpacman/util/fstringlist.cpp
+++ b/lib/libpacman/util/fstringlist.cpp
@@ -80,17 +80,6 @@ FStringList *f_stringlist_add(FStringList *self, const char 
*s)
return &self->add(s);
}

-FStringList *f_stringlist_add_stringlist(FStringList *self, const FStringList 
*src)
-{
-   if(src == NULL || src->empty()) {
-   return self;
-   }
-   if(self == NULL) {
-   self = new FStringList();
-   }
-   return &self->add(*src);
-}
-
FStringList *f_stringlist_addf(FStringList *self, const char *fmt, ...)
{
va_list ap;
diff --git a/lib/libpacman/util/fstringlist.h b/lib/libpacman/util/fstringlist.h
index f8246e0..f479829 100644
--- a/lib/libpacman/util/fstringlist.h
+++ b/lib/libpacman/util/fstringlist.h
@@ -41,7 +41,6 @@ FStringList *_pacman_list_remove_dupes(FStringList *list);
int f_stringlist_delete(FStringList *self);

FStringList *f_stringlist_add(FStringList *list, const char *s);
-FStringList *f_stringlist_add_stringlist(FStringList *dest, const FStringList 
*src);
FStringList *f_stringlist_addf(FStringList *self, const char *s, ...);
FStringList *f_stringlist_vaddf(FStringList *self, const char *s, va_list ap);
int f_stringlist_clear(FStringList *self);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Fix cut&paste typo.

2014-10-17 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=aced64645c6961a8fc081d4fa669498f0322fa46

commit aced64645c6961a8fc081d4fa669498f0322fa46
Author: Michel Hermier 
Date:   Fri Oct 17 16:38:11 2014 +0200

libpacman: Fix cut&paste typo.

diff --git a/src/pacman-g2/util.c b/src/pacman-g2/util.c
index c2fe231..2f05e91 100644
--- a/src/pacman-g2/util.c
+++ b/src/pacman-g2/util.c
@@ -93,7 +93,7 @@ char *buildstring(FStringList *strlist)
char *str;
int size = 1;

-   for(FPtrListIterator *lp = f_ptrlist_first(strlist), *end = 
f_ptrlist_first(strlist); lp != end; lp = f_ptrlistitem_next(lp)) {
+   for(FPtrListIterator *lp = f_ptrlist_first(strlist), *end = 
f_ptrlist_end(strlist); lp != end; lp = f_ptrlistitem_next(lp)) {
size += strlen(list_data(lp)) + 1;
}
str = (char *)malloc(size);
@@ -101,7 +101,7 @@ char *buildstring(FStringList *strlist)
ERR(NL, _("failed to allocated %d bytes\n"), size);
}
str[0] = '\0';
-   for(FPtrListIterator *lp = f_ptrlist_first(strlist), *end = 
f_ptrlist_first(strlist); lp != end; lp = f_ptrlistitem_next(lp)) {
+   for(FPtrListIterator *lp = f_ptrlist_first(strlist), *end = 
f_ptrlist_end(strlist); lp != end; lp = f_ptrlistitem_next(lp)) {
strcat(str, list_data(lp));
strcat(str, " ");
}
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: pacman-g2: Fix output when searching a package.

2014-10-17 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=e3b1097f1e1128c85291d5834e0d6d2bf0bac564

commit e3b1097f1e1128c85291d5834e0d6d2bf0bac564
Author: Michel Hermier 
Date:   Fri Oct 17 16:18:52 2014 +0200

pacman-g2: Fix output when searching a package.

diff --git a/src/pacman-g2/sync.c b/src/pacman-g2/sync.c
index 5ed96c0..c3babd2 100644
--- a/src/pacman-g2/sync.c
+++ b/src/pacman-g2/sync.c
@@ -98,7 +98,7 @@ static int sync_search(FStringList *targets)

printf("%s/%s %s-%s ",
(char *)pacman_db_getinfo(db, PM_DB_TREENAME),
-   (char 
*)pacman_list_getdata(pacman_pkg_getinfo(pkg,PM_PKG_GROUPS)),
+   (char 
*)pacman_list_getdata(pacman_list_begin(pacman_pkg_getinfo(pkg,PM_PKG_GROUPS))),
(char *)pacman_pkg_getinfo(pkg, PM_PKG_NAME),
(char *)pacman_pkg_getinfo(pkg, PM_PKG_VERSION));
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Drop unused f_stringlist_vaddf.

2014-10-17 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=331c455df41e1fcea5c2dd29a7ea21a96a1ebff5

commit 331c455df41e1fcea5c2dd29a7ea21a96a1ebff5
Author: Michel Hermier 
Date:   Fri Oct 17 16:13:42 2014 +0200

libpacman: Drop unused f_stringlist_vaddf.

diff --git a/lib/libpacman/util/fstringlist.cpp 
b/lib/libpacman/util/fstringlist.cpp
index 4f454e6..f9d2530 100644
--- a/lib/libpacman/util/fstringlist.cpp
+++ b/lib/libpacman/util/fstringlist.cpp
@@ -84,18 +84,14 @@ FStringList *f_stringlist_addf(FStringList *self, const 
char *fmt, ...)
{
va_list ap;

-   va_start(ap, fmt);
-   self = f_stringlist_vaddf(self, fmt, ap);
-   va_end(ap);
-   return self;
-}
-
-FStringList *f_stringlist_vaddf(FStringList *self, const char *fmt, va_list ap)
-{
if(self == NULL) {
self = new FStringList();
}
-   return &self->vaddf(fmt, ap);
+
+   va_start(ap, fmt);
+   self->vaddf(fmt, ap);
+   va_end(ap);
+   return self;
}

int f_stringlist_clear(FStringList *self)
diff --git a/lib/libpacman/util/fstringlist.h b/lib/libpacman/util/fstringlist.h
index f479829..c241efa 100644
--- a/lib/libpacman/util/fstringlist.h
+++ b/lib/libpacman/util/fstringlist.h
@@ -42,7 +42,6 @@ int f_stringlist_delete(FStringList *self);

FStringList *f_stringlist_add(FStringList *list, const char *s);
FStringList *f_stringlist_addf(FStringList *self, const char *s, ...);
-FStringList *f_stringlist_vaddf(FStringList *self, const char *s, va_list ap);
int f_stringlist_clear(FStringList *self);

#ifdef __cplusplus
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add flib::refcounted_ptr.

2014-10-17 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=77c00a5b5f279dd4f911450b080f225ae88158d0

commit 77c00a5b5f279dd4f911450b080f225ae88158d0
Author: Michel Hermier 
Date:   Fri Oct 17 11:26:09 2014 +0200

libpacman: Add flib::refcounted_ptr.

diff --git a/lib/libpacman/kernel/frefcounted.h 
b/lib/libpacman/kernel/frefcounted.h
index 51c26fc..64f95ba 100644
--- a/lib/libpacman/kernel/frefcounted.h
+++ b/lib/libpacman/kernel/frefcounted.h
@@ -23,9 +23,10 @@

#include "kernel/fsignal.h"

+#include 
+
namespace flib
{
-
class refcounted
{
public:
@@ -62,6 +63,80 @@ namespace flib

mutable unsigned m_reference_counter;
};
+
+   template 
+   class refcounted_ptr
+   {
+   public:
+   typedef T element_type;
+
+   constexpr refcounted_ptr()
+   : m_refcounted_ptr(nullptr)
+   { }
+
+   template 
+   explicit refcounted_ptr(Y *ptr)
+   : m_refcounted_ptr(ptr)
+   {
+   if(m_refcounted_ptr != nullptr) {
+   m_refcounted_ptr->acquire();
+   }
+   }
+
+   ~refcounted_ptr()
+   {
+   if(m_refcounted_ptr != nullptr) {
+   m_refcounted_ptr->release();
+   }
+   }
+
+   /* Manipulators */
+   void reset()
+   {
+   reset(*this, nullptr);
+   }
+
+   template 
+   void reset(Y *ptr)
+   {
+   swap(*this, refcounted_ptr(ptr));
+   }
+
+   void swap(refcounted_ptr &o)
+   {
+   std::swap(m_refcounted_ptr, o.m_refcounted_ptr);
+   }
+
+   /* Accessors */
+   T *get() const
+   {
+   return m_refcounted_ptr;
+   }
+
+   T &operator * () const
+   {
+   return *operator -> ();
+   }
+
+   T *operator -> () const
+   {
+   assert(*this);
+   return get();
+   }
+
+   operator T * () const
+   {
+   return get();
+   }
+
+   operator bool () const
+   {
+   return m_refcounted_ptr != nullptr;
+   }
+
+   private:
+   T *m_refcounted_ptr;
+   };
}

#endif /* FREFCOUNTED_H */
diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h
index 8c24f35..5aecd25 100644
--- a/lib/libpacman/package.h
+++ b/lib/libpacman/package.h
@@ -206,6 +206,7 @@ private:
};

class package_node
+   : public flib::refcounted
{
public:
package_node(const char *name);
@@ -225,7 +226,7 @@ private:
};

class package_graph
-   : flib::set
+   : flib::set, 
package_node_less>
{
public:
using set::set;
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Simplify Database::remove_pkgfromcache removal code.

2014-10-17 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=608f646525985ad9f8be86ed7178024cec1c25a0

commit 608f646525985ad9f8be86ed7178024cec1c25a0
Author: Michel Hermier 
Date:   Wed Oct 8 12:34:55 2014 +0200

libpacman: Simplify Database::remove_pkgfromcache removal code.

diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp
index a88c49d..1c7cb94 100644
--- a/lib/libpacman/database_cache.cpp
+++ b/lib/libpacman/database_cache.cpp
@@ -116,19 +116,17 @@ int Database::add_pkgincache(Package *pkg)

int Database::remove_pkgfromcache(Package *pkg)
{
-   Package *data;
-
if(pkg == NULL) {
return(-1);
}

-   if(!pkgcache.remove(pkg, f_ptrcmp, &data)) {
+   if(!pkgcache.remove(pkg)) {
/* package not found */
return(-1);
}

_pacman_log(PM_LOG_DEBUG, _("removing entry '%s' from '%s' cache"), 
pkg->name(), treename());
-   data->release(); // FIXME: Should not be necessary, but required during 
migration to refcounted object
+   pkg->release(); // FIXME: Should not be necessary, but required during 
migration to refcounted object

_pacman_db_clear_grpcache(this);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Extract refcounting aspect to a separated class of flib::object.

2014-10-17 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=2e23be8f599da26724b108d3f08290876e85e552

commit 2e23be8f599da26724b108d3f08290876e85e552
Author: Michel Hermier 
Date:   Thu Oct 16 14:20:52 2014 +0200

libpacman: Extract refcounting aspect to a separated class of flib::object.

diff --git a/lib/libpacman/CMakeLists.txt b/lib/libpacman/CMakeLists.txt
index caac641..c196048 100644
--- a/lib/libpacman/CMakeLists.txt
+++ b/lib/libpacman/CMakeLists.txt
@@ -7,6 +7,8 @@ CONFIGURE_FILE("pacman.pc.in" "pacman.pc" @ONLY)
set(FLIB_SOURCES
kernel/fobject.cpp
kernel/fobject.h
+   kernel/frefcounted.cpp
+   kernel/frefcounted.h
kernel/fsignal.h
kernel/fstr.cpp
kernel/fstr.h
diff --git a/lib/libpacman/kernel/fobject.cpp b/lib/libpacman/kernel/fobject.cpp
index a23ad7f..108afd3 100644
--- a/lib/libpacman/kernel/fobject.cpp
+++ b/lib/libpacman/kernel/fobject.cpp
@@ -1,5 +1,5 @@
/*
- *  object.c
+ *  fobject.c
*
*  Copyright (c) 2014 by Michel Hermier 
*
@@ -40,25 +40,10 @@ void *FObject::operator new(std::size_t size)
}

FObject::FObject()
-   : m_reference_counter(1)
{ }

FObject::~FObject()
-{
-}
-
-void FObject::acquire() const
-{
-   ++m_reference_counter;
-}
-
-void FObject::release() const
-{
-   if(--m_reference_counter == 0) {
-   aboutToDestroy(const_cast(this));
-   delete this;
-   }
-}
+{ }

int FObject::get(unsigned val, unsigned long *data) const
{
diff --git a/lib/libpacman/kernel/fobject.h b/lib/libpacman/kernel/fobject.h
index 2cef01b..d2f19e0 100644
--- a/lib/libpacman/kernel/fobject.h
+++ b/lib/libpacman/kernel/fobject.h
@@ -1,5 +1,5 @@
/*
- *  object.h
+ *  fobject.h
*
*  Copyright (c) 2014 by Michel Hermier 
*
@@ -21,7 +21,7 @@
#ifndef FOBJECT_H
#define FOBJECT_H

-#include "kernel/fsignal.h"
+#include "kernel/frefcounted.h"

#include 

@@ -29,34 +29,20 @@ namespace flib
{

class FObject
+   : public flib::refcounted
{
public:
void operator delete(void *ptr);
void *operator new(std::size_t size);

public:
-   flib::FSignal aboutToDestroy;
-
-public:
FObject();
protected:
virtual ~FObject();

public:
-   void acquire() const;
-   void release() const;
-
virtual int get(unsigned val, unsigned long *data) const;
virtual int set(unsigned val, unsigned long data);
-
-private:
-   void operator delete[](void *ptr);
-   void *operator new[](std::size_t size);
-
-   FObject(const flib::FObject &other);
-   flib::FObject &operator =(const flib::FObject &other);
-
-   mutable unsigned m_reference_counter;
};

static inline void fAcquire(flib::FObject *object)
diff --git a/lib/libpacman/kernel/frefcounted.cpp 
b/lib/libpacman/kernel/frefcounted.cpp
new file mode 100644
index 000..6789ef5
--- /dev/null
+++ b/lib/libpacman/kernel/frefcounted.cpp
@@ -0,0 +1,53 @@
+/*
+ *  frefcounted.c
+ *
+ *  Copyright (c) 2014 by Michel Hermier 
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ *  USA.
+ */
+
+#include "config.h"
+
+#include "kernel/frefcounted.h"
+
+#include "util.h"
+
+#include 
+
+using namespace flib;
+
+refcounted::refcounted()
+   : m_reference_counter(1)
+{ }
+
+refcounted::~refcounted()
+{
+}
+
+void refcounted::acquire() const
+{
+   ++m_reference_counter;
+}
+
+void refcounted::release() const
+{
+   if(--m_reference_counter == 0) {
+   aboutToDestroy(const_cast(this));
+   delete this;
+   }
+}
+
+/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/kernel/frefcounted.h 
b/lib/libpacman/kernel/frefcounted.h
new file mode 100644
index 000..9e32621
--- /dev/null
+++ b/lib/libpacman/kernel/frefcounted.h
@@ -0,0 +1,70 @@
+/*
+ *  frefcounted.h
+ *
+ *  Copyright (c) 2014 by Michel Hermier 
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Pu

[Frugalware-git] pacman-g2: libpacman: Remove now unused code.

2014-10-17 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=ed49029539c11b42f8eb60986e20d75a2205d9f4

commit ed49029539c11b42f8eb60986e20d75a2205d9f4
Author: Michel Hermier 
Date:   Wed Oct 8 12:37:36 2014 +0200

libpacman: Remove now unused code.

diff --git a/lib/libpacman/fmath.h b/lib/libpacman/fmath.h
deleted file mode 100644
index 30305a3..000
--- a/lib/libpacman/fmath.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- *  fmath.h
- *
- *  Copyright (c) 2013 by Michel Hermier 
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- *  USA.
- */
-#ifndef _F_MATH_H
-#define _F_MATH_H
-
-#include 
-
-#define __f_intcmp(v, z) ((v) == (z) ? 0 : (v) < (z) ? -1 : 1)
-
-static inline
-int f_signp(intptr_t p)
-{
-   return __f_intcmp(p, 0);
-}
-
-#endif /* _F_MATH_H */
-
-/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/fstdlib.h b/lib/libpacman/fstdlib.h
index e9c2156..7d3df62 100644
--- a/lib/libpacman/fstdlib.h
+++ b/lib/libpacman/fstdlib.h
@@ -25,7 +25,6 @@
#include 

#include "util/log.h"
-#include "fmath.h"
#include "util.h"

static inline
@@ -48,18 +47,6 @@ void *f_zalloc(size_t size)
return ptr;
}

-static inline
-intptr_t f_diffptr(const void *ptr1, const void *ptr2)
-{
-   return (intptr_t)ptr1 - (intptr_t)ptr2;
-}
-
-static inline
-int f_ptrcmp(const void *ptr1, const void *ptr2)
-{
-   return f_signp(f_diffptr(ptr1, ptr2));
-}
-
#define F_PATH_NOCHECK  (1<<0)
#define F_PATH_RELATIVE (1<<1)
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Fix typo.

2014-10-17 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=8331b445a67605ba23664c9a7317f8e9f8815cb1

commit 8331b445a67605ba23664c9a7317f8e9f8815cb1
Author: Michel Hermier 
Date:   Fri Oct 17 11:32:32 2014 +0200

libpacman: Fix typo.

diff --git a/lib/libpacman/handle.cpp b/lib/libpacman/handle.cpp
index b00e20b..bd52f31 100644
--- a/lib/libpacman/handle.cpp
+++ b/lib/libpacman/handle.cpp
@@ -114,7 +114,7 @@ int Handle::lock()
char lckpath[PATH_MAX];

snprintf(lckpath, PATH_MAX, "%s/%s", root, PM_LOCK);
-   return (filelock = f_filelock_aquire(lckpath, 
F_FILELOCK_CREATE_HOLD_DIR | F_FILELOCK_EXCLUSIVE | 
F_FILELOCK_UNLINK_ON_CLOSE)) != NULL ? 0: -1;
+   return (filelock = f_filelock_acquire(lckpath, 
F_FILELOCK_CREATE_HOLD_DIR | F_FILELOCK_EXCLUSIVE | 
F_FILELOCK_UNLINK_ON_CLOSE)) != NULL ? 0: -1;
}

int Handle::unlock()
diff --git a/lib/libpacman/io/ffilelock.c b/lib/libpacman/io/ffilelock.c
index 79809c8..d6a5db8 100644
--- a/lib/libpacman/io/ffilelock.c
+++ b/lib/libpacman/io/ffilelock.c
@@ -39,7 +39,7 @@ struct FFileLock {
char pathname[PATH_MAX];
};

-FFileLock *f_filelock_aquire(const char *pathname, int flags)
+FFileLock *f_filelock_acquire(const char *pathname, int flags)
{
FFileLock *filelock;

diff --git a/lib/libpacman/io/ffilelock.h b/lib/libpacman/io/ffilelock.h
index 557c3c9..8253e74 100644
--- a/lib/libpacman/io/ffilelock.h
+++ b/lib/libpacman/io/ffilelock.h
@@ -31,7 +31,7 @@ typedef struct FFileLock FFileLock;
#define F_FILELOCK_EXCLUSIVE   (1<<1)
#define F_FILELOCK_UNLINK_ON_CLOSE (1<<2)

-FFileLock *f_filelock_aquire(const char *pathname, int flags);
+FFileLock *f_filelock_acquire(const char *pathname, int flags);
int f_filelock_release(FFileLock *filelock);

#ifdef __cplusplus
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add a basic graphing class (still unused) to store relations with package names with the *providers* of the said names.

2014-10-17 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=004d9639e75bfce9ba5f8afb6a8a5b5bb6a57c4a

commit 004d9639e75bfce9ba5f8afb6a8a5b5bb6a57c4a
Author: Michel Hermier 
Date:   Thu Oct 16 10:37:38 2014 +0200

libpacman: Add a basic graphing class (still unused) to store relations with 
package names with the *providers* of the said names.

diff --git a/lib/libpacman/handle.h b/lib/libpacman/handle.h
index 3e12e61..ed504fd 100644
--- a/lib/libpacman/handle.h
+++ b/lib/libpacman/handle.h
@@ -28,6 +28,7 @@
#include "pacman.h"

#include "io/ffilelock.h"
+#include "package.h"
#include "trans.h"

#include "kernel/fobject.h"
@@ -93,6 +94,8 @@ public:
int *dlremain;
int *dlhowmany;
int sysupgrade;
+
+   libpacman::package_graph m_package_graph;
};

}
diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp
index 77c812d..58661ec 100644
--- a/lib/libpacman/package.cpp
+++ b/lib/libpacman/package.cpp
@@ -404,4 +404,34 @@ bool PackageMatcher::match(const Package *package, int 
mask = ~0) const
return _pacman_strmatcher_match(m_strmatcher, package, m_flags & mask);
}

+package_node::package_node(const char *name)
+   : m_name(strdup(name))
+{ }
+
+package_node::package_node(package_node &&o)
+ : m_name(o.m_name), m_packages(std::move(o.m_packages))
+{
+   o.m_name = NULL;
+}
+
+package_node::~package_node()
+{
+   free(m_name);
+}
+
+bool package_node::operator < (const package_node &o) const
+{
+   return strcmp(m_name, o.m_name) < 0;
+}
+
+const char *package_node::name() const
+{
+   return m_name;
+}
+
+bool package_node_less::operator () (const package_node *p1, const 
package_node *p2)
+{
+   return strcmp(p1->name(), p2->name()) < 0;
+}
+
/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h
index 29e492f..01e2c8d 100644
--- a/lib/libpacman/package.h
+++ b/lib/libpacman/package.h
@@ -34,12 +34,14 @@
#include "kernel/fobject.h"
#include "kernel/fstr.h"
#include "util/fset.h"
+#include "util/fstringlist.h"

typedef struct __pmdepend_t pmdepend_t;

namespace libpacman {

class Database;
+   class package_node;

}

@@ -140,6 +142,7 @@ public:
libpacman::Database *m_database;

unsigned int flags;
+   package_node *m_node;
char m_name[PKG_NAME_LEN];
char m_version[PKG_VERSION_LEN];
char m_description[PKG_DESC_LEN];
@@ -201,6 +204,32 @@ private:
FStrMatcher m_strmatcher_internal;
};

+   class package_node
+   {
+   public:
+   package_node(const char *name);
+   package_node(package_node &&o);
+   ~package_node();
+   bool operator < (const package_node &o) const;
+
+   const char *name() const;
+
+   private:
+   char *m_name/*[PKG_NAME_LEN]*/;
+   flib::set m_packages;
+   };
+
+   struct package_node_less
+   {
+   bool operator () (const package_node *p1, const package_node 
*p2);
+   };
+
+   class package_graph
+   : flib::set
+   {
+   public:
+   using set::set;
+   };
} // namespace libpacman

int _pacman_pkg_delete(libpacman::Package *self);
diff --git a/lib/libpacman/packages_transaction.cpp 
b/lib/libpacman/packages_transaction.cpp
index 1c9bcb8..b0f220f 100644
--- a/lib/libpacman/packages_transaction.cpp
+++ b/lib/libpacman/packages_transaction.cpp
@@ -25,6 +25,8 @@

#include "packages_transaction.h"

+#include "handle.h"
+
#include "util.h"

#include "fstring.h"
diff --git a/lib/libpacman/trans.h b/lib/libpacman/trans.h
index 0088f51..3a90fb0 100644
--- a/lib/libpacman/trans.h
+++ b/lib/libpacman/trans.h
@@ -26,8 +26,6 @@

typedef struct __pmtrans_t pmtrans_t;

-#include "handle.h"
-
#include "kernel/fobject.h"
#include "util/fstringlist.h"

diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h
index edaab92..608fffb 100644
--- a/lib/libpacman/util/flist.h
+++ b/lib/libpacman/util/flist.h
@@ -41,29 +41,6 @@ namespace flib
struct uncompared
{ };

-   template 
-   struct mapped_traits
-   {
-   typedef T mapped_type;
-   typedef T key_type;
-   typedef T value_type;
-
-   static const key_type &key_of(const mapped_type &o)
-   {
-   return o;
-   }
-
-   static value_type &value_of(mapped_type &o)
-   {
-   return o;
-   }
-
-   static const value_type &value_of(const mapped_type &o)
-   {
-   return o;
-   }
-   };
-
template 
struct iterable_traits
{
@@ -658,7 +635,7 @@ namespace flib {
};
}

-template >
+template 
class FList
: protected FCListItem
{

[Frugalware-git] pacman-g2: libpacman: Move events firing for dependency resolution to trans_t::resolvedeps method.

2014-10-17 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=13fb50900d9bb2b909924000b16e60cdfded8d24

commit 13fb50900d9bb2b909924000b16e60cdfded8d24
Author: Michel Hermier 
Date:   Fri Oct 17 08:57:48 2014 +0200

libpacman: Move events firing for dependency resolution to trans_t::resolvedeps 
method.

diff --git a/lib/libpacman/deps.cpp b/lib/libpacman/deps.cpp
index d19ea11..d86d3f1 100644
--- a/lib/libpacman/deps.cpp
+++ b/lib/libpacman/deps.cpp
@@ -436,6 +436,13 @@ int pmtrans_t::resolvedeps(FPtrList **data)
return(-1);
}

+   if(flags & PM_TRANS_FLAG_NODEPS) {
+   return 0;
+   }
+
+   EVENT(this, PM_TRANS_EVT_RESOLVEDEPS_START, NULL, NULL);
+   _pacman_log(PM_LOG_FLOW1, _("resolving targets dependencies"));
+
bool again;
do {
again = false;
@@ -528,6 +535,8 @@ int pmtrans_t::resolvedeps(FPtrList **data)
}
}
} while (again);
+
+   EVENT(this, PM_TRANS_EVT_RESOLVEDEPS_DONE, NULL, NULL);
return 0;

error:
diff --git a/lib/libpacman/trans.cpp b/lib/libpacman/trans.cpp
index 9e3dae1..a3fab40 100644
--- a/lib/libpacman/trans.cpp
+++ b/lib/libpacman/trans.cpp
@@ -479,8 +479,6 @@ int __pmtrans_t::prepare(FPtrList **data)

if(!(flags & PM_TRANS_FLAG_NODEPS)) {
/* Resolve targets dependencies */
-   EVENT(this, PM_TRANS_EVT_RESOLVEDEPS_START, NULL, NULL);
-   _pacman_log(PM_LOG_FLOW1, _("resolving targets dependencies"));
if(resolvedeps(data) == -1) {
/* pm_errno is set by resolvedeps */
ret = -1;
@@ -502,8 +500,6 @@ int __pmtrans_t::prepare(FPtrList **data)
/* re-order w.r.t. dependencies */
sortbydeps();

-   EVENT(this, PM_TRANS_EVT_RESOLVEDEPS_DONE, NULL, NULL);
-
_pacman_log(PM_LOG_FLOW1, _("looking for unresolvable dependencies"));
deps = checkdeps(PM_TRANS_TYPE_UPGRADE);
if(!deps.empty()) {
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Make fset a little bit more correct using 'using' keyword.

2014-10-17 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=9edeadc88812ed3aa3ada3a77139a9f1da002068

commit 9edeadc88812ed3aa3ada3a77139a9f1da002068
Author: Michel Hermier 
Date:   Wed Oct 15 09:30:25 2014 +0200

libpacman: Make fset a little bit more correct using 'using' keyword.

diff --git a/lib/libpacman/util/fset.h b/lib/libpacman/util/fset.h
index 59a9c3e..9452143 100644
--- a/lib/libpacman/util/fset.h
+++ b/lib/libpacman/util/fset.h
@@ -33,29 +33,31 @@ namespace flib
: public FList
{
public:
-   typedef FList super_type;
+   using typename FList::iterable;
+   using typename FList::iterator;
+   using typename FList::value_type;

using FList::FList;

-   typename super_type::iterator add(const typename 
super_type::value_type &data)
+   iterator add(const value_type &data)
{
-   typename super_type::iterator end = this->end();
+   iterator end = this->end();
/* Find insertion point. */
-   typename super_type::iterator next = 
find_insertion_point(data);
+   iterator next = find_insertion_point(data);

// ensure we don't have an egality
if(next == end || m_less(data, *next)) {
-   typename super_type::iterable add = new 
FListItem(data);
+   iterable add = new FListItem(data);
add->insert_after(next.previous());
-   return typename super_type::iterator(add);
+   return iterator(add);
}
return end;
}

-   typename super_type::iterator find(const typename 
super_type::value_type &data)
+   iterator find(const value_type &data)
{
-   typename super_type::iterator end = this->end();
-   typename super_type::iterator it = 
find_insertion_point(data);
+   iterator end = this->end();
+   iterator it = find_insertion_point(data);

// ensure we have an egality
if(it == end || !m_less(data, *it)) {
@@ -66,7 +68,7 @@ namespace flib

private:
/* Return the first iterator where value does not satisfy Compare */
-   typename super_type::iterator find_insertion_point(const 
typename super_type::value_type &data)
+   iterator find_insertion_point(const value_type &data)
{
return FList::find_if_not([&] (const T &o) -> bool { return m_less(o, data); 
});
}
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: More package/package_node initialisation rework.

2014-10-17 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=67d1992f2d0cea2350e2e4e9f9a810e335c33d64

commit 67d1992f2d0cea2350e2e4e9f9a810e335c33d64
Author: Michel Hermier 
Date:   Fri Oct 17 08:56:22 2014 +0200

libpacman: More package/package_node initialisation rework.

diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp
index 38bc458..8e42895 100644
--- a/lib/libpacman/package.cpp
+++ b/lib/libpacman/package.cpp
@@ -48,13 +48,19 @@

using namespace libpacman;

-Package::Package(Database *database)
-   : m_database(database), m_reason(PM_PKG_REASON_EXPLICIT)
+Package::Package(Database *database = 0)
+   : m_database(database)
+   , m_reason(PM_PKG_REASON_EXPLICIT)
+{ }
+
+Package::Package(package_node *package_node)
+   : Package()
{
+   m_package_node = package_node;
}

Package::Package(const char *name, const char *version)
-   : m_reason(PM_PKG_REASON_EXPLICIT)
+   : Package()
{
if(!_pacman_strempty(name)) {
flags |= PM_PACKAGE_FLAG_NAME;
@@ -399,19 +405,12 @@ bool PackageMatcher::match(const Package *package, int 
mask = ~0) const
}

package_node::package_node(const char *name)
-   : m_name(strdup(name))
-{ }
-
-package_node::package_node(package_node &&o)
- : m_name(o.m_name), m_packages(std::move(o.m_packages))
{
-   o.m_name = NULL;
+   STRNCPY(m_name, name, PKG_NAME_LEN);
}

package_node::~package_node()
-{
-   free(m_name);
-}
+{ }

bool package_node::operator < (const package_node &o) const
{
diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h
index a68a6e7..8c24f35 100644
--- a/lib/libpacman/package.h
+++ b/lib/libpacman/package.h
@@ -105,6 +105,7 @@ public: 
   \

public:
Package(libpacman::Database *database = 0);
+   Package(libpacman::package_node *package_node);
Package(const char *name, const char *version);
protected:
virtual ~Package();
@@ -142,7 +143,7 @@ public:
libpacman::Database *m_database;

unsigned int flags;
-   package_node *m_node;
+   package_node *m_package_node;
char m_name[PKG_NAME_LEN];
char m_version[PKG_VERSION_LEN];
char m_description[PKG_DESC_LEN];
@@ -208,14 +209,13 @@ private:
{
public:
package_node(const char *name);
-   package_node(package_node &&o);
~package_node();
bool operator < (const package_node &o) const;

const char *name() const;

private:
-   char *m_name/*[PKG_NAME_LEN]*/;
+   char m_name[PKG_NAME_LEN];
flib::set m_packages;
};
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Move acquire/release static version of refcounting helper inside of the class (to avoid namespace polution).

2014-10-17 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=9b6e8fd01aff0f8c33ad12019c01828069b29bfe

commit 9b6e8fd01aff0f8c33ad12019c01828069b29bfe
Author: Michel Hermier 
Date:   Fri Oct 17 09:04:13 2014 +0200

libpacman: Move acquire/release static version of refcounting helper inside of 
the class (to avoid namespace polution).

diff --git a/lib/libpacman/kernel/frefcounted.h 
b/lib/libpacman/kernel/frefcounted.h
index 9e32621..51c26fc 100644
--- a/lib/libpacman/kernel/frefcounted.h
+++ b/lib/libpacman/kernel/frefcounted.h
@@ -38,7 +38,20 @@ namespace flib

public:
void acquire() const;
+   static inline void acquire(flib::refcounted *refcounted)
+   {
+   if(refcounted != nullptr) {
+   refcounted->acquire();
+   }
+   }
+
void release() const;
+   static inline void release(flib::refcounted *refcounted)
+   {
+   if(refcounted != nullptr) {
+   refcounted->release();
+   }
+   }

private:
void operator delete[](void *ptr);
@@ -49,20 +62,6 @@ namespace flib

mutable unsigned m_reference_counter;
};
-
-   static inline void acquire(flib::refcounted *refcounted)
-   {
-   if(refcounted != nullptr) {
-   refcounted->acquire();
-   }
-   }
-
-   static inline void release(flib::refcounted *refcounted)
-   {
-   if(refcounted != nullptr) {
-   refcounted->release();
-   }
-   }
}

#endif /* FREFCOUNTED_H */
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Drop _pacman_pkg_delete.

2014-10-17 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=613c43183e5678ac921a186c9da21ce92871f47e

commit 613c43183e5678ac921a186c9da21ce92871f47e
Author: Michel Hermier 
Date:   Thu Oct 16 14:03:59 2014 +0200

libpacman: Drop _pacman_pkg_delete.

diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp
index 1c7cb94..5983b53 100644
--- a/lib/libpacman/database_cache.cpp
+++ b/lib/libpacman/database_cache.cpp
@@ -86,7 +86,7 @@ void Database::free_pkgcache()
_pacman_log(PM_LOG_DEBUG, _("freeing package cache for repository '%s'"),
treename());

-   pkgcache.clear(/*_pacman_pkg_delete*/);
+   pkgcache.clear(flib::fRelease);

_pacman_db_clear_grpcache(this);
}
diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp
index 58661ec..38bc458 100644
--- a/lib/libpacman/package.cpp
+++ b/lib/libpacman/package.cpp
@@ -85,12 +85,6 @@ bool Package::set_filename(const char *filename, int 
witharch)
return false;
}

-int _pacman_pkg_delete(Package *self)
-{
-   self->release();
-   return 0;
-}
-
/* Helper function for comparing packages
*/
int _pacman_pkg_cmp(const Package *p1, const Package *p2)
diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h
index 01e2c8d..a68a6e7 100644
--- a/lib/libpacman/package.h
+++ b/lib/libpacman/package.h
@@ -232,8 +232,6 @@ private:
};
} // namespace libpacman

-int _pacman_pkg_delete(libpacman::Package *self);
-
int _pacman_pkg_cmp(const libpacman::Package *p1, const libpacman::Package *p2);
const libpacman::Package *_pacman_pkg_isin(const char *needle, const 
FList &haystack);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Make _pacman_db_get_grpfromcache a method of Database (as find_group).

2014-10-08 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=d89141fad4729ec5ba2f6a677ecb4f2e92aef96f

commit d89141fad4729ec5ba2f6a677ecb4f2e92aef96f
Author: Michel Hermier 
Date:   Wed Oct 8 10:03:56 2014 +0200

libpacman: Make _pacman_db_get_grpfromcache a method of Database (as 
find_group).

diff --git a/lib/libpacman/cache.h b/lib/libpacman/cache.h
index 71c5a74..295244f 100644
--- a/lib/libpacman/cache.h
+++ b/lib/libpacman/cache.h
@@ -25,9 +25,6 @@
#include "group.h"
#include "db.h"

-/* groups */
-libpacman::Group *_pacman_db_get_grpfromcache(libpacman::Database *db, const 
char *target);
-
#endif /* _PACMAN_CACHE_H */

/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp
index 35f7b5b..c799c55 100644
--- a/lib/libpacman/database_cache.cpp
+++ b/lib/libpacman/database_cache.cpp
@@ -207,11 +207,9 @@ libpacman::group_set &Database::get_groups()
return grpcache;
}

-Group *_pacman_db_get_grpfromcache(Database *db, const char *target)
+Group *Database::find_group(const char *target)
{
-   ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, NULL));
-
-   return _pacman_db_get_grpfromlist(db->get_groups(), target);
+   return _pacman_db_get_grpfromlist(get_groups(), target);
}

/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h
index a786f70..a7cfc12 100644
--- a/lib/libpacman/db.h
+++ b/lib/libpacman/db.h
@@ -84,6 +84,7 @@ public:
libpacman::Package *find(const char *target,
int packagestrmatcher_flags = PM_PACKAGE_FLAG_NAME,
int strmatcher_flags = FStrMatcher::EQUAL);
+   libpacman::Group *find_group(const char *target);
libpacman::package_set &get_packages();
libpacman::group_set &get_groups();
FList whatPackagesProvide(const char *target);
diff --git a/lib/libpacman/pacman.cpp b/lib/libpacman/pacman.cpp
index db73799..eaa9adb 100644
--- a/lib/libpacman/pacman.cpp
+++ b/lib/libpacman/pacman.cpp
@@ -598,7 +598,7 @@ pmgrp_t *pacman_db_readgrp(pmdb_t *_db, char *name)
ASSERT(db != NULL, return(NULL));
ASSERT(!_pacman_strempty(name), return(NULL));

-   return c_cast(_pacman_db_get_grpfromcache(db, name));
+   return c_cast(db->find_group(name));
}

/** Get the group cache of a package database
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add iterable_traits.

2014-10-08 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=143d3c8a00e66e574c9262d03ee11eb16c213cc7

commit 143d3c8a00e66e574c9262d03ee11eb16c213cc7
Author: Michel Hermier 
Date:   Thu Oct 2 07:51:18 2014 +0200

libpacman: Add iterable_traits.

diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h
index 3741f46..1b1062a 100644
--- a/lib/libpacman/util/flist.h
+++ b/lib/libpacman/util/flist.h
@@ -26,6 +26,8 @@

#include "util.h"

+#include 
+
/* Sort comparison callback function declaration */
typedef int (*_pacman_fn_cmp)(const void *, const void *);

@@ -43,7 +45,7 @@ namespace flib
struct iterable_traits
{
typedef Iterable iterable;
-// typedef typename iterable::difference_type difference_type;
+   typedef typename iterable::difference_type difference_type;
typedef typename iterable::pointer pointer;
typedef typename iterable::reference reference;
typedef typename iterable::size_type size_type;
@@ -79,11 +81,47 @@ namespace flib
struct iterable_traits
{
typedef Iterable *iterable;
-// typedef typename Iterable::difference_type difference_type;
-   typedef typename Iterable::pointer pointer;
-   typedef typename Iterable::reference reference;
-   typedef typename Iterable::size_type size_type;
-   typedef typename Iterable::value_type value_type;
+   typedef ptrdiff_t difference_type;
+   typedef Iterable *pointer;
+   typedef Iterable &reference;
+   typedef size_t size_type;
+   typedef Iterable value_type;
+
+   static iterable next(const iterable &i)
+   {
+   return i->next();
+   }
+
+   static iterable previous(const iterable &i)
+   {
+   return i->previous();
+   }
+
+   static reference reference_of(iterable i)
+   {
+   return i->operator * ();
+   }
+
+   static pointer pointer_of(iterable i)
+   {
+   return i->operator -> ();
+   }
+
+   static value_type value_of(const iterable i)
+   {
+   return i->operator * ();
+   }
+   };
+
+   template 
+   struct iterable_traits
+   {
+   typedef Iterable *iterable;
+   typedef ptrdiff_t difference_type;
+   typedef const Iterable *pointer;
+   typedef const Iterable &reference;
+   typedef size_t size_type;
+   typedef Iterable value_type;

static iterable next(const iterable &i)
{
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Make _pacman_db_free_pkgcache an method of Database.

2014-10-08 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=3e29b90a270109a5e8f7ebee11f65d1d5348d649

commit 3e29b90a270109a5e8f7ebee11f65d1d5348d649
Author: Michel Hermier 
Date:   Wed Oct 8 09:48:37 2014 +0200

libpacman: Make _pacman_db_free_pkgcache an method of Database.

diff --git a/lib/libpacman/cache.h b/lib/libpacman/cache.h
index 431da7d..622ae92 100644
--- a/lib/libpacman/cache.h
+++ b/lib/libpacman/cache.h
@@ -26,7 +26,6 @@
#include "db.h"

/* packages */
-void _pacman_db_free_pkgcache(libpacman::Database *db);
int _pacman_db_add_pkgincache(libpacman::Database *db, libpacman::Package *pkg);
int _pacman_db_remove_pkgfromcache(libpacman::Database *db, libpacman::Package 
*pkg);
/* groups */
diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp
index 7e6e7db..20a7df2 100644
--- a/lib/libpacman/database_cache.cpp
+++ b/lib/libpacman/database_cache.cpp
@@ -62,7 +62,7 @@ int _pacman_db_load_pkgcache(Database *db)

ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));

-   _pacman_db_free_pkgcache(db);
+   db->free_pkgcache();

unsigned int inforeq = 0;
if (db != db->m_handle->db_local)
@@ -79,19 +79,18 @@ int _pacman_db_load_pkgcache(Database *db)
return(0);
}

-void _pacman_db_free_pkgcache(Database *db)
+void Database::free_pkgcache()
{
-   ASSERT(db != NULL, pm_errno = PM_ERR_DB_NULL; return);
-   if(db->pkgcache.empty()) {
+   if(pkgcache.empty()) {
return;
}

_pacman_log(PM_LOG_DEBUG, _("freeing package cache for repository '%s'"),
-   db->treename());
+   treename());

-   db->pkgcache.clear(/*_pacman_pkg_delete*/);
+   pkgcache.clear(/*_pacman_pkg_delete*/);

-   _pacman_db_clear_grpcache(db);
+   _pacman_db_clear_grpcache(this);
}

libpacman::package_set &Database::get_packages()
diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h
index 883f587..c01be5b 100644
--- a/lib/libpacman/db.h
+++ b/lib/libpacman/db.h
@@ -71,6 +71,8 @@ public:
virtual int write(libpacman::Package *info, unsigned int inforeq);

/* Cache operations */
+   void free_pkgcache();
+
FList filter(const libpacman::PackageMatcher 
&packagematcher);
FList filter(const FStrMatcher *strmatcher, int 
packagestrmatcher_flags);
FList filter(const FStringList &needles, int 
packagestrmatcher_flags, int strmatcher_flags = FStrMatcher::EQUAL);
diff --git a/lib/libpacman/db/syncdb.cpp b/lib/libpacman/db/syncdb.cpp
index 44a91c0..b18247f 100644
--- a/lib/libpacman/db/syncdb.cpp
+++ b/lib/libpacman/db/syncdb.cpp
@@ -189,7 +189,7 @@ int _pacman_syncdb_update(Database *db, int force)
_pacman_rmrf(dirpath);

/* Cache needs to be rebuild */
-   _pacman_db_free_pkgcache(db);
+   db->free_pkgcache();

if(updated) {
db->settimestamp(&newmtime);
diff --git a/lib/libpacman/pacman.cpp b/lib/libpacman/pacman.cpp
index 0e7a041..db73799 100644
--- a/lib/libpacman/pacman.cpp
+++ b/lib/libpacman/pacman.cpp
@@ -439,11 +439,6 @@ int pacman_db_unregister(pmdb_t *_db)
RET_ERR(PM_ERR_DB_NOT_FOUND, -1);
}

-   _pacman_log(PM_LOG_FLOW1, _("unregistering database '%s'"), 
db->treename());
-
-   /* Cleanup */
-   _pacman_db_free_pkgcache(db);
-
_pacman_log(PM_LOG_DEBUG, _("closing database '%s'"), db->treename());
db->close();

diff --git a/lib/libpacman/trans.cpp b/lib/libpacman/trans.cpp
index 9067492..adb2dbc 100644
--- a/lib/libpacman/trans.cpp
+++ b/lib/libpacman/trans.cpp
@@ -69,7 +69,7 @@ int check_oldcache(Database *db)
}
if(timestamp - db->cache_timestamp != 0) {
_pacman_log(PM_LOG_DEBUG, _("cache for '%s' repo is too old"), db->treename());
-   _pacman_db_free_pkgcache(db);
+   db->free_pkgcache();
} else {
_pacman_log(PM_LOG_DEBUG, _("cache for '%s' repo is up to date"), 
db->treename());
}
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Make _pacman_db_remove_pkgfromcache a method of Database.

2014-10-08 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=112d7c1d286433acd77d8e7e1ab58365280a0805

commit 112d7c1d286433acd77d8e7e1ab58365280a0805
Author: Michel Hermier 
Date:   Wed Oct 8 09:58:55 2014 +0200

libpacman: Make _pacman_db_remove_pkgfromcache a method of Database.

diff --git a/lib/libpacman/cache.h b/lib/libpacman/cache.h
index 5bdff4e..71c5a74 100644
--- a/lib/libpacman/cache.h
+++ b/lib/libpacman/cache.h
@@ -25,8 +25,6 @@
#include "group.h"
#include "db.h"

-/* packages */
-int _pacman_db_remove_pkgfromcache(libpacman::Database *db, libpacman::Package 
*pkg);
/* groups */
libpacman::Group *_pacman_db_get_grpfromcache(libpacman::Database *db, const 
char *target);

diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp
index f93dfdd..35f7b5b 100644
--- a/lib/libpacman/database_cache.cpp
+++ b/lib/libpacman/database_cache.cpp
@@ -116,24 +116,23 @@ int Database::add_pkgincache(Package *pkg)
return(0);
}

-int _pacman_db_remove_pkgfromcache(Database *db, Package *pkg)
+int Database::remove_pkgfromcache(Package *pkg)
{
Package *data;

-   ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
if(pkg == NULL) {
return(-1);
}

-   if(!db->pkgcache.remove(pkg, f_ptrcmp, &data)) {
+   if(!pkgcache.remove(pkg, f_ptrcmp, &data)) {
/* package not found */
return(-1);
}

-   _pacman_log(PM_LOG_DEBUG, _("removing entry '%s' from '%s' cache"), 
pkg->name(), db->treename());
+   _pacman_log(PM_LOG_DEBUG, _("removing entry '%s' from '%s' cache"), 
pkg->name(), treename());
data->release(); // FIXME: Should not be necessary, but required during 
migration to refcounted object

-   _pacman_db_clear_grpcache(db);
+   _pacman_db_clear_grpcache(this);

return(0);
}
diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h
index 404a8e4..a786f70 100644
--- a/lib/libpacman/db.h
+++ b/lib/libpacman/db.h
@@ -72,6 +72,7 @@ public:

/* Cache operations */
int add_pkgincache(libpacman::Package *pkg);
+   int remove_pkgfromcache(libpacman::Package *pkg);
void free_pkgcache();

FList filter(const libpacman::PackageMatcher 
&packagematcher);
diff --git a/lib/libpacman/trans.cpp b/lib/libpacman/trans.cpp
index 8d3687b..6e8849f 100644
--- a/lib/libpacman/trans.cpp
+++ b/lib/libpacman/trans.cpp
@@ -1658,7 +1658,7 @@ int __pmtrans_t::commit(FPtrList **data)
if(pkg_local->remove() == -1) {
_pacman_log(PM_LOG_ERROR, _("could not remove database entry %s-%s"), 
pkg_local->name(), pkg_local->version());
}
-   if(_pacman_db_remove_pkgfromcache(db_local, pkg_local) == -1) {
+   if(db_local->remove_pkgfromcache(pkg_local) == -1) {
_pacman_log(PM_LOG_ERROR, _("could not remove entry '%s' from cache"), 
pkg_local->name());
}
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Drop cache.h.

2014-10-08 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=ad6cf0ad47c2e51a60ad98d001f4f4813810b039

commit ad6cf0ad47c2e51a60ad98d001f4f4813810b039
Author: Michel Hermier 
Date:   Wed Oct 8 10:13:43 2014 +0200

libpacman: Drop cache.h.

diff --git a/lib/libpacman/cache.h b/lib/libpacman/cache.h
deleted file mode 100644
index 295244f..000
--- a/lib/libpacman/cache.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- *  cache.h
- *
- *  Copyright (c) 2002-2006 by Judd Vinet 
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- *  USA.
- */
-#ifndef _PACMAN_CACHE_H
-#define _PACMAN_CACHE_H
-
-#include "package.h"
-#include "group.h"
-#include "db.h"
-
-#endif /* _PACMAN_CACHE_H */
-
-/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/config_parser.cpp b/lib/libpacman/config_parser.cpp
index a236c6b..201bf3b 100644
--- a/lib/libpacman/config_parser.cpp
+++ b/lib/libpacman/config_parser.cpp
@@ -52,7 +52,6 @@
#include "group.h"
#include "util.h"
#include "db.h"
-#include "cache.h"
#include "conflict.h"
#include "handle.h"
#include "server.h"
diff --git a/lib/libpacman/conflict.cpp b/lib/libpacman/conflict.cpp
index 32ff8b6..f413e23 100644
--- a/lib/libpacman/conflict.cpp
+++ b/lib/libpacman/conflict.cpp
@@ -31,7 +31,6 @@
#include "db/localdb_files.h"
#include "util.h"
#include "error.h"
-#include "cache.h"
#include "deps.h"

#include "util/falgorithm.h"
diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp
index c799c55..a88c49d 100644
--- a/lib/libpacman/database_cache.cpp
+++ b/lib/libpacman/database_cache.cpp
@@ -1,5 +1,5 @@
/*
- *  cache.c
+ *  database_cache.cpp
*
*  Copyright (c) 2002-2006 by Judd Vinet 
*  Copyright (c) 2007 by Miklos Vajna 
@@ -31,8 +31,6 @@
#include 

/* pacman-g2 */
-#include "cache.h"
-
#include "db/localdb_files.h"
#include "util/log.h"
#include "fstring.h"
diff --git a/lib/libpacman/db.cpp b/lib/libpacman/db.cpp
index 848edab..3d14123 100644
--- a/lib/libpacman/db.cpp
+++ b/lib/libpacman/db.cpp
@@ -32,7 +32,6 @@
#include "error.h"
#include "server.h"
#include "handle.h"
-#include "cache.h"
#include "pacman_p.h"

#include "db/localdb.h"
diff --git a/lib/libpacman/db/localdb.cpp b/lib/libpacman/db/localdb.cpp
index 9ef93ae..93a972b 100644
--- a/lib/libpacman/db/localdb.cpp
+++ b/lib/libpacman/db/localdb.cpp
@@ -27,7 +27,6 @@

#include "db/localdb_files.h"
#include "util.h"
-#include "cache.h"
#include "db.h"
#include "package.h"
#include "pacman.h"
diff --git a/lib/libpacman/db/syncdb.cpp b/lib/libpacman/db/syncdb.cpp
index b18247f..b572497 100644
--- a/lib/libpacman/db/syncdb.cpp
+++ b/lib/libpacman/db/syncdb.cpp
@@ -40,7 +40,6 @@
#include "util/time.h"
#include "fstring.h"
#include "util.h"
-#include "cache.h"
#include "db.h"
#include "package.h"
#include "pacman.h"
diff --git a/lib/libpacman/deps.cpp b/lib/libpacman/deps.cpp
index c97f75c..d19ea11 100644
--- a/lib/libpacman/deps.cpp
+++ b/lib/libpacman/deps.cpp
@@ -39,7 +39,6 @@
#include "package.h"
#include "pacman_p.h"
#include "db.h"
-#include "cache.h"
#include "versioncmp.h"
#include "handle.h"

diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp
index f41dd68..77c812d 100644
--- a/lib/libpacman/package.cpp
+++ b/lib/libpacman/package.cpp
@@ -33,7 +33,6 @@
#include "db.h"
#include "deps.h"
#include "handle.h"
-#include "cache.h"
#include "pacman.h"
#include "versioncmp.h"

diff --git a/lib/libpacman/package/fpmpackage.cpp 
b/lib/libpacman/package/fpmpackage.cpp
index d600819..b61bb5e 100644
--- a/lib/libpacman/package/fpmpackage.cpp
+++ b/lib/libpacman/package/fpmpackage.cpp
@@ -31,7 +31,6 @@
#include "error.h"
#include "db.h"
#include "handle.h"
-#include "cache.h"
#include "pacman.h"

#include "io/archive.h"
diff --gi

[Frugalware-git] pacman-g2: libpacman: Make _pacman_db_load_pkgcache static.

2014-10-08 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=c8ca89479f7b629b115b4e9c833bb837fff155ed

commit c8ca89479f7b629b115b4e9c833bb837fff155ed
Author: Michel Hermier 
Date:   Wed Oct 8 09:36:18 2014 +0200

libpacman: Make _pacman_db_load_pkgcache static.

diff --git a/lib/libpacman/cache.h b/lib/libpacman/cache.h
index f2d4627..431da7d 100644
--- a/lib/libpacman/cache.h
+++ b/lib/libpacman/cache.h
@@ -26,7 +26,6 @@
#include "db.h"

/* packages */
-int _pacman_db_load_pkgcache(libpacman::Database *db);
void _pacman_db_free_pkgcache(libpacman::Database *db);
int _pacman_db_add_pkgincache(libpacman::Database *db, libpacman::Package *pkg);
int _pacman_db_remove_pkgfromcache(libpacman::Database *db, libpacman::Package 
*pkg);
diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp
index 661b674..7e6e7db 100644
--- a/lib/libpacman/database_cache.cpp
+++ b/lib/libpacman/database_cache.cpp
@@ -55,6 +55,7 @@ int _pacman_db_load_grpcache(Database *db);
/* Returns a new package cache from db.
* It frees the cache if it already exists.
*/
+static
int _pacman_db_load_pkgcache(Database *db)
{
Package *info;
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Make package and groups accessors, member functions of Database.

2014-10-08 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=c3035b9aa9f5eca9827fa3adefb49a94b5d76103

commit c3035b9aa9f5eca9827fa3adefb49a94b5d76103
Author: Michel Hermier 
Date:   Mon Oct 6 11:42:39 2014 +0200

libpacman: Make package and groups accessors, member functions of Database.

diff --git a/lib/libpacman/cache.h b/lib/libpacman/cache.h
index 11cdd88..f2d4627 100644
--- a/lib/libpacman/cache.h
+++ b/lib/libpacman/cache.h
@@ -30,9 +30,7 @@ int _pacman_db_load_pkgcache(libpacman::Database *db);
void _pacman_db_free_pkgcache(libpacman::Database *db);
int _pacman_db_add_pkgincache(libpacman::Database *db, libpacman::Package *pkg);
int _pacman_db_remove_pkgfromcache(libpacman::Database *db, libpacman::Package 
*pkg);
-libpacman::package_set &_pacman_db_get_pkgcache(libpacman::Database *db);
/* groups */
-libpacman::group_set &_pacman_db_get_grpcache(libpacman::Database *db);
libpacman::Group *_pacman_db_get_grpfromcache(libpacman::Database *db, const 
char *target);

#endif /* _PACMAN_CACHE_H */
diff --git a/lib/libpacman/conflict.cpp b/lib/libpacman/conflict.cpp
index b7e9daf..32ff8b6 100644
--- a/lib/libpacman/conflict.cpp
+++ b/lib/libpacman/conflict.cpp
@@ -87,7 +87,7 @@ FPtrList pmtrans_t::checkconflicts()
}
/* CHECK 1: check targets against database */
_pacman_log(PM_LOG_DEBUG, _("checkconflicts: targ '%s' vs db"), tp->name());
-   auto &cache = _pacman_db_get_pkgcache(db_local);
+   auto &cache = db_local->get_packages();
for(auto k = cache.begin(), k_end = cache.end(); k != k_end; ++k) {
Package *dp = *k;
if(!strcmp(dp->name(), tp->name())) {
@@ -144,7 +144,7 @@ FPtrList pmtrans_t::checkconflicts()
}
/* CHECK 3: check database against targets */
_pacman_log(PM_LOG_DEBUG, _("checkconflicts: db vs targ '%s'"), tp->name());
-   auto &cache = _pacman_db_get_pkgcache(db_local);
+   auto &cache = db_local->get_packages();
for(auto k = cache.begin(), k_end = cache.end(); k != k_end; ++k) {
FStringList *conflicts;
int usenewconflicts = 0;
diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp
index 16d19c2..661b674 100644
--- a/lib/libpacman/database_cache.cpp
+++ b/lib/libpacman/database_cache.cpp
@@ -93,12 +93,12 @@ void _pacman_db_free_pkgcache(Database *db)
_pacman_db_clear_grpcache(db);
}

-libpacman::package_set &_pacman_db_get_pkgcache(Database *db)
+libpacman::package_set &Database::get_packages()
{
-   if(db->pkgcache.empty()) {
-   _pacman_db_load_pkgcache(db);
+   if(pkgcache.empty()) {
+   _pacman_db_load_pkgcache(this);
}
-   return db->pkgcache;
+   return pkgcache;
}

int _pacman_db_add_pkgincache(Database *db, Package *pkg)
@@ -163,7 +163,7 @@ int _pacman_db_load_grpcache(Database *db)
{
ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));

-   auto &cache = _pacman_db_get_pkgcache(db);
+   auto &cache = db->get_packages();

_pacman_log(PM_LOG_DEBUG, _("loading group cache for repository '%s'"), 
db->treename());

@@ -201,19 +201,19 @@ int _pacman_db_clear_grpcache(Database *db)
return 0;
}

-libpacman::group_set &_pacman_db_get_grpcache(Database *db)
+libpacman::group_set &Database::get_groups()
{
-   if(db->grpcache.empty()) {
-   _pacman_db_load_grpcache(db);
+   if(grpcache.empty()) {
+   _pacman_db_load_grpcache(this);
}
-   return db->grpcache;
+   return grpcache;
}

Group *_pacman_db_get_grpfromcache(Database *db, const char *target)
{
ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, NULL));

-   return _pacman_db_get_grpfromlist(_pacman_db_get_grpcache(db), target);
+   return _pacman_db_get_grpfromlist(db->get_groups(), target);
}

/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/db.cpp b/lib/libpacman/db.cpp
index bbd288b..848edab 100644
--- a/lib/libpacman/db.cpp
+++ b/lib/libpacman/db.cpp
@@ -97,7 +97,7 @@ FList Database::filter(const PackageMatcher 
&packagematcher)
{
FList ret;

-   auto &cache = _pacman_db_get_pkgcache(this);
+   auto &cache = get_packages();
for(auto it = cache.begin(), end = cache.end(); it != end; ++it) {
Package *pkg = (Package *)*it;

@@ -127,7 +127,7 @@ FList Database::filter(const FStringList 
&needles, int packagestrmatc

PackageMatcher packagematcher(pattern, packagestrmatcher_flags, 
strmatcher_flags);

-   auto &cache = _pacman_db_get_pkgcache(this);
+   auto &cache = get_packages();
for(auto j = cache.begin(), j_end = cache.end(); j != j_end; ++j) {
Package *pkg = (Package *)*j;

@@ -151,7 +151,7 @@ Package *Database::find(const PackageMatcher 
&packagematcher)
{
Package *ret = NULL;

-   auto &cache = _pacman_db_get_pkgcache(this);
+   auto &cache = get_packages();
for(auto i = cache.begin(), end = cache.end(

[Frugalware-git] pacman-g2: libpacman: Drop util/falgorithms.h.

2014-10-08 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=ef7bf952560e983f01c6dd310c3d02f9ef3d3190

commit ef7bf952560e983f01c6dd310c3d02f9ef3d3190
Author: Michel Hermier 
Date:   Thu Oct 2 09:49:33 2014 +0200

libpacman: Drop util/falgorithms.h.

diff --git a/lib/libpacman/kernel/fsignal.h b/lib/libpacman/kernel/fsignal.h
index a1ac2e9..af82569 100644
--- a/lib/libpacman/kernel/fsignal.h
+++ b/lib/libpacman/kernel/fsignal.h
@@ -21,7 +21,6 @@
#ifndef FSIGNAL_H
#define FSIGNAL_H

-#include "util/falgorithms.h"
#include "util/ffunctional.h"

#include  // For std::vector
@@ -31,6 +30,12 @@
namespace flib
{

+template 
+T default_constructor()
+{
+   return T();
+}
+
template 
class FSignal;

@@ -47,7 +52,7 @@ public:
template 
typename std::enable_if::value, Accumulator>::type 
operator()(Args... args) const
{
-   Accumulator accumulator = 
flib::fdefault_constructor();
+   Accumulator accumulator = 
flib::default_constructor();

for(const_reference connection : m_connections) {
accumulator += connection(args...);
diff --git a/lib/libpacman/util/falgorithms.h b/lib/libpacman/util/falgorithms.h
deleted file mode 100644
index 4e28e4a..000
--- a/lib/libpacman/util/falgorithms.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- *  falgorithms.h
- *
- *  Copyright (c) 2014 by Michel Hermier 
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- *  USA.
- */
-#ifndef FALGORITHMS_H
-#define FALGORITHMS_H
-
-namespace flib
-{
-
-template 
-T fdefault_constructor()
-{
-   return T();
-}
-
-template 
-struct FAccumulator
-{
-   T value;
-
-   FAccumulator()
-   : value(fdefault_constructor())
-   { }
-
-   template 
-   const T &operator += (const Any &any)
-   {
-   return value += any;
-   }
-};
-
-template <>
-struct FAccumulator
-{
-   template 
-   void operator += (const Any &any)
-   { }
-};
-
-}
-
-#endif /* FALGORITHMS_H */
-
-/* vim: set ts=2 sw=2 noet: */
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Make _pacman_db_add_pkgincache a method of Database.

2014-10-08 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=4ce469d3a4c281caa523f96c3759d8b2337c9c67

commit 4ce469d3a4c281caa523f96c3759d8b2337c9c67
Author: Michel Hermier 
Date:   Wed Oct 8 09:53:51 2014 +0200

libpacman: Make _pacman_db_add_pkgincache a method of Database.

diff --git a/lib/libpacman/cache.h b/lib/libpacman/cache.h
index 622ae92..5bdff4e 100644
--- a/lib/libpacman/cache.h
+++ b/lib/libpacman/cache.h
@@ -26,7 +26,6 @@
#include "db.h"

/* packages */
-int _pacman_db_add_pkgincache(libpacman::Database *db, libpacman::Package 
*pkg);
int _pacman_db_remove_pkgfromcache(libpacman::Database *db, libpacman::Package 
*pkg);
/* groups */
libpacman::Group *_pacman_db_get_grpfromcache(libpacman::Database *db, const 
char *target);
diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp
index 20a7df2..f93dfdd 100644
--- a/lib/libpacman/database_cache.cpp
+++ b/lib/libpacman/database_cache.cpp
@@ -101,18 +101,17 @@ libpacman::package_set &Database::get_packages()
return pkgcache;
}

-int _pacman_db_add_pkgincache(Database *db, Package *pkg)
+int Database::add_pkgincache(Package *pkg)
{
-   ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
if(pkg == NULL) {
return(-1);
}

pkg->acquire(); // FIXME: Should not be necessary, but required during 
migration to refcounted object
-   _pacman_log(PM_LOG_DEBUG, _("adding entry '%s' in '%s' cache"), 
pkg->name(), db->treename());
-   db->pkgcache.add(pkg);
+   _pacman_log(PM_LOG_DEBUG, _("adding entry '%s' in '%s' cache"), 
pkg->name(), treename());
+   pkgcache.add(pkg);

-   _pacman_db_clear_grpcache(db);
+   _pacman_db_clear_grpcache(this);

return(0);
}
diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h
index c01be5b..404a8e4 100644
--- a/lib/libpacman/db.h
+++ b/lib/libpacman/db.h
@@ -71,6 +71,7 @@ public:
virtual int write(libpacman::Package *info, unsigned int inforeq);

/* Cache operations */
+   int add_pkgincache(libpacman::Package *pkg);
void free_pkgcache();

FList filter(const libpacman::PackageMatcher 
&packagematcher);
diff --git a/lib/libpacman/trans.cpp b/lib/libpacman/trans.cpp
index adb2dbc..8d3687b 100644
--- a/lib/libpacman/trans.cpp
+++ b/lib/libpacman/trans.cpp
@@ -1756,7 +1756,7 @@ int __pmtrans_t::commit(FPtrList **data)
pkg_new->name(), pkg_new->version());
RET_ERR(PM_ERR_DB_WRITE, -1);
}
-   if(_pacman_db_add_pkgincache(db_local, pkg_new) == -1) {
+   if(db_local->add_pkgincache(pkg_new) == -1) {
_pacman_log(PM_LOG_ERROR, _("could not add entry '%s' in cache"), 
pkg_new->name());
}
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: pacman-g2: Move list.c to list.cpp (to ease coding).

2014-10-08 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=b20aab013fd522d6ef727a2d08218d7f6caaad84

commit b20aab013fd522d6ef727a2d08218d7f6caaad84
Author: Michel Hermier 
Date:   Mon Oct 6 11:17:03 2014 +0200

pacman-g2: Move list.c to list.cpp (to ease coding).

diff --git a/lib/libpacman/CMakeLists.txt b/lib/libpacman/CMakeLists.txt
index 9e1887e..6433523 100644
--- a/lib/libpacman/CMakeLists.txt
+++ b/lib/libpacman/CMakeLists.txt
@@ -22,7 +22,7 @@ set(FLIB_SOURCES
io/ftp.c
util/fabstractlogger.cpp
util/fabstractlogger.h
-   util/falgorithms.h
+   util/falgorithm.h
util/fdispatchlogger.cpp
util/fdispatchlogger.h
util/flist.h
diff --git a/src/pacman-g2/CMakeLists.txt b/src/pacman-g2/CMakeLists.txt
index 1a3d33e..734a577 100644
--- a/src/pacman-g2/CMakeLists.txt
+++ b/src/pacman-g2/CMakeLists.txt
@@ -2,7 +2,7 @@ set(PACMAN_SOURCES
conf.c
deptest.c
download.c
-   list.c
+   list.cpp
log.c
package.c
pacman-g2.c
diff --git a/src/pacman-g2/list.c b/src/pacman-g2/list.cpp
similarity index 86%
rename from src/pacman-g2/list.c
rename to src/pacman-g2/list.cpp
index 50a6692..1c7909b 100644
--- a/src/pacman-g2/list.c
+++ b/src/pacman-g2/list.cpp
@@ -24,6 +24,7 @@
#include 
#include 
#include 
+
/* pacman-g2 */
#include "util.h"
#include "list.h"
@@ -34,15 +35,15 @@ extern int maxcols;
*/
void list_display(const char *title, const FStringList *list)
{
-   const FStringListIterator *lp, *end;
+   FStringList::const_iterator lp, end;
int cols, len;

len = strlen(title);
printf("%s ", title);

if(list) {
-   for(lp = f_ptrlist_first_const(list), end = 
f_ptrlist_end_const(list), cols = len; lp != end; lp = f_ptrlistitem_next(lp)) {
-   int s = strlen((char *)list_data(lp))+1;
+   for(lp = list->begin(), end = list->end(), cols = len; lp != 
end; ++lp) {
+   int s = strlen(*lp)+1;
if(s+cols >= maxcols) {
int i;
cols = len;
@@ -51,7 +52,7 @@ void list_display(const char *title, const FStringList *list)
printf(" ");
}
}
-   printf("%s ", (char *)list_data(lp));
+   printf("%s ", *lp);
cols += s;
}
printf("\n");
@@ -68,9 +69,9 @@ void list_display(const char *title, const FStringList *list)
* This function takes a PM_LIST* and returns a list_t*
*
*/
-list_t *PM_LIST_remove_dupes(PM_LIST *list)
+FStringList *PM_LIST_remove_dupes(PM_LIST *list)
{
-   list_t *newlist = NULL;
+   FStringList *newlist = NULL;

for(pmlist_iterator_t *i = pacman_list_begin(list), *end = 
pacman_list_end(list); i != end; i = pacman_list_next(i)) {
char *data = pacman_list_getdata(i);
diff --git a/src/pacman-g2/list.h b/src/pacman-g2/list.h
index 279bfb9..53525e9 100644
--- a/src/pacman-g2/list.h
+++ b/src/pacman-g2/list.h
@@ -26,13 +26,21 @@
#include 
#include 

+#ifdef __cplusplus
+extern "C" {
+#endif
+
typedef FPtrList list_t;

#define list_data f_ptrlistitem_data
void list_display(const char *title, const FStringList *list);

#define PM_LIST_display(title, list) list_display(title, (const FStringList 
*)list)
-list_t *PM_LIST_remove_dupes(PM_LIST *list);
+FStringList *PM_LIST_remove_dupes(PM_LIST *list);
+
+#ifdef __cplusplus
+}
+#endif

#endif /* _PM_LIST_H */
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Add flib::mapped_traits (to implement key/value in a single structure).

2014-10-08 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=a05b2d00b449e86c3d47b17e2c2b6a7b6a83e894

commit a05b2d00b449e86c3d47b17e2c2b6a7b6a83e894
Author: Michel Hermier 
Date:   Mon Oct 6 08:05:49 2014 +0200

libpacman: Add flib::mapped_traits (to implement key/value in a single 
structure).

diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h
index 1b1062a..edaab92 100644
--- a/lib/libpacman/util/flist.h
+++ b/lib/libpacman/util/flist.h
@@ -41,6 +41,29 @@ namespace flib
struct uncompared
{ };

+   template 
+   struct mapped_traits
+   {
+   typedef T mapped_type;
+   typedef T key_type;
+   typedef T value_type;
+
+   static const key_type &key_of(const mapped_type &o)
+   {
+   return o;
+   }
+
+   static value_type &value_of(mapped_type &o)
+   {
+   return o;
+   }
+
+   static const value_type &value_of(const mapped_type &o)
+   {
+   return o;
+   }
+   };
+
template 
struct iterable_traits
{
@@ -635,7 +658,7 @@ namespace flib {
};
}

-template 
+template >
class FList
: protected FCListItem
{
@@ -935,7 +958,7 @@ protected:
template 
iterator find_insertion_point(typename 
std::enable_if::value, const Data 
&>::type data)
{
-   return end();
+   return last();
}

template 
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Use libpacman::package_set and group_set on getters.

2014-10-08 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=2d9006766a1e5c7bd484ef11cf07b171bac2475c

commit 2d9006766a1e5c7bd484ef11cf07b171bac2475c
Author: Michel Hermier 
Date:   Thu Oct 2 09:51:08 2014 +0200

libpacman: Use libpacman::package_set and group_set on getters.

diff --git a/lib/libpacman/cache.cpp b/lib/libpacman/cache.cpp
index 4fc8b7d..16d19c2 100644
--- a/lib/libpacman/cache.cpp
+++ b/lib/libpacman/cache.cpp
@@ -93,7 +93,7 @@ void _pacman_db_free_pkgcache(Database *db)
_pacman_db_clear_grpcache(db);
}

-FList &_pacman_db_get_pkgcache(Database *db)
+libpacman::package_set &_pacman_db_get_pkgcache(Database *db)
{
if(db->pkgcache.empty()) {
_pacman_db_load_pkgcache(db);
@@ -201,7 +201,7 @@ int _pacman_db_clear_grpcache(Database *db)
return 0;
}

-FList &_pacman_db_get_grpcache(Database *db)
+libpacman::group_set &_pacman_db_get_grpcache(Database *db)
{
if(db->grpcache.empty()) {
_pacman_db_load_grpcache(db);
diff --git a/lib/libpacman/cache.h b/lib/libpacman/cache.h
index cf7a2a7..11cdd88 100644
--- a/lib/libpacman/cache.h
+++ b/lib/libpacman/cache.h
@@ -30,9 +30,9 @@ int _pacman_db_load_pkgcache(libpacman::Database *db);
void _pacman_db_free_pkgcache(libpacman::Database *db);
int _pacman_db_add_pkgincache(libpacman::Database *db, libpacman::Package *pkg);
int _pacman_db_remove_pkgfromcache(libpacman::Database *db, libpacman::Package 
*pkg);
-FList &_pacman_db_get_pkgcache(libpacman::Database *db);
+libpacman::package_set &_pacman_db_get_pkgcache(libpacman::Database *db);
/* groups */
-FList &_pacman_db_get_grpcache(libpacman::Database *db);
+libpacman::group_set &_pacman_db_get_grpcache(libpacman::Database *db);
libpacman::Group *_pacman_db_get_grpfromcache(libpacman::Database *db, const 
char *target);

#endif /* _PACMAN_CACHE_H */
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Remove unused f_stringlistitem_to_str.

2014-10-08 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=5cd68e96af40467056eef2a09a6edc5e3fc6d515

commit 5cd68e96af40467056eef2a09a6edc5e3fc6d515
Author: Michel Hermier 
Date:   Mon Oct 6 08:11:59 2014 +0200

libpacman: Remove unused f_stringlistitem_to_str.

diff --git a/lib/libpacman/util/fstringlist.cpp 
b/lib/libpacman/util/fstringlist.cpp
index 70e2966..b93cc08 100644
--- a/lib/libpacman/util/fstringlist.cpp
+++ b/lib/libpacman/util/fstringlist.cpp
@@ -66,15 +66,6 @@ FStringList *_pacman_list_remove_dupes(FStringList *list)
return newlist;
}

-const char *f_stringlistitem_to_str(const FStringListIterator *self)
-{
-#ifndef F_NOCOMPAT
-   return (const char *)f_ptrlistitem_data(self);
-#else
-   return self->to_str;
-#endif
-}
-
int f_stringlist_delete(FStringList *self)
{
delete self;
diff --git a/lib/libpacman/util/fstringlist.h b/lib/libpacman/util/fstringlist.h
index b6cb7c5..f8246e0 100644
--- a/lib/libpacman/util/fstringlist.h
+++ b/lib/libpacman/util/fstringlist.h
@@ -38,8 +38,6 @@ extern "C" {
int _pacman_list_is_strin(const char *needle, FStringList *haystack);
FStringList *_pacman_list_remove_dupes(FStringList *list);

-const char *f_stringlistitem_to_str(const FStringListIterator *self);
-
int f_stringlist_delete(FStringList *self);

FStringList *f_stringlist_add(FStringList *list, const char *s);
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


[Frugalware-git] pacman-g2: libpacman: Rename cache.cpp to database_cache.cpp.

2014-10-08 Thread Michel Hermier
Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=79f42530cb1a7bea2720712239a9600390fb7805

commit 79f42530cb1a7bea2720712239a9600390fb7805
Author: Michel Hermier 
Date:   Mon Oct 6 11:26:27 2014 +0200

libpacman: Rename cache.cpp to database_cache.cpp.

diff --git a/lib/libpacman/CMakeLists.txt b/lib/libpacman/CMakeLists.txt
index 6433523..caac641 100644
--- a/lib/libpacman/CMakeLists.txt
+++ b/lib/libpacman/CMakeLists.txt
@@ -49,10 +49,10 @@ set(LIBPACMAN_SOURCES
db/syncdb.cpp
package/fpmpackage.cpp
package/packagecache.cpp
-   cache.cpp
config_parser.cpp
conflict.cpp
db.cpp
+   database_cache.cpp
deps.cpp
error.cpp
group.cpp
diff --git a/lib/libpacman/cache.cpp b/lib/libpacman/database_cache.cpp
similarity index 100%
rename from lib/libpacman/cache.cpp
rename to lib/libpacman/database_cache.cpp
___
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git


  1   2   3   4   5   6   7   8   9   10   >