]> git.ipfire.org Git - pakfire.git/commitdiff
packager: Return the filename of the result file
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 9 Mar 2021 22:18:36 +0000 (22:18 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 9 Mar 2021 22:18:36 +0000 (22:18 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/dist.c
src/libpakfire/include/pakfire/packager.h
src/libpakfire/packager.c

index 328ed52b2a08fac2dc671fd24166e291e7dbc638..0ca54341b0aeef7ff83eb3ac56635541b44b35f4 100644 (file)
@@ -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)
index 3b9aff264cf29cc0d836f6bdb5eb7991f32ab01c..0c667ce4108ade70871c6e613a98c927ec252fee 100644 (file)
@@ -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);
 
index f0f5974abb843d54d46a22d744817a7f4658bbaf..4ca473e97e43060cfad1520c3d1b9654edd7eba3 100644 (file)
@@ -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)