On Mon, May 08, 2023 at 09:11:03AM +0200, Laszlo Ersek wrote:
> +
> + /* nbdkit doesn't know anything about socket activation names, but
> + * the LISTEN_FDNAMES environment variable should appear in the
> + * debug output.
> + */
> + assert (system ("grep 'debug.*LISTEN_FDNAMES=hello' "
DEBUG_FILE) == 0);
I didn't remember the return value of system(); I've now tried to read
up (both the Linux man page and POSIX), and my head is spinning a bit :)
It seems like we should do something like:
int rc;
rc = system ("grep 'debug.*LISTEN_FDNAMES=hello' " DEBUG_FILE);
assert (rc != -1 && WIFEXITED (rc) && WEXITSTATUS (rc) == 0);
Technically true. But all existing implementations tend to encode
exit staus as a 16-bit value in one of two configurations:
status last: abnormal byte, status byte
status first: status byte, abnormal byte
where WIFEXITED() is a macro that returns 1 if the status byte is 0,
and WEXITSTAUTS() is a macro that masks off the abnormal byte to
expose just the status byte shifted into the usual 8-bit position.
It's not required by POSIX, but you can generally get away with
relying on 'rc==0' implies 'WIFEXITED(rc) && WEXITSTATUS(rc)==0'
on
all platforms.
Also, should we invoke this "grep" with "-sq" as well (at least
"-q")?
Or do we want the match to show up in the test suite log?
Having more rather than less information in the logs can be useful
when debugging CI failures.
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization:
qemu.org |
libvirt.org