- if (write(f->fd, f->buffer, l) != l)
- die("Error writing %s: %m");
- f->bptr = f->buffer;
- f->fdpos += l;
- f->pos = f->fdpos;
+ int z = write(f->fd, c, l);
+ if (z <= 0)
+ die("Error writing %s: %m", f->name);
+ /* FIXME */
+ if (z != l)
+ log(L_ERROR "wrbuf: %d != %d (pos %Ld)", z, l, sh_seek(f->fd, 0, SEEK_CUR));
+ f->fdpos += z;
+ l -= z;
+ c += z;