Timur Davydov has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-trx/+/42199?usp=email )
Change subject: fix(threads): support GNU and POSIX strerror_r variants ......................................................................
fix(threads): support GNU and POSIX strerror_r variants
- Add required headers - Use correct handling for GNU-specific strerror_r - Provide fallback error string for portability
Change-Id: I642aff8a9f98823e117c4debd19384ddf5975039 --- M CommonLibs/Threads.cpp 1 file changed, 13 insertions(+), 1 deletion(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/99/42199/1
diff --git a/CommonLibs/Threads.cpp b/CommonLibs/Threads.cpp index 377a1b0..22191f0 100644 --- a/CommonLibs/Threads.cpp +++ b/CommonLibs/Threads.cpp @@ -27,6 +27,8 @@
#include <string.h> #include <sys/types.h> +#include <errno.h> +#include <stdio.h>
#include "Threads.h" #include "Timeval.h" @@ -53,7 +55,17 @@ } else { char buf[256]; int err = errno; - char* err_str = strerror_r(err, buf, sizeof(buf)); + char *err_str = NULL; +#if defined(__GLIBC__) && defined(_GNU_SOURCE) + err_str = strerror_r(err, buf, sizeof(buf)); +#else + if (strerror_r(err, buf, sizeof(buf)) == 0) { + err_str = buf; + } else { + snprintf(buf, sizeof(buf), "Unknown error %d", err); + err_str = buf; + } +#endif LOG(NOTICE) << "Thread "<< selfid << " (task " << tid << ") set name "" << name << "" failed: (" << err << ") " << err_str; } }