- if(c->out.vec_len)
- n = _xcb_writev(c->fd, c->out.vec, c->out.vec_len);
- else
- n = _xcb_write(c->fd, &c->out.queue, &c->out.queue_len);
-
- /* XXX: should "nothing was written" be considered failure or
- * success for this function? it's not an I/O error, but... */
- n = (n > 0) || (n < 0 && errno == EAGAIN);
-
- if(c->out.vec_len)
- {
- int i;
- for(i = 0; i < c->out.vec_len; ++i)
- if(c->out.vec[i].iov_len)
- return n;
+ assert(!c->out.queue_len);
+ n = _xcb_writev(c->fd, c->out.vec, c->out.vec_len);
+ while(c->out.vec_len && !c->out.vec[0].iov_len)
+ ++c->out.vec, --c->out.vec_len;
+ if(!c->out.vec_len)