On 23/11/10 16:34, Pádraig Brady wrote:
> On 23/11/10 16:24, Stefan Tomanek wrote:
>> Dies schrieb Stefan Tomanek (stefan.toma...@wertarbyte.de):
>>
>>> It is often convinient to detect whether head has in fact printed the
>>> requested number of lines or if EOF was reached before reaching that
>>> point. This patch adds the option --indicate-underrun, which makes
>>> "head" exit with a status of 4 instead of 0 if no more data could be
>>> read from its input.
>>
>> Any thoughts about this change? It's a rather small patch, but would
>> be quite useful (at least for me).
>>
>>
> 
> This does seem useful on the face of it.
> I need to do a little further investigation
> to see if there are existing ways to achieve the same.

I was wondering about the logic in your example BTW.
If there is no input then you'll process an empty chunk
or if the input is an exact multiple of the chunk size
you'll process an empty chunk at the end.

The following addresses both issues and
also uses existing coreutils functionality:

process_part() { echo processing $(wc -c) bytes; }
while true; do
  c=$(od -tx1 -An -N1)
  test "$c" || break
  c=$(echo $c) #strip leading ' '
  { printf "\x$c"; head -c9; } | process_part
done

cheers,
Pádraig.

p.s. \x is not a printf standard so the
script probably needs tweaking for dash

p.p.s. I noticed the related ifne util from moreutils

Reply via email to