i*.c: included each other - 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 0502e73cca4f319ac484f66983cf6d40bdf843da /scm/iomenu/commit/0502e73cca4f319ac484f66983cf6d40bdf843da.gph bitreich.org 70 1parent 2743c784dbce7910cbec895c42a723f06fa7b620 /scm/iomenu/commit/2743c784dbce7910cbec895c42a723f06fa7b620.gph bitreich.org 70 hAuthor: Josuah Demangeon URL:mailto:mail@josuah.net bitreich.org 70 iDate: Sun, 29 Oct 2017 22:17:52 +0100 Err bitreich.org 70 i Err bitreich.org 70 i*.c: included each other Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M Makefile | 5 ++++- Err bitreich.org 70 i M buffer.c | 21 ++++++++++++++++++--- Err bitreich.org 70 i M control.c | 20 ++++++++++++++++---- Err bitreich.org 70 i M display.c | 10 +++++++++- Err bitreich.org 70 i D iomenu.core | 0 Err bitreich.org 70 i A iomenu.h | 21 +++++++++++++++++++++ Err bitreich.org 70 i M main.c | 31 ++++++++++++++++++++++++++++++- Err bitreich.org 70 i M main.h | 30 +----------------------------- Err bitreich.org 70 i M utf8.c | 2 ++ Err bitreich.org 70 i Err bitreich.org 70 i9 files changed, 101 insertions(+), 39 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@@ -1,12 +1,15 @@ Err bitreich.org 70 i-CFLAGS = -std=c89 -Wpedantic -Wall -Wextra -g -D_POSIX_C_SOURCE=200809L Err bitreich.org 70 i+CFLAGS = -std=c89 -pedantic -Wall -Wextra -g -D_POSIX_C_SOURCE=200809L Err bitreich.org 70 i Err bitreich.org 70 i OBJ = buffer.o control.o display.o main.o utf8.o Err bitreich.org 70 i+INC = buffer.h control.h display.h main.h utf8.h iomenu.h Err bitreich.org 70 i Err bitreich.org 70 i all: iomenu Err bitreich.org 70 i Err bitreich.org 70 i iomenu: $(OBJ) Err bitreich.org 70 i $(CC) $(LDFLAGS) $(OBJ) -o $@ Err bitreich.org 70 i Err bitreich.org 70 i+$(OBJ): $(INC) 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/buffer.c b/buffer.c /scm/iomenu/file/buffer.c.gph bitreich.org 70 i@@ -1,4 +1,14 @@ Err bitreich.org 70 i+#include Err bitreich.org 70 i+ Err bitreich.org 70 i+#include Err bitreich.org 70 i+#include Err bitreich.org 70 i+#include Err bitreich.org 70 i+#include Err bitreich.org 70 i+ Err bitreich.org 70 i+#include "iomenu.h" Err bitreich.org 70 i #include "buffer.h" Err bitreich.org 70 i+#include "main.h" Err bitreich.org 70 i+#include "control.h" Err bitreich.org 70 i Err bitreich.org 70 i static char * Err bitreich.org 70 i read_line(FILE *fp) Err bitreich.org 70 i@@ -34,6 +44,8 @@ match_line(char *line, char **tokv, int tokc) Err bitreich.org 70 i void Err bitreich.org 70 i free_lines(void) Err bitreich.org 70 i { Err bitreich.org 70 i+ extern char **linev; Err bitreich.org 70 i+ Err bitreich.org 70 i if (linev) { Err bitreich.org 70 i for (; linec > 0; linec--) Err bitreich.org 70 i free(linev[linec - 1]); Err bitreich.org 70 i@@ -46,12 +58,13 @@ free_lines(void) Err bitreich.org 70 i void Err bitreich.org 70 i read_stdin(void) Err bitreich.org 70 i { Err bitreich.org 70 i- int size = 0; Err bitreich.org 70 i+ int size = 0; Err bitreich.org 70 i+ extern char **linev; Err bitreich.org 70 i Err bitreich.org 70 i while (1) { Err bitreich.org 70 i if (linec >= size) { Err bitreich.org 70 i size += BUFSIZ; Err bitreich.org 70 i- linev = realloc(linev, sizeof (char **) * size); Err bitreich.org 70 i+ linev = realloc(linev, sizeof (char **) * size); Err bitreich.org 70 i matchv = realloc(matchv, sizeof (char **) * size); Err bitreich.org 70 i if (!linev || !matchv) Err bitreich.org 70 i die("realloc"); Err bitreich.org 70 i@@ -67,11 +80,13 @@ void Err bitreich.org 70 i filter(void) Err bitreich.org 70 i { Err bitreich.org 70 i int tokc = 0; Err bitreich.org 70 i- int n = 0; Err bitreich.org 70 i+ int n = 0; Err bitreich.org 70 i int i; Err bitreich.org 70 i char **tokv = NULL; Err bitreich.org 70 i char *s; Err bitreich.org 70 i char buffer[sizeof (input)]; Err bitreich.org 70 i+ extern char **linev; Err bitreich.org 70 i+ extern current; Err bitreich.org 70 i Err bitreich.org 70 i current = offset = next = 0; Err bitreich.org 70 i strcpy(buffer, input); Err bitreich.org 70 1diff --git a/control.c b/control.c /scm/iomenu/file/control.c.gph bitreich.org 70 i@@ -1,4 +1,15 @@ Err bitreich.org 70 i+#include Err bitreich.org 70 i+ Err bitreich.org 70 i+#include Err bitreich.org 70 i+#include Err bitreich.org 70 i+#include Err bitreich.org 70 i+#include Err bitreich.org 70 i+#include Err bitreich.org 70 i+ Err bitreich.org 70 i+#include "iomenu.h" Err bitreich.org 70 i+#include "buffer.h" Err bitreich.org 70 i #include "control.h" Err bitreich.org 70 i+#include "display.h" Err bitreich.org 70 i Err bitreich.org 70 i #define CTL(char) ((char) ^ 0x40) Err bitreich.org 70 i #define ALT(char) ((char) + 0x80) Err bitreich.org 70 i@@ -22,7 +33,8 @@ width(char *s) Err bitreich.org 70 i int Err bitreich.org 70 i prev_page(int pos) Err bitreich.org 70 i { Err bitreich.org 70 i- int col, cols = ws.ws_col - MARGIN - 4; Err bitreich.org 70 i+ int col; Err bitreich.org 70 i+ int cols = ws.ws_col - MARGIN - 4; Err bitreich.org 70 i Err bitreich.org 70 i pos -= pos > 0 ? 1 : 0; Err bitreich.org 70 i for (col = 0; pos > 0; pos--) Err bitreich.org 70 i@@ -111,7 +123,7 @@ key(int k) Err bitreich.org 70 i top: Err bitreich.org 70 i switch (k) { Err bitreich.org 70 i case CTL('C'): Err bitreich.org 70 i- return EXIT_FAILURE; Err bitreich.org 70 i+ return -1; Err bitreich.org 70 i case CTL('U'): Err bitreich.org 70 i input[0] = '\0'; Err bitreich.org 70 i filter(); Err bitreich.org 70 i@@ -154,7 +166,7 @@ top: Err bitreich.org 70 i case CTL('J'): /* enter */ Err bitreich.org 70 i case CTL('M'): Err bitreich.org 70 i print_selection(); Err bitreich.org 70 i- return EXIT_SUCCESS; Err bitreich.org 70 i+ return 0; Err bitreich.org 70 i case ALT('['): Err bitreich.org 70 i k = CSI(fgetc(stdin)); Err bitreich.org 70 i goto top; Err bitreich.org 70 i@@ -165,5 +177,5 @@ top: Err bitreich.org 70 i add_char((char) k); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i- return CONTINUE; Err bitreich.org 70 i+ return 1; Err bitreich.org 70 i } Err bitreich.org 70 1diff --git a/display.c b/display.c /scm/iomenu/file/display.c.gph bitreich.org 70 i@@ -1,3 +1,11 @@ Err bitreich.org 70 i+#include Err bitreich.org 70 i+#include Err bitreich.org 70 i+#include Err bitreich.org 70 i+#include Err bitreich.org 70 i+ Err bitreich.org 70 i+#include "iomenu.h" Err bitreich.org 70 i+#include "utf8.h" Err bitreich.org 70 i+#include "control.h" Err bitreich.org 70 i #include "display.h" Err bitreich.org 70 i Err bitreich.org 70 i static char * Err bitreich.org 70 i@@ -15,7 +23,7 @@ format(char *str, int cols) Err bitreich.org 70 i col++; Err bitreich.org 70 i } Err bitreich.org 70 i str++; Err bitreich.org 70 i- } else if (utf8_to_rune(&rune, str) && rune_is_print(rune)) { Err bitreich.org 70 i+ } else if (utf8_to_rune(&rune, str) && utf8_is_print(rune)) { Err bitreich.org 70 i int i = utf8_len(str); Err bitreich.org 70 i while (i--) Err bitreich.org 70 i *fmt++ = *str++; Err bitreich.org 70 1diff --git a/iomenu.core b/iomenu.core /scm/iomenu/file/iomenu.core.gph bitreich.org 70 iBinary files differ. Err bitreich.org 70 1diff --git a/iomenu.h b/iomenu.h /scm/iomenu/file/iomenu.h.gph bitreich.org 70 i@@ -0,0 +1,21 @@ Err bitreich.org 70 i+#ifndef SIGWINCH Err bitreich.org 70 i+#define SIGWINCH 28 Err bitreich.org 70 i+#endif Err bitreich.org 70 i+ Err bitreich.org 70 i+#define MARGIN 30 Err bitreich.org 70 i+ Err bitreich.org 70 i+#define MIN(X, Y) (((X) < (Y)) ? (X) : (Y)) Err bitreich.org 70 i+ Err bitreich.org 70 i+extern struct winsize ws; Err bitreich.org 70 i+extern char **linev; Err bitreich.org 70 i+extern int linec; Err bitreich.org 70 i+extern char **matchv; Err bitreich.org 70 i+extern int matchc; Err bitreich.org 70 i+extern char *prompt; Err bitreich.org 70 i+extern char input[LINE_MAX]; Err bitreich.org 70 i+extern char formatted[LINE_MAX * 8]; Err bitreich.org 70 i+extern int current; Err bitreich.org 70 i+extern int offset; Err bitreich.org 70 i+extern int next; Err bitreich.org 70 i+extern int opt[128]; Err bitreich.org 70 i+extern int rows; Err bitreich.org 70 1diff --git a/main.c b/main.c /scm/iomenu/file/main.c.gph bitreich.org 70 i@@ -1,8 +1,37 @@ Err bitreich.org 70 i+#include Err bitreich.org 70 i+ Err bitreich.org 70 i+#include Err bitreich.org 70 i+#include Err bitreich.org 70 i+#include Err bitreich.org 70 i+#include Err bitreich.org 70 i+#include Err bitreich.org 70 i+#include Err bitreich.org 70 i+#include Err bitreich.org 70 i+#include Err bitreich.org 70 i+ Err bitreich.org 70 i+#include "iomenu.h" Err bitreich.org 70 i #include "main.h" Err bitreich.org 70 i+#include "buffer.h" Err bitreich.org 70 i+#include "control.h" Err bitreich.org 70 i+#include "display.h" Err bitreich.org 70 i Err bitreich.org 70 i static struct termios termios; Err bitreich.org 70 i static int ttyfd; Err bitreich.org 70 i Err bitreich.org 70 i+struct winsize ws; Err bitreich.org 70 i+char **linev = NULL; Err bitreich.org 70 i+int linec = 0; Err bitreich.org 70 i+char **matchv = NULL; Err bitreich.org 70 i+int matchc = 0; Err bitreich.org 70 i+char *prompt = ""; Err bitreich.org 70 i+char input[LINE_MAX]; Err bitreich.org 70 i+char formatted[LINE_MAX * 8]; Err bitreich.org 70 i+int current = 0; Err bitreich.org 70 i+int offset = 0; Err bitreich.org 70 i+int rows = 0; Err bitreich.org 70 i+int next = 0; Err bitreich.org 70 i+int opt[128]; Err bitreich.org 70 i+ Err bitreich.org 70 i void Err bitreich.org 70 i die(const char *s) Err bitreich.org 70 i { Err bitreich.org 70 i@@ -112,7 +141,7 @@ main(int argc, char *argv[]) Err bitreich.org 70 i set_terminal(); Err bitreich.org 70 i sigwinch(); Err bitreich.org 70 i input[0] = '\0'; Err bitreich.org 70 i- while ((exit_code = key(fgetc(stdin))) == CONTINUE) Err bitreich.org 70 i+ while ((exit_code = key(fgetc(stdin))) > 0) Err bitreich.org 70 i print_screen(); Err bitreich.org 70 i print_screen(); Err bitreich.org 70 i reset_terminal(); Err bitreich.org 70 1diff --git a/main.h b/main.h /scm/iomenu/file/main.h.gph bitreich.org 70 i@@ -1,29 +1 @@ Err bitreich.org 70 i-#ifndef SIGWINCH Err bitreich.org 70 i-#define SIGWINCH 28 Err bitreich.org 70 i-#endif Err bitreich.org 70 i- Err bitreich.org 70 i-#define CONTINUE (EXIT_SUCCESS + EXIT_FAILURE + 1) Err bitreich.org 70 i-#define MARGIN 30 Err bitreich.org 70 i- Err bitreich.org 70 i-#define MIN(X, Y) (((X) < (Y)) ? (X) : (Y)) Err bitreich.org 70 i- Err bitreich.org 70 i-winsize ws; Err bitreich.org 70 i-char **linev = NULL; Err bitreich.org 70 i-int linec = 0; Err bitreich.org 70 i-char **matchv = NULL; Err bitreich.org 70 i-int matchc = 0; Err bitreich.org 70 i-char *prompt = ""; Err bitreich.org 70 i-char input[LINE_MAX]; Err bitreich.org 70 i-char formatted[LINE_MAX * 8]; Err bitreich.org 70 i-int current = 0; Err bitreich.org 70 i-int offset = 0; Err bitreich.org 70 i-int next = 0; Err bitreich.org 70 i-int opt[128]; Err bitreich.org 70 i-int rows = 0; Err bitreich.org 70 i- Err bitreich.org 70 i-size_t utf8_len (char *); Err bitreich.org 70 i-size_t rune_len (long); Err bitreich.org 70 i-size_t utf8_to_rune (long *, char *); Err bitreich.org 70 i-int utf8_is_unicode (long); Err bitreich.org 70 i-int utf8_check (char *); Err bitreich.org 70 i-int utf8_is_print (long); Err bitreich.org 70 i+void die (const char *); Err bitreich.org 70 1diff --git a/utf8.c b/utf8.c /scm/iomenu/file/utf8.c.gph bitreich.org 70 i@@ -1,3 +1,5 @@ Err bitreich.org 70 i+#include Err bitreich.org 70 i+ Err bitreich.org 70 i #include "utf8.h" Err bitreich.org 70 i Err bitreich.org 70 i /* Err bitreich.org 70 .