use red, yellow, green to indicate not installed, outdated, up2date
[kfpm.git] / kfpm_pacman.cpp
blobedff27a7c2d3687297f2d12a5f0f8eb7dbd737aa
1 /*
2 * kfpm_pacman.cpp
4 * Copyright (c) 2007 VOROSKOI Andras <voroskoi@frugalware.org>
6 * Copyright: See COPYING file that comes with this distribution.
8 */
10 #include <iostream>
12 #include "kfpm_pacman.h"
14 QValueVector<PM_DB*> pm_dblist;
16 FPM::FPM(char *root, char *configfile) {
17 pacman_init(root, configfile);
18 LocalDB = pacman_db_register((char*)"local");
21 FPM::~FPM () {
22 pacman_release();
23 std::cout << "FPM destructor called" << std::endl;
26 void FPM::setSync(QValueVector<PM_DB*> syncs)
28 this->Syncs = syncs;
31 QValueVector<PM_DB*> FPM::getSync(void) {
32 return Syncs;
35 QStrList FPM::sync_group(QValueVector<PM_DB*> syncs)
37 QStrList grpnames;
38 for(QValueVector<PM_DB*>::iterator it = syncs.begin(); it != syncs.end(); ++it) {
39 PM_LIST *lp;
40 for(lp = pacman_db_getgrpcache(*it); lp; lp = pacman_list_next(lp)) {
41 grpnames.append((char*)pacman_list_getdata(lp));
44 return(grpnames);
47 QStrList FPM::sync_group(QValueVector<PM_DB*> syncs, QStrList *targets)
49 QStrList pkgnames;
50 if (targets->isEmpty()) {
51 /* FIXME exception */
52 return NULL;
54 for(char *target = targets->first(); target; target = targets->next()) {
55 for(QValueVector<PM_DB*>::iterator jt = syncs.begin(); jt != syncs.end(); ++jt) {
56 PM_GRP *grp = pacman_db_readgrp(*jt, target);
57 PM_LIST *packages;
58 for(packages = (PM_LIST*)pacman_grp_getinfo(grp, PM_GRP_PKGNAMES); packages; packages = pacman_list_next(packages)) {
59 pkgnames.append((char*)pacman_list_getdata(packages));
63 return(pkgnames);
66 void cb_db_register(char *section, PM_DB *db)
68 pm_dblist.push_back(db);
71 void FPM::pacman_init(char *root, char *configfile)
73 pacman_initialize(root);
74 /* FIXME - exception handling */
75 if(pacman_parse_config(configfile, cb_db_register, "") != 0) {
76 std::cerr << "failed to parse config (" << pacman_strerror(pm_errno) << ")" << std::endl;
78 setSync(pm_dblist);
81 // vim: sw=4 ts=4 noet