Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=b5b748f1343f1160e281da2f2d3be6f21d225f4f
commit b5b748f1343f1160e281da2f2d3be6f21d225f4f Author: Michel Hermier <[email protected]> Date: Mon Sep 8 13:21:28 2014 +0200 libpacman: Add (v)addf methods to FStringList. diff --git a/lib/libpacman/util/fstringlist.cpp b/lib/libpacman/util/fstringlist.cpp index 5f20188..cb6159a 100644 --- a/lib/libpacman/util/fstringlist.cpp +++ b/lib/libpacman/util/fstringlist.cpp @@ -67,7 +67,7 @@ FStringList *_pacman_list_remove_dupes(FStringList *list) const char *f_stringlistitem_to_str(const FStringListIterator *self) { #ifndef F_NOCOMPAT - return f_ptrlistitem_data(self); + return (const char *)f_ptrlistitem_data(self); #else return self->to_str; #endif @@ -98,6 +98,24 @@ FStringList *f_stringlist_add_stringlist(FStringList *self, const FStringList *s return &self->add(*src); } +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); +} + int f_stringlist_clear(FStringList *self) { ASSERT(self != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1)); @@ -147,4 +165,23 @@ FStringList &FStringList::add(const FStringList &o) return *this; } +FStringList &FStringList::addf(const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + vaddf(fmt, ap); + va_end(ap); + return *this; +} + +FStringList &FStringList::vaddf(const char *fmt, va_list ap) +{ + char *dest; + + vasprintf(&dest, fmt, ap); + FPtrList::add(dest); + return *this; +} + /* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libpacman/util/fstringlist.h b/lib/libpacman/util/fstringlist.h index 0307326..6c83958 100644 --- a/lib/libpacman/util/fstringlist.h +++ b/lib/libpacman/util/fstringlist.h @@ -44,6 +44,8 @@ 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); #ifdef __cplusplus @@ -62,6 +64,8 @@ public: FStringList &add(const char *s); FStringList &add(const FStringList &o); + FStringList &addf(const char *fmt, ...); + FStringList &vaddf(const char *fmt, va_list ap); }; #endif diff --git a/src/pacman-g2/sync.c b/src/pacman-g2/sync.c index 7e86733..14d11ae 100644 --- a/src/pacman-g2/sync.c +++ b/src/pacman-g2/sync.c @@ -500,7 +500,7 @@ int syncpkg(FStringList *targets) /* list targets and get confirmation */ if(!((unsigned long)pacman_trans_getinfo(PM_TRANS_FLAGS) & PM_TRANS_FLAG_PRINTURIS)) { - list_t *list_install = NULL; + FStringList *list_install = NULL; list_t *list_remove = NULL; char *str; unsigned long totalsize = 0; @@ -528,8 +528,7 @@ int syncpkg(FStringList *targets) totalsize += (long)pacman_pkg_getinfo(pkg, PM_PKG_SIZE); totalusize += (long)pacman_pkg_getinfo(pkg, PM_PKG_USIZE); - asprintf(&str, "%s-%s", pkgname, pkgver); - list_install = f_stringlist_add(list_install, str); // Fixme add a f_stringlist_addf + list_install = f_stringlist_addf(list_install, "%s-%s", pkgname, pkgver); } if(list_remove) { MSG(NL, _("\nRemove: ")); _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
