Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c10746db authored by Paul Fulghum's avatar Paul Fulghum Committed by Greg Kroah-Hartman
Browse files

[PATCH] USB: console: fix cr/lf issues



Append Carriage-Returns after Line-Feeds, analogous to the serial driver.

From: Paul Fulghum <paulkf@microgate.com>
Signed-off-by: default avatarGuennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 01cced25
Loading
Loading
Loading
Loading
+30 −9
Original line number Diff line number Diff line
@@ -213,17 +213,38 @@ static void usb_console_write(struct console *co, const char *buf, unsigned coun

	if (!port->open_count) {
		dbg ("%s - port not opened", __FUNCTION__);
		goto exit;
		return;
	}

	while (count) {
		unsigned int i;
		unsigned int lf;
		/* search for LF so we can insert CR if necessary */
		for (i=0, lf=0 ; i < count ; i++) {
			if (*(buf + i) == 10) {
				lf = 1;
				i++;
				break;
			}
		}
		/* pass on to the driver specific version of this function if it is available */
		if (serial->type->write)
		retval = serial->type->write(port, buf, count);
			retval = serial->type->write(port, buf, i);
		else
		retval = usb_serial_generic_write(port, buf, count);

exit:
	dbg("%s - return value (if we had one): %d", __FUNCTION__, retval);
			retval = usb_serial_generic_write(port, buf, i);
		dbg("%s - return value : %d", __FUNCTION__, retval);
		if (lf) {
			/* append CR after LF */
			unsigned char cr = 13;
			if (serial->type->write)
				retval = serial->type->write(port, &cr, 1);
			else
				retval = usb_serial_generic_write(port, &cr, 1);
			dbg("%s - return value : %d", __FUNCTION__, retval);
		}
		buf += i;
		count -= i;
	}
}

static struct console usbcons = {