]> git.ipfire.org Git - pakfire.git/commitdiff
file: Add easy way to edit permissions
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 23 Aug 2022 16:41:35 +0000 (16:41 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 23 Aug 2022 16:41:35 +0000 (16:41 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/file.c
src/libpakfire/include/pakfire/file.h
src/libpakfire/libpakfire.sym

index 03f17e7eaec8a8aaffe0c476dc6d38d8f78bd3ca..17012a5e9c6f1cf62bae647f8a8c66acde485026 100644 (file)
@@ -371,6 +371,18 @@ PAKFIRE_EXPORT void pakfire_file_set_mode(struct pakfire_file* file, mode_t mode
        file->mode = mode;
 }
 
+PAKFIRE_EXPORT mode_t pakfire_file_get_perms(struct pakfire_file* file) {
+       return file->mode & ~AE_IFMT;
+}
+
+PAKFIRE_EXPORT void pakfire_file_set_perms(struct pakfire_file* file, const mode_t perms) {
+       // Clear any previous permissions
+       file->mode &= S_IFMT;
+
+       // Set new bits (with format cleared)
+       file->mode |= ~S_IFMT & perms;
+}
+
 PAKFIRE_EXPORT dev_t pakfire_file_get_dev(struct pakfire_file* file) {
        return file->dev;
 }
index accb6e2b9c251c4ac840ba46565d1d88c65a7bac..6ea3250bb7cf22fefdbc82b2a077e05ff7f7d955 100644 (file)
@@ -58,6 +58,9 @@ int pakfire_file_set_group(struct pakfire_file* file, const char* group);
 mode_t pakfire_file_get_mode(struct pakfire_file* file);
 void pakfire_file_set_mode(struct pakfire_file* file, mode_t mode);
 
+mode_t pakfire_file_get_perms(struct pakfire_file* file);
+void pakfire_file_set_perms(struct pakfire_file* file, const mode_t perms);
+
 dev_t pakfire_file_get_dev(struct pakfire_file* file);
 void pakfire_file_set_dev(struct pakfire_file* file, dev_t dev);
 
index 34ef59c7baf5db84fbd60cf86b2e05672903da53..162c5cac4458c1a5e5bfa2659c13ce6ceada9e99 100644 (file)
@@ -86,6 +86,7 @@ global:
        pakfire_file_get_mode;
        pakfire_file_get_mtime;
        pakfire_file_get_path;
+       pakfire_file_get_perms;
        pakfire_file_get_size;
        pakfire_file_get_time;
        pakfire_file_get_type;
@@ -96,6 +97,7 @@ global:
        pakfire_file_set_mode;
        pakfire_file_set_mtime;
        pakfire_file_set_path;
+       pakfire_file_set_perms;
        pakfire_file_set_size;
        pakfire_file_set_time;
        pakfire_file_set_user;