#include <Python.h>
-#include <pakfire/errno.h>
#include <pakfire/package.h>
#include <pakfire/repo.h>
#include <pakfire/util.h>
if (!PyArg_ParseTuple(args, "s", &filename))
return NULL;
- int ret = pakfire_repo_read_solv(self->repo, filename, 0);
-
- switch (ret) {
- case 0:
- Py_RETURN_NONE;
- break;
-
- case PAKFIRE_E_SOLV_NOT_SOLV:
- PyErr_Format(PyExc_ValueError, "File not in SOLV format: %s", filename);
- break;
-
- case PAKFIRE_E_SOLV_UNSUPPORTED:
- PyErr_Format(PyExc_ValueError, "File in an unsupported version"
- " of the SOLV format: %s", filename);
- break;
-
- case PAKFIRE_E_SOLV_CORRUPTED:
- PyErr_Format(PyExc_ValueError, "SOLV file is corrupted: %s", filename);
- break;
-
- case PAKFIRE_E_IO:
- PyErr_Format(PyExc_IOError, "Could not read file %s: %s", filename, strerror(errno));
- break;
-
- default:
- PyErr_Format(PyExc_RuntimeError, "pakfire_repo_read() failed: %s", ret);
- break;
+ int r = pakfire_repo_read_solv(self->repo, filename, 0);
+ if (r) {
+ PyErr_SetFromErrno(PyExc_OSError);
+ return NULL;
}
- return NULL;
+ Py_RETURN_NONE;
}
static PyObject* Repo_write_solv(RepoObject* self, PyObject* args) {
if (!PyArg_ParseTuple(args, "s", &filename))
return NULL;
- int ret = pakfire_repo_write_solv(self->repo, filename, 0);
-
- switch (ret) {
- case 0:
- Py_RETURN_NONE;
- break;
-
- case PAKFIRE_E_IO:
- PyErr_Format(PyExc_IOError, "Could not open file %s", filename);
- break;
-
- default:
- PyErr_Format(PyExc_RuntimeError, "pakfire_repo_write() failed: %d", ret);
- break;
+ int r = pakfire_repo_write_solv(self->repo, filename, 0);
+ if (r) {
+ PyErr_SetFromErrno(PyExc_OSError);
+ return NULL;
}
- return NULL;
+ Py_RETURN_NONE;
}
static PyObject* Repo__add_package(RepoObject* self, PyObject* args) {
PAKFIRE_EXPORT int pakfire_repo_read_solv(PakfireRepo repo, const char* filename, int flags) {
FILE* f = fopen(filename, "rb");
- if (!f) {
- return PAKFIRE_E_IO;
- }
+ if (!f)
+ return 1;
int ret = pakfire_repo_read_solv_fp(repo, f, flags);
fclose(f);
PAKFIRE_EXPORT int pakfire_repo_write_solv(PakfireRepo repo, const char* filename, int flags) {
FILE* f = fopen(filename, "wb");
- if (!f) {
- return PAKFIRE_E_IO;
- }
+ if (!f)
+ return 1;
int ret = pakfire_repo_write_solv_fp(repo, f, flags);
fclose(f);