commit d5efd256aa3840476579a27293ef1fb92a4b51e7
Author:     Lauri Tirkkonen <[email protected]>
AuthorDate: Wed Mar 13 19:40:52 2019 +0200
Commit:     Hiltjo Posthuma <[email protected]>
CommitDate: Fri Mar 15 12:24:13 2019 +0100

    replace utf8strchr with wcschr

diff --git a/config.def.h b/config.def.h
index 0e01717..482901e 100644
--- 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;
diff --git a/st.c b/st.c
index d35f89d..812f30c 100644
--- 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)
 {
diff --git a/st.h b/st.h
index 38c61c4..4da3051 100644
--- 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;

Reply via email to