diff options
author | Thomas Voss <mail@thomasvoss.com> | 2023-10-29 22:39:48 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2023-10-29 22:39:48 +0100 |
commit | 9cad508b5c98ca1029460807249cafb712f28f1e (patch) | |
tree | 2ad62d1ca57b7dc691550865cb7fb0b55c26da34 /bilingual_sort.c | |
parent | c88b4c2d0842dfbb32fa744dde781601b9e4e7cf (diff) |
Migrate the site to GSP and a Makefile
Diffstat (limited to 'bilingual_sort.c')
-rw-r--r-- | bilingual_sort.c | 41 |
1 files changed, 0 insertions, 41 deletions
diff --git a/bilingual_sort.c b/bilingual_sort.c deleted file mode 100644 index 870e3da..0000000 --- a/bilingual_sort.c +++ /dev/null @@ -1,41 +0,0 @@ -/* This is a simple program that runs in an infinite loop. It reads strings - * from standard input in the form of “str1:str2”, sorts them according to the - * locale (set by gawk), and then prints out the first string in sorted order. - * - * The reason we use this instead of just sort(1) or something is because - * spawning one process for each comparison is super slow. This lets us do - * multiple comparisons of string-pairs in only a single process. - */ - -#define _GNU_SOURCE - -#include <locale.h> -#include <stdbool.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -int -main(void) -{ - char *s1, *s2, - line[256]; - - /* We need line buffering to make gawk interact with this properly */ - setlinebuf(stdout); - setlocale(LC_ALL, ""); - - while (true) { - if (fgets(line, sizeof(line), stdin) == NULL) - break; - - s1 = line; - s2 = strchr(line, ':') + 1; - s2[-1] = '\0'; - *strchrnul(s2, '\n') = '\0'; - - puts(strcoll(s1, s2) < 0 ? s1 : s2); - } - - return EXIT_SUCCESS; -} |