#include <Python.h>
#include <assert.h>
-#include <pakfire/errno.h>
#include <pakfire/request.h>
#include "errors.h"
return 0;
}
-static PyObject* Request_operation_return(int ret) {
- if (!ret)
- Py_RETURN_NONE;
-
- switch (pakfire_get_errno()) {
- case PAKFIRE_E_SELECTOR:
- PyErr_SetString(PyExc_ValueError, "Ill-formed Selector");
- return NULL;
-
- default:
- PyErr_SetString(PyExc_RuntimeError, "Request operation failed");
- return NULL;
+static PyObject* Request_operation_return(int r) {
+ if (r) {
+ PyErr_SetFromErrno(PyExc_OSError);
+ return NULL;
}
+
+ Py_RETURN_NONE;
}
static PyObject* Request_install(RequestObject* self, PyObject* args) {
#include <Python.h>
-#include <pakfire/errno.h>
#include <pakfire/filter.h>
#include <pakfire/package.h>
#include <pakfire/packagelist.h>
if (!PyArg_ParseTuple(args, "iis", &keyname, &cmp_type, &match))
return NULL;
- int ret = pakfire_selector_set(self->selector, keyname, cmp_type, match);
-
- switch (ret) {
- case PAKFIRE_E_SELECTOR:
- PyErr_SetString(PyExc_ValueError, "Invalid Selector specification");
- return NULL;
-
- default:
- Py_RETURN_NONE;
+ int r = pakfire_selector_set(self->selector, keyname, cmp_type, match);
+ if (r) {
+ PyErr_SetFromErrno(PyExc_OSError);
+ return NULL;
}
+
+ Py_RETURN_NONE;
}
static PyObject* Selector_get_providers(SelectorObject* self) {
#define PAKFIRE_ERRNO_H
enum _pakfire_errors {
- PAKFIRE_E_ARCH,
- PAKFIRE_E_SELECTOR,
- PAKFIRE_E_INVALID_INPUT,
+ PAKFIRE_E_NONE
};
extern __thread int pakfire_errno;
#include <unistd.h>
#include <pakfire/constants.h>
-#include <pakfire/errno.h>
#include <pakfire/i18n.h>
#include <pakfire/key.h>
#include <pakfire/logging.h>
// Input was invalid
case GPG_ERR_INV_VALUE:
- pakfire_errno = PAKFIRE_E_INVALID_INPUT;
+ errno = EINVAL;
break;
// Fall through for any other errors
PAKFIRE_EXPORT int pakfire_selector_set(PakfireSelector selector, int keyname, int cmp_type, const char* match) {
if (!pakfire_selector_valid_setting(keyname, cmp_type))
- return PAKFIRE_E_SELECTOR;
+ return 1;
PakfireFilter* filter = NULL;
case PAKFIRE_PKG_NAME:
if (selector->f_provides)
- return PAKFIRE_E_SELECTOR;
+ return 1;
filter = &selector->f_name;
break;
case PAKFIRE_PKG_PROVIDES:
if (selector->f_name)
- return PAKFIRE_E_SELECTOR;
+ return 1;
filter = &selector->f_provides;
break;
case PAKFIRE_PKG_GROUP:
if (selector->f_group)
- return PAKFIRE_E_SELECTOR;
+ return 1;
filter = &selector->f_group;
break;
default:
- return PAKFIRE_E_SELECTOR;
+ return 1;
}
pakfire_selector_replace_filter(filter, keyname, cmp_type, match);
Pool* pool = pakfire_get_solv_pool(pakfire);
Id archid = str2archid(pool, f->match);
if (archid == 0)
- return PAKFIRE_E_ARCH;
+ return 1;
for (int i = 0; i < queue->count; i += 2) {
Id dep = queue->elements[i + 1];
if (selector->f_name == NULL && selector->f_provides == NULL && selector->f_group == NULL) {
// no name or provides in the selector is an erro
- ret = PAKFIRE_E_SELECTOR;
+ ret = 1;
goto finish;
}