switchroot: Fix building with musl libc

POSIX and GNU define conflicting versions of `strerror_r`.  The GNU
version returns the string but doesn't necessilary write into buf.
The POSIX version writes into buf and returns the length but doesn't
necessilary append a terminate the string with a NUL if it's too long
to fit in buf.

This commit fixes building ostree-prepare-root with musl libc.  The
stripped static build with musl on my machine is 30K vs. 724K with glibc
static and 11K with glibc shared.

Closes: #477
Approved by: cgwalters
This commit is contained in:
William Manley 2016-07-26 17:42:17 +01:00 committed by Atomic Bot
parent a269075724
commit faee3df8ae

View File

@ -40,7 +40,13 @@ perrorv (const char *format, ...)
char buf[1024];
char *p;
#ifdef _GNU_SOURCE
p = strerror_r (errno, buf, sizeof (buf));
#else
strerror_r (errno, buf, sizeof (buf));
buf[sizeof (buf) - 1] = '\0';
p = buf;
#endif /* _GNU_SOURCE */
va_start (args, format);