]> git.ipfire.org Git - pakfire.git/commitdiff
jail: Add convenience function to run simple commands
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 2 Aug 2022 18:07:12 +0000 (18:07 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 2 Aug 2022 18:07:12 +0000 (18:07 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/include/pakfire/jail.h
src/libpakfire/jail.c

index 288b824b4bbbe35bb5a15ab4027c27d6ec691665..b42ed12ee40640b03bab108c0fe90c5b9d086c7e 100644 (file)
@@ -54,6 +54,9 @@ int pakfire_jail_exec(struct pakfire_jail* jail, const char* argv[]);
 int pakfire_jail_exec_script(struct pakfire_jail* jail,
        const char* script, const size_t size, const char* args[]);
 
+// Convenience functions
+int pakfire_jail_run(struct pakfire* pakfire, const char* argv[], int flags);
+
 #endif
 
 #endif /* PAKFIRE_JAIL_H */
index 22ed9eaf4a003ef28c156538fea1a186bbee367e..0de80e197ff02dabf37ca0f032c0f57ec6d40c99 100644 (file)
@@ -1154,3 +1154,26 @@ ERROR:
 
        return r;
 }
+
+/*
+       A convenience function that creates a new jail, runs the given command and destroys
+       the jail again.
+*/
+int pakfire_jail_run(struct pakfire* pakfire, const char* argv[], int flags) {
+       struct pakfire_jail* jail = NULL;
+       int r;
+
+       // Create a new jail
+       r = pakfire_jail_create(&jail, pakfire, flags);
+       if (r)
+               goto ERROR;
+
+       // Execute the command
+       r = pakfire_jail_exec(jail, argv);
+
+ERROR:
+       if (jail)
+               pakfire_jail_unref(jail);
+
+       return r;
+}