diff options
-rw-r--r-- | changes/bsd_libc | 3 | ||||
-rw-r--r-- | src/lib/osinfo/libc.c | 18 |
2 files changed, 21 insertions, 0 deletions
diff --git a/changes/bsd_libc b/changes/bsd_libc new file mode 100644 index 0000000000..b431b7719f --- /dev/null +++ b/changes/bsd_libc @@ -0,0 +1,3 @@ + o Minor bugfixes (compilation): + - Fix returning something other than "Unknown N/A" as libc version if we + build tor on an O.S. like DragonFlyBSD, FreeBSD, OpenBSD or NetBSD. diff --git a/src/lib/osinfo/libc.c b/src/lib/osinfo/libc.c index f52dea41aa..1ca26ff707 100644 --- a/src/lib/osinfo/libc.c +++ b/src/lib/osinfo/libc.c @@ -31,6 +31,9 @@ const char * tor_libc_get_name(void) { +#if defined(__BSD_VISIBLE) || defined(__NETBSD_SOURCE) + return "BSD"; +#endif /* defined(__BSD_VISIBLE) || defined(__NETBSD_SOURCE) */ #ifdef __GLIBC__ return "Glibc"; #else /* !defined(__GLIBC__) */ @@ -43,6 +46,21 @@ tor_libc_get_name(void) const char * tor_libc_get_version_str(void) { +#if defined(__BSD_VISIBLE) || defined(__NETBSD_SOURCE) +#include <sys/param.h> +#ifdef __DragonFly_version + return STR(__DragonFly_version); +#endif +#ifdef __FreeBSD__ + return STR(__FreeBSD_version); +#endif +#ifdef __NetBSD_Version__ + return STR(__NetBSD_Version__); +#endif +#ifdef OpenBSD + return STR(OpenBSD); +#endif +#endif /* defined(__BSD_VISIBLE) || defined(__NETBSD_SOURCE) */ #ifdef CHECK_LIBC_VERSION const char *version = gnu_get_libc_version(); if (version == NULL) |