- int ret = write(f, wf_writeBuf, wf_writeBufCnt);
- if (ret < 0)
- return ret;
- /* if (ret < wf_writeBufCnt) ??? */
- wf_writeBufCnt = 0;
+ int ret = 0;
+ char *bp = wf_writeBuf;
+
+ while (wf_writeBufCnt > 0) {
+ if ((ret = write(f, bp, wf_writeBufCnt)) < 0) {
+ if (errno == EINTR)
+ continue;
+ return ret;
+ }
+ wf_writeBufCnt -= ret;
+ bp += ret;
+ }