From: Michael Tremer Date: Tue, 9 Mar 2021 22:18:36 +0000 (+0000) Subject: packager: Return the filename of the result file X-Git-Tag: 0.9.28~1285^2~585 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9ce161b84bae8563069fa2700d9cc5533de2d3e9;p=pakfire.git packager: Return the filename of the result file Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/dist.c b/src/libpakfire/dist.c index 328ed52b2..0ca54341b 100644 --- a/src/libpakfire/dist.c +++ b/src/libpakfire/dist.c @@ -41,7 +41,6 @@ PAKFIRE_EXPORT int pakfire_dist(Pakfire pakfire, const char* path, const char* t struct pakfire_packager* packager = NULL; PakfirePackage pkg = NULL; - char* filename = NULL; char tempfile[PATH_MAX] = ""; // Open the target directory @@ -93,7 +92,7 @@ PAKFIRE_EXPORT int pakfire_dist(Pakfire pakfire, const char* path, const char* t FILE* f = fdopen(fd, "w"); // Write the finished package - filename = pakfire_packager_finish(packager, f); + const char* filename = pakfire_packager_finish(packager, f); if (!filename) { ERROR(pakfire, "pakfire_packager_finish() failed: %s\n", strerror(errno)); goto ERROR; @@ -111,9 +110,6 @@ ERROR: // Remove the temporary file if (*tempfile) unlink(tempfile); - - if (filename) - free(filename); closedir(d); if (packager) diff --git a/src/libpakfire/include/pakfire/packager.h b/src/libpakfire/include/pakfire/packager.h index 3b9aff264..0c667ce41 100644 --- a/src/libpakfire/include/pakfire/packager.h +++ b/src/libpakfire/include/pakfire/packager.h @@ -30,7 +30,7 @@ int pakfire_packager_create(struct pakfire_packager** packager, PakfirePackage p struct pakfire_packager* pakfire_packager_ref(struct pakfire_packager* packager); struct pakfire_packager* pakfire_packager_unref(struct pakfire_packager* packager); -char* pakfire_packager_finish(struct pakfire_packager* packager, FILE* f); +const char* pakfire_packager_finish(struct pakfire_packager* packager, FILE* f); int pakfire_packager_add(struct pakfire_packager* packager, const char* path); diff --git a/src/libpakfire/packager.c b/src/libpakfire/packager.c index f0f5974ab..4ca473e97 100644 --- a/src/libpakfire/packager.c +++ b/src/libpakfire/packager.c @@ -49,6 +49,8 @@ struct pakfire_packager { int nrefs; time_t time_created; + char filename[NAME_MAX + 1]; + PakfirePackage pkg; PakfireFilelist filelist; @@ -218,6 +220,10 @@ PAKFIRE_EXPORT int pakfire_packager_create(struct pakfire_packager** packager, // Store a reference to the package p->pkg = pakfire_package_ref(pkg); + // Create filename + snprintf(p->filename, sizeof(p->filename) - 1, + "%s.pfm", pakfire_package_get_nevra(p->pkg)); + // Create a new filelist int r = pakfire_filelist_create(&p->filelist, p->pakfire); if (r) @@ -659,7 +665,7 @@ ERROR: It will create a new archive and write the package to the given file descriptor. */ -PAKFIRE_EXPORT char* pakfire_packager_finish(struct pakfire_packager* packager, FILE* f) { +PAKFIRE_EXPORT const char* pakfire_packager_finish(struct pakfire_packager* packager, FILE* f) { char* filename = NULL; // Store total instal size @@ -704,7 +710,8 @@ PAKFIRE_EXPORT char* pakfire_packager_finish(struct pakfire_packager* packager, if (r) goto ERROR; - // XXX set filename + // Return the filename + filename = packager->filename; ERROR: if (a)