]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
ptyfwd: Add --read-only option
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Fri, 3 Jan 2025 18:40:45 +0000 (19:40 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Fri, 3 Jan 2025 20:14:47 +0000 (21:14 +0100)
man/systemd-pty-forward.xml
src/ptyfwd/ptyfwd-tool.c

index 84e73fc161f04e9b8e932c99ead9262658c06aad..9551fa8c5d0b2dea119c77426117c43b612ffcb0 100644 (file)
         <xi:include href="version-info.xml" xpointer="v258"/></listitem>
       </varlistentry>
 
+      <varlistentry>
+        <term><option>--read-only</option></term>
+
+        <listitem><para>Do not accept any user input on standard input.</para>
+
+        <xi:include href="version-info.xml" xpointer="v258"/></listitem>
+      </varlistentry>
+
       <xi:include href="standard-options.xml" xpointer="help"/>
       <xi:include href="standard-options.xml" xpointer="version"/>
     </variablelist>
index faa4071fac6078221c0c8747377c628c45d8d226..3c46647e2f41eaee02d5e88ab0b626fd768c3c60 100644 (file)
@@ -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");