- (djm) [ttymodes.c] bugzilla #1054: Fix encoding of _POSIX_VDISABLE,
from Jacob Nevins; ok dtucker@
This commit is contained in:
parent
c1819c831f
commit
1d10976c16
|
@ -1,3 +1,7 @@
|
||||||
|
20050816
|
||||||
|
- (djm) [ttymodes.c] bugzilla #1054: Fix encoding of _POSIX_VDISABLE,
|
||||||
|
from Jacob Nevins; ok dtucker@
|
||||||
|
|
||||||
20050815
|
20050815
|
||||||
- (tim) [sftp.c] wrap el_end() in #ifdef USE_LIBEDIT
|
- (tim) [sftp.c] wrap el_end() in #ifdef USE_LIBEDIT
|
||||||
- (tim) [configure.ac] corrections to libedit tests. Report and patches
|
- (tim) [configure.ac] corrections to libedit tests. Report and patches
|
||||||
|
@ -2937,4 +2941,4 @@
|
||||||
- (djm) Trim deprecated options from INSTALL. Mention UsePAM
|
- (djm) Trim deprecated options from INSTALL. Mention UsePAM
|
||||||
- (djm) Fix quote handling in sftp; Patch from admorten AT umich.edu
|
- (djm) Fix quote handling in sftp; Patch from admorten AT umich.edu
|
||||||
|
|
||||||
$Id: ChangeLog,v 1.3873 2005/08/16 00:48:40 tim Exp $
|
$Id: ChangeLog,v 1.3874 2005/08/16 11:32:09 djm Exp $
|
||||||
|
|
30
ttymodes.c
30
ttymodes.c
|
@ -240,6 +240,32 @@ baud_to_speed(int baud)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Encode a special character into SSH line format.
|
||||||
|
*/
|
||||||
|
static u_int
|
||||||
|
special_char_encode(cc_t c)
|
||||||
|
{
|
||||||
|
#ifdef _POSIX_VDISABLE
|
||||||
|
if (c == _POSIX_VDISABLE)
|
||||||
|
return 255;
|
||||||
|
#endif /* _POSIX_VDISABLE */
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Decode a special character from SSH line format.
|
||||||
|
*/
|
||||||
|
static cc_t
|
||||||
|
special_char_decode(u_int c)
|
||||||
|
{
|
||||||
|
#ifdef _POSIX_VDISABLE
|
||||||
|
if (c == 255)
|
||||||
|
return _POSIX_VDISABLE;
|
||||||
|
#endif /* _POSIX_VDISABLE */
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Encodes terminal modes for the terminal referenced by fd
|
* Encodes terminal modes for the terminal referenced by fd
|
||||||
* or tiop in a portable manner, and appends the modes to a packet
|
* or tiop in a portable manner, and appends the modes to a packet
|
||||||
|
@ -287,7 +313,7 @@ tty_make_modes(int fd, struct termios *tiop)
|
||||||
#define TTYCHAR(NAME, OP) \
|
#define TTYCHAR(NAME, OP) \
|
||||||
debug3("tty_make_modes: %d %d", OP, tio.c_cc[NAME]); \
|
debug3("tty_make_modes: %d %d", OP, tio.c_cc[NAME]); \
|
||||||
buffer_put_char(&buf, OP); \
|
buffer_put_char(&buf, OP); \
|
||||||
put_arg(&buf, tio.c_cc[NAME]);
|
put_arg(&buf, special_char_encode(tio.c_cc[NAME]));
|
||||||
|
|
||||||
#define TTYMODE(NAME, FIELD, OP) \
|
#define TTYMODE(NAME, FIELD, OP) \
|
||||||
debug3("tty_make_modes: %d %d", OP, ((tio.FIELD & NAME) != 0)); \
|
debug3("tty_make_modes: %d %d", OP, ((tio.FIELD & NAME) != 0)); \
|
||||||
|
@ -375,7 +401,7 @@ tty_parse_modes(int fd, int *n_bytes_ptr)
|
||||||
#define TTYCHAR(NAME, OP) \
|
#define TTYCHAR(NAME, OP) \
|
||||||
case OP: \
|
case OP: \
|
||||||
n_bytes += arg_size; \
|
n_bytes += arg_size; \
|
||||||
tio.c_cc[NAME] = get_arg(); \
|
tio.c_cc[NAME] = special_char_decode(get_arg()); \
|
||||||
debug3("tty_parse_modes: %d %d", OP, tio.c_cc[NAME]); \
|
debug3("tty_parse_modes: %d %d", OP, tio.c_cc[NAME]); \
|
||||||
break;
|
break;
|
||||||
#define TTYMODE(NAME, FIELD, OP) \
|
#define TTYMODE(NAME, FIELD, OP) \
|
||||||
|
|
Loading…
Reference in New Issue