diff options
Diffstat (limited to 'runcap.c')
-rw-r--r-- | runcap.c | 20 |
1 files changed, 15 insertions, 5 deletions
@@ -113,6 +113,10 @@ stream_capture_flush(struct stream_capture *cap) if (cap->sc_level == 0) return 0; + if (cap->sc_linemon && cap->sc_cur < cap->sc_level) + cap->sc_linemon(cap->sc_base + cap->sc_cur, + cap->sc_level - cap->sc_cur, + cap->sc_monarg); if (cap->sc_storfd == -1) { int fd; char tmpl[] = "/tmp/rcXXXXXX"; @@ -155,8 +159,8 @@ stream_capture_get(struct stream_capture *cap, int *feof) if (c == '\n') { if (cap->sc_linemon) cap->sc_linemon(cap->sc_base + cap->sc_cur, - cap->sc_level - cap->sc_cur, - cap->sc_monarg); + cap->sc_level - cap->sc_cur, + cap->sc_monarg); cap->sc_cur = cap->sc_level; cap->sc_nlines++; } @@ -439,7 +443,8 @@ runcap_init(struct runcap *rc, int flags) res = stream_capture_alloc(&rc->rc_cap[RUNCAP_STDOUT], rc->rc_cap[RUNCAP_STDOUT].sc_size); else - res = stream_capture_init(&rc->rc_cap[RUNCAP_STDOUT], STRCAP_BUFSIZE); + res = stream_capture_init(&rc->rc_cap[RUNCAP_STDOUT], + STRCAP_BUFSIZE); if (res) return res; @@ -452,7 +457,8 @@ runcap_init(struct runcap *rc, int flags) res = stream_capture_alloc(&rc->rc_cap[RUNCAP_STDERR], rc->rc_cap[RUNCAP_STDERR].sc_size); else - res = stream_capture_init(&rc->rc_cap[RUNCAP_STDERR], STRCAP_BUFSIZE); + res = stream_capture_init(&rc->rc_cap[RUNCAP_STDERR], + STRCAP_BUFSIZE); if (res) return res; @@ -526,7 +532,11 @@ runcap(struct runcap *rc, int flags) lseek(rc->rc_cap[RUNCAP_STDERR].sc_storfd, 0, SEEK_SET); } } - return rc->rc_errno == 0 ? 0 : -1; + if (rc->rc_errno) { + errno = rc->rc_errno; + return -1; + } + return 0; } |