summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--changes/bsd_libc3
-rw-r--r--src/lib/osinfo/libc.c18
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)