unicode: simplify utf8len
authorChristoph Hellwig <hch@lst.de>
Wed, 15 Sep 2021 07:00:02 +0000 (09:00 +0200)
committerGabriel Krisman Bertazi <krisman@collabora.com>
Mon, 11 Oct 2021 20:01:54 +0000 (17:01 -0300)
Just use the utf8nlen implementation with a (size_t)-1 len argument,
similar to utf8_lookup.  Also move the function to utf8-selftest.c, as
it isn't used anywhere else.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.com>
fs/unicode/utf8-norm.c
fs/unicode/utf8-selftest.c
fs/unicode/utf8n.h

index 4b1b53391ce4bbdef515975028962aa2a9d62d69..348d6e97553f2209f6d8cb225842486ec93460e4 100644 (file)
@@ -391,36 +391,6 @@ static utf8leaf_t *utf8lookup(const struct utf8data *data,
        return utf8nlookup(data, hangul, s, (size_t)-1);
 }
 
-/*
- * Length of the normalization of s.
- * Return -1 if s is not valid UTF-8 unicode.
- *
- * A string of Default_Ignorable_Code_Point has length 0.
- */
-ssize_t utf8len(const struct utf8data *data, const char *s)
-{
-       utf8leaf_t      *leaf;
-       size_t          ret = 0;
-       unsigned char   hangul[UTF8HANGULLEAF];
-
-       if (!data)
-               return -1;
-       while (*s) {
-               leaf = utf8lookup(data, hangul, s);
-               if (!leaf)
-                       return -1;
-               if (utf8agetab[LEAF_GEN(leaf)] > data->maxage)
-                       ret += utf8clen(s);
-               else if (LEAF_CCC(leaf) == DECOMPOSE)
-                       ret += strlen(LEAF_STR(leaf));
-               else
-                       ret += utf8clen(s);
-               s += utf8clen(s);
-       }
-       return ret;
-}
-EXPORT_SYMBOL(utf8len);
-
 /*
  * Length of the normalization of s, touch at most len bytes.
  * Return -1 if s is not valid UTF-8 unicode.
index 37f33890e012fb1f70d0fa56cff0aa7a9670c5e7..80fb7c75acb2800f535c97e99c455961fa77fa7a 100644 (file)
@@ -160,6 +160,11 @@ static const struct {
        }
 };
 
+static ssize_t utf8len(const struct utf8data *data, const char *s)
+{
+       return utf8nlen(data, s, (size_t)-1);
+}
+
 static void check_utf8_nfdi(void)
 {
        int i;
index e4c8a767cf7a589812d1453a35cffbe158f8026a..41182e5464dfae2a8c7eb10f3121c9da251fefd9 100644 (file)
@@ -39,7 +39,6 @@ extern const struct utf8data *utf8nfdicf(unsigned int maxage);
  * Returns 0 if only ignorable code points are present.
  * Returns -1 if the input is not valid UTF-8.
  */
-extern ssize_t utf8len(const struct utf8data *data, const char *s);
 extern ssize_t utf8nlen(const struct utf8data *data, const char *s, size_t len);
 
 /* Needed in struct utf8cursor below. */