#############################################################################*/
#include <Python.h>
+#include <errno.h>
#include <pakfire/constants.h>
#include <pakfire/execute.h>
return -1;
// Create a new Pakfire instance
- self->pakfire = pakfire_create(path, arch);
+ self->pakfire = pakfire_create(path, arch);
+ if (!self->pakfire) {
+ switch (errno) {
+ // Invalid architecture
+ case -EINVAL:
+ PyErr_SetString(PyExc_ValueError, "Invalid architecture");
+ break;
+
+ // Anything else
+ default:
+ PyErr_SetNone(PyExc_OSError);
+ }
- if (self->pakfire)
- return 0;
- else
return -1;
+ }
+
+ return 0;
}
static void Pakfire_dealloc(PakfireObject* self) {
arch = pakfire_arch_native();
// Check if the architecture is supported
- if (!pakfire_arch_supported(arch))
+ if (!pakfire_arch_supported(arch)) {
+ errno = -EINVAL;
return NULL;
+ }
Pakfire pakfire = pakfire_calloc(1, sizeof(*pakfire));
if (pakfire) {