From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 6909 invoked from network); 13 Dec 2022 11:12:29 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 13 Dec 2022 11:12:29 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1670929949; b=VJP45bWnX/SA87XMmrzhRyp9MqpISmakJEtGazznoIcVDW9AgM2V0s7Oh3RBHZMDgNTGk8qyvW r+SWC233k/Ip6tz855NgGzShRVumAL+AUBd9XvjOLAgbbRJ/yMRVFVFVa9bdSFanZvC4qiBr7T ILK57LoNvnHB7tk6sIhN+xdMqt8QXoPmmv76nfuvNjZ8SlYPQ+eQsFkqDcPTZNhY6FEgsKqUqx 4zJAgIldO9C4c5NmJpdVuZvuiqZOPrIoWYFVrCI6uCqBWKoXkYpHpRTb3W9CMrSQ3c0e5JjTOk DRaVoYivDr0EFPQ9DGQzDSt6StU38Tr1PYbJLQnxf7ErfQ==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (snd01006-bg.im.kddi.ne.jp) smtp.remote-ip=27.86.113.22; dmarc=none header.from=kba.biglobe.ne.jp; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1670929949; bh=7m6GgXK1WVSRrQUcUayssB2DSnqet50R0Q7Y+v0pXbI=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Message-ID:In-Reply-To:To:References:Date:Subject: MIME-Version:Content-Transfer-Encoding:Content-Type:From:DKIM-Signature; b=V/nQJxtzaAcVXvjP5jbUTz1/PPzCBMQttAKlnnqmPAhJurLswwQdQ+Bx4snxqTBMjMEsGhEyk+ txXHkM8is01ze4b8lqxLVEoFtO218ZIVHKfpq6WTCTrvJteTq8B4Wv+RMCL5wyMm/4dsww08CA gAF3tEMXIrTehTr6sy6zdKm6XOiEhYthqPvtfwZzmwIHbzmYbz7ymYQag7uUSXWczc4XIyHHiC tNiAdRmVC6gk+X0M2XQvGtHRIZMLf91Q22V0pcA8r5BPU+1HfDwMa310/aOLzXpJGJ2a2YYGLl eqHtzp60/OiTdq+/jWgvQpDmsNa/S/c+VCVKpMMfqwTK4Q==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Message-Id:In-Reply-To:To:References: Date:Subject:Mime-Version:Content-Transfer-Encoding:Content-Type:From: Reply-To:Cc:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID; bh=tXGGTWeqA5gBh/hKJChSxLT8pUk2SnJwnHdAZ8URQJY=; b=qDF5GkMJM+S4ctvc3LNp+H+99K pz6uTI6fx0l/pmgMcaqbnsTWbw3iW9sWnKgkdEdlewymfVjvekWSnRg9+xH0xBWhsy1S2BtmQCIqw gCjHwdQMdWScn+8M42J8jRVsZGsaT+52jCQXyha5fb676aZzqoJXdb2zLRF7qz2VNySgUcYV2VVyY zq0wads4xNdIcs9sBZzPzhdFo8A3Jf/MAD0YYO7St3VmrxdqRXZeAifdNdMXla5mFhfAqhW78s3Dy sOwqtdG0e1WlzNnWLLWp8PnkvaIu1SjMPCle/tbYKmYK7IlXAWjLoa9E5vPZblCIe4K7NgaJW+FP2 AVlQZ/Zg==; Received: by zero.zsh.org with local id 1p53D1-000AOb-VF; Tue, 13 Dec 2022 11:12:28 +0000 Authentication-Results: zsh.org; iprev=pass (snd01006-bg.im.kddi.ne.jp) smtp.remote-ip=27.86.113.22; dmarc=none header.from=kba.biglobe.ne.jp; arc=none Received: from snd01006-bg.im.kddi.ne.jp ([27.86.113.22]:50913 helo=dfmta1017.biglobe.ne.jp) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_256_GCM_SHA384:256) id 1p53Cl-000A5M-HZ; Tue, 13 Dec 2022 11:12:12 +0000 Received: from mail.biglobe.ne.jp by omta1017.biglobe.ne.jp with ESMTP id <20221213111206682.VSZH.3820.mail.biglobe.ne.jp@biglobe.ne.jp> for ; Tue, 13 Dec 2022 20:12:06 +0900 From: Jun T Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.21\)) Subject: Re: read -d $'\200' doesn't work with set +o multibyte (and [PATCH]) Date: Tue, 13 Dec 2022 20:12:06 +0900 References: <20221209154225.2z3lbtf422ypnmjx@chazelas.org> <99492-1670616302.663548@1brw.o7tP.wgJL> <20221210090626.mkv7bxeqnap6awah@chazelas.org> To: zsh-workers@zsh.org In-Reply-To: <20221210090626.mkv7bxeqnap6awah@chazelas.org> Message-Id: <1FF79E35-0103-4B80-BA4A-ECC6FD2ADF7E@kba.biglobe.ne.jp> X-Mailer: Apple Mail (2.3445.104.21) X-Biglobe-Sender: takimoto-j@kba.biglobe.ne.jp X-Seq: 51207 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: , List-Subscribe: , List-Unsubscribe: , List-Post: List-Owner: List-Archive: > 2022/12/10 18:06, Stephane Chazelas wrote: > It works better after: >=20 > diff --git a/Src/builtin.c b/Src/builtin.c > index a7b7755a7..d650ca750 100644 > --- a/Src/builtin.c > +++ b/Src/builtin.c > @@ -6414,9 +6414,9 @@ bin_read(char *name, char **args, Options ops, = UNUSED(int func)) > delim =3D (wchar_t)wi; > else > delim =3D (wchar_t)((delimstr[0] =3D=3D Meta) ? > - delimstr[1] ^ 32 : delimstr[0]); > + STOUC(delimstr[1]) ^ 32 : = STOUC(delimstr[0])); > #else > - delim =3D (delimstr[0] =3D=3D Meta) ? delimstr[1] ^ 32 : = delimstr[0]; > + delim =3D (delimstr[0] =3D=3D Meta) ? STOUC(delimstr[1]) ^ 32 = : STOUC(delimstr[0]); > #endif > if (SHTTY !=3D -1) { > struct ttyinfo ti; >=20 (snip) > So I guess that's the fix for my bug. Thanks, I think it fixes the problem for the '#ifdef MULTIBYTE_SUPPORT' = section. When MULTIBYTE_SUPPORT is not defined, delim is char, so we need STOUC() not when assigning to delim but when using delim. But instead of adding STOUC() to every use of delim (in nondef MULTIBYTE_SUPPORT section), it would be easier to define delim as int. A simple test is added (it only tests the C locale with multibyte option = on). diff --git a/Src/builtin.c b/Src/builtin.c index a7b7755a7..a6fadb622 100644 --- a/Src/builtin.c +++ b/Src/builtin.c @@ -6286,7 +6286,7 @@ bin_read(char *name, char **args, Options ops, = UNUSED(int func)) char *laststart; size_t ret; #else - char delim =3D '\n'; + int delim =3D '\n'; #endif =20 if (OPT_HASARG(ops,c=3D'k')) { @@ -6413,10 +6413,10 @@ bin_read(char *name, char **args, Options ops, = UNUSED(int func)) if (wi !=3D WEOF) delim =3D (wchar_t)wi; else - delim =3D (wchar_t)((delimstr[0] =3D=3D Meta) ? + delim =3D (wchar_t)STOUC((delimstr[0] =3D=3D Meta) ? delimstr[1] ^ 32 : delimstr[0]); #else - delim =3D (delimstr[0] =3D=3D Meta) ? delimstr[1] ^ 32 : = delimstr[0]; + delim =3D STOUC((delimstr[0] =3D=3D Meta) ? delimstr[1] ^ 32 : = delimstr[0]); #endif if (SHTTY !=3D -1) { struct ttyinfo ti; diff --git a/Test/B04read.ztst b/Test/B04read.ztst index 25c3d4173..a2f03c9b3 100644 --- a/Test/B04read.ztst +++ b/Test/B04read.ztst @@ -82,6 +82,12 @@ >Testing the >null hypothesis =20 + print -n $'first line\x80second line\x80' | + while read -d $'\x80' line; do print $line; done +0:read with a delimeter >=3D 0x80 +>first line +>second line + # Note that trailing NULLs are not stripped even if they are in # $IFS; only whitespace characters contained in $IFS are stripped. print -n $'Aaargh, I hate nulls.\0\0\0' | read line