void syncthread0(void *a) { Queue *q; Syncpath *s; threadsetname("syncthread"); startclient(); q = a; for(;;){ s = qrecv(q); assert(s->state == SyncStart); syncstat(s); if(s->state == SyncError){ Err: syncfinish(s); continue; } synctriage(s); if(s->state == SyncError) goto Err; if(s->triage != DoNothing) tralog("%P %s%s: [%$] [%$]", s->p, s->conflict ? "conflict " : "", workstr(s, s->triage), s->a.s, s->b.s); qsend(s->sync->triageq, s); } }
//------------------------------------------------------------------------- ssize_t irs_recv(idarpc_stream_t *irs, void *buf, size_t n, int timeout) { if ( timeout != -1 && !irs_ready(irs, timeout) ) { SET_SYSTEM_SPECIFIC_ERRNO(SYSTEM_SPECIFIC_TIMEOUT_ERROR); return -1; // no data } return qrecv(sock_from_irs(irs), buf, (int)n); }