static PyObject* Pakfire_dist(PakfireObject* self, PyObject* args) {
const char* path = NULL;
const char* target = NULL;
+ char* result = NULL;
if (!PyArg_ParseTuple(args, "s|z", &path, &target))
return NULL;
- int r = pakfire_dist(self->pakfire, path, target);
+ int r = pakfire_dist(self->pakfire, path, target, &result);
if (r) {
PyErr_SetFromErrno(PyExc_OSError);
return NULL;
}
- Py_RETURN_NONE;
+ PyObject* ret = PyUnicode_FromString(result);
+ free(result);
+
+ return ret;
}
static PyObject* Pakfire_bind(PakfireObject* self, PyObject* args) {
goto ERROR;
// Write the finished package
- r = pakfire_packager_finish_to_directory(packager, target);
+ r = pakfire_packager_finish_to_directory(packager, target, NULL);
if (r) {
ERROR(pakfire, "pakfire_packager_finish() failed: %m\n");
goto ERROR;
return r;
}
-PAKFIRE_EXPORT int pakfire_dist(struct pakfire* pakfire, const char* path, const char* target) {
+PAKFIRE_EXPORT int pakfire_dist(struct pakfire* pakfire, const char* path,
+ const char* target, char** result) {
struct pakfire_parser* makefile;
struct pakfire_parser_error* error = NULL;
goto ERROR;
// Write the finished package
- r = pakfire_packager_finish_to_directory(packager, target);
+ r = pakfire_packager_finish_to_directory(packager, target, result);
if (r)
goto ERROR;
#include <pakfire/pakfire.h>
-int pakfire_dist(struct pakfire* pakfire, const char* path, const char* target);
+int pakfire_dist(struct pakfire* pakfire, const char* path, const char* target,
+ char** result);
#ifdef PAKFIRE_PRIVATE
int pakfire_packager_finish(struct pakfire_packager* packager, FILE* f);
int pakfire_packager_finish_to_directory(struct pakfire_packager* packager,
- const char* target);
+ const char* target, char** result);
int pakfire_packager_add(struct pakfire_packager* packager,
const char* sourcepath, const char* path);
}
int pakfire_packager_finish_to_directory(struct pakfire_packager* packager,
- const char* target) {
+ const char* target, char** result) {
char path[PATH_MAX];
char tmppath[PATH_MAX];
int r = 1;
INFO(packager->pakfire, "Package written to %s\n", path);
+ // Store result path if requested
+ if (result) {
+ *result = strdup(path);
+ if (!*result) {
+ r = 1;
+ goto ERROR;
+ }
+ }
+
// Success
r = 0;