created a KFPM class for the application
[kfpm.git] / kfpm_pacman.cpp
blobcbf917e159ed09be94da60e16ea06e593c053155
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_pacman.h"
16 QPtrList<PM_DB> pm_dblist;
18 FPM::FPM(char *root, char *configfile) {
19 pacman_init(root, configfile);
22 FPM::~FPM () {
23 pacman_release();
26 void FPM::setSync(QPtrList<PM_DB> syncs)
28 this->Syncs = syncs;
31 QPtrList<PM_DB> FPM::getSync(void) {
32 return Syncs;
35 QStringList FPM::sync_group(QPtrList<PM_DB> syncs, QStringList targets)
37 if (targets.isEmpty()) {
38 return NULL;
40 else {
41 QStringList grpnames;
42 PM_DB *db;
43 for(db = syncs.first(); db; db = syncs.next()) {
44 PM_LIST *lp;
45 for(lp = pacman_db_getgrpcache(db); lp; lp = pacman_list_next(lp)) {
46 grpnames.append((char*)pacman_list_getdata(lp));
49 return(grpnames);
53 void cb_db_register(char *section, PM_DB *db)
55 pm_dblist.append(db);
58 void FPM::pacman_init(char *root, char *configfile) {
59 pacman_initialize(root);
60 /* FIXME - exception handling */
61 if(pacman_parse_config(configfile, cb_db_register, "") != 0) {
62 std::cerr << "failed to parse config (" << pacman_strerror(pm_errno) << ")" << std::endl;
64 setSync(pm_dblist);