From: Lennart Poettering Date: Thu, 31 Oct 2024 09:10:37 +0000 (+0100) Subject: ptyfwd: document why we only honour two of the three kinds of ST X-Git-Tag: v257-rc1~61^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=de0ebee637636400a73b0d966f18a8826796f87d;p=thirdparty%2Fsystemd.git ptyfwd: document why we only honour two of the three kinds of ST --- diff --git a/src/shared/ptyfwd.c b/src/shared/ptyfwd.c index 11701f67687..34b24837ef1 100644 --- a/src/shared/ptyfwd.c +++ b/src/shared/ptyfwd.c @@ -507,11 +507,16 @@ static int pty_forward_ansi_process(PTYForward *f, size_t offset) { } else { /* Otherwise, the OSC sequence is over * - * There are two allowed ways to end an OSC sequence: - * BEL '\x07' - * String Terminator (ST): \ - "\x1b\x5c" - * since we cannot lookahead to see if the Esc is followed by a \ - * we cut a corner here and assume it will be \. */ + * There are three documented ways to end an OSC sequence: + * 1. BEL aka ^G aka \x07 + * 2. \x9c + * 3. \x1b\x5c + * since we cannot look ahead to see if the Esc is followed by a "\" + * we cut a corner here and assume it will be "\"e. + * + * Note that we do not support \x9c here, because that's also a valid UTF8 + * codepoint, and that would create ambiguity. Various terminal emulators + * similar do not support it. */ if (IN_SET(c, '\x07', '\x1b')) { r = insert_window_title_fix(f, i+1);