]> git.cameronkatri.com Git - bsdgames-darwin.git/commitdiff
cgram: properly handle input errors
authorrillig <rillig@NetBSD.org>
Mon, 22 Feb 2021 16:28:20 +0000 (16:28 +0000)
committerCameron Katri <me@cameronkatri.com>
Tue, 13 Apr 2021 19:28:33 +0000 (15:28 -0400)
On both NetBSD and Cygwin, a missing /usr/bin/fortune would previously
continue since popen does not return an error (as /bin/sh is found and
can be executed), so the next chance to catch an error is pclose.  At
that point, the shell has already printed an informative error message
about what happened (or what didn't happen), so that cgram does not need
to print an error by itself.

cgram/cgram.c

index 9379dcfe2a3a343a0621acd3bfa132cdc4af1683..3d33d85a1daebe4460e997c016b6e5d47032ad18 100644 (file)
@@ -1,4 +1,4 @@
-/* $NetBSD: cgram.c,v 1.11 2021/02/21 22:21:56 rillig Exp $ */
+/* $NetBSD: cgram.c,v 1.12 2021/02/22 16:28:20 rillig Exp $ */
 
 /*-
  * Copyright (c) 2013, 2021 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: cgram.c,v 1.11 2021/02/21 22:21:56 rillig Exp $");
+__RCSID("$NetBSD: cgram.c,v 1.12 2021/02/22 16:28:20 rillig Exp $");
 #endif
 
 #include <assert.h>
@@ -227,7 +227,8 @@ readquote(void)
        for (int i = 0; i < extent_y; i++)
                extent_x = imax(extent_x, (int)lines.v[i].len);
 
-       pclose(f);
+       if (pclose(f) != 0)
+               exit(1); /* error message must come from child process */
 }
 
 static void