I&#39;ve got the following &quot;printHex&quot;  string as a response from a 9P server running on the Inferno Operating System. (thanks to a friendly mailing list contributor who sent a nice example of using Data.Binary)<div>
<br></div><div>1300000065ffff000400000600395032303030</div><div><br></div><div>This is a little endian encoded ByteString with the following fields in it:</div><div><br></div><div><div><font class="Apple-style-span" face="&#39;comic sans ms&#39;, sans-serif"> Rversion {size :: Word32,</font></div>
<div><font class="Apple-style-span" face="&#39;comic sans ms&#39;, sans-serif">                mtype :: Word8,</font></div><div><font class="Apple-style-span" face="&#39;comic sans ms&#39;, sans-serif">                tag :: Word16, </font></div>
<div><font class="Apple-style-span" face="&#39;comic sans ms&#39;, sans-serif">                msize :: Word32, </font></div><div><font class="Apple-style-span" face="&#39;comic sans ms&#39;, sans-serif">                ssize :: Word16,</font></div>
<div><font class="Apple-style-span" face="&#39;comic sans ms&#39;, sans-serif">                version :: ByteString}</font></div><div><font class="Apple-style-span" face="&#39;comic sans ms&#39;"><br></font></div><div>But when I try to use the following implementation of &quot;get&quot; to decode this stream, I&#39;m getting the following error:</div>
<div><br></div><div>&quot;too few bytes. Failed reading at byte position 20&quot;</div><div><br></div><div>Unfortunately, I&#39;m only expecting 19 bytes, and in fact never asked for byte 20.  (I am just asking for everything up to ssize, and then &quot;getRemainingLazyByteString&quot;).</div>
<div><br></div><div>Is this a bug?    Is it mine or in Data.Binary?  :-)</div><div><br></div><div>Here&#39;s my &quot;get&quot; function:</div><div><br></div><div><div><font class="Apple-style-span" face="&#39;comic sans ms&#39;, sans-serif"> get = do s &lt;- getWord32le</font></div>
<div><font class="Apple-style-span" face="&#39;comic sans ms&#39;, sans-serif">             mtype &lt;- getWord8</font></div><div><font class="Apple-style-span" face="&#39;comic sans ms&#39;, sans-serif">             getSpecific s mtype</font></div>
<div><font class="Apple-style-span" face="&#39;comic sans ms&#39;, sans-serif">        where </font></div><div><font class="Apple-style-span" face="&#39;comic sans ms&#39;, sans-serif">          getSpecific s mt </font></div>
<div><font class="Apple-style-span" face="&#39;comic sans ms&#39;, sans-serif">                      | mt == mtRversion = do t &lt;- getWord16le</font></div><div><font class="Apple-style-span" face="&#39;comic sans ms&#39;, sans-serif">                                              ms &lt;- getWord32le</font></div>
<div><font class="Apple-style-span" face="&#39;comic sans ms&#39;, sans-serif">                                              ss &lt;- getWord16le</font></div><div><font class="Apple-style-span" face="&#39;comic sans ms&#39;, sans-serif">                                              v &lt;- getRemainingLazyByteString</font></div>
<div><font class="Apple-style-span" face="&#39;comic sans ms&#39;, sans-serif">                                              return $ MessageClient $ Rversion {size=s,</font></div><div><font class="Apple-style-span" face="&#39;comic sans ms&#39;, sans-serif">                                                                                                     mtype=mt,</font></div>
<div><font class="Apple-style-span" face="&#39;comic sans ms&#39;, sans-serif">                                                                                                     tag=t,</font></div><div><font class="Apple-style-span" face="&#39;comic sans ms&#39;, sans-serif">                                                                                                     msize=ms,</font></div>
<div><font class="Apple-style-span" face="&#39;comic sans ms&#39;, sans-serif">                                                                                                     ssize=ss,</font></div><div><font class="Apple-style-span" face="&#39;comic sans ms&#39;, sans-serif">                                                                                                     version=v}</font></div>
</div></div><div><br></div><div><div><br></div><div><br></div><div>The good news is I&#39;m talking 9P otherwise, correctly, just having some decoding issues.  I hope to have a hackage package eventually for this.  </div>
<div><br></div><div>Dave</div></div>