Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > gnu.bash.bug > #14238 > unrolled thread

Re: When reading less than wanted characters, "read" does not detect NUL bytes

Started byGreg Wooledge <wooledg@eeg.ccf.org>
First post2018-06-15 09:07 -0400
Last post2018-06-15 09:07 -0400
Articles 1 — 1 participant

Back to article view | Back to gnu.bash.bug

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: When reading less than wanted characters, "read" does not detect NUL bytes Greg Wooledge <wooledg@eeg.ccf.org> - 2018-06-15 09:07 -0400

#14238 — Re: When reading less than wanted characters, "read" does not detect NUL bytes

FromGreg Wooledge <wooledg@eeg.ccf.org>
Date2018-06-15 09:07 -0400
SubjectRe: When reading less than wanted characters, "read" does not detect NUL bytes
Message-ID<mailman.1963.1529068105.1292.bug-bash@gnu.org>
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.

[toc] | [standalone]


Back to top | Article view | gnu.bash.bug


csiph-web