aboutsummaryrefslogtreecommitdiff
path: root/vendor/librune/test/gbrk.c
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-10-30 01:51:14 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-10-30 01:51:14 +0100
commit042e43247f396a9000fead59d9bff87bf12806d6 (patch)
treee902784464cbe9ce3c5114d513b016523e7e4b29 /vendor/librune/test/gbrk.c
parent170b8a92434233241c990c3e9432786de3262bcd (diff)
Completely revamp the grab source code
Some of the (many) few changes are: - Multithreading for significantly faster performance - The -p/--predicate flag - Byte offsets as the default - No customizable colors (maybe this will come back later) - Newer edition of mlib (formerly librune)
Diffstat (limited to 'vendor/librune/test/gbrk.c')
-rw-r--r--vendor/librune/test/gbrk.c85
1 files changed, 0 insertions, 85 deletions
diff --git a/vendor/librune/test/gbrk.c b/vendor/librune/test/gbrk.c
deleted file mode 100644
index 5a7c00d..0000000
--- a/vendor/librune/test/gbrk.c
+++ /dev/null
@@ -1,85 +0,0 @@
-#define _POSIX_C_SOURCE 200809L
-#include <err.h>
-#include <locale.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <gbrk.h>
-#include <rune.h>
-#include <utf8.h>
-
-#define die(...) err(EXIT_FAILURE, __VA_ARGS__)
-
-static void test(char *);
-
-int
-main(int argc, char **argv)
-{
- char *line = NULL;
- size_t n;
- ssize_t nr;
- FILE *fp;
-
- setlocale(LC_ALL, "");
-
- if (argc != 2) {
- fprintf(stderr, "%s: file\n", *argv);
- exit(EXIT_FAILURE);
- }
-
- if (!(fp = fopen(argv[1], "r")))
- die("fopen");
-
- while ((nr = getline(&line, &n, fp)) > 0) {
- line[nr - 1] = 0;
- test(line);
- }
-
- if (nr == -1 && ferror(fp))
- die("getline");
-
- fclose(fp);
- free(line);
- return EXIT_SUCCESS;
-}
-
-void
-test(char *raw)
-{
- int n;
- rune ch;
- char8_t *p, *buf;
- const char8_t *s;
- size_t bufsiz = 4096;
- struct u8view graph;
-
- if (!(buf = malloc(bufsiz)))
- die("malloc");
-
- p = buf;
- while (sscanf(raw, "%" SCNxRUNE "%n", &ch, &n)) {
- rune sep;
- p += rtou8(p, ch, bufsiz - (p - buf));
- raw += n;
- raw += u8tor(&sep, (char8_t *)raw);
- if (!sep)
- break;
- }
- *p = 0;
-
- s = buf;
- while (u8gnext(&graph, &s, &bufsiz) && *graph.p) {
- rune ch;
- const char8_t *p;
-
- while (u8next(&ch, &graph.p, &graph.len) && ch) {
- printf("%04" PRIXRUNE "%s", ch, graph.len > 0 ? "×" : "");
- p = graph.p;
- }
- if (bufsiz && *p)
- fputs("÷", stdout);
- }
-
- putchar('\n');
- free(buf);
-}