WiringPi: Remove patch string in kernel number and add whole release string
Signed-off-by: Deokgyu Yang <secugyu@gmail.com>
Change-Id: Ie1510c9b855d81cbbaee07a794bb584a70ebc53d
diff --git a/gpio/gpio.c b/gpio/gpio.c
index 431add8..964cbbd 100644
--- a/gpio/gpio.c
+++ b/gpio/gpio.c
@@ -843,11 +843,7 @@
piMakerNames [maker]);
// Show current kernel version
- printf(" * Current devices' kernel version: %d.%d.%d-%s\n",
- kernelVersion->major,
- kernelVersion->minor,
- kernelVersion->revision,
- kernelVersion->patch);
+ printf(" * Current devices' kernel version: %s\n", kernelVersion->release);
// Check for device tree
if (stat ("/proc/device-tree", &statBuf) == 0) // We're on a devtree system ...
diff --git a/wiringPi/wiringPi.c b/wiringPi/wiringPi.c
index 977b2b8..f0fdaa5 100644
--- a/wiringPi/wiringPi.c
+++ b/wiringPi/wiringPi.c
@@ -140,7 +140,7 @@
.major = 0,
.minor = 0,
.revision = 0,
- .patch = ""
+ .release = ""
};
/*----------------------------------------------------------------------------*/
@@ -271,31 +271,49 @@
struct utsname uname_buf;
char* buf;
- char* delimiter[] = { ".", "-" };
+ char* delimiter = ".";
int i;
int kernelNumbers[3] = { 0, };
- char patchStringBuf[64];
+ int revLastIndex = 0;
+ char revisionStringBuf[8];
uname(&uname_buf);
+ memcpy(kernelVersion->release, uname_buf.release, strlen(uname_buf.release));
- buf = strtok(uname_buf.release, delimiter[0]);
- for (i = 0; i < 4; i++) {
- if (i < 1) {
+ buf = strtok(uname_buf.release, delimiter);
+ for (i = 0; i < 2; i++) {
+ switch (i) {
+ case 0:
kernelNumbers[i] = atoi(buf);
- buf = strtok(NULL, delimiter[0]);
- } else if (i == 3) {
- memcpy(patchStringBuf, buf, strlen(buf));
- } else {
+ buf = strtok(NULL, delimiter);
+ break;
+ case 1:
kernelNumbers[i] = atoi(buf);
- buf = strtok(NULL, delimiter[1]);
+ buf = strtok(NULL, "\n");
+ break;
}
}
+ if (isdigit(buf[0])) {
+ for (i = 0; i < (int) strlen(buf); i++) {
+ if (!isdigit(buf[i])) {
+ revLastIndex = i - 1;
+ break;
+ }
+ }
+
+ memcpy(revisionStringBuf, buf, revLastIndex + 1);
+
+ revisionStringBuf[revLastIndex + 1] = '\n';
+ kernelNumbers[2] = atoi(revisionStringBuf);
+ } else {
+ kernelNumbers[2] = 0;
+ }
+
kernelVersion->major = kernelNumbers[0];
kernelVersion->minor = kernelNumbers[1];
kernelVersion->revision = kernelNumbers[2];
- memcpy(kernelVersion->patch, patchStringBuf, 64);
}
/*----------------------------------------------------------------------------*/
diff --git a/wiringPi/wiringPi.h b/wiringPi/wiringPi.h
index cc0dd0f..e02778b 100644
--- a/wiringPi/wiringPi.h
+++ b/wiringPi/wiringPi.h
@@ -254,7 +254,7 @@
int major;
int minor;
int revision;
- char patch[64];
+ char release[64];
};
extern struct kernelVersionStruct *kernelVersion;