diff options
Diffstat (limited to 'x11/rxvt-unicode/files/patch-src__command.C')
-rw-r--r-- | x11/rxvt-unicode/files/patch-src__command.C | 218 |
1 files changed, 218 insertions, 0 deletions
diff --git a/x11/rxvt-unicode/files/patch-src__command.C b/x11/rxvt-unicode/files/patch-src__command.C index 25c7d46e46c5..745b72161791 100644 --- a/x11/rxvt-unicode/files/patch-src__command.C +++ b/x11/rxvt-unicode/files/patch-src__command.C @@ -17,4 +17,222 @@ +#endif break; } + +@@ -3044,8 +3044,13 @@ rxvt_term::process_csi_seq () + tt_printf ("%-.250s\012", rs[Rs_display_name]); + break; + case 8: /* unofficial extension */ +- process_xterm_seq (XTerm_title, (char *)RESNAME "-" VERSION, CHAR_ST); // char * cast verified +- break; ++ { ++ string_term st; ++ st.v[0] = CHAR_ST; ++ st.v[1] = '\0'; ++ process_xterm_seq (XTerm_title, (char *)RESNAME "-" VERSION, st); // char * cast verified ++ break; ++ } + } + break; + +@@ -3240,7 +3245,7 @@ char * + * ends_how is terminator used. returned input must be free()'d + */ + char * +-rxvt_term::get_to_st (unicode_t &ends_how) ++rxvt_term::get_to_st (string_term &st) + { + unicode_t ch; + bool seen_esc = false; +@@ -3279,7 +3284,11 @@ rxvt_term::get_to_st (unicode_t &ends_how) + + string[n++] = '\0'; + +- ends_how = (ch == 0x5c ? C0_ESC : ch); ++ n = 0; ++ if (ch == 0x5c) ++ st.v[n++] = C0_ESC; ++ st.v[n++] = ch; ++ st.v[n] = '\0'; + + return rxvt_wcstombs (string); + } +@@ -3295,8 +3304,8 @@ rxvt_term::process_dcs_seq () + * Not handled yet + */ + +- unicode_t eh; +- char *s = get_to_st (eh); ++ string_term st; ++ char *s = get_to_st (st); + if (s) + free (s); + +@@ -3318,12 +3327,12 @@ rxvt_term::process_osc_seq () + + if (ch == ';') + { +- unicode_t eh; +- char *s = get_to_st (eh); ++ string_term st; ++ char *s = get_to_st (st); + + if (s) + { +- process_xterm_seq (arg, s, eh); ++ process_xterm_seq (arg, s, st); + free (s); + } + } +@@ -3433,7 +3442,7 @@ void + } + + void +-rxvt_term::process_color_seq (int report, int color, const char *str, char resp) ++rxvt_term::process_color_seq (int report, int color, const char *str, string_term &st) + { + if (str[0] == '?' && !str[1]) + { +@@ -3449,9 +3458,9 @@ rxvt_term::process_color_seq (int report, int color, c + snprintf (rgba_str, sizeof (rgba_str), "rgb:%04x/%04x/%04x", c.r, c.g, c.b); + + if (IN_RANGE_INC (color, minCOLOR, maxTermCOLOR)) +- tt_printf ("\033]%d;%d;%s%c", report, color - minCOLOR, rgba_str, resp); ++ tt_printf ("\033]%d;%d;%s%s", report, color - minCOLOR, rgba_str, st.v); + else +- tt_printf ("\033]%d;%s%c", report, rgba_str, resp); ++ tt_printf ("\033]%d;%s%s", report, rgba_str, st.v); + } + else + set_window_color (color, str); +@@ -3461,7 +3470,7 @@ void + * XTerm escape sequences: ESC ] Ps;Pt (ST|BEL) + */ + void +-rxvt_term::process_xterm_seq (int op, char *str, char resp) ++rxvt_term::process_xterm_seq (int op, char *str, string_term &st) + { + int color; + char *buf, *name; +@@ -3506,7 +3515,7 @@ rxvt_term::process_xterm_seq (int op, char *str, char + && actual_format == 8) + str = (const char *)(value); + +- tt_printf ("\033]%d;%s%c", op, option (Opt_insecure) ? str : "", resp); ++ tt_printf ("\033]%d;%s%s", op, option (Opt_insecure) ? str : "", st.v); + + XFree (value); + } +@@ -3540,49 +3549,49 @@ rxvt_term::process_xterm_seq (int op, char *str, char + if ((buf = strchr (name, ';')) != NULL) + *buf++ = '\0'; + +- process_color_seq (op, color, name, resp); ++ process_color_seq (op, color, name, st); + } + break; + case Rxvt_restoreFG: + case XTerm_Color00: +- process_color_seq (op, Color_fg, str, resp); ++ process_color_seq (op, Color_fg, str, st); + break; + case Rxvt_restoreBG: + case XTerm_Color01: +- process_color_seq (op, Color_bg, str, resp); ++ process_color_seq (op, Color_bg, str, st); + break; + #ifndef NO_CURSORCOLOR + case XTerm_Color_cursor: +- process_color_seq (op, Color_cursor, str, resp); ++ process_color_seq (op, Color_cursor, str, st); + break; + #endif + case XTerm_Color_pointer_fg: +- process_color_seq (op, Color_pointer_fg, str, resp); ++ process_color_seq (op, Color_pointer_fg, str, st); + break; + case XTerm_Color_pointer_bg: +- process_color_seq (op, Color_pointer_bg, str, resp); ++ process_color_seq (op, Color_pointer_bg, str, st); + break; + #ifdef OPTION_HC + case XTerm_Color_HC: +- process_color_seq (op, Color_HC, str, resp); ++ process_color_seq (op, Color_HC, str, st); + break; + case XTerm_Color_HTC: +- process_color_seq (op, Color_HTC, str, resp); ++ process_color_seq (op, Color_HTC, str, st); + break; + #endif + #ifndef NO_BOLD_UNDERLINE_REVERSE + case URxvt_Color_BD: +- process_color_seq (op, Color_BD, str, resp); ++ process_color_seq (op, Color_BD, str, st); + break; + case URxvt_Color_UL: +- process_color_seq (op, Color_UL, str, resp); ++ process_color_seq (op, Color_UL, str, st); + break; + case URxvt_Color_IT: +- process_color_seq (op, Color_IT, str, resp); ++ process_color_seq (op, Color_IT, str, st); + break; + #endif + case URxvt_Color_border: +- process_color_seq (op, Color_border, str, resp); ++ process_color_seq (op, Color_border, str, st); + break; + + case XTerm_logfile: +@@ -3610,10 +3619,10 @@ rxvt_term::process_xterm_seq (int op, char *str, char + case URxvt_boldItalicFont: + #endif + if (query) +- tt_printf ("\33]%d;%-.250s%c", saveop, ++ tt_printf ("\33]%d;%-.250s%s", saveop, + option (Opt_insecure) && fontset[op - URxvt_font]->fontdesc + ? fontset[op - URxvt_font]->fontdesc : "", +- resp); ++ st.v); + else + { + const char *&res = rs[Rs_font + (op - URxvt_font)]; +@@ -3626,23 +3635,23 @@ rxvt_term::process_xterm_seq (int op, char *str, char + + case URxvt_version: + if (query) +- tt_printf ("\33]%d;rxvt-unicode;%-.20s;%c;%c%c", ++ tt_printf ("\33]%d;rxvt-unicode;%-.20s;%c;%c%s", + op, + rs[Rs_name], VERSION[0], VERSION[2], +- resp); ++ st.v); + break; + + #if !ENABLE_MINIMAL + case URxvt_cellinfo: + if (query) +- tt_printf ("\33]%d;%d;%d;%d%c", saveop, ++ tt_printf ("\33]%d;%d;%d;%d%s", saveop, + fwidth, fheight, fbase, +- resp); ++ st.v); + break; + + case URxvt_locale: + if (query) +- tt_printf ("\33]%d;%-.250s%c", op, option (Opt_insecure) ? locale : "", resp); ++ tt_printf ("\33]%d;%-.250s%s", op, option (Opt_insecure) ? locale : "", st.v); + else + { + set_locale (str); +@@ -3667,7 +3676,7 @@ rxvt_term::process_xterm_seq (int op, char *str, char + + #if ENABLE_PERL + case URxvt_perl: +- HOOK_INVOKE ((this, HOOK_OSC_SEQ_PERL, DT_STR, str, DT_STR_LEN, &resp, 1, DT_END)); ++ HOOK_INVOKE ((this, HOOK_OSC_SEQ_PERL, DT_STR, str, DT_STR, st.v, DT_END)); + break; + #endif + } |