X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=statemc.c;h=b068722a15e339f81e7639341110c2ab977f433e;hb=a34c62479ae1f91aac7b30d3d5f1a5106a6635f5;hp=8d3e728c89a88d4258e36865f2967fe64351d1b1;hpb=854f19ae391120e6dd11c33c66250745b3d21aa7;p=innduct.git diff --git a/statemc.c b/statemc.c index 8d3e728..b068722 100644 --- a/statemc.c +++ b/statemc.c @@ -232,11 +232,11 @@ static void notice_processed_counts(Counts *counts, int completed, #define CNT(art,rc) (counts->results[art_##art][RC_##rc]) char *inprog= ipf_xtra && !completed - ? xasprintf(" inprogress=%ld", ipf_xtra->inprogress) - : xasprintf("%s",""); /* GCC produces a stupid warning for printf("") ! */ + ? masprintf(" inprogress=%ld", ipf_xtra->inprogress) + : masprintf("%s",""); /* GCC produces a stupid warning for printf("") ! */ char *autodefer= ipf_xtra && ipf_xtra->autodefer >= 0 - ? xasprintf(" autodeferred=%ld", ipf_xtra->autodefer) - : xasprintf("%s",""); + ? masprintf(" autodeferred=%ld", ipf_xtra->autodefer) + : masprintf("%s",""); notice("%s %s read=%d (+bl=%d,+err=%d)%s%s" " missing=%d offered=%d (ch=%d,nc=%d) accepted=%d (ch=%d,nc=%d)" @@ -286,6 +286,7 @@ void statemc_check_backlog_done(void) { InputFile *ipf= backlog_input_file; if (!inputfile_is_done(ipf)) return; + dbg("backlog file %p %s complete", ipf, ipf->path); backlog_accumulate_counts(ipf); close_input_file(ipf); if (unlink(ipf->path)) { @@ -535,6 +536,7 @@ static void *sigarrived_event(oop_source *lp, int fd, oop_event e, void *u) { } static void sigarrived_handler(int signum) { + int esave = errno; static char x; switch (signum) { case SIGTERM: @@ -544,7 +546,9 @@ static void sigarrived_handler(int signum) { default: abort(); } - write(signal_self_pipe[1],&x,1); + int r = write(signal_self_pipe[1],&x,1); + if (!(r==1 || isewouldblock(errno))) abort(); + errno = esave; } void init_signals(void) {