[tailer] fallback to sysctl() if uname fails

pull/884/head
Timothy Stack 3 years ago
parent e4868d5ae2
commit 1dcf92e982

@ -42,6 +42,7 @@
#include <sys/fcntl.h> #include <sys/fcntl.h>
#include <unistd.h> #include <unistd.h>
#include <sys/utsname.h> #include <sys/utsname.h>
#include <sys/sysctl.h>
#endif #endif
#include "sha-256.h" #include "sha-256.h"
@ -862,11 +863,32 @@ int main(int argc, char *argv[])
struct utsname un; struct utsname un;
if (uname(&un) != 0) { if (uname(&un) != 0) {
strcpy(un.machine, "unknown"); size_t len;
strcpy(un.version, "unknown"); int mib[2];
strcpy(un.release, "unknown");
strcpy(un.sysname, "unknown"); mib[0] = CTL_KERN;
strcpy(un.nodename, "unknown"); mib[1] = KERN_OSTYPE;
len = sizeof(un.sysname);
if (sysctl(mib, 2, un.sysname, &len, NULL, 0) == -1) {
strcpy(un.sysname, "unknown OS");
}
mib[1] = KERN_VERSION;
len = sizeof(un.version);
if (sysctl(mib, 2, un.version, &len, NULL, 0) == -1) {
strcpy(un.version, "unknown Version");
}
mib[1] = KERN_OSRELEASE;
len = sizeof(un.release);
if (sysctl(mib, 2, un.release, &len, NULL, 0) == -1) {
strcpy(un.release, "unknown Release");
}
mib[0] = CTL_HW;
mib[1] = HW_MACHINE;
len = sizeof(un.machine);
if (sysctl(mib, 2, un.machine, &len, NULL, 0) == -1) {
strcpy(un.machine, "unknown Machine");
}
un.nodename[0] = '\0';
} }
snprintf(buffer, sizeof(buffer), snprintf(buffer, sizeof(buffer),
"%s %s %s %s", "%s %s %s %s",

Loading…
Cancel
Save