pakfire_jail_stdout_callback callback, void* data);
enum pakfire_jail_exec_flags {
- PAKFIRE_JAIL_PTY_FORWARDING = (1 << 0),
+ PAKFIRE_JAIL_INTERACTIVE = (1 << 0),
PAKFIRE_JAIL_HAS_NETWORKING = (1 << 1),
PAKFIRE_JAIL_NOENT_OK = (1 << 2),
PAKFIRE_JAIL_HAS_LOOP_DEVICES = (1 << 3),
goto ERROR;
}
- // Enable networking in interactive mode
- if (ctx.flags & PAKFIRE_JAIL_PTY_FORWARDING)
+ // Are we running in interactive mode?
+ if (pakfire_jail_exec_has_flag(&ctx, PAKFIRE_JAIL_INTERACTIVE)) {
+ // Enable networking
ctx.flags |= PAKFIRE_JAIL_HAS_NETWORKING;
+ } else {
+ // Make the PTY read-only
+ pty_flags |= PAKFIRE_PTY_READ_ONLY;
+ }
+
/*
Setup a file descriptor which can be used to notify the client that the parent
has completed configuration.
struct pakfire_jail* jail, const char* argv[], int flags) {
int r;
- flags |= PAKFIRE_JAIL_PTY_FORWARDING;
+ flags |= PAKFIRE_JAIL_INTERACTIVE;
// Setup interactive stuff
r = pakfire_jail_setup_interactive_env(jail);