From: Michael Tremer Date: Thu, 22 Jul 2021 13:21:50 +0000 (+0000) Subject: dist: Return the name of the generated file X-Git-Tag: 0.9.28~1021 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=45448dbd99ea7bb952813a7333190578a84a4052;p=pakfire.git dist: Return the name of the generated file Signed-off-by: Michael Tremer --- diff --git a/src/_pakfire/pakfire.c b/src/_pakfire/pakfire.c index 33868f5ea..61b4291cf 100644 --- a/src/_pakfire/pakfire.c +++ b/src/_pakfire/pakfire.c @@ -818,17 +818,21 @@ static PyObject* Pakfire_execute(PakfireObject* self, PyObject* args, PyObject* 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) { diff --git a/src/libpakfire/build.c b/src/libpakfire/build.c index 75426ba1d..28ef1069b 100644 --- a/src/libpakfire/build.c +++ b/src/libpakfire/build.c @@ -632,7 +632,7 @@ static int pakfire_build_package(struct pakfire* pakfire, struct pakfire_parser* 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; diff --git a/src/libpakfire/dist.c b/src/libpakfire/dist.c index ca5c4105a..74e6b5ce0 100644 --- a/src/libpakfire/dist.c +++ b/src/libpakfire/dist.c @@ -365,7 +365,8 @@ 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; @@ -412,7 +413,7 @@ PAKFIRE_EXPORT int pakfire_dist(struct pakfire* pakfire, const char* path, const 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; diff --git a/src/libpakfire/include/pakfire/dist.h b/src/libpakfire/include/pakfire/dist.h index 417d308b0..cec64bcff 100644 --- a/src/libpakfire/include/pakfire/dist.h +++ b/src/libpakfire/include/pakfire/dist.h @@ -23,7 +23,8 @@ #include -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 diff --git a/src/libpakfire/include/pakfire/packager.h b/src/libpakfire/include/pakfire/packager.h index 611fc190f..473367db1 100644 --- a/src/libpakfire/include/pakfire/packager.h +++ b/src/libpakfire/include/pakfire/packager.h @@ -37,7 +37,7 @@ const char* pakfire_packager_filename(struct pakfire_packager* packager); 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); diff --git a/src/libpakfire/packager.c b/src/libpakfire/packager.c index 6553549d7..48634cb50 100644 --- a/src/libpakfire/packager.c +++ b/src/libpakfire/packager.c @@ -902,7 +902,7 @@ ERROR: } 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; @@ -959,6 +959,15 @@ int pakfire_packager_finish_to_directory(struct pakfire_packager* packager, 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;