s390/sclp_vt220: Convert newlines to CRLF instead of LFCR
According to the VT220 specification the possible character combinations
sent on RETURN are only CR or CRLF [0].
The Return key sends either a CR character (0/13) or a CR
character (0/13) and an LF character (0/10), depending on the
set/reset state of line feed/new line mode (LNM).
The sclp/vt220 driver however uses LFCR. This can confuse tools, for
example the kunit runner.
Link: https://vt100.net/docs/vt220-rm/chapter3.html#S3.2
Fixes: 1da177e4c3
("Linux-2.6.12-rc2")
Cc: stable@vger.kernel.org
Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
Reviewed-by: Sven Schnelle <svens@linux.ibm.com>
Link: https://lore.kernel.org/r/20241014-s390-kunit-v1-2-941defa765a6@linutronix.de
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
This commit is contained in:
parent
0d9dc27df2
commit
dee3df68ab
@ -319,7 +319,7 @@ sclp_vt220_add_msg(struct sclp_vt220_request *request,
|
|||||||
buffer = (void *) ((addr_t) sccb + sccb->header.length);
|
buffer = (void *) ((addr_t) sccb + sccb->header.length);
|
||||||
|
|
||||||
if (convertlf) {
|
if (convertlf) {
|
||||||
/* Perform Linefeed conversion (0x0a -> 0x0a 0x0d)*/
|
/* Perform Linefeed conversion (0x0a -> 0x0d 0x0a)*/
|
||||||
for (from=0, to=0;
|
for (from=0, to=0;
|
||||||
(from < count) && (to < sclp_vt220_space_left(request));
|
(from < count) && (to < sclp_vt220_space_left(request));
|
||||||
from++) {
|
from++) {
|
||||||
@ -328,8 +328,8 @@ sclp_vt220_add_msg(struct sclp_vt220_request *request,
|
|||||||
/* Perform conversion */
|
/* Perform conversion */
|
||||||
if (c == 0x0a) {
|
if (c == 0x0a) {
|
||||||
if (to + 1 < sclp_vt220_space_left(request)) {
|
if (to + 1 < sclp_vt220_space_left(request)) {
|
||||||
((unsigned char *) buffer)[to++] = c;
|
|
||||||
((unsigned char *) buffer)[to++] = 0x0d;
|
((unsigned char *) buffer)[to++] = 0x0d;
|
||||||
|
((unsigned char *) buffer)[to++] = c;
|
||||||
} else
|
} else
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user