|
Peter Hutterer |
c525038 |
From 850925910f7f6db16f0aa645892d9121760de7b2 Mon Sep 17 00:00:00 2001
|
|
Peter Hutterer |
c525038 |
From: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Peter Hutterer |
c525038 |
Date: Mon, 9 Mar 2020 10:16:04 +1000
|
|
Peter Hutterer |
c525038 |
Subject: [PATCH libinput] tools: record: fix dmi recording
|
|
Peter Hutterer |
c525038 |
|
|
Peter Hutterer |
c525038 |
Processing os-release in the same buffer that the dmi modalias used caused the
|
|
Peter Hutterer |
c525038 |
dmi to be recorded as 'dmi: "VERSION_ID=31"'. The cause for that was simply
|
|
Peter Hutterer |
c525038 |
that the dmi modalias was read but not printed until after the os-release
|
|
Peter Hutterer |
c525038 |
information was processed.
|
|
Peter Hutterer |
c525038 |
|
|
Peter Hutterer |
c525038 |
Fix this two-fold: rearrange that each part now reads and prints in
|
|
Peter Hutterer |
c525038 |
one go, and rename the buffers so we don't re-use them.
|
|
Peter Hutterer |
c525038 |
|
|
Peter Hutterer |
c525038 |
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Peter Hutterer |
c525038 |
---
|
|
Peter Hutterer |
c525038 |
tools/libinput-record.c | 46 ++++++++++++++++++++++-------------------
|
|
Peter Hutterer |
c525038 |
1 file changed, 25 insertions(+), 21 deletions(-)
|
|
Peter Hutterer |
c525038 |
|
|
Peter Hutterer |
c525038 |
diff --git a/tools/libinput-record.c b/tools/libinput-record.c
|
|
Peter Hutterer |
c525038 |
index 0b10d8bf..6d45efc5 100644
|
|
Peter Hutterer |
c525038 |
--- a/tools/libinput-record.c
|
|
Peter Hutterer |
c525038 |
+++ b/tools/libinput-record.c
|
|
Peter Hutterer |
c525038 |
@@ -1430,37 +1430,26 @@ print_system_header(struct record_context *ctx)
|
|
Peter Hutterer |
c525038 |
struct utsname u;
|
|
Peter Hutterer |
c525038 |
const char *kernel = "unknown";
|
|
Peter Hutterer |
c525038 |
FILE *dmi, *osrelease;
|
|
Peter Hutterer |
c525038 |
- char buf[2048] = "unknown";
|
|
Peter Hutterer |
c525038 |
-
|
|
Peter Hutterer |
c525038 |
- if (uname(&u) != -1)
|
|
Peter Hutterer |
c525038 |
- kernel = u.release;
|
|
Peter Hutterer |
c525038 |
-
|
|
Peter Hutterer |
c525038 |
- dmi = fopen("/sys/class/dmi/id/modalias", "r");
|
|
Peter Hutterer |
c525038 |
- if (dmi) {
|
|
Peter Hutterer |
c525038 |
- if (fgets(buf, sizeof(buf), dmi)) {
|
|
Peter Hutterer |
c525038 |
- buf[strlen(buf) - 1] = '\0'; /* linebreak */
|
|
Peter Hutterer |
c525038 |
- } else {
|
|
Peter Hutterer |
c525038 |
- sprintf(buf, "unknown");
|
|
Peter Hutterer |
c525038 |
- }
|
|
Peter Hutterer |
c525038 |
- fclose(dmi);
|
|
Peter Hutterer |
c525038 |
- }
|
|
Peter Hutterer |
c525038 |
+ char dmistr[2048] = "unknown";
|
|
Peter Hutterer |
c525038 |
|
|
Peter Hutterer |
c525038 |
iprintf(ctx, "system:\n");
|
|
Peter Hutterer |
c525038 |
indent_push(ctx);
|
|
Peter Hutterer |
c525038 |
|
|
Peter Hutterer |
c525038 |
+ /* /etc/os-release version and distribution name */
|
|
Peter Hutterer |
c525038 |
osrelease = fopen("/etc/os-release", "r");
|
|
Peter Hutterer |
c525038 |
if (!osrelease)
|
|
Peter Hutterer |
c525038 |
osrelease = fopen("/usr/lib/os-release", "r");
|
|
Peter Hutterer |
c525038 |
if (osrelease) {
|
|
Peter Hutterer |
c525038 |
char *distro = NULL, *version = NULL;
|
|
Peter Hutterer |
c525038 |
+ char osrstr[256] = "unknown";
|
|
Peter Hutterer |
c525038 |
|
|
Peter Hutterer |
c525038 |
- while (fgets(buf, sizeof(buf), osrelease)) {
|
|
Peter Hutterer |
c525038 |
- buf[strlen(buf) - 1] = '\0'; /* linebreak */
|
|
Peter Hutterer |
c525038 |
+ while (fgets(osrstr, sizeof(osrstr), osrelease)) {
|
|
Peter Hutterer |
c525038 |
+ osrstr[strlen(osrstr) - 1] = '\0'; /* linebreak */
|
|
Peter Hutterer |
c525038 |
|
|
Peter Hutterer |
c525038 |
- if (!distro && strneq(buf, "ID=", 3))
|
|
Peter Hutterer |
c525038 |
- distro = safe_strdup(&buf[3]);
|
|
Peter Hutterer |
c525038 |
- else if (!version && strneq(buf, "VERSION_ID=", 11))
|
|
Peter Hutterer |
c525038 |
- version = safe_strdup(&buf[11]);
|
|
Peter Hutterer |
c525038 |
+ if (!distro && strneq(osrstr, "ID=", 3))
|
|
Peter Hutterer |
c525038 |
+ distro = safe_strdup(&osrstr[3]);
|
|
Peter Hutterer |
c525038 |
+ else if (!version && strneq(osrstr, "VERSION_ID=", 11))
|
|
Peter Hutterer |
c525038 |
+ version = safe_strdup(&osrstr[11]);
|
|
Peter Hutterer |
c525038 |
|
|
Peter Hutterer |
c525038 |
if (distro && version) {
|
|
Peter Hutterer |
c525038 |
iprintf(ctx, "os: \"%s:%s\"\n", distro, version);
|
|
Peter Hutterer |
c525038 |
@@ -1471,8 +1460,23 @@ print_system_header(struct record_context *ctx)
|
|
Peter Hutterer |
c525038 |
free(version);
|
|
Peter Hutterer |
c525038 |
fclose(osrelease);
|
|
Peter Hutterer |
c525038 |
}
|
|
Peter Hutterer |
c525038 |
+
|
|
Peter Hutterer |
c525038 |
+ /* kernel version */
|
|
Peter Hutterer |
c525038 |
+ if (uname(&u) != -1)
|
|
Peter Hutterer |
c525038 |
+ kernel = u.release;
|
|
Peter Hutterer |
c525038 |
iprintf(ctx, "kernel: \"%s\"\n", kernel);
|
|
Peter Hutterer |
c525038 |
- iprintf(ctx, "dmi: \"%s\"\n", buf);
|
|
Peter Hutterer |
c525038 |
+
|
|
Peter Hutterer |
c525038 |
+ /* dmi modalias */
|
|
Peter Hutterer |
c525038 |
+ dmi = fopen("/sys/class/dmi/id/modalias", "r");
|
|
Peter Hutterer |
c525038 |
+ if (dmi) {
|
|
Peter Hutterer |
c525038 |
+ if (fgets(dmistr, sizeof(dmistr), dmi)) {
|
|
Peter Hutterer |
c525038 |
+ dmistr[strlen(dmistr) - 1] = '\0'; /* linebreak */
|
|
Peter Hutterer |
c525038 |
+ } else {
|
|
Peter Hutterer |
c525038 |
+ sprintf(dmistr, "unknown");
|
|
Peter Hutterer |
c525038 |
+ }
|
|
Peter Hutterer |
c525038 |
+ fclose(dmi);
|
|
Peter Hutterer |
c525038 |
+ }
|
|
Peter Hutterer |
c525038 |
+ iprintf(ctx, "dmi: \"%s\"\n", dmistr);
|
|
Peter Hutterer |
c525038 |
indent_pop(ctx);
|
|
Peter Hutterer |
c525038 |
}
|
|
Peter Hutterer |
c525038 |
|
|
Peter Hutterer |
c525038 |
--
|
|
Peter Hutterer |
c525038 |
2.24.1
|
|
Peter Hutterer |
c525038 |
|