... |
... |
@@ -1430,37 +1430,26 @@ print_system_header(struct record_context *ctx) |
1430
|
1430
|
struct utsname u;
|
1431
|
1431
|
const char *kernel = "unknown";
|
1432
|
1432
|
FILE *dmi, *osrelease;
|
1433
|
|
- char buf[2048] = "unknown";
|
1434
|
|
-
|
1435
|
|
- if (uname(&u) != -1)
|
1436
|
|
- kernel = u.release;
|
1437
|
|
-
|
1438
|
|
- dmi = fopen("/sys/class/dmi/id/modalias", "r");
|
1439
|
|
- if (dmi) {
|
1440
|
|
- if (fgets(buf, sizeof(buf), dmi)) {
|
1441
|
|
- buf[strlen(buf) - 1] = '\0'; /* linebreak */
|
1442
|
|
- } else {
|
1443
|
|
- sprintf(buf, "unknown");
|
1444
|
|
- }
|
1445
|
|
- fclose(dmi);
|
1446
|
|
- }
|
|
1433
|
+ char dmistr[2048] = "unknown";
|
1447
|
1434
|
|
1448
|
1435
|
iprintf(ctx, "system:\n");
|
1449
|
1436
|
indent_push(ctx);
|
1450
|
1437
|
|
|
1438
|
+ /* /etc/os-release version and distribution name */
|
1451
|
1439
|
osrelease = fopen("/etc/os-release", "r");
|
1452
|
1440
|
if (!osrelease)
|
1453
|
1441
|
osrelease = fopen("/usr/lib/os-release", "r");
|
1454
|
1442
|
if (osrelease) {
|
1455
|
1443
|
char *distro = NULL, *version = NULL;
|
|
1444
|
+ char osrstr[256] = "unknown";
|
1456
|
1445
|
|
1457
|
|
- while (fgets(buf, sizeof(buf), osrelease)) {
|
1458
|
|
- buf[strlen(buf) - 1] = '\0'; /* linebreak */
|
|
1446
|
+ while (fgets(osrstr, sizeof(osrstr), osrelease)) {
|
|
1447
|
+ osrstr[strlen(osrstr) - 1] = '\0'; /* linebreak */
|
1459
|
1448
|
|
1460
|
|
- if (!distro && strneq(buf, "ID=", 3))
|
1461
|
|
- distro = safe_strdup(&buf[3]);
|
1462
|
|
- else if (!version && strneq(buf, "VERSION_ID=", 11))
|
1463
|
|
- version = safe_strdup(&buf[11]);
|
|
1449
|
+ if (!distro && strneq(osrstr, "ID=", 3))
|
|
1450
|
+ distro = safe_strdup(&osrstr[3]);
|
|
1451
|
+ else if (!version && strneq(osrstr, "VERSION_ID=", 11))
|
|
1452
|
+ version = safe_strdup(&osrstr[11]);
|
1464
|
1453
|
|
1465
|
1454
|
if (distro && version) {
|
1466
|
1455
|
iprintf(ctx, "os: \"%s:%s\"\n", distro, version);
|
... |
... |
@@ -1471,8 +1460,23 @@ print_system_header(struct record_context *ctx) |
1471
|
1460
|
free(version);
|
1472
|
1461
|
fclose(osrelease);
|
1473
|
1462
|
}
|
|
1463
|
+
|
|
1464
|
+ /* kernel version */
|
|
1465
|
+ if (uname(&u) != -1)
|
|
1466
|
+ kernel = u.release;
|
1474
|
1467
|
iprintf(ctx, "kernel: \"%s\"\n", kernel);
|
1475
|
|
- iprintf(ctx, "dmi: \"%s\"\n", buf);
|
|
1468
|
+
|
|
1469
|
+ /* dmi modalias */
|
|
1470
|
+ dmi = fopen("/sys/class/dmi/id/modalias", "r");
|
|
1471
|
+ if (dmi) {
|
|
1472
|
+ if (fgets(dmistr, sizeof(dmistr), dmi)) {
|
|
1473
|
+ dmistr[strlen(dmistr) - 1] = '\0'; /* linebreak */
|
|
1474
|
+ } else {
|
|
1475
|
+ sprintf(dmistr, "unknown");
|
|
1476
|
+ }
|
|
1477
|
+ fclose(dmi);
|
|
1478
|
+ }
|
|
1479
|
+ iprintf(ctx, "dmi: \"%s\"\n", dmistr);
|
1476
|
1480
|
indent_pop(ctx);
|
1477
|
1481
|
}
|
1478
|
1482
|
|