From f88622085c3d1f7586ab0f63691c1d1265dfb3cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20M=C3=BCller?= Date: Thu, 16 Mar 2023 20:02:59 +0100 Subject: [PATCH] Use `bool` + `size_t` for `os_version_str`, return `true` on success Abort the test if the function fails, as the version output will be undefined in that case. --- src/base/system.cpp | 14 +++++++------- src/base/system.h | 22 +++++++++------------- src/engine/shared/engine.cpp | 2 +- src/test/os.cpp | 2 +- 4 files changed, 18 insertions(+), 22 deletions(-) diff --git a/src/base/system.cpp b/src/base/system.cpp index 1cf644ea5..2a3a01a06 100644 --- a/src/base/system.cpp +++ b/src/base/system.cpp @@ -4186,7 +4186,7 @@ int secure_rand_below(int below) } } -int os_version_str(char *version, int length) +bool os_version_str(char *version, size_t length) { #if defined(CONF_FAMILY_WINDOWS) const WCHAR *module_path = L"kernel32.dll"; @@ -4194,20 +4194,20 @@ int os_version_str(char *version, int length) DWORD size = GetFileVersionInfoSizeW(module_path, &handle); if(!size) { - return 1; + return false; } void *data = malloc(size); if(!GetFileVersionInfoW(module_path, handle, size, data)) { free(data); - return 1; + return false; } VS_FIXEDFILEINFO *fileinfo; UINT unused; if(!VerQueryValueW(data, L"\\", (void **)&fileinfo, &unused)) { free(data); - return 1; + return false; } str_format(version, length, "Windows %hu.%hu.%hu.%hu", HIWORD(fileinfo->dwProductVersionMS), @@ -4215,12 +4215,12 @@ int os_version_str(char *version, int length) HIWORD(fileinfo->dwProductVersionLS), LOWORD(fileinfo->dwProductVersionLS)); free(data); - return 0; + return true; #else struct utsname u; if(uname(&u)) { - return 1; + return false; } char extra[128]; extra[0] = 0; @@ -4261,7 +4261,7 @@ int os_version_str(char *version, int length) } while(false); str_format(version, length, "%s %s (%s, %s)%s", u.sysname, u.release, u.machine, u.version, extra); - return 0; + return true; #endif } diff --git a/src/base/system.h b/src/base/system.h index 7247092e7..f9eacc084 100644 --- a/src/base/system.h +++ b/src/base/system.h @@ -2552,19 +2552,15 @@ int secure_rand(); */ int secure_rand_below(int below); -/* - Function: os_version_str - Returns a human-readable version string of the operating system - - Parameters: - version - Buffer to use for the output. - length - Length of the output buffer. - - Returns: - 0 - Success in getting the version. - 1 - Failure in getting the version. -*/ -int os_version_str(char *version, int length); +/** + * Returns a human-readable version string of the operating system. + * + * @param version Buffer to use for the output. + * @param length Length of the output buffer. + * + * @return true on success, false on failure. + */ +bool os_version_str(char *version, size_t length); #if defined(CONF_EXCEPTION_HANDLING) void init_exception_handler(); diff --git a/src/engine/shared/engine.cpp b/src/engine/shared/engine.cpp index 82d6f415f..3b93fc5c0 100644 --- a/src/engine/shared/engine.cpp +++ b/src/engine/shared/engine.cpp @@ -73,7 +73,7 @@ public: #endif char aVersionStr[128]; - if(!os_version_str(aVersionStr, sizeof(aVersionStr))) + if(os_version_str(aVersionStr, sizeof(aVersionStr))) { dbg_msg("engine", "operating system version: %s", aVersionStr); } diff --git a/src/test/os.cpp b/src/test/os.cpp index 4b83a9acc..295df92d9 100644 --- a/src/test/os.cpp +++ b/src/test/os.cpp @@ -6,6 +6,6 @@ TEST(Os, VersionStr) { char aVersion[128]; - EXPECT_FALSE(os_version_str(aVersion, sizeof(aVersion))); + ASSERT_TRUE(os_version_str(aVersion, sizeof(aVersion))); EXPECT_STRNE(aVersion, ""); }