From 99818f9ce0bc9c006eccfb9c2660c538233796ab Mon Sep 17 00:00:00 2001 From: Joachim Nilsson Date: Tue, 4 Jul 2017 20:59:49 +0200 Subject: [PATCH] Convert banner() and printv() to use new screen_init() values This patch changes the traditional look of the Finit boot sequence. Now we stick to the screen width probed by screen_init(), or max 132 chars. Also, some minor cleanup of the currently unused print_timestamp() method used by printv() when showing [ OK ] or [FAIL] of services at boot. Signed-off-by: Joachim Nilsson --- src/finit.c | 7 ++++--- src/helpers.c | 49 ++++++++++++++++++++++++++----------------------- 2 files changed, 30 insertions(+), 26 deletions(-) diff --git a/src/finit.c b/src/finit.c index 5bfbb1e0..8c9d55ee 100644 --- a/src/finit.c +++ b/src/finit.c @@ -64,13 +64,14 @@ uev_ctx_t *ctx = NULL; /* Main loop context */ static void banner(void) { - char buf[42] = INIT_HEADING; - const char separator[] = "========================================================================"; + char *buf = INIT_HEADING; + char separator[SCREEN_WIDTH]; if (log_is_silent()) return; - fprintf(stderr, "\e[2K\e[1m%s %.*s\e[0m\n", buf, 66 - (int)strlen(buf), separator); + memset(separator, '=', sizeof(separator)); + fprintf(stderr, "\e[2K\e[1m%s %.*s\e[0m\n", buf, SCREEN_WIDTH - (int)strlen(buf) - 2, separator); } /* Requires /proc to be mounted */ diff --git a/src/helpers.c b/src/helpers.c index 7c994960..2c44597d 100644 --- a/src/helpers.c +++ b/src/helpers.c @@ -57,52 +57,55 @@ char *strip_line(char *line) return line; } -static int print_timestamp(void) +static size_t print_timestamp(char *buf, size_t len) { #if defined(CONFIG_PRINTK_TIME) - FILE * uptimefile; - float num1, num2; - char uptime_str[30]; + FILE *fp; + float stamp, dummy; - if((uptimefile = fopen("/proc/uptime", "r")) == NULL) - return 1; + fp = fopen("/proc/uptime", "r"); + if (!fp) + return; - fgets(uptime_str, 20, uptimefile); - fclose(uptimefile); + fgets(buf, len, fp); + fclose(fp); - sscanf(uptime_str, "%f %f", &num1, &num2); - sprintf(uptime_str, "[ %.6f ]", num1); - - write(STDERR_FILENO, uptime_str, strlen(uptime_str)); -#endif + sscanf(buf, "%f %f", &stamp, &dummy); + return snprintf(buf, len, "[ %.6f ]", stamp); +#else return 0; +#endif } void printv(const char *fmt, va_list ap) { char buf[SCREEN_WIDTH]; size_t len; - const char dots[] = " ....................................................................."; if (!fmt || log_is_silent()) return; - len = vsnprintf(buf, sizeof(buf), fmt, ap); delline(); - print_timestamp(); - write(STDERR_FILENO, "\r", 1); - write(STDERR_FILENO, buf, len); - write(STDERR_FILENO, dots, 60 - len); /* pad with dots. */ + memset(buf, 0, sizeof(buf)); + len = print_timestamp(buf, sizeof(buf)); + vsnprintf(&buf[len], sizeof(buf) - len, fmt, ap); + + len = strlen(buf); + buf[len++] = ' '; + for (int i = (int)len; i < (SCREEN_WIDTH - 8); i++) + buf[i] = '.'; /* pad with dots. */ + + fprintf(stderr, "\r%s ", buf); } void print(int action, const char *fmt, ...) { va_list ap; - const char success[] = " \e[1m[ OK ]\e[0m\n"; - const char failure[] = " \e[7m[FAIL]\e[0m\n"; - const char warning[] = " \e[7m[WARN]\e[0m\n"; - const char pending[] = " \e[1m[ \\/ ]\e[0m\n"; + const char success[] = "\e[1m[ OK ]\e[0m\n"; + const char failure[] = "\e[7m[FAIL]\e[0m\n"; + const char warning[] = "\e[7m[WARN]\e[0m\n"; + const char pending[] = "\e[1m[ \\/ ]\e[0m\n"; if (log_is_silent()) return;