Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

tty: vt: define an enum for ascii characters

I didn't find definitions for ascii in the kernel yet, so define it for
non-printable characters used here.

Note we use ' ' instead of 32 on one line too.

Signed-off-by: "Jiri Slaby (SUSE)" <jirislaby@kernel.org>
Tested-by: Helge Deller <deller@gmx.de> # parisc STI console
Link: https://lore.kernel.org/r/20240122110401.7289-18-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Jiri Slaby (SUSE) and committed by
Greg Kroah-Hartman
bf9e206b 23672a57

+44 -18
+44 -18
drivers/tty/vt/vt.c
··· 2143 2143 return false; 2144 2144 } 2145 2145 2146 + enum { 2147 + ASCII_NULL = 0, 2148 + ASCII_BELL = 7, 2149 + ASCII_BACKSPACE = 8, 2150 + ASCII_IGNORE_FIRST = ASCII_BACKSPACE, 2151 + ASCII_HTAB = 9, 2152 + ASCII_LINEFEED = 10, 2153 + ASCII_VTAB = 11, 2154 + ASCII_FORMFEED = 12, 2155 + ASCII_CAR_RET = 13, 2156 + ASCII_IGNORE_LAST = ASCII_CAR_RET, 2157 + ASCII_SHIFTOUT = 14, 2158 + ASCII_SHIFTIN = 15, 2159 + ASCII_CANCEL = 24, 2160 + ASCII_SUBSTITUTE = 26, 2161 + ASCII_ESCAPE = 27, 2162 + ASCII_CSI_IGNORE_FIRST = ' ', /* 0x2x, 0x3a and 0x3c - 0x3f */ 2163 + ASCII_CSI_IGNORE_LAST = '?', 2164 + ASCII_DEL = 127, 2165 + ASCII_EXT_CSI = 128 + ASCII_ESCAPE, 2166 + }; 2167 + 2146 2168 /* console_lock is held */ 2147 2169 static void do_con_trol(struct tty_struct *tty, struct vc_data *vc, int c) 2148 2170 { ··· 2172 2150 * Control characters can be used in the _middle_ 2173 2151 * of an escape sequence, aside from ANSI control strings. 2174 2152 */ 2175 - if (ansi_control_string(vc->vc_state) && c >= 8 && c <= 13) 2153 + if (ansi_control_string(vc->vc_state) && c >= ASCII_IGNORE_FIRST && 2154 + c <= ASCII_IGNORE_LAST) 2176 2155 return; 2177 2156 switch (c) { 2178 - case 0: 2157 + case ASCII_NULL: 2179 2158 return; 2180 - case 7: 2159 + case ASCII_BELL: 2181 2160 if (ansi_control_string(vc->vc_state)) 2182 2161 vc->vc_state = ESnormal; 2183 2162 else if (vc->vc_bell_duration) 2184 2163 kd_mksound(vc->vc_bell_pitch, vc->vc_bell_duration); 2185 2164 return; 2186 - case 8: 2165 + case ASCII_BACKSPACE: 2187 2166 bs(vc); 2188 2167 return; 2189 - case 9: 2168 + case ASCII_HTAB: 2190 2169 vc->vc_pos -= (vc->state.x << 1); 2191 2170 2192 2171 vc->state.x = find_next_bit(vc->vc_tab_stop, ··· 2199 2176 vc->vc_pos += (vc->state.x << 1); 2200 2177 notify_write(vc, '\t'); 2201 2178 return; 2202 - case 10: case 11: case 12: 2179 + case ASCII_LINEFEED: 2180 + case ASCII_VTAB: 2181 + case ASCII_FORMFEED: 2203 2182 lf(vc); 2204 2183 if (!is_kbd(vc, lnm)) 2205 2184 return; 2206 2185 fallthrough; 2207 - case 13: 2186 + case ASCII_CAR_RET: 2208 2187 cr(vc); 2209 2188 return; 2210 - case 14: 2189 + case ASCII_SHIFTOUT: 2211 2190 vc->state.charset = 1; 2212 2191 vc->vc_translate = set_translate(vc->state.Gx_charset[1], vc); 2213 2192 vc->vc_disp_ctrl = 1; 2214 2193 return; 2215 - case 15: 2194 + case ASCII_SHIFTIN: 2216 2195 vc->state.charset = 0; 2217 2196 vc->vc_translate = set_translate(vc->state.Gx_charset[0], vc); 2218 2197 vc->vc_disp_ctrl = 0; 2219 2198 return; 2220 - case 24: case 26: 2199 + case ASCII_CANCEL: 2200 + case ASCII_SUBSTITUTE: 2221 2201 vc->vc_state = ESnormal; 2222 2202 return; 2223 - case 27: 2203 + case ASCII_ESCAPE: 2224 2204 vc->vc_state = ESesc; 2225 2205 return; 2226 - case 127: 2206 + case ASCII_DEL: 2227 2207 del(vc); 2228 2208 return; 2229 - case 128+27: 2209 + case ASCII_EXT_CSI: 2230 2210 vc->vc_state = ESsquare; 2231 2211 return; 2232 2212 } ··· 2364 2338 vc->vc_par[vc->vc_npar] += c - '0'; 2365 2339 return; 2366 2340 } 2367 - if (c >= 0x20 && c <= 0x3f) { /* 0x2x, 0x3a and 0x3c - 0x3f */ 2341 + if (c >= ASCII_CSI_IGNORE_FIRST && c <= ASCII_CSI_IGNORE_LAST) { 2368 2342 vc->vc_state = EScsiignore; 2369 2343 return; 2370 2344 } ··· 2526 2500 } 2527 2501 return; 2528 2502 case EScsiignore: 2529 - if (c >= 0x20 && c <= 0x3f) 2503 + if (c >= ASCII_CSI_IGNORE_FIRST && c <= ASCII_CSI_IGNORE_LAST) 2530 2504 return; 2531 2505 vc->vc_state = ESnormal; 2532 2506 return; ··· 2787 2761 * useless without them; to display an arbitrary font position use the 2788 2762 * direct-to-font zone in UTF-8 mode. 2789 2763 */ 2790 - if (c < 32) { 2764 + if (c < ' ') { 2791 2765 if (vc->vc_disp_ctrl) 2792 2766 return CTRL_ALWAYS & BIT(c); 2793 2767 else 2794 2768 return vc->vc_utf || (CTRL_ACTION & BIT(c)); 2795 2769 } 2796 2770 2797 - if (c == 127 && !vc->vc_disp_ctrl) 2771 + if (c == ASCII_DEL && !vc->vc_disp_ctrl) 2798 2772 return true; 2799 2773 2800 - if (c == 128 + 27) 2774 + if (c == ASCII_EXT_CSI) 2801 2775 return true; 2802 2776 2803 2777 return false;