=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mandoc/read.c,v retrieving revision 1.81 retrieving revision 1.82 diff -c -r1.81 -r1.82 *** src/usr.bin/mandoc/read.c 2014/12/28 14:39:08 1.81 --- src/usr.bin/mandoc/read.c 2015/01/14 17:45:25 1.82 *************** *** 1,7 **** ! /* $OpenBSD: read.c,v 1.81 2014/12/28 14:39:08 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons ! * Copyright (c) 2010-2014 Ingo Schwarze * Copyright (c) 2010, 2012 Joerg Sonnenberger * * Permission to use, copy, modify, and distribute this software for any --- 1,7 ---- ! /* $OpenBSD: read.c,v 1.82 2015/01/14 17:45:25 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons ! * Copyright (c) 2010-2015 Ingo Schwarze * Copyright (c) 2010, 2012 Joerg Sonnenberger * * Permission to use, copy, modify, and distribute this software for any *************** *** 215,230 **** ".so request failed", /* system errors */ - "cannot dup file descriptor", - "cannot exec", "gunzip failed with code", - "cannot fork", NULL, - "cannot open pipe", - "cannot read file", "gunzip died from signal", - "cannot stat file", - "wait failed", }; static const char * const mandoclevels[MANDOCLEVEL_MAX] = { --- 215,223 ---- *************** *** 605,615 **** ssize_t ssz; if (-1 == fstat(fd, &st)) { ! curp->file_status = MANDOCLEVEL_SYSERR; ! if (curp->mmsg) ! (*curp->mmsg)(MANDOCERR_SYSSTAT, curp->file_status, ! file, 0, 0, strerror(errno)); ! return(0); } /* --- 598,605 ---- ssize_t ssz; if (-1 == fstat(fd, &st)) { ! perror(file); ! exit((int)MANDOCLEVEL_SYSERR); } /* *************** *** 661,672 **** return(1); } if (ssz == -1) { ! curp->file_status = MANDOCLEVEL_SYSERR; ! if (curp->mmsg) ! (*curp->mmsg)(MANDOCERR_SYSREAD, ! curp->file_status, file, 0, 0, ! strerror(errno)); ! break; } off += (size_t)ssz; } --- 651,658 ---- return(1); } if (ssz == -1) { ! perror(file); ! exit((int)MANDOCLEVEL_SYSERR); } off += (size_t)ssz; } *************** *** 830,855 **** /* Run gunzip(1). */ if (pipe(pfd) == -1) { ! err = MANDOCERR_SYSPIPE; ! goto out; } switch (curp->child = fork()) { case -1: ! err = MANDOCERR_SYSFORK; ! close(pfd[0]); ! close(pfd[1]); ! pfd[1] = -1; ! break; case 0: close(pfd[0]); if (dup2(pfd[1], STDOUT_FILENO) == -1) { ! err = MANDOCERR_SYSDUP; ! break; } execlp("gunzip", "gunzip", "-c", file, NULL); ! err = MANDOCERR_SYSEXEC; ! break; default: close(pfd[1]); *fd = pfd[0]; --- 816,838 ---- /* Run gunzip(1). */ if (pipe(pfd) == -1) { ! perror("pipe"); ! exit((int)MANDOCLEVEL_SYSERR); } switch (curp->child = fork()) { case -1: ! perror("fork"); ! exit((int)MANDOCLEVEL_SYSERR); case 0: close(pfd[0]); if (dup2(pfd[1], STDOUT_FILENO) == -1) { ! perror("dup"); ! exit((int)MANDOCLEVEL_SYSERR); } execlp("gunzip", "gunzip", "-c", file, NULL); ! perror("exec"); ! exit((int)MANDOCLEVEL_SYSERR); default: close(pfd[1]); *fd = pfd[0]; *************** *** 878,887 **** return(MANDOCLEVEL_OK); if (waitpid(curp->child, &status, 0) == -1) { ! mandoc_msg(MANDOCERR_SYSWAIT, curp, 0, 0, ! strerror(errno)); ! curp->file_status = MANDOCLEVEL_SYSERR; ! return(curp->file_status); } if (WIFSIGNALED(status)) { mandoc_vmsg(MANDOCERR_SYSSIG, curp, 0, 0, --- 861,868 ---- return(MANDOCLEVEL_OK); if (waitpid(curp->child, &status, 0) == -1) { ! perror("wait"); ! exit((int)MANDOCLEVEL_SYSERR); } if (WIFSIGNALED(status)) { mandoc_vmsg(MANDOCERR_SYSSIG, curp, 0, 0,