Beispiel #1
0
static int
replace_filter(DnfSack *sack, struct _Filter **fp, int keyname, int cmp_type,
               const char *match)
{
    if (*fp == NULL)
        *fp = filter_create(1);
    else
        filter_reinit(*fp, 1);

    struct _Filter *f = *fp;

    f->keyname = keyname;
    f->cmp_type = cmp_type;
    if (keyname == HY_PKG_PROVIDES && cmp_type != HY_GLOB) {
        f->match_type = _HY_RELDEP;
        DnfReldep *reldep = reldep_from_str (sack, match);
        if (reldep == NULL) {
            filter_free(*fp);
            *fp = NULL;
            return DNF_ERROR_BAD_SELECTOR;
        }
        f->matches[0].reldep = reldep;
        return 0;
    }

    f->match_type = _HY_STR;
    f->matches[0].str = g_strdup(match);
    return 0;
}
Beispiel #2
0
static int
reldep_init(_ReldepObject *self, PyObject *args, PyObject *kwds)
{
    PyObject *sack;
    const char *reldep_str = NULL;
    PyObject *tmp_py_str = NULL;
    PyObject *reldep_str_py = NULL;
    if (!PyArg_ParseTuple(args, "O!O", &sack_Type, &sack, &reldep_str_py))
        return -1;
    DnfSack *csack = sackFromPyObject(sack);
    if (csack == NULL)
        return -1;
    reldep_str = pycomp_get_string(reldep_str_py, &tmp_py_str);
    if (reldep_str == NULL)
        return -1;

    self->reldep = reldep_from_str (csack, reldep_str);
    if (self->reldep == NULL) {
        PyErr_Format(HyExc_Value, "Wrong reldep format: %s", reldep_str);
        Py_XDECREF(tmp_py_str);
        return -1;
    }

    Py_XDECREF(tmp_py_str);
    return 0;
}