Esempio n. 1
0
File: verify.c Progetto: nforro/rpm
/**
 * Check installed package dependencies for problems.
 * @param ts		transaction set
 * @param h		header
 * @return		number of problems found (0 for no problems)
 */
static int verifyDependencies(rpmts ts, Header h)
{
    rpmps ps;
    rpmte te;
    int rc;

    rpmtsEmpty(ts);
    (void) rpmtsAddInstallElement(ts, h, NULL, 0, NULL);

    (void) rpmtsCheck(ts);
    te = rpmtsElement(ts, 0);
    ps = rpmteProblems(te);
    rc = rpmpsNumProblems(ps);

    if (rc > 0) {
	rpmlog(RPMLOG_NOTICE, _("Unsatisfied dependencies for %s:\n"),
	       rpmteNEVRA(te));
	rpmpsi psi = rpmpsInitIterator(ps);
	rpmProblem p;

	while ((p = rpmpsiNext(psi)) != NULL) {
	    char * ps = rpmProblemString(p);
	    rpmlog(RPMLOG_NOTICE, "\t%s\n", ps);
	    free(ps);
	}
	rpmpsFreeIterator(psi);
    }
    rpmpsFree(ps);
    rpmtsEmpty(ts);

    return rc;
}
Esempio n. 2
0
File: rpmps.c Progetto: kaltsi/rpm
void rpmpsPrint(FILE *fp, rpmps ps)
{
    rpmProblem p;
    rpmpsi psi = rpmpsInitIterator(ps);
    FILE *f = (fp != NULL) ? fp : stderr;

    while ((p = rpmpsiNext(psi))) {
	char *msg = rpmProblemString(p);
	fprintf(f, "\t%s\n", msg);
	free(msg);
    }
    rpmpsFreeIterator(psi);
}
Esempio n. 3
0
File: rpmps.c Progetto: kaltsi/rpm
/*
 * TODO: filter out duplicates while merging. Also horribly inefficient... */
int rpmpsMerge(rpmps dest, rpmps src)
{
    int rc = 0;
    if (dest != NULL) {
	rpmProblem p;
	rpmpsi spi = rpmpsInitIterator(src);
	while ((p = rpmpsiNext(spi)) != NULL) {
	    rpmpsAppendProblem(dest, p);
	    rc++;
	}
	rpmpsFreeIterator(spi);
    }
    return rc;
}
Esempio n. 4
0
PyObject *rpmps_AsList(rpmps ps)
{
    PyObject *problems = PyList_New(0);
    rpmpsi psi = rpmpsInitIterator(ps);
    rpmProblem prob;

    while ((prob = rpmpsiNext(psi))) {
        PyObject *pyprob = rpmprob_Wrap(&rpmProblem_Type, prob);
        PyList_Append(problems, pyprob);
        Py_DECREF(pyprob);
    }
    rpmpsFreeIterator(psi);
    return problems;
}
Esempio n. 5
0
File: rpmps.c Progetto: kaltsi/rpm
int rpmpsNextIterator(rpmpsi psi)
{
    return (rpmpsiNext(psi) != NULL) ? psi->ix : -1;
}