WiringPi: Remove patch string in kernel number and add whole release string

Signed-off-by: Deokgyu Yang <secugyu@gmail.com>
Change-Id: Ie1510c9b855d81cbbaee07a794bb584a70ebc53d
This commit is contained in:
Deokgyu Yang
2020-08-25 17:13:34 +09:00
parent f6a49aa0d2
commit 858c8140ca
3 changed files with 32 additions and 18 deletions

View File

@@ -843,11 +843,7 @@ static void doVersion (char *argv [])
piMakerNames [maker]); piMakerNames [maker]);
// Show current kernel version // Show current kernel version
printf(" * Current devices' kernel version: %d.%d.%d-%s\n", printf(" * Current devices' kernel version: %s\n", kernelVersion->release);
kernelVersion->major,
kernelVersion->minor,
kernelVersion->revision,
kernelVersion->patch);
// Check for device tree // Check for device tree
if (stat ("/proc/device-tree", &statBuf) == 0) // We're on a devtree system ... if (stat ("/proc/device-tree", &statBuf) == 0) // We're on a devtree system ...

View File

@@ -140,7 +140,7 @@ struct kernelVersionStruct *kernelVersion = &(struct kernelVersionStruct) {
.major = 0, .major = 0,
.minor = 0, .minor = 0,
.revision = 0, .revision = 0,
.patch = "" .release = ""
}; };
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
@@ -271,31 +271,49 @@ void setKernelVersion() {
struct utsname uname_buf; struct utsname uname_buf;
char* buf; char* buf;
char* delimiter[] = { ".", "-" }; char* delimiter = ".";
int i; int i;
int kernelNumbers[3] = { 0, }; int kernelNumbers[3] = { 0, };
char patchStringBuf[64]; int revLastIndex = 0;
char revisionStringBuf[8];
uname(&uname_buf); uname(&uname_buf);
memcpy(kernelVersion->release, uname_buf.release, strlen(uname_buf.release));
buf = strtok(uname_buf.release, delimiter[0]); buf = strtok(uname_buf.release, delimiter);
for (i = 0; i < 4; i++) { for (i = 0; i < 2; i++) {
if (i < 1) { switch (i) {
case 0:
kernelNumbers[i] = atoi(buf); kernelNumbers[i] = atoi(buf);
buf = strtok(NULL, delimiter[0]); buf = strtok(NULL, delimiter);
} else if (i == 3) { break;
memcpy(patchStringBuf, buf, strlen(buf)); case 1:
} else {
kernelNumbers[i] = atoi(buf); 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->major = kernelNumbers[0];
kernelVersion->minor = kernelNumbers[1]; kernelVersion->minor = kernelNumbers[1];
kernelVersion->revision = kernelNumbers[2]; kernelVersion->revision = kernelNumbers[2];
memcpy(kernelVersion->patch, patchStringBuf, 64);
} }
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/

View File

@@ -254,7 +254,7 @@ struct kernelVersionStruct
int major; int major;
int minor; int minor;
int revision; int revision;
char patch[64]; char release[64];
}; };
extern struct kernelVersionStruct *kernelVersion; extern struct kernelVersionStruct *kernelVersion;