From: Harald Hoyer Date: Thu, 14 Feb 2013 10:26:07 +0000 (+0100) Subject: bootchart: parse /etc/os-release rather than system-release X-Git-Tag: v198~236 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=e93450c6c053d7499971a2b1310e893978f67f74 bootchart: parse /etc/os-release rather than system-release Also parse it early, so that we can get it in the initramfs. --- diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c index e34c08a5e..7affacfdb 100644 --- a/src/bootchart/bootchart.c +++ b/src/bootchart/bootchart.c @@ -82,6 +82,7 @@ static void signal_handler(int sig) int main(int argc, char *argv[]) { + _cleanup_free_ char *build = NULL; struct sigaction sig; struct ps_struct *ps; char output_file[PATH_MAX]; @@ -280,6 +281,12 @@ int main(int argc, char *argv[]) sysfd = open("/sys", O_RDONLY); } + if (!build) { + parse_env_file("/etc/os-release", NEWLINE, + "PRETTY_NAME", &build, + NULL); + } + /* wait for /proc to become available, discarding samples */ if (!(graph_start > 0.0)) log_uptime(); @@ -350,7 +357,7 @@ int main(int argc, char *argv[]) exit (EXIT_FAILURE); } - svg_do(); + svg_do(build); fprintf(stderr, "bootchartd: Wrote %s\n", output_file); fclose(of); diff --git a/src/bootchart/bootchart.h b/src/bootchart/bootchart.h index 6b11fd8b8..84e942099 100644 --- a/src/bootchart/bootchart.h +++ b/src/bootchart/bootchart.h @@ -124,4 +124,4 @@ extern double gettime_ns(void); extern void log_uptime(void); extern void log_sample(int sample); -extern void svg_do(void); +extern void svg_do(const char *build); diff --git a/src/bootchart/svg.c b/src/bootchart/svg.c index dc55cb379..414d7af9b 100644 --- a/src/bootchart/svg.c +++ b/src/bootchart/svg.c @@ -140,7 +140,7 @@ static void svg_header(void) } -static void svg_title(void) +static void svg_title(const char *build) { char cmdline[256] = ""; char filename[PATH_MAX]; @@ -149,7 +149,6 @@ static void svg_title(void) char model[256] = "Unknown"; char date[256] = "Unknown"; char cpu[256] = "Unknown"; - char build[256] = "Unknown"; char *c; FILE *f; time_t t; @@ -201,14 +200,6 @@ static void svg_title(void) fclose(f); } - /* Build - 1st line from /etc/system-release */ - f = fopen("/etc/system-release", "r"); - if (f) { - if (fgets(buf, 255, f)) - strncpy(build, buf, 255); - fclose(f); - } - svg("Bootchart for %s - %s\n", uts.nodename, date); svg("System: %s %s %s %s\n", @@ -1053,7 +1044,7 @@ static void svg_top_ten_pss(void) } -void svg_do(void) +void svg_do(const char *build) { struct ps_struct *ps; @@ -1106,7 +1097,7 @@ void svg_do(void) svg("\n\n"); svg("\n"); - svg_title(); + svg_title(build); svg("\n\n"); svg("\n");