]> git.ipfire.org Git - pakfire.git/blobdiff - src/libpakfire/include/pakfire/jail.h
jail: Make PTY forwarding a flag and remove interactive bool
[pakfire.git] / src / libpakfire / include / pakfire / jail.h
index b6b1eb90100aa93adedb29619e45a4541e8fef26..d5d2feb2a3d836675d2dda3b42289e7459add413 100644 (file)
 
 struct pakfire_jail;
 
-enum pakfire_jail_flags {
-       PAKFIRE_JAIL_NONE                       = 0,
-};
+typedef int (*pakfire_jail_log_callback)
+       (struct pakfire* pakfire, void* data, int priority, const char* line, size_t length);
 
-int pakfire_jail_create(struct pakfire_jail** jail, struct pakfire* pakfire, int flags);
+int pakfire_jail_create(struct pakfire_jail** jail, struct pakfire* pakfire);
 
 struct pakfire_jail* pakfire_jail_ref(struct pakfire_jail* jail);
 struct pakfire_jail* pakfire_jail_unref(struct pakfire_jail* jail);
@@ -38,46 +37,69 @@ struct pakfire_jail* pakfire_jail_unref(struct pakfire_jail* jail);
 int pakfire_jail_bind(struct pakfire_jail* jail,
        const char* source, const char* target, int flags);
 
+// Callbacks
+void pakfire_jail_set_log_callback(struct pakfire_jail* jail,
+       pakfire_jail_log_callback callback, void* data);
+
 // Resource Limits
 int pakfire_jail_nice(struct pakfire_jail* jail, int nice);
 
+// Timeout
+int pakfire_jail_set_timeout(struct pakfire_jail* jail, unsigned int timeout);
+
 // Environment
 const char* pakfire_jail_get_env(struct pakfire_jail* jail, const char* key);
 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[]);
 
 // Execute
-int pakfire_jail_exec(struct pakfire_jail* jail, const char* argv[], char** output);
-int pakfire_jail_exec_script(struct pakfire_jail* jail,
-       const char* script, const size_t size, const char* args[], char** output);
-
-// Communicate
 typedef int (*pakfire_jail_communicate_in)
        (struct pakfire* pakfire, void* data, int fd);
 typedef int (*pakfire_jail_communicate_out)
        (struct pakfire* pakfire, void* data, int priority, const char* line, const size_t length);
 
-int pakfire_jail_exec_communicate(
+enum pakfire_jail_exec_flags {
+       PAKFIRE_JAIL_PTY_FORWARDING   = (1 << 0),
+       PAKFIRE_JAIL_HAS_NETWORKING   = (1 << 1),
+       PAKFIRE_JAIL_NOENT_OK         = (1 << 2),
+       PAKFIRE_JAIL_HAS_LOOP_DEVICES = (1 << 3),
+};
+
+int pakfire_jail_exec(
        struct pakfire_jail* jail,
        const char* argv[],
        pakfire_jail_communicate_in  callback_in,
        pakfire_jail_communicate_out callback_out,
-       void* data);
+       void* data,
+       int flags);
 
 #ifdef PAKFIRE_PRIVATE
 
 #include <pakfire/cgroup.h>
 
+// Capture
+int pakfire_jail_capture_stdout(struct pakfire* pakfire, void* data,
+       int priority, const char* line, size_t length);
+
 // Resource limits
 int pakfire_jail_set_cgroup(struct pakfire_jail* jail, struct pakfire_cgroup* cgroup);
 
 // Convenience functions
 int pakfire_jail_run(struct pakfire* pakfire, const char* argv[], int flags, char** output);
 int pakfire_jail_run_script(struct pakfire* pakfire,
-       const char* script, const size_t length, const char* argv[], int flags, char** output);
+       const char* script, const size_t length, const char* argv[], int flags);
+
+int pakfire_jail_exec_script(struct pakfire_jail* jail,
+       const char* script,
+       const size_t size,
+       const char* args[],
+       pakfire_jail_communicate_in  callback_in,
+       pakfire_jail_communicate_out callback_out,
+       void* data);
 
 int pakfire_jail_shell(struct pakfire_jail* jail);
 int pakfire_jail_ldconfig(struct pakfire* pakfire);
+int pakfire_jail_run_systemd_tmpfiles(struct pakfire* pakfire);
 
 #endif /* PAKFIRE_PRIVATE */