From: Daan De Meyer Date: Fri, 3 Jan 2025 18:40:45 +0000 (+0100) Subject: ptyfwd: Add --read-only option X-Git-Tag: v258-rc1~1723 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=276890d6296edeed068716a381c24839118697fb;p=thirdparty%2Fsystemd.git ptyfwd: Add --read-only option --- diff --git a/man/systemd-pty-forward.xml b/man/systemd-pty-forward.xml index 84e73fc161f..9551fa8c5d0 100644 --- a/man/systemd-pty-forward.xml +++ b/man/systemd-pty-forward.xml @@ -74,6 +74,14 @@ + + + + Do not accept any user input on standard input. + + + + diff --git a/src/ptyfwd/ptyfwd-tool.c b/src/ptyfwd/ptyfwd-tool.c index faa4071fac6..3c46647e2f4 100644 --- a/src/ptyfwd/ptyfwd-tool.c +++ b/src/ptyfwd/ptyfwd-tool.c @@ -13,6 +13,7 @@ #include "strv.h" static bool arg_quiet = false; +static bool arg_read_only = false; static char *arg_background = NULL; static char *arg_title = NULL; @@ -33,6 +34,7 @@ static int help(void) { " -h --help Show this help\n" " --version Print version\n" " -q --quiet Suppress information messages during runtime\n" + " --read-only Do not accept any user input on stdin\n" " --background=COLOR Set ANSI color for background\n" " --title=TITLE Set terminal title\n" "\nSee the %2$s for details.\n", @@ -49,6 +51,7 @@ static int help(void) { static int parse_argv(int argc, char *argv[]) { enum { ARG_VERSION = 0x100, + ARG_READ_ONLY, ARG_BACKGROUND, ARG_TITLE, }; @@ -57,6 +60,7 @@ static int parse_argv(int argc, char *argv[]) { { "help", no_argument, NULL, 'h' }, { "version", no_argument, NULL, ARG_VERSION }, { "quiet", no_argument, NULL, 'q' }, + { "read-only", no_argument, NULL, ARG_READ_ONLY }, { "background", required_argument, NULL, ARG_BACKGROUND }, { "title", required_argument, NULL, ARG_TITLE }, {} @@ -81,6 +85,10 @@ static int parse_argv(int argc, char *argv[]) { arg_quiet = true; break; + case ARG_READ_ONLY: + arg_read_only = true; + break; + case ARG_BACKGROUND: r = free_and_strdup_warn(&arg_background, optarg); if (r < 0) @@ -161,7 +169,7 @@ static int run(int argc, char *argv[]) { if (!arg_quiet) log_info("Press ^] three times within 1s to disconnect TTY."); - r = pty_forward_new(event, pty_fd, /*flags=*/ 0, &forward); + r = pty_forward_new(event, pty_fd, arg_read_only ? PTY_FORWARD_READ_ONLY : 0, &forward); if (r < 0) return log_error_errno(r, "Failed to create PTY forwarder: %m");