From: Michael Tremer Date: Tue, 23 Aug 2022 16:41:35 +0000 (+0000) Subject: file: Add easy way to edit permissions X-Git-Tag: 0.9.28~390 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=134545d591ad762d71a3130f9182931dfade13aa;p=pakfire.git file: Add easy way to edit permissions Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/file.c b/src/libpakfire/file.c index 03f17e7ea..17012a5e9 100644 --- a/src/libpakfire/file.c +++ b/src/libpakfire/file.c @@ -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; } diff --git a/src/libpakfire/include/pakfire/file.h b/src/libpakfire/include/pakfire/file.h index accb6e2b9..6ea3250bb 100644 --- a/src/libpakfire/include/pakfire/file.h +++ b/src/libpakfire/include/pakfire/file.h @@ -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); diff --git a/src/libpakfire/libpakfire.sym b/src/libpakfire/libpakfire.sym index 34ef59c7b..162c5cac4 100644 --- a/src/libpakfire/libpakfire.sym +++ b/src/libpakfire/libpakfire.sym @@ -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;