if (buffer.empty() || (allocationsize == buffer.back().len))
addblock();
if (tc > allocationsize-buffer.back().len)
tc=allocationsize-buffer.back().len;
r=::read(fd, buffer.back().data+buffer.back().len, tc);
buffer.back().len+=r;
if (buffer.empty() || (allocationsize == buffer.back().len))
addblock();
if (tc > allocationsize-buffer.back().len)
tc=allocationsize-buffer.back().len;
r=::read(fd, buffer.back().data+buffer.back().len, tc);
buffer.back().len+=r;