fix:TD-20141 mac os type empty
This commit is contained in:
parent
b9447601fe
commit
4aaa29bd4f
|
@ -97,6 +97,7 @@ LONG WINAPI exceptionHandler(LPEXCEPTION_POINTERS exception);
|
|||
|
||||
#include <errno.h>
|
||||
#include <libproc.h>
|
||||
#include <sys/sysctl.h>
|
||||
|
||||
#else
|
||||
|
||||
|
@ -275,34 +276,34 @@ int32_t taosGetEmail(char *email, int32_t maxLen) {
|
|||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
int32_t taosGetOsReleaseName(char *releaseName, int32_t maxLen) {
|
||||
#ifdef WINDOWS
|
||||
snprintf(releaseName, maxLen, "Windows");
|
||||
return 0;
|
||||
#elif defined(_TD_DARWIN_64)
|
||||
char line[1024];
|
||||
size_t size = 0;
|
||||
int32_t code = -1;
|
||||
char osversion[32];
|
||||
size_t osversion_len = sizeof(osversion) - 1;
|
||||
int osversion_name[] = { CTL_KERN, KERN_OSRELEASE };
|
||||
|
||||
TdFilePtr pFile = taosOpenFile("/etc/os-release", TD_FILE_READ | TD_FILE_STREAM);
|
||||
if (pFile == NULL) return false;
|
||||
|
||||
while ((size = taosGetsFile(pFile, sizeof(line), line)) != -1) {
|
||||
line[size - 1] = '\0';
|
||||
if (strncmp(line, "PRETTY_NAME", 11) == 0) {
|
||||
const char *p = strchr(line, '=') + 1;
|
||||
if (*p == '"') {
|
||||
p++;
|
||||
line[size - 2] = 0;
|
||||
}
|
||||
tstrncpy(releaseName, p, maxLen);
|
||||
code = 0;
|
||||
break;
|
||||
}
|
||||
if (sysctl(osversion_name, 2, osversion, &osversion_len, NULL, 0) == -1) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
taosCloseFile(&pFile);
|
||||
return code;
|
||||
uint32_t major, minor;
|
||||
if (sscanf(osversion, "%u.%u", &major, &minor) != 2) {
|
||||
return -1;
|
||||
}
|
||||
if (major >= 20) {
|
||||
major -= 9; // macOS 11 and newer
|
||||
sprintf(releaseName, "%u.%u", major, minor);
|
||||
} else {
|
||||
major -= 4; // macOS 10.1.1 and newer
|
||||
sprintf(releaseName, "10.%d.%d", major, minor);
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
char line[1024];
|
||||
size_t size = 0;
|
||||
|
|
Loading…
Reference in New Issue