diff options
author | midipix <writeonce@midipix.org> | 2015-12-01 21:51:21 -0500 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2016-11-10 23:35:29 -0500 |
commit | 6025fbae177892720c7342f5e16d81545b0fba41 (patch) | |
tree | 7a7e8638debf11877a041610219ca3990773831e /src/perk.c | |
parent | 7d4d3d88474a3ca002d2649094b92de63f184691 (diff) | |
download | perk-6025fbae177892720c7342f5e16d81545b0fba41.tar.bz2 perk-6025fbae177892720c7342f5e16d81545b0fba41.tar.xz |
output: forward stdio return values, act on failure.
Diffstat (limited to 'src/perk.c')
-rw-r--r-- | src/perk.c | 21 |
1 files changed, 12 insertions, 9 deletions
@@ -10,27 +10,29 @@ static const char vermsg[] = "%s (git://midipix.org/perk): commit %s.\n"; -static void perk_version(struct pe_driver_ctx * dctx) +static ssize_t perk_version(struct pe_driver_ctx * dctx) { char buf[512]; size_t len; if (dctx->cctx.fdout >= 0) { len = sprintf(buf,vermsg,dctx->program,PERK_GIT_VERSION); - write(dctx->cctx.fdout,buf,len); + return write(dctx->cctx.fdout,buf,len); } else - fprintf(stdout,vermsg,dctx->program,PERK_GIT_VERSION); + return fprintf(stdout,vermsg,dctx->program,PERK_GIT_VERSION); } -static void perk_paragraph_break(struct pe_unit_ctx * uctx, int * fpara) +static ssize_t perk_paragraph_break(struct pe_unit_ctx * uctx, int * fpara) { if (*fpara) { + *fpara = 0; + if (uctx->cctx.fdout >= 0) - write(uctx->cctx.fdout,"\n",1); + return write(uctx->cctx.fdout,"\n",1); else - fputc('\n',stdout); - *fpara = 0; - } + return fputc('\n',stdout); + } else + return 0; } static void perk_perform_unit_actions(struct pe_unit_ctx * uctx) @@ -67,7 +69,8 @@ static int perk_main(int argc, const char ** argv, const char ** envp) return (ret == PERK_USAGE) ? !--argc : 2; if (dctx->cctx.drvflags & PERK_DRIVER_VERSION) - perk_version(dctx); + if ((perk_version(dctx)) < 0) + return perk_exit(dctx,2); for (unit=dctx->units; *unit; unit++) { if (!(pe_get_unit_ctx(dctx,*unit,&uctx))) { |