]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
terminal-util: define ANSI_OSC as macro for the OSC terminal sequence prefix
authorLennart Poettering <lennart@poettering.net>
Thu, 31 Oct 2024 09:37:02 +0000 (10:37 +0100)
committerLennart Poettering <lennart@poettering.net>
Thu, 31 Oct 2024 10:38:18 +0000 (11:38 +0100)
src/basic/terminal-util.c
src/basic/terminal-util.h
src/shared/pretty-print.c
src/shared/ptyfwd.c

index 4172db12a5b309e8cdbc006e5f13c6bf9729b181..81c02d85a388f32c5c3decc801886611d36ba65e 100644 (file)
@@ -1923,12 +1923,12 @@ int get_default_background_color(double *ret_red, double *ret_green, double *ret
         if (tcsetattr(STDIN_FILENO, TCSADRAIN, &new_termios) < 0)
                 return -errno;
 
-        r = loop_write(STDOUT_FILENO, "\x1B]11;?" ANSI_ST, SIZE_MAX);
+        r = loop_write(STDOUT_FILENO, ANSI_OSC "11;?" ANSI_ST, SIZE_MAX);
         if (r < 0)
                 goto finish;
 
         usec_t end = usec_add(now(CLOCK_MONOTONIC), 333 * USEC_PER_MSEC);
-        char buf[STRLEN("\x1B]11;rgb:0/0/0" ANSI_ST)]; /* shortest possible reply */
+        char buf[STRLEN(ANSI_OSC "11;rgb:0/0/0" ANSI_ST)]; /* shortest possible reply */
         size_t buf_full = 0;
         BackgroundColorContext context = {};
 
index 3d02e92d0bf7c86eaa00be202068fd248d2c64d8..08d8cbac25a8057c6735ec55c78cd85f9bff937d 100644 (file)
@@ -34,6 +34,9 @@
  * use 0x1B 0x5c */
 #define ANSI_ST "\e\\"
 
+/* The "operating system command" ("OSC") start sequence */
+#define ANSI_OSC "\e]"
+
 bool isatty_safe(int fd);
 
 int terminal_reset_defensive(int fd, bool switch_to_text);
index 1e9819ab09307ca1f7f033dc4738c9d23099ab28..4e38e60775f4e496e580671e050621fe3c246aef 100644 (file)
@@ -88,7 +88,9 @@ int terminal_urlify(const char *url, const char *text, char **ret) {
                 text = url;
 
         if (urlify_enabled())
-                n = strjoin("\x1B]8;;", url, ANSI_ST, text, "\x1B]8;;" ANSI_ST);
+                n = strjoin(ANSI_OSC "8;;", url, ANSI_ST,
+                            text,
+                            ANSI_OSC "8;;" ANSI_ST);
         else
                 n = strdup(text);
         if (!n)
@@ -475,7 +477,7 @@ void draw_progress_bar_unbuffered(const char *prefix, double percentage) {
                  * https://conemu.github.io/en/AnsiEscapeCodes.html#ConEmu_specific_OSC
                  * https://github.com/microsoft/terminal/pull/8055
                  */
-                fprintf(stderr, "\x1B]9;4;1;%u" ANSI_ST, (unsigned) ceil(percentage));
+                fprintf(stderr, ANSI_OSC "9;4;1;%u" ANSI_ST, (unsigned) ceil(percentage));
 
                 size_t cols = columns();
                 size_t prefix_width = utf8_console_width(prefix) + 1 /* space */;
@@ -534,7 +536,7 @@ void clear_progress_bar_unbuffered(const char *prefix) {
                       stderr);
         else
                 /* Undo Windows Terminal progress indication again. */
-                fputs("\x1B]9;4;0;;" ANSI_ST
+                fputs(ANSI_OSC "9;4;0;;" ANSI_ST
                       ANSI_ERASE_TO_END_OF_LINE, stderr);
 
         fputc('\r', stderr);
index 34b24837ef142ce990b0ef617aec5c33193093fd..c1e3b7180b39fa05ebb3e1edd17e8a2ccb9293f9 100644 (file)
@@ -397,7 +397,7 @@ static int insert_window_title_fix(PTYForward *f, size_t offset) {
         if (!t)
                 return 0;
 
-        _cleanup_free_ char *joined = strjoin("\x1b]0;", f->title_prefix, t, ANSI_ST);
+        _cleanup_free_ char *joined = strjoin(ANSI_OSC "0;", f->title_prefix, t, ANSI_ST);
         if (!joined)
                 return -ENOMEM;
 
@@ -572,7 +572,7 @@ static int do_shovel(PTYForward *f) {
                 if (f->title) {
                         if (!strextend(&f->out_buffer,
                                        ANSI_WINDOW_TITLE_PUSH
-                                       "\x1b]2;", f->title, ANSI_ST))
+                                       ANSI_OSC "2;", f->title, ANSI_ST))
                                 return log_oom();
                 }