From a6c0fb80d2f4be47a880123d0ad630581469da0e Mon Sep 17 00:00:00 2001 From: Marco Trevisan (TreviƱo) Date: Feb 23 2018 05:07:05 +0000 Subject: locate: don't even try to transliterate ascii strings This improves performances a lot, basically there's now almost no timing difference between using -t parameter or not --- diff --git a/src/locate.c b/src/locate.c index 29f046e..cd0e897 100644 --- a/src/locate.c +++ b/src/locate.c @@ -183,19 +183,33 @@ transliterate_string (const char *str) size_t inlen; size_t outleft; size_t transliteratedlen; + size_t i; bool changed; + bool needsconversion; char outbuf[PATH_MAX * 2]; char *inbuf; char *outptr; + needsconversion = false; changed = false; inbuf = (char *) str; inlen = 1; outptr = outbuf; - strrlen = strlen (str); + strrlen = 0; outleft = sizeof (outbuf) - 1; transliteratedlen = 0; + for (i = 0; str[i]; i++) + { + if (str[i] & 0x80) + needsconversion = true; + + ++strrlen; + } + + if (needsconversion != true) + return NULL; + while (inbuf < str + strrlen) { size_t convertedlen;