From 436808ff99d7b7e6f5d6e8f3127d9d03f6295f98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= Date: Wed, 14 Apr 2021 20:47:42 +0200 Subject: Use RichString_appendnAscii where possible `RichString_appendnAscii()` avoids a `strlen(3)` call over ` RichString_appendAscii()`. Use the former where the length is available from a previous checked `snprintf(3)` call. Keep `RichString_appendAscii()` when passing a string literal and rely on compilers to optimize the `strlen(3)` call away. --- linux/SystemdMeter.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'linux/SystemdMeter.c') diff --git a/linux/SystemdMeter.c b/linux/SystemdMeter.c index a891eb11..47b86563 100644 --- a/linux/SystemdMeter.c +++ b/linux/SystemdMeter.c @@ -305,6 +305,7 @@ static int valueDigitColor(unsigned int value) { static void SystemdMeter_display(ATTR_UNUSED const Object* cast, RichString* out) { char buffer[16]; + int len; int color = (systemState && String_eq(systemState, "running")) ? METER_VALUE_OK : METER_VALUE_ERROR; RichString_writeAscii(out, CRT_colors[color], systemState ? systemState : "N/A"); @@ -314,40 +315,44 @@ static void SystemdMeter_display(ATTR_UNUSED const Object* cast, RichString* out if (nFailedUnits == INVALID_VALUE) { buffer[0] = '?'; buffer[1] = '\0'; + len = 1; } else { - xSnprintf(buffer, sizeof(buffer), "%u", nFailedUnits); + len = xSnprintf(buffer, sizeof(buffer), "%u", nFailedUnits); } - RichString_appendAscii(out, zeroDigitColor(nFailedUnits), buffer); + RichString_appendnAscii(out, zeroDigitColor(nFailedUnits), buffer, len); RichString_appendAscii(out, CRT_colors[METER_TEXT], "/"); if (nNames == INVALID_VALUE) { buffer[0] = '?'; buffer[1] = '\0'; + len = 1; } else { - xSnprintf(buffer, sizeof(buffer), "%u", nNames); + len = xSnprintf(buffer, sizeof(buffer), "%u", nNames); } - RichString_appendAscii(out, valueDigitColor(nNames), buffer); + RichString_appendnAscii(out, valueDigitColor(nNames), buffer, len); RichString_appendAscii(out, CRT_colors[METER_TEXT], " failed) ("); if (nJobs == INVALID_VALUE) { buffer[0] = '?'; buffer[1] = '\0'; + len = 1; } else { - xSnprintf(buffer, sizeof(buffer), "%u", nJobs); + len = xSnprintf(buffer, sizeof(buffer), "%u", nJobs); } - RichString_appendAscii(out, zeroDigitColor(nJobs), buffer); + RichString_appendnAscii(out, zeroDigitColor(nJobs), buffer, len); RichString_appendAscii(out, CRT_colors[METER_TEXT], "/"); if (nInstalledJobs == INVALID_VALUE) { buffer[0] = '?'; buffer[1] = '\0'; + len = 1; } else { - xSnprintf(buffer, sizeof(buffer), "%u", nInstalledJobs); + len = xSnprintf(buffer, sizeof(buffer), "%u", nInstalledJobs); } - RichString_appendAscii(out, valueDigitColor(nInstalledJobs), buffer); + RichString_appendnAscii(out, valueDigitColor(nInstalledJobs), buffer, len); RichString_appendAscii(out, CRT_colors[METER_TEXT], " jobs)"); } -- cgit v1.2.3