From ec0fe0d2b84c041edae97bfd291757e9d62b7fff Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Tue, 1 Oct 2024 13:18:19 -0700 Subject: [PATCH] ls: tune is_colored * src/ls.c (is_colored): Tune. This shrinks the machine code considerably on x86-64. --- src/ls.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/ls.c b/src/ls.c index 8599368eff..46f8e8e413 100644 --- a/src/ls.c +++ b/src/ls.c @@ -1464,11 +1464,14 @@ free_pending_ent (struct pending *p) static bool is_colored (enum indicator_no type) { + /* Return true unless the string is "", "0" or "00"; try to be efficient. */ size_t len = color_indicator[type].len; + if (len == 0) + return false; + if (2 < len) + return true; char const *s = color_indicator[type].string; - return ! (len == 0 - || (len == 1 && STRNCMP_LIT (s, "0") == 0) - || (len == 2 && STRNCMP_LIT (s, "00") == 0)); + return (s[0] != '0') | (s[len - 1] != '0'); } static void -- 2.47.2