replace utf8strchr with wcschr - st - Personal fork of st
 (HTM) git clone git://git.drkhsh.at/st.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit d5efd256aa3840476579a27293ef1fb92a4b51e7
 (DIR) parent 75b4ba4b4be70a3ae429b1719d18b021839216d5
 (HTM) Author: Lauri Tirkkonen <lotheac@iki.fi>
       Date:   Wed, 13 Mar 2019 19:40:52 +0200
       
       replace utf8strchr with wcschr
       
       Diffstat:
         M config.def.h                        |       4 ++--
         M st.c                                |      20 +-------------------
         M st.h                                |       2 +-
       
       3 files changed, 4 insertions(+), 22 deletions(-)
       ---
 (DIR) diff --git a/config.def.h b/config.def.h
       @@ -30,9 +30,9 @@ static float chscale = 1.0;
        /*
         * word delimiter string
         *
       - * More advanced example: " `'\"()[]{}"
       + * More advanced example: L" `'\"()[]{}"
         */
       -char *worddelimiters = " ";
       +wchar_t *worddelimiters = L" ";
        
        /* selection timeouts (in milliseconds) */
        static unsigned int doubleclicktimeout = 300;
 (DIR) diff --git a/st.c b/st.c
       @@ -41,7 +41,7 @@
        #define ISCONTROLC0(c)                (BETWEEN(c, 0, 0x1f) || (c) == '\177')
        #define ISCONTROLC1(c)                (BETWEEN(c, 0x80, 0x9f))
        #define ISCONTROL(c)                (ISCONTROLC0(c) || ISCONTROLC1(c))
       -#define ISDELIM(u)                (utf8strchr(worddelimiters, u) != NULL)
       +#define ISDELIM(u)                (u != 0 && wcschr(worddelimiters, u) != NULL)
        
        enum term_mode {
                MODE_WRAP        = 1 << 0,
       @@ -210,7 +210,6 @@ static void selsnap(int *, int *, int);
        static size_t utf8decode(const char *, Rune *, size_t);
        static Rune utf8decodebyte(char, size_t *);
        static char utf8encodebyte(Rune, size_t);
       -static char *utf8strchr(char *, Rune);
        static size_t utf8validate(Rune *, size_t);
        
        static char *base64dec(const char *);
       @@ -337,23 +336,6 @@ utf8encodebyte(Rune u, size_t i)
                return utfbyte[i] | (u & ~utfmask[i]);
        }
        
       -char *
       -utf8strchr(char *s, Rune u)
       -{
       -        Rune r;
       -        size_t i, j, len;
       -
       -        len = strlen(s);
       -        for (i = 0, j = 0; i < len; i += j) {
       -                if (!(j = utf8decode(&s[i], &r, len - i)))
       -                        break;
       -                if (r == u)
       -                        return &(s[i]);
       -        }
       -
       -        return NULL;
       -}
       -
        size_t
        utf8validate(Rune *u, size_t i)
        {
 (DIR) diff --git a/st.h b/st.h
       @@ -114,7 +114,7 @@ char *xstrdup(char *);
        extern char *utmp;
        extern char *stty_args;
        extern char *vtiden;
       -extern char *worddelimiters;
       +extern wchar_t *worddelimiters;
        extern int allowaltscreen;
        extern char *termname;
        extern unsigned int tabspaces;