st

fork of suckless's simple terminal
Index Commits Files Refs README LICENSE
commit d5efd256aa3840476579a27293ef1fb92a4b51e7
parent 75b4ba4b4be70a3ae429b1719d18b021839216d5
Author: Lauri Tirkkonen <lotheac@iki.fi>
Date:   Wed, 13 Mar 2019 19:40:52 +0200

replace utf8strchr with wcschr

Diffstat:
Mconfig.def.h | 4++--
Mst.c | 20+-------------------
Mst.h | 2+-
3 files changed, 4 insertions(+), 22 deletions(-)
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;
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)
 {
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;