int pakfire_jail_set_env(struct pakfire_jail* jail, const char* key, const char* value);
int pakfire_jail_import_env(struct pakfire_jail* jail, const char* env[]);
+// Standard Input
+typedef int (*pakfire_jail_stdin_callback)
+ (struct pakfire_jail* jail, void* data, int fd);
+void pakfire_jail_set_stdin_callback(struct pakfire_jail* jail,
+ pakfire_jail_stdin_callback callback, void* data);
+
+// Standard Output
+typedef int (*pakfire_jail_stdout_callback)
+ (struct pakfire_jail* jail, void* data, const char* line, const size_t length);
+void pakfire_jail_set_stdout_callback(struct pakfire_jail* jail,
+ pakfire_jail_stdout_callback callback, void* data);
+
// Execute
typedef int (*pakfire_jail_communicate_in)
(struct pakfire* pakfire, void* data, int fd);
// Environment
char* env[ENVIRON_SIZE];
+ struct pakfire_jail_callbacks {
+ // Standard Input
+ struct pakfire_jail_callbacks_stdin {
+ pakfire_jail_stdin_callback callback;
+ void* data;
+ } stdin;
+
+ // Standard Output
+ struct pakfire_jail_callbacks_stdout {
+ pakfire_jail_stdout_callback callback;
+ void* data;
+ } stdout;
+ } callbacks;
+
// Mountpoints
struct pakfire_jail_mountpoint mountpoints[MAX_MOUNTPOINTS];
unsigned int num_mountpoints;
return -1;
}
+/*
+ Standard Input
+*/
+PAKFIRE_EXPORT void pakfire_jail_set_stdin_callback(struct pakfire_jail* jail,
+ pakfire_jail_stdin_callback callback, void* data) {
+ jail->callbacks.stdin.callback = callback;
+ jail->callbacks.stdin.data = data;
+}
+
+/*
+ Standard Output
+*/
+PAKFIRE_EXPORT void pakfire_jail_set_stdout_callback(struct pakfire_jail* jail,
+ pakfire_jail_stdout_callback callback, void* data) {
+ jail->callbacks.stdout.callback = callback;
+ jail->callbacks.stdout.data = data;
+}
+
/*
This function replaces any logging in the child process.
pakfire_jail_nice;
pakfire_jail_ref;
pakfire_jail_set_env;
+ pakfire_jail_set_stdin_callback;
+ pakfire_jail_set_stdout_callback;
pakfire_jail_set_timeout;
pakfire_jail_unref;