class HostInfoFreeBSD : public HostInfoPosix {
public:
static llvm::VersionTuple GetOSVersion();
- static bool GetOSBuildString(std::string &s);
+ static llvm::Optional<std::string> GetOSBuildString();
static bool GetOSKernelDescription(std::string &s);
static FileSpec GetProgramFileSpec();
};
static void Terminate();
static llvm::VersionTuple GetOSVersion();
- static bool GetOSBuildString(std::string &s);
+ static llvm::Optional<std::string> GetOSBuildString();
static bool GetOSKernelDescription(std::string &s);
static llvm::StringRef GetDistributionId();
static FileSpec GetProgramFileSpec();
public:
static llvm::VersionTuple GetOSVersion();
static llvm::VersionTuple GetMacCatalystVersion();
- static bool GetOSBuildString(std::string &s);
+ static llvm::Optional<std::string> GetOSBuildString();
static bool GetOSKernelDescription(std::string &s);
static FileSpec GetProgramFileSpec();
static FileSpec GetXcodeContentsDirectory();
class HostInfoNetBSD : public HostInfoPosix {
public:
static llvm::VersionTuple GetOSVersion();
- static bool GetOSBuildString(std::string &s);
+ static llvm::Optional<std::string> GetOSBuildString();
static bool GetOSKernelDescription(std::string &s);
static FileSpec GetProgramFileSpec();
};
class HostInfoOpenBSD : public HostInfoPosix {
public:
static llvm::VersionTuple GetOSVersion();
- static bool GetOSBuildString(std::string &s);
+ static llvm::Optional<std::string> GetOSBuildString();
static bool GetOSKernelDescription(std::string &s);
static FileSpec GetProgramFileSpec();
};
static UserIDResolver &GetUserIDResolver();
static llvm::VersionTuple GetOSVersion();
- static bool GetOSBuildString(std::string &s);
+ static llvm::Optional<std::string> GetOSBuildString();
static bool GetOSKernelDescription(std::string &s);
static bool GetHostname(std::string &s);
static FileSpec GetProgramFileSpec();
//===----------------------------------------------------------------------===//
#include "lldb/Host/freebsd/HostInfoFreeBSD.h"
-
+#include "llvm/Support/FormatVariadic.h"
#include <cstdio>
#include <cstring>
#include <sys/sysctl.h>
return llvm::VersionTuple();
}
-bool HostInfoFreeBSD::GetOSBuildString(std::string &s) {
+llvm::Optional<std::string> HostInfoFreeBSD::GetOSBuildString() {
int mib[2] = {CTL_KERN, KERN_OSREV};
char osrev_str[12];
uint32_t osrev = 0;
size_t osrev_len = sizeof(osrev);
- if (::sysctl(mib, 2, &osrev, &osrev_len, NULL, 0) == 0) {
- ::snprintf(osrev_str, sizeof(osrev_str), "%-8.8u", osrev);
- s.assign(osrev_str);
- return true;
- }
+ if (::sysctl(mib, 2, &osrev, &osrev_len, NULL, 0) == 0)
+ return llvm::formatv("{0,8:8}", osrev).str();
- s.clear();
- return false;
+ return llvm::None;
}
bool HostInfoFreeBSD::GetOSKernelDescription(std::string &s) {
return g_fields->m_os_version;
}
-bool HostInfoLinux::GetOSBuildString(std::string &s) {
+llvm::Optional<std::string> HostInfoLinux::GetOSBuildString() {
struct utsname un;
::memset(&un, 0, sizeof(utsname));
- s.clear();
if (uname(&un) < 0)
- return false;
+ return llvm::None;
- s.assign(un.release);
- return true;
+ return std::string(un.release);
}
bool HostInfoLinux::GetOSKernelDescription(std::string &s) {
using namespace lldb_private;
-bool HostInfoMacOSX::GetOSBuildString(std::string &s) {
+llvm::Optional<std::string> HostInfoMacOSX::GetOSBuildString() {
int mib[2] = {CTL_KERN, KERN_OSVERSION};
char cstr[PATH_MAX];
size_t cstr_len = sizeof(cstr);
- if (::sysctl(mib, 2, cstr, &cstr_len, NULL, 0) == 0) {
- s.assign(cstr, cstr_len);
- return true;
- }
+ if (::sysctl(mib, 2, cstr, &cstr_len, NULL, 0) == 0)
+ return std::string(cstr, cstr_len);
- s.clear();
- return false;
+ return llvm::None;
}
bool HostInfoMacOSX::GetOSKernelDescription(std::string &s) {
return llvm::VersionTuple();
}
-bool HostInfoNetBSD::GetOSBuildString(std::string &s) {
+llvm::Optional<std::string> HostInfoNetBSD::GetOSBuildString() {
int mib[2] = {CTL_KERN, KERN_OSREV};
char osrev_str[12];
int osrev = 0;
size_t osrev_len = sizeof(osrev);
- if (::sysctl(mib, 2, &osrev, &osrev_len, NULL, 0) == 0) {
- ::snprintf(osrev_str, sizeof(osrev_str), "%-10.10d", osrev);
- s.assign(osrev_str);
- return true;
- }
+ if (::sysctl(mib, 2, &osrev, &osrev_len, NULL, 0) == 0)
+ return llvm::formatv("{0,10:10}", osrev).str();
- s.clear();
- return false;
+ return llvm::None;
}
bool HostInfoNetBSD::GetOSKernelDescription(std::string &s) {
}
#endif
- std::string s;
- if (HostInfo::GetOSBuildString(s)) {
+ if (llvm::Optional<std::string> s = HostInfo::GetOSBuildString()) {
response.PutCString("os_build:");
- response.PutStringAsRawHex8(s);
+ response.PutStringAsRawHex8(*s);
response.PutChar(';');
}
+ std::string s;
if (HostInfo::GetOSKernelDescription(s)) {
response.PutCString("os_kernel:");
response.PutStringAsRawHex8(s);
}
bool Platform::GetOSBuildString(std::string &s) {
+ if (IsHost()) {
+ llvm::Optional<std::string> str = HostInfo::GetOSBuildString();
+ s = str.getValueOr("");
+ return str.hasValue();
+ }
s.clear();
-
- if (IsHost())
- return HostInfo::GetOSBuildString(s);
return GetRemoteOSBuildString(s);
}