return r;
}
+int pakfire_jail_exec(struct pakfire_jail* jail,
+ pakfire_jail_callback callback, void* data, int flags) {
+ return __pakfire_jail_exec(jail, callback, data, flags, NULL, NULL, NULL, NULL, NULL, NULL);
+}
+
int pakfire_jail_exec_command(struct pakfire_jail* jail,
const char* argv[], struct pakfire_env* env, int flags) {
struct pakfire_jail_command command = {
return r;
}
+static int __callback(struct pakfire_jail* jail, void* data) {
+ int* i = data;
+
+ // Log a message
+ //INFO(jail->ctx, "Callback called, returning %d\n", *i);
+
+ return *i;
+}
+
+static int test_callback(const struct test* t) {
+ struct pakfire_jail* jail = NULL;
+ int r = EXIT_FAILURE;
+
+ int i = 123;
+
+ // Create a new jail
+ ASSERT_SUCCESS(pakfire_jail_create(&jail, t->pakfire));
+
+ // Check if we receive the correct exit code
+ ASSERT(pakfire_jail_exec(jail, __callback, &i, 0) == 123);
+
+ // Success
+ r = EXIT_SUCCESS;
+
+FAIL:
+ if (jail)
+ pakfire_jail_unref(jail);
+
+ return r;
+}
+
int main(int argc, const char* argv[]) {
testsuite_add_test(test_create, TEST_WANTS_PAKFIRE);
testsuite_add_test(test_exit_code, TEST_WANTS_PAKFIRE);
testsuite_add_test(test_communicate, TEST_WANTS_PAKFIRE);
testsuite_add_test(test_send_signal, TEST_WANTS_PAKFIRE);
testsuite_add_test(test_timeout, TEST_WANTS_PAKFIRE);
+ testsuite_add_test(test_callback, TEST_WANTS_PAKFIRE);
return testsuite_run(argc, argv);
}