]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
inventory-fd: b_uname
authornorbert.bizet <norbert.bizet@baculasystems.com>
Fri, 16 Sep 2022 11:27:23 +0000 (07:27 -0400)
committerEric Bollengier <eric@baculasystems.com>
Thu, 14 Sep 2023 11:56:59 +0000 (13:56 +0200)
bacula/src/lib/bsys.c
bacula/src/lib/protos.h

index c42cb4ee4e10abbdf65e96437051adf8564416e5..47768d6b4ca3dc00a166418bffe4d238a9a25b36 100644 (file)
 #include <regex.h>
 #endif
 
+#ifdef HAVE_WIN32
+#include "sysinfoapi.h"
+#else
+#include <sys/utsname.h>
+#endif
+
 static pthread_mutex_t timer_mutex = PTHREAD_MUTEX_INITIALIZER;
 static pthread_cond_t timer = PTHREAD_COND_INITIALIZER;
 
@@ -1902,6 +1908,27 @@ char *bstrcasestr(const char *haystack, const char *needle)
   return NULL;
 }
 
+void b_uname(POOLMEM *&un)
+{
+   if (un) {
+#if defined HAVE_WIN32
+      POOLMEM *tmp = get_pool_memory(PM_MESSAGE);
+      POOLMEM *msg = get_pool_memory(PM_MESSAGE);
+      pm_strcpy(tmp, "ver");
+      run_program_full_output(tmp, 0, msg, NULL);
+      pm_strcpy(un, &strip_trailing_newline(msg)[1]);
+      free_pool_memory(msg);
+      free_pool_memory(tmp);
+#elif defined HAVE_LINUX_OS
+      utsname uname_struct;
+      if (uname(&uname_struct) == 0)
+      {
+         Mmsg(un, "%s %s %s %s %s", uname_struct.sysname, uname_struct.nodename, uname_struct.release, uname_struct.version, uname_struct.machine);
+      }
+#endif
+   }
+}
+
 #ifdef TEST_PROGRAM
 
 #include "unittests.h"
index 54a5b0b95b29026812e481b70a02996b0e1780b9..b8f96284f7b025c03949253199481020afc98d13 100644 (file)
@@ -135,7 +135,7 @@ int       safer_unlink(const char *pathname, const char *regex);
 int fs_get_free_space(const char *path, int64_t *freeval, int64_t *totalval);
 void      mark_heap();
 int64_t   heap_used();
-
+void      b_uname(POOLMEM *&un);
 /* bnet.c */
 bool       bnet_tls_server       (TLS_CONTEXT *ctx, BSOCK *bsock,
                                   alist *verify_list, const char *psk_shard_key);