games/quiz.c popen()s a PAGER to display the help message. Throw that away and let the use pipe into a PAGER if needed. Then we can just pledge "stdio rpath".
Jan Index: quiz.c =================================================================== RCS file: /cvs/src/games/quiz/quiz.c,v retrieving revision 1.21 diff -u -p -u -p -r1.21 quiz.c --- quiz.c 29 Aug 2013 20:22:18 -0000 1.21 +++ quiz.c 22 Oct 2015 11:42:42 -0000 @@ -66,6 +66,9 @@ main(int argc, char *argv[]) int ch; const char *indexfile; + if (pledge("stdio rpath", NULL) == -1) + err(1, "pledge"); + indexfile = _PATH_QUIZIDX; while ((ch = getopt(argc, argv, "i:t")) != -1) switch(ch) { @@ -144,30 +147,21 @@ show_index(void) { QE *qp; const char *p, *s; - FILE *pf; - const char *pager; - if (!isatty(1)) - pager = "/bin/cat"; - else if (!(pager = getenv("PAGER")) || (*pager == 0)) - pager = _PATH_PAGER; - if ((pf = popen(pager, "w")) == NULL) - err(1, "%s", pager); - (void)fprintf(pf, "Subjects:\n\n"); + printf("Subjects:\n\n"); for (qp = qlist.q_next; qp; qp = qp->q_next) { for (s = next_cat(qp->q_text); s; s = next_cat(s)) { if (!rxp_compile(s)) errx(1, "%s", rxperr); if ((p = rxp_expand())) - (void)fprintf(pf, "%s ", p); + printf("%s ", p); } - (void)fprintf(pf, "\n"); + printf("\n"); } - (void)fprintf(pf, "\n%s\n%s\n%s\n", + printf("\n%s\n%s\n%s\n", "For example, \"quiz victim killer\" prints a victim's name and you reply", "with the killer, and \"quiz killer victim\" works the other way around.", "Type an empty line to get the correct answer."); - (void)pclose(pf); } void