summaryrefslogtreecommitdiffhomepage
path: root/bilingual_sort.c
diff options
context:
space:
mode:
Diffstat (limited to 'bilingual_sort.c')
-rw-r--r--bilingual_sort.c41
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;
-}