From: norbert.bizet Date: Fri, 16 Sep 2022 11:27:23 +0000 (-0400) Subject: inventory-fd: b_uname X-Git-Tag: Beta-15.0.0~440 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b2c52c827639b73f5d284c9900228498f68fcb2b;p=thirdparty%2Fbacula.git inventory-fd: b_uname --- diff --git a/bacula/src/lib/bsys.c b/bacula/src/lib/bsys.c index c42cb4ee4..47768d6b4 100644 --- a/bacula/src/lib/bsys.c +++ b/bacula/src/lib/bsys.c @@ -32,6 +32,12 @@ #include #endif +#ifdef HAVE_WIN32 +#include "sysinfoapi.h" +#else +#include +#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" diff --git a/bacula/src/lib/protos.h b/bacula/src/lib/protos.h index 54a5b0b95..b8f96284f 100644 --- a/bacula/src/lib/protos.h +++ b/bacula/src/lib/protos.h @@ -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);