]> git.ipfire.org Git - pakfire.git/commitdiff
pakfire: Add openat() relative to the root
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 3 Jan 2025 06:03:12 +0000 (06:03 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 3 Jan 2025 06:03:12 +0000 (06:03 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/include/pakfire/pakfire.h
src/libpakfire/pakfire.c

index ce44b64b9f2e00965d05c1067f66099d0597217d..4681fddb5f7f5f8a62921e190fcc256f73bc8e21 100644 (file)
@@ -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,
index f9a22c45def4ac922f35e30a652da1b9a6b29772..b22f34cc74c6c989f8002a13d34a886be959350e 100644 (file)
@@ -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];