uname os detection add
This commit is contained in:
parent
79ccb4ca4d
commit
ea17f21ebf
|
@ -4,6 +4,26 @@
|
|||
#include <unistd.h>
|
||||
#include <sys/utsname.h>
|
||||
|
||||
#if defined(__ANDROID__)
|
||||
#define OS_NAME "Android"
|
||||
|
||||
#elif defined(__linux__)
|
||||
#define OS_NAME "linux"
|
||||
|
||||
#elif defined(__OpenBSD__)
|
||||
#define OS_NAME "OpenBSD"
|
||||
|
||||
#elif defined(__FreeBSD_)
|
||||
#define OS_NAME "FreeBSD"
|
||||
|
||||
#elif defined(__NetBSD_)
|
||||
#define OS_NAME "NetBSD"
|
||||
|
||||
#else
|
||||
#define OS_NAME "unknow"
|
||||
|
||||
#endif
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
struct utsname uts;
|
||||
if (uname(&uts)) {
|
||||
|
@ -19,7 +39,7 @@ int main(int argc, char **argv) {
|
|||
unsigned int a_flag = 0;
|
||||
|
||||
int opt;
|
||||
while ((opt = getopt(argc, argv, "asnrvm")) != -1) {
|
||||
while ((opt = getopt(argc, argv, "asnrvmo")) != -1) {
|
||||
switch (opt) {
|
||||
case 'a':
|
||||
a_flag = 1;
|
||||
|
@ -51,10 +71,14 @@ int main(int argc, char **argv) {
|
|||
|
||||
case 'm':
|
||||
printf("%s ", uts.machine);
|
||||
/* fallthrough */
|
||||
|
||||
case 'o':
|
||||
printf("%s ", OS_NAME);
|
||||
break;
|
||||
|
||||
default:
|
||||
printf("uname\n\t[-a All] [-s Sys]\n\t[-n Nodename] [-r Release]\n\t[-v Version] [-m Machine]\n");
|
||||
printf("uname\n\t[-a All] [-s Sys]\n\t[-n Nodename] [-r Release]\n\t[-v Version] [-m Machine]\n\t[-o Os name]\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue