summaryrefslogtreecommitdiffhomepage
path: root/src/perk.c
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2015-12-01 21:51:21 -0500
committermidipix <writeonce@midipix.org>2016-11-10 23:35:29 -0500
commit6025fbae177892720c7342f5e16d81545b0fba41 (patch)
tree7a7e8638debf11877a041610219ca3990773831e /src/perk.c
parent7d4d3d88474a3ca002d2649094b92de63f184691 (diff)
downloadperk-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.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/perk.c b/src/perk.c
index 9f40342..652141b 100644
--- a/src/perk.c
+++ b/src/perk.c
@@ -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))) {