On 4/19/23 15:53, Laszlo Ersek wrote: > On 4/19/23 15:37, Eric Blake wrote: >> On Tue, Apr 18, 2023 at 07:26:29PM +0200, Laszlo Ersek wrote: >>> Embedding a shell script in a multi-line C string literal is an exercise >>> in pain. I can see why the original author (whom I shall not look up with >>> git-blame :) ) went for the easy route. Still, we want the source code to >>> fit in 80 columns. >>> >>> Note: in my "interop/test-suite.log", I see >>> >>>> SKIP: interop-qemu-nbd-tls-certs >>>> ================================ >>>> >>>> requires test -d /home/lacos/src/v2v/libnbd/tests/pki >>>> Test skipped because prerequisite is missing or not working. >>>> SKIP interop-qemu-nbd-tls-certs (exit status: 77) >>>> >>>> SKIP: interop-qemu-nbd-tls-psk >>>> ============================== >>>> >>>> requires test -f /home/lacos/src/v2v/libnbd/tests/keys.psk >>>> Test skipped because prerequisite is missing or not working. >>>> SKIP interop-qemu-nbd-tls-psk (exit status: 77) >>> >>> Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2172516 >>> Signed-off-by: Laszlo Ersek <ler...@redhat.com> >>> --- >>> tests/requires.c | 16 ++++++++++++++-- >>> 1 file changed, 14 insertions(+), 2 deletions(-) >>> >>> diff --git a/tests/requires.c b/tests/requires.c >>> index 199e30605473..cc5fd77b9f27 100644 >>> --- a/tests/requires.c >>> +++ b/tests/requires.c >>> @@ -57,7 +57,13 @@ requires_qemu_nbd_tls_support (const char *qemu_nbd) >>> * interested in the error message that it prints. >>> */ >>> snprintf (cmd, sizeof cmd, >>> - "if %s --object tls-creds-x509,id=tls0 |& grep -sq 'TLS >>> credentials support requires GNUTLS'; then exit 1; else exit 0; fi", >>> + "if %s --object tls-creds-x509,id=tls0 \\\n" >>> + " |& grep -sq 'TLS credentials support requires GNUTLS'\n" >> >> Note: |& is a bashism; but system() might not invoke bash. So this is >> already non-portable code; and we should be fixing that. (I don't >> mind doing it as a followup if you end up pushing before seeing this >> message). > > I noticed |& too; my thought was "TIL". :) > >> >>> + "then\n" >>> + " exit 1\n" >>> + "else\n" >>> + " exit 0\n" >>> + "fi\n", >> >> For that matter, 'if ...; then exit 1; else exit 0; fi' can be >> compressed to '! ...'. >> > > Yes, I noticed that too, but I assumed there was a finer point I was > missing. :/
Ah, it's not too relevant, but now I remember what was bothering me, about "!": if you embed the original construct in a "set -e" environment, it will exit with status 1 on the appropriate branch; but if you embed the "! ..." construct, it won't exit! Anyway, the context is not like that here. We pass the command string to system(), and I understand "set -e" is not in effect there. Laszlo _______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://listman.redhat.com/mailman/listinfo/libguestfs