private byte[] idBufferBlob(Entry e) { try { FileStream @is = e.openInputStream(); if (@is == null) return zeroid; try { initializeDigest(); contentDigest.Reset(); contentDigest.Update(hblob); contentDigest.Update((byte)' '); long blobLength = e.getLength(); long sz = blobLength; if (sz == 0) { contentDigest.Update((byte)'0'); } else { int bufn = contentReadBuffer.Length; int p = bufn; do { contentReadBuffer[--p] = digits[(int)(sz % 10)]; sz /= 10; } while (sz > 0); contentDigest.Update(contentReadBuffer, p, bufn - p); } contentDigest.Update((byte)0); for (; ; ) { int r = @is.Read(contentReadBuffer, 0, contentReadBuffer.Length); // was: read(contentReadBuffer) in java if (r <= 0) break; contentDigest.Update(contentReadBuffer, 0, r); sz += r; } if (sz != blobLength) return zeroid; return contentDigest.Digest(); } finally { try { @is.Close(); } catch (IOException) { // Suppress any error related to closing an input // stream. We don't care, we should not have any // outstanding data to flush or anything like that. } } } catch (IOException) { // Can't read the file? Don't report the failure either. // return zeroid; } }