summaryrefslogtreecommitdiffstats
path: root/src/common/linux_version.c
blob: b83dc71e4ed44ead0a28c2f7c5e6f0703f7078cd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include "common/linux_version.h"

#include <stdio.h>
#include <string.h>
#include <sys/utsname.h>

int get_linux_version(void)
{
	struct utsname ubuf;
	int a, b, c;
	int n;

	if (uname(&ubuf) || strcmp(ubuf.sysname, "Linux"))
		return 0;

	n = sscanf(ubuf.release, "%d.%d.%d", &a, &b, &c);
	switch (n) {
	case 3:
		return KERNEL_VERSION(a, b, c);
	case 2:
		return KERNEL_VERSION(a, b, 0);
	default:
		return 0;
	}
}