|
Lines 241-246
Link Here
|
| 241 |
} |
241 |
} |
| 242 |
|
242 |
|
| 243 |
/* |
243 |
/* |
|
|
244 |
* Encode a special character into SSH line format. |
| 245 |
*/ |
| 246 |
static u_int |
| 247 |
special_char_encode(cc_t c) |
| 248 |
{ |
| 249 |
#ifdef _POSIX_VDISABLE |
| 250 |
if (c == _POSIX_VDISABLE) |
| 251 |
return 255; |
| 252 |
#endif /* _POSIX_VDISABLE */ |
| 253 |
return c; |
| 254 |
} |
| 255 |
|
| 256 |
/* |
| 257 |
* Decode a special character from SSH line format. |
| 258 |
*/ |
| 259 |
static cc_t |
| 260 |
special_char_decode(u_int c) |
| 261 |
{ |
| 262 |
#ifdef _POSIX_VDISABLE |
| 263 |
if (c == 255) |
| 264 |
return _POSIX_VDISABLE; |
| 265 |
#endif /* _POSIX_VDISABLE */ |
| 266 |
return c; |
| 267 |
} |
| 268 |
|
| 269 |
/* |
| 244 |
* Encodes terminal modes for the terminal referenced by fd |
270 |
* Encodes terminal modes for the terminal referenced by fd |
| 245 |
* or tiop in a portable manner, and appends the modes to a packet |
271 |
* or tiop in a portable manner, and appends the modes to a packet |
| 246 |
* being constructed. |
272 |
* being constructed. |
|
Lines 287-293
Link Here
|
| 287 |
#define TTYCHAR(NAME, OP) \ |
313 |
#define TTYCHAR(NAME, OP) \ |
| 288 |
debug3("tty_make_modes: %d %d", OP, tio.c_cc[NAME]); \ |
314 |
debug3("tty_make_modes: %d %d", OP, tio.c_cc[NAME]); \ |
| 289 |
buffer_put_char(&buf, OP); \ |
315 |
buffer_put_char(&buf, OP); \ |
| 290 |
put_arg(&buf, tio.c_cc[NAME]); |
316 |
put_arg(&buf, special_char_encode(tio.c_cc[NAME])); |
| 291 |
|
317 |
|
| 292 |
#define TTYMODE(NAME, FIELD, OP) \ |
318 |
#define TTYMODE(NAME, FIELD, OP) \ |
| 293 |
debug3("tty_make_modes: %d %d", OP, ((tio.FIELD & NAME) != 0)); \ |
319 |
debug3("tty_make_modes: %d %d", OP, ((tio.FIELD & NAME) != 0)); \ |
|
Lines 375-381
Link Here
|
| 375 |
#define TTYCHAR(NAME, OP) \ |
401 |
#define TTYCHAR(NAME, OP) \ |
| 376 |
case OP: \ |
402 |
case OP: \ |
| 377 |
n_bytes += arg_size; \ |
403 |
n_bytes += arg_size; \ |
| 378 |
tio.c_cc[NAME] = get_arg(); \ |
404 |
tio.c_cc[NAME] = special_char_decode(get_arg()); \ |
| 379 |
debug3("tty_parse_modes: %d %d", OP, tio.c_cc[NAME]); \ |
405 |
debug3("tty_parse_modes: %d %d", OP, tio.c_cc[NAME]); \ |
| 380 |
break; |
406 |
break; |
| 381 |
#define TTYMODE(NAME, FIELD, OP) \ |
407 |
#define TTYMODE(NAME, FIELD, OP) \ |