Commits

Rafael García committed 3f591ac

Fix for UTF-8 input.

Comments (0)

Files changed (1)

 static int    run(void);
 static void   setup(int);
 static size_t textw(const char*);
+static size_t textwn(const char*, int);
 
 static char   text[BUFSIZ] = "";
 static int    mw;
 		}
 
 	}
-	fprintf(stderr, "\033[%iG", (int)(promptw+cursor+3));
-	/* fprintf(stderr, "\n"); */
+	fprintf(stderr, "\033[%iG", (int)(promptw+textwn(text, cursor)-1));
 }
 
 char*
 
 size_t
 textw(const char *s) {
-	return (s?strlen(s):0)+4;
+	return textwn(s, -1);
+}
+
+size_t
+textwn(const char *s, int l) {
+	int b, c; /* bytes and UTF-8 characters */
+
+	for(b=c=0; s && s[b] && (l<0 || b<l); b++) if((s[b] & 0xc0) != 0x80) c++;
+	return c+4; /* Accomodate for the leading and trailing spaces */
 }
 
 int
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.