[Libguestfs] [libnbd PATCH 16/18] tests/requires: wrap source code at 80 characters

Eric Blake eblake at redhat.com
Wed Apr 19 18:27:07 UTC 2023


On Wed, Apr 19, 2023 at 03:53:57PM +0200, Laszlo Ersek wrote:
> >>    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. :/

autoconf still avoids it because of portability to Solaris /bin/sh
(not /bin/xpg4/sh), which lacked !.  But that's ancient history these
days; ALL modern sh support ! correctly.  (Note that support for '!
command...' is different than 'test ! expr...', which itself has its
own set of portability pitfalls that autoconf cares about; but that is
yet another place where modern sh is now quite portable).

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org


More information about the Libguestfs mailing list