added a status bar
[kfpm.git] / kfpm_pacman.cpp
blob525d7998b7528677ad8b0368cdddc1ab7779b4ef
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 <qptrlist.h>
14 #include "kfpm_config.h"
15 #include "kfpm_pacman.h"
17 QPtrList<PM_DB> pm_dblist;
19 FPM::FPM(char *root, char *configfile) {
20 pacman_init(root, configfile);
23 FPM::~FPM () {
24 pacman_release();
27 void FPM::setSync(QPtrList<PM_DB> syncs)
29 this->Syncs = syncs;
32 QPtrList<PM_DB> FPM::getSync(void) {
33 return Syncs;
36 QStringList FPM::sync_group(QPtrList<PM_DB> syncs, QStringList targets)
38 if (targets.isEmpty()) {
39 return NULL;
41 else {
42 QStringList grpnames;
43 PM_DB *db;
44 for(db = syncs.first(); db; db = syncs.next()) {
45 PM_LIST *lp;
46 for(lp = pacman_db_getgrpcache(db); lp; lp = pacman_list_next(lp)) {
47 grpnames.append((char*)pacman_list_getdata(lp));
50 return(grpnames);
54 void cb_db_register(char *section, PM_DB *db)
56 pm_dblist.append(db);
59 void FPM::pacman_init(char *root, char *configfile) {
60 pacman_initialize(root);
61 /* FIXME - exception handling */
62 if(pacman_parse_config(configfile, cb_db_register, "") != 0) {
63 std::cerr << "failed to parse config (" << pacman_strerror(pm_errno) << ")" << std::endl;
65 setSync(pm_dblist);