SMOLNET PORTAL home about changes
istarting to add utf8 functions to iomenu - iomenu - interactive terminal-based selection menu	Err	bitreich.org	70
hgit clone git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu	URL:git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu	bitreich.org	70
1Log	/scm/iomenu/log.gph	bitreich.org	70
1Files	/scm/iomenu/files.gph	bitreich.org	70
1Refs	/scm/iomenu/refs.gph	bitreich.org	70
1Tags	/scm/iomenu/tag	bitreich.org	70
1README	/scm/iomenu/file/README.gph	bitreich.org	70
1LICENSE	/scm/iomenu/file/LICENSE.gph	bitreich.org	70
i---	Err	bitreich.org	70
1commit 278c57dbd7ecb5aa22c6136c5d95ff3ff12de141	/scm/iomenu/commit/278c57dbd7ecb5aa22c6136c5d95ff3ff12de141.gph	bitreich.org	70
1parent c383bef4af98a82331c2c6e56ff7964e3dbf690b	/scm/iomenu/commit/c383bef4af98a82331c2c6e56ff7964e3dbf690b.gph	bitreich.org	70
hAuthor: Josuah Demangeon <josuah.demangeon@gandi.net>	URL:mailto:josuah.demangeon@gandi.net	bitreich.org	70
iDate:   Tue, 22 Aug 2017 23:21:32 +0200	Err	bitreich.org	70
i	Err	bitreich.org	70
istarting to add utf8 functions to iomenu	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M Makefile                            |       2 ++	Err	bitreich.org	70
i  M iomenu.c                            |      37 +++++++++++++++++++------------	Err	bitreich.org	70
i  M utf8.c                              |      12 ++++++------	Err	bitreich.org	70
i  M utf8.h                              |       9 +++++----	Err	bitreich.org	70
i	Err	bitreich.org	70
i4 files changed, 36 insertions(+), 24 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/Makefile b/Makefile	/scm/iomenu/file/Makefile.gph	bitreich.org	70
i@@ -2,6 +2,8 @@ CFLAGS    = -std=c89 -Wpedantic -Wall -Wextra -g # -static	Err	bitreich.org	70
i 	Err	bitreich.org	70
i all: clean iomenu	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+iomenu: iomenu.o utf8.o	Err	bitreich.org	70
i+	Err	bitreich.org	70
i clean:	Err	bitreich.org	70
i         rm -f *.o iomenu	Err	bitreich.org	70
i 	Err	bitreich.org	70
1diff --git a/iomenu.c b/iomenu.c	/scm/iomenu/file/iomenu.c.gph	bitreich.org	70
i@@ -10,6 +10,8 @@	Err	bitreich.org	70
i 	Err	bitreich.org	70
i #include <sys/ioctl.h>	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+#include "utf8.h"	Err	bitreich.org	70
i+	Err	bitreich.org	70
i #define CONTINUE  2   /* as opposed to EXIT_SUCCESS and EXIT_FAILURE */	Err	bitreich.org	70
i 	Err	bitreich.org	70
i #define  CTL(char) (char ^ 0x40)	Err	bitreich.org	70
i@@ -121,26 +123,33 @@ readlines(void)	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i static char *	Err	bitreich.org	70
i-format(char *str, int cols)	Err	bitreich.org	70
i+format(char *s, int cols)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        int i, j;	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        for (i = j = 0; str[i] && j < cols; i++) {	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-                if (str[i] == '\t') {	Err	bitreich.org	70
i-                        int t = 8 - j % 8;	Err	bitreich.org	70
i-                        while (t-- > 0 && j < cols)	Err	bitreich.org	70
i-                                formatted[j++] = ' ';	Err	bitreich.org	70
i+        int   i = 0;	Err	bitreich.org	70
i+        long  r = 0;	Err	bitreich.org	70
i+        char *f = formatted;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        while (*s && i < cols) {	Err	bitreich.org	70
i+                if (*s == '\t') {	Err	bitreich.org	70
i+                        int t = 8 - i % 8;	Err	bitreich.org	70
i+                        while (t-- && i < cols) {	Err	bitreich.org	70
i+                                *f++ = ' ';	Err	bitreich.org	70
i+                                i++;	Err	bitreich.org	70
i+                        }	Err	bitreich.org	70
i+                        s++;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-                } else if (isprint(str[i])) {	Err	bitreich.org	70
i-                        formatted[j++] = str[i];	Err	bitreich.org	70
i+                } else if (utf8torune(&r, s) && utf8isprint(r)) {	Err	bitreich.org	70
i+                        int j = utf8len(s);	Err	bitreich.org	70
i+                        while (j--)	Err	bitreich.org	70
i+                                *f++ = *s++;	Err	bitreich.org	70
i+                        i++;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i                 } else {	Err	bitreich.org	70
i-                        formatted[j++] = '?';	Err	bitreich.org	70
i+                        *f++ = '?';	Err	bitreich.org	70
i+                        i++;	Err	bitreich.org	70
i                 }	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        formatted[j] = '\0';	Err	bitreich.org	70
i+        *f = '\0';	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         return formatted;	Err	bitreich.org	70
i }	Err	bitreich.org	70
1diff --git a/utf8.c b/utf8.c	/scm/iomenu/file/utf8.c.gph	bitreich.org	70
i@@ -33,7 +33,7 @@	Err	bitreich.org	70
i  * or 0 if ti is misencoded.	Err	bitreich.org	70
i  */	Err	bitreich.org	70
i size_t	Err	bitreich.org	70
i-utf8len(char *s, int n)	Err	bitreich.org	70
i+utf8len(char *s)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         unsigned char *sp = (unsigned char *) s;	Err	bitreich.org	70
i         int i, len = (*sp < 0x80) ? 1 :  /* 0xxxxxxx < 10000000 */	Err	bitreich.org	70
i@@ -45,7 +45,7 @@ utf8len(char *s, int n)	Err	bitreich.org	70
i                      (*sp < 0xfe) ? 6 :  /* 1111110x < 11111110 */	Err	bitreich.org	70
i                      (*sp < 0xff) ? 7 :  /* 11111110 < 11111111 */	Err	bitreich.org	70
i                                     0;	Err	bitreich.org	70
i-        if (len > n) return 0;	Err	bitreich.org	70
i+        if (len > strlen(s)) return 0;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         /* check continuation bytes */	Err	bitreich.org	70
i         for (sp++, i = 1; i < len; i++, sp++)	Err	bitreich.org	70
i@@ -75,12 +75,12 @@ utf8runelen(long r)	Err	bitreich.org	70
i  * Return the number of bytes read or 0 if the string is misencoded.	Err	bitreich.org	70
i  */	Err	bitreich.org	70
i size_t	Err	bitreich.org	70
i-utf8torune(long *r, char *s, size_t n)	Err	bitreich.org	70
i+utf8torune(long *r, char *s)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         char mask[] = { 0x7f, 0x1f, 0x0f, 0x07, 0x03, 0x01 };	Err	bitreich.org	70
i-        size_t i, len = utf8len(s, n);	Err	bitreich.org	70
i+        size_t i, len = utf8len(s);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        if (len == 0 || len > 6 || len > n)	Err	bitreich.org	70
i+        if (len == 0 || len > 6 || len > strlen(s))	Err	bitreich.org	70
i                 return 0;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         /* first byte */	Err	bitreich.org	70
i@@ -130,7 +130,7 @@ utf8check(char *s, size_t len)	Err	bitreich.org	70
i         long r = 0;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         while (len > 0) {	Err	bitreich.org	70
i-                shift = utf8torune(&r, s, len);	Err	bitreich.org	70
i+                shift = utf8torune(&r, s);	Err	bitreich.org	70
i                 if (!shift || !utf8runeisunicode(r))	Err	bitreich.org	70
i                         return 0;	Err	bitreich.org	70
i 	Err	bitreich.org	70
1diff --git a/utf8.h b/utf8.h	/scm/iomenu/file/utf8.h.gph	bitreich.org	70
i@@ -1,5 +1,6 @@	Err	bitreich.org	70
i-size_t utf8len(char *, int);	Err	bitreich.org	70
i+size_t utf8len(char *);	Err	bitreich.org	70
i size_t utf8runelen(long);	Err	bitreich.org	70
i-size_t utf8torune(long *, char *, size_t);	Err	bitreich.org	70
i-int    utf8runeisunicode(long);	Err	bitreich.org	70
i-int    utf8check(char *, size_t);	Err	bitreich.org	70
i+size_t utf8torune(long *, char *);	Err	bitreich.org	70
i+int    utf8isunicode(long);	Err	bitreich.org	70
i+int    utf8check(char *);	Err	bitreich.org	70
i+int    utf8isprint(long);	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/iomenu/commit/278c57dbd7ecb5a...
Content-Typetext/plain; charset=utf-8