From: Michael Tremer Date: Fri, 3 Jan 2025 06:03:12 +0000 (+0000) Subject: pakfire: Add openat() relative to the root X-Git-Tag: 0.9.30~579 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=45169bcc2e7b05fa57049b7f42db7e3fccb624e5;p=pakfire.git pakfire: Add openat() relative to the root Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/include/pakfire/pakfire.h b/src/libpakfire/include/pakfire/pakfire.h index ce44b64b9..4681fddb5 100644 --- a/src/libpakfire/include/pakfire/pakfire.h +++ b/src/libpakfire/include/pakfire/pakfire.h @@ -125,6 +125,8 @@ const char* pakfire_get_distro_version(struct pakfire* pakfire); const char* pakfire_get_distro_version_id(struct pakfire* pakfire); const char* pakfire_get_distro_tag(struct pakfire* pakfire); +int pakfire_openat(struct pakfire* pakfire, const char* path, int flags); + #define pakfire_path(pakfire, path, format, ...) \ __pakfire_path(pakfire, path, sizeof(path), format, __VA_ARGS__) int __pakfire_path(struct pakfire* pakfire, char* path, const size_t length, diff --git a/src/libpakfire/pakfire.c b/src/libpakfire/pakfire.c index f9a22c45d..b22f34cc7 100644 --- a/src/libpakfire/pakfire.c +++ b/src/libpakfire/pakfire.c @@ -1085,6 +1085,14 @@ PAKFIRE_EXPORT const char* pakfire_get_path(struct pakfire* pakfire) { return pakfire->path; } +int pakfire_openat(struct pakfire* pakfire, const char* path, int flags) { + // Make paths relative + while (path && *path == '/') + path++; + + return openat(pakfire->fd, path, flags); +} + int __pakfire_path(struct pakfire* pakfire, char* path, const size_t length, const char* format, ...) { char buffer[PATH_MAX];