diff options
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; -} |