From: Michael Tremer Date: Tue, 2 Aug 2022 18:07:12 +0000 (+0000) Subject: jail: Add convenience function to run simple commands X-Git-Tag: 0.9.28~616 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=82df3c777635f64be10c340ca613ec662530a929;p=pakfire.git jail: Add convenience function to run simple commands Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/include/pakfire/jail.h b/src/libpakfire/include/pakfire/jail.h index 288b824b4..b42ed12ee 100644 --- a/src/libpakfire/include/pakfire/jail.h +++ b/src/libpakfire/include/pakfire/jail.h @@ -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 */ diff --git a/src/libpakfire/jail.c b/src/libpakfire/jail.c index 22ed9eaf4..0de80e197 100644 --- a/src/libpakfire/jail.c +++ b/src/libpakfire/jail.c @@ -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; +}