Module Name:    src
Committed By:   rillig
Date:           Mon Feb 22 16:28:20 UTC 2021

Modified Files:
        src/games/cgram: cgram.c

Log Message:
cgram: properly handle input errors

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.


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/games/cgram/cgram.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/games/cgram/cgram.c
diff -u src/games/cgram/cgram.c:1.11 src/games/cgram/cgram.c:1.12
--- src/games/cgram/cgram.c:1.11	Sun Feb 21 22:21:56 2021
+++ src/games/cgram/cgram.c	Mon Feb 22 16:28:20 2021
@@ -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

Reply via email to