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

Reply via email to