aboutsummaryrefslogtreecommitdiff
path: root/runcap.c
diff options
context:
space:
mode:
Diffstat (limited to 'runcap.c')
-rw-r--r--runcap.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/runcap.c b/runcap.c
index bbe735f..f36d5b1 100644
--- a/runcap.c
+++ b/runcap.c
@@ -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;
}

Return to:

Send suggestions and report system problems to the System administrator.