From nobody Tue Jul 5 11:58:10 2022 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 3F7091CFE8DE; Tue, 5 Jul 2022 11:58:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Lch5H0Mrdz4tYQ; Tue, 5 Jul 2022 11:58:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1657022291; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=PO9O0l8nIokuWF+Jue1dQrn0aY0tYU1VqJEKwTqQcr8=; b=J/E4Nanhu27pm/txwP5CTXqGk0AT036UJwd3y0WSKnKCpEi3XNpJ5h1zaexIUcOgnVzNdd 7nqbe11Nq2pqFEDM9uwB3prAA46IvktMOLuwoBzxfBD/E7EUKNSsQArbZQx7In1nub9OpC pFiNWH/UfmXKGoveD2EuRiHe1/4IEbWBmkVIzeyCKNao19h4yrUcxsaeFeJKent3S9LIE4 OgXD9nRI7GUte2LM2rxXrL8dobZin5sCjSrOur9TWozpAgmH+CcdqmYAVfQk6o5M4wL4nE 9KqEFBKmYstisskDi7SvT5DPxN78v5zuQhIHkfy7Gsn5pH+39xoaSNXnH3/e/A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id DF4DA250A1; Tue, 5 Jul 2022 11:58:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 265BwALD012158; Tue, 5 Jul 2022 11:58:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 265BwAY6012157; Tue, 5 Jul 2022 11:58:10 GMT (envelope-from git) Date: Tue, 5 Jul 2022 11:58:10 GMT Message-Id: <202207051158.265BwAY6012157@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Hans Petter Selasky Subject: git: 4437a2e1ddcb - stable/13 - vt: Fix contents of paste buffer for newcons. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: hselasky X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 4437a2e1ddcb11b125824d5840056690f8e2138a Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1657022291; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=PO9O0l8nIokuWF+Jue1dQrn0aY0tYU1VqJEKwTqQcr8=; b=DmHE0D+zqouyo/4+WQECXviZppNevvQR+yQ2dN/o6fR3C4LUtXAR77/N4Wf5t6tx7b0P65 uZU8gRv4Zlt4aZxN5E/Sbh46c2T9n6I928EFLLEOldNUFzGJ1X10i/9rla/Lp2WfF8l7xY LwXzWV6Po6aAYF8l9pOoBnpLe3V48bdq/Yt3Sw+8qVkxRy15ulQeHk51roK044H2KDicD/ CSYcyDVuUZsIXJhe5iHVeAShvmpZD8pg32gHfeyxgX+7esXDriroXVfzq4EdWXVWJyxQ1F 8GSrAMYqZetQn/sG8BuBuM/mdFhd0FZTHLd51rYPbGDaT0Fos0Q+btLRglhhlg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1657022291; a=rsa-sha256; cv=none; b=OKG5u2UIetN6nAq8kdqPuScYiLfq/tCtwZIglLpddsCq+0/T+o/PH5a9IITb6VtTNw2MBo s2r+gXmrUR8wJX4Dhg+NImqFmZwrMQUeSMW7o2nU9wtpJbxDfNn+4RUETRReVJnqoDYXEy PPNSjO0nTK7BvmHQcveRD+KwH9krv1ghJu1raM6wWTdOCza4oH1V31hTvfBC+Jk5SVEoB7 ySl6Gn2f3eGGhRO9PCybX5gUKn3jW03PZH2OHjcL5cxfX7Kx6B5S9zLfCF19rH4kXCR2sb KnSZUvrAgZHHQM66f6KnzbWklTNtivx097GvC6+L38kgL/W8PAJwk/IGoA+HMw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by hselasky: URL: https://cgit.FreeBSD.org/src/commit/?id=4437a2e1ddcb11b125824d5840056690f8e2138a commit 4437a2e1ddcb11b125824d5840056690f8e2138a Author: Hans Petter Selasky AuthorDate: 2022-06-22 16:38:47 +0000 Commit: Hans Petter Selasky CommitDate: 2022-07-05 11:42:28 +0000 vt: Fix contents of paste buffer for newcons. Trim all word separators from end of line, except for last line and only use '\r' to terminate the pasted lines as expected by TTY. Submitted by: Ivan Quitschal Differential Revision: https://reviews.freebsd.org/D35552 PR: 263084 Sponsored by: NVIDIA Networking (cherry picked from commit 5fe0a82501cb86278b9aa426c4bf11d992e95aaa) --- sys/dev/vt/vt_buf.c | 27 ++++++++++++++++++++------- sys/dev/vt/vt_core.c | 5 ++--- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/sys/dev/vt/vt_buf.c b/sys/dev/vt/vt_buf.c index 041c8193ca93..fa6c7c8fec5f 100644 --- a/sys/dev/vt/vt_buf.c +++ b/sys/dev/vt/vt_buf.c @@ -741,8 +741,8 @@ vtbuf_get_marked_len(struct vt_buf *vb) si = s.tp_row * vb->vb_scr_size.tp_col + s.tp_col; ei = e.tp_row * vb->vb_scr_size.tp_col + e.tp_col; - /* Number symbols and number of rows to inject \n */ - sz = ei - si + ((e.tp_row - s.tp_row) * 2); + /* Number symbols and number of rows to inject \r */ + sz = ei - si + (e.tp_row - s.tp_row); return (sz * sizeof(term_char_t)); } @@ -750,7 +750,7 @@ vtbuf_get_marked_len(struct vt_buf *vb) void vtbuf_extract_marked(struct vt_buf *vb, term_char_t *buf, int sz) { - int i, r, c, cs, ce; + int i, j, r, c, cs, ce; term_pos_t s, e; /* Swap according to window coordinates. */ @@ -769,15 +769,28 @@ vtbuf_extract_marked(struct vt_buf *vb, term_char_t *buf, int sz) for (r = s.tp_row; r <= e.tp_row; r++) { cs = (r == s.tp_row)?s.tp_col:0; ce = (r == e.tp_row)?e.tp_col:vb->vb_scr_size.tp_col; - for (c = cs; c < ce; c++) { + + /* Copy characters from terminal window. */ + j = i; + for (c = cs; c < ce; c++) buf[i++] = vb->vb_rows[r][c]; - } - /* Add new line for all rows, but not for last one. */ + + /* For all rows, but the last one. */ if (r != e.tp_row) { + /* Trim trailing word separators, if any. */ + for (; i != j; i--) { + if (TCHAR_CHARACTER(buf[i - 1]) != ' ') + break; + } + /* Add newline character as expected by TTY. */ buf[i++] = '\r'; - buf[i++] = '\n'; } } + /* Zero rest of expected buffer size, if any. */ + while ((i * sizeof(buf[0])) < sz) + buf[i++] = '\0'; + + MPASS((i * sizeof(buf[0])) == sz); } int diff --git a/sys/dev/vt/vt_core.c b/sys/dev/vt/vt_core.c index 38fda0a501c5..27cbe5ad8294 100644 --- a/sys/dev/vt/vt_core.c +++ b/sys/dev/vt/vt_core.c @@ -2135,7 +2135,7 @@ vt_mouse_paste() buf = VD_PASTEBUF(main_vd); len /= sizeof(term_char_t); for (i = 0; i < len; i++) { - if (buf[i] == '\0') + if (TCHAR_CHARACTER(buf[i]) == '\0') continue; terminal_input_char(main_vd->vd_curwindow->vw_terminal, buf[i]); @@ -2287,8 +2287,7 @@ vt_mouse_event(int type, int x, int y, int event, int cnt, int mlevel) VD_PASTEBUFSZ(vd) = len; } /* Request copy/paste buffer data, no more than `len' */ - vtbuf_extract_marked(&vw->vw_buf, VD_PASTEBUF(vd), - VD_PASTEBUFSZ(vd)); + vtbuf_extract_marked(&vw->vw_buf, VD_PASTEBUF(vd), len); VD_PASTEBUFLEN(vd) = len;