Nguyễn Thái Ngọc Duy  <pclo...@gmail.com> writes:

> Signed-off-by: Nguyễn Thái Ngọc Duy <pclo...@gmail.com>
> ---
>  utf8.c | 20 ++++++++++++++------
>  utf8.h |  1 +
>  2 files changed, 15 insertions(+), 6 deletions(-)
>
> diff --git a/utf8.c b/utf8.c
> index 82c2ddf..38322a1 100644
> --- a/utf8.c
> +++ b/utf8.c
> @@ -266,18 +266,26 @@ int utf8_width(const char **start, size_t *remainder_p)
>   * string, assuming that the string is utf8.  Returns strlen() instead
>   * if the string does not look like a valid utf8 string.
>   */
> -int utf8_strwidth(const char *string)
> +int utf8_strnwidth(const char *string, int len, int skip_ansi)
>  {
>       int width = 0;
>       const char *orig = string;
>  
> -     while (1) {
> -             if (!string)
> -                     return strlen(orig);
> -             if (!*string)
> -                     return width;
> +     if (len == -1)
> +             len = strlen(string);
> +     while (string && string < orig + len) {
> +             int skip;
> +             while (skip_ansi &&
> +                    (skip = display_mode_esc_sequence_len(string)))

We prefer to avoid assignment in conditionals; please write the
second as something like:

        ((var = func(...)) != 0)

to clarify that it is not a misspelled comparison.

> +                     string += skip;
>               width += utf8_width(&string, NULL);
>       }
> +     return string ? width : len;
> +}
> +
> +int utf8_strwidth(const char *string)
> +{
> +     return utf8_strnwidth(string, -1, 0);
>  }
>  
>  int is_utf8(const char *text)
> diff --git a/utf8.h b/utf8.h
> index 501b2bd..a556932 100644
> --- a/utf8.h
> +++ b/utf8.h
> @@ -4,6 +4,7 @@
>  typedef unsigned int ucs_char_t;  /* assuming 32bit int */
>  
>  int utf8_width(const char **start, size_t *remainder_p);
> +int utf8_strnwidth(const char *string, int len, int skip_ansi);
>  int utf8_strwidth(const char *string);
>  int is_utf8(const char *text);
>  int is_encoding_utf8(const char *name);
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to