]> git.ipfire.org Git - pakfire.git/commitdiff
packager: Set creation time and ownership for files
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 9 Mar 2021 18:10:52 +0000 (18:10 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 9 Mar 2021 18:10:52 +0000 (18:10 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/packager.c

index acdfec9fb4ab11be8adddc9e256f57aacf3f0a25..51f0643205c3e65b06d8ad39aa0df3bc084c9594 100644 (file)
@@ -24,6 +24,7 @@
 #include <stdlib.h>
 #include <sys/stat.h>
 #include <sys/types.h>
+#include <time.h>
 #include <unistd.h>
 
 #include <archive.h>
@@ -46,6 +47,7 @@
 struct pakfire_packager {
        Pakfire pakfire;
        int nrefs;
+       time_t time_created;
 
        PakfirePackage pkg;
        PakfireFilelist filelist;
@@ -204,6 +206,9 @@ PAKFIRE_EXPORT int pakfire_packager_create(struct pakfire_packager** packager,
        if (!p)
                return ENOMEM;
 
+       // Save creation time
+       p->time_created = time(NULL);
+
        // Initialize reference counting
        p->nrefs = 1;
 
@@ -295,6 +300,18 @@ static int pakfire_packager_write_file_from_buffer(struct pakfire_packager* pack
     archive_entry_set_filetype(entry, AE_IFREG);
     archive_entry_set_perm(entry, 0644);
 
+       // Set ownership
+       archive_entry_set_uname(entry, "root");
+       archive_entry_set_uid(entry, 0);
+       archive_entry_set_gname(entry, "root");
+       archive_entry_set_gid(entry, 0);
+
+       // Set times
+       archive_entry_set_birthtime(entry, packager->time_created, 0);
+       archive_entry_set_ctime(entry, packager->time_created, 0);
+       archive_entry_set_mtime(entry, packager->time_created, 0);
+       archive_entry_set_atime(entry, packager->time_created, 0);
+
        // Set length
        archive_entry_set_size(entry, strlen(buffer));