From d3b11514c22943587e76def34c48655c78cd9610 Mon Sep 17 00:00:00 2001 From: John Vogel Date: Mon, 9 Oct 2023 10:39:19 -0400 Subject: [PATCH 4/4] battery.c: be more careful with the printf format --- battery.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/battery.c b/battery.c index 20307e5..0770619 100644 --- a/battery.c +++ b/battery.c @@ -26,6 +26,7 @@ int put_infos(char *path, char *format) char status[MAXLEN] = {0}; int capacity = -1; bool found_status = false, found_capacity = false; + bool print_status = false, print_capacity = false; while (fgets(line, sizeof(line), bf) != NULL) { char *key = strtok(line, TOKSEP); if (key != NULL) { @@ -43,12 +44,17 @@ int put_infos(char *path, char *format) fprintf(stderr, "The battery information is missing.\n"); return EXIT_FAILURE; } else { - if (strstr(format, "%s") == NULL) - printf(format, capacity); - else if (strstr(format, "%i") == NULL) + print_status = (strstr(format, "%s") == NULL) ? false : true; + print_capacity = (strstr(format, "%i") == NULL) ? false : true; + + if (print_status && print_capacity) + printf(format, status, capacity); + else if (print_status) printf(format, status); + else if (print_capacity) + printf(format, capacity); else - printf(format, status, capacity); + return EXIT_FAILURE; printf("\n"); fflush(stdout); } -- 2.42.0