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.
This commit is contained in:
parent
199346cc31
commit
47c6585f93
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue