Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > gnu.bash.bug > #14239
| Path | csiph.com!goblin2!goblin1!goblin.stu.neva.ru!usenet.stanford.edu!not-for-mail |
|---|---|
| From | Davide Brini <dave_br@gmx.com> |
| Newsgroups | gnu.bash.bug |
| Subject | Re: When reading less than wanted characters, "read" does not detect NUL bytes |
| Date | Fri, 15 Jun 2018 15:15:23 +0200 |
| Lines | 32 |
| Approved | bug-bash@gnu.org |
| Message-ID | <mailman.1964.1529068531.1292.bug-bash@gnu.org> (permalink) |
| References | <0Mfn88-1fqxyA1P40-00NBdT@mail.gmx.com> <20180615130746.zrpcsmyuizrrls4t@eeg.ccf.org> |
| NNTP-Posting-Host | lists.gnu.org |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=US-ASCII |
| Content-Transfer-Encoding | 7bit |
| X-Trace | usenet.stanford.edu 1529068532 7936 208.118.235.17 (15 Jun 2018 13:15:32 GMT) |
| X-Complaints-To | action@cs.stanford.edu |
| To | bug-bash@gnu.org |
| Envelope-to | bug-bash@gnu.org |
| In-Reply-To | <20180615130746.zrpcsmyuizrrls4t@eeg.ccf.org> |
| X-Mailer | Claws Mail 3.16.0 (GTK+ 2.24.32; x86_64-pc-linux-gnu) |
| X-Provags-ID | V03:K1:SmpWR8K2jjQuSFwQ2gsxFMm8I8SwCFjuNZ1O2yE01kdti2oLSrn UGdlHW2I6DNKw5sySUfOdnXRBCElQp3Tj7HwWwQOH1mGtLTzTVunJXFQ79Q4IwUJz2KqRyh IdvnfMre4prquqruahJeruQI/PJ+jgOEvfPceUMuOV4zG3YBEHYVtuTqeAUHTgq65QcSQVi lOkF0240dSVkLKwnbaQkQ== |
| X-UI-Out-Filterresults | notjunk:1;V01:K0:yvTsPQwPF+Y=:4OrY0xJEA070XWxj5G6u+k OnGJER0TbgS/WkKiEayeLaGytn/WP0Ub9O9q8RvEktYZDKp+hPm7AkF18EKUxJu4VtKMuCRkA EaqBSk1URcDI4coC/a9THm9eVS4bOegrZvBa02vR/JoMpinWxOsPqItnNiN6FJfMtv332m6+E k7tsvEUnjYE5CwUaO2sfSKEb1vvYrQdQVsegGk9CcyTbzbcDoz9ooS13EHT8OeRfqVuyKHotP 2wrzOINNAxO905po+2yHu1tBFLDmLkOjruoxtH7vMu8BgFlRm2q0OX2vqSah6BqhD3fxYBUhD 721rNarmPWH+8dU3FbG26m/SjoDFCzk7koDNGjq+KRMLJAB7xJFdAFLf0ZSVtQ44/4kXltBgh n8gbJfXyqXUvbJVqlwWGv6YFW23+/2iHWpGwqKwGHzRb6+0IXgQT+THsKDFWS8iczi5utBXzm eR2UlCbucPCHEyxh2bGs1FMr8bGyvz1MiRdTY5yTOEUIG0eyBVIBd2bq/OHV1SK4HQ8d+miBf heRfJwukQmNxtryY1x4gkDJNNGWzVduLVmXeayajVOCQ591wUxgV/ND7VnjInVovIDWx0I6cS ArD2CgFjAli5S0WcDR/68vtiUn3cLTJIgLT6e4D2ZJMkuRCaAcyf5/063gQ88gO20fENf3tsL iLFH66x6Q9mIcNEOtWgRiQNishNdXeGvAH7zreQFRpj5yRbljLr95ZSsirSDiFYg8uaI3dCZ/ Ff19rmYknzscl9WgxRyEWi4ILcWnXomQXkdrmokkcwv+hDo+jhLHVOVZwNcrrzP+dj9S0wBtX g98PJVr |
| X-detected-operating-system | by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] |
| X-Received-From | 212.227.15.15 |
| X-BeenThere | bug-bash@gnu.org |
| X-Mailman-Version | 2.1.21 |
| Precedence | list |
| List-Id | Bug reports for the GNU Bourne Again SHell <bug-bash.gnu.org> |
| List-Unsubscribe | <https://lists.gnu.org/mailman/options/bug-bash>, <mailto:bug-bash-request@gnu.org?subject=unsubscribe> |
| List-Archive | <http://lists.gnu.org/archive/html/bug-bash/> |
| List-Post | <mailto:bug-bash@gnu.org> |
| List-Help | <mailto:bug-bash-request@gnu.org?subject=help> |
| List-Subscribe | <https://lists.gnu.org/mailman/listinfo/bug-bash>, <mailto:bug-bash-request@gnu.org?subject=subscribe> |
| Xref | csiph.com gnu.bash.bug:14239 |
Show key headers only | View raw
On Fri, 15 Jun 2018 09:07:46 -0400, Greg Wooledge <wooledg@eeg.ccf.org>
wrote:
> On Fri, Jun 15, 2018 at 03:03:21PM +0200, Davide Brini wrote:
> > $ printf 'a\x00\x00bc' | { while IFS= read -d '' -n 2 var; do echo
> > "read: $var, length: ${#var}"; done; } read: a, length: 1
> > read: , length: 0
> > read: bc, length: 2
> >
> > I would expect there to be another read of length 0 between the "a" and
> > the "bc".
>
> Seems correct to me. You asked it to stop reading when it finds a NUL
> or when it has read 2 characters. The first time, they both happen at
> the same time, and you end up with "a", and two bytes have been consumed.
>
> The second time, it happens after reading the NUL byte, so you get "" and
> a total of three bytes have been consumed.
>
> The third time, you read "bc", and all the bytes have been consumed.
Oh I see, I was misled by the -n1 behavior and thought the delimiter somehow
would be "put back" for the next read, but your explanation makes sense.
So it looks like the only "reliable" way to detect NULs in the input is to
read one character at a time.
Thanks!
--
D.
Back to gnu.bash.bug | Previous | Next | Find similar | Unroll thread
Re: When reading less than wanted characters, "read" does not detect NUL bytes Davide Brini <dave_br@gmx.com> - 2018-06-15 15:15 +0200
csiph-web