diff options
Diffstat (limited to 'src/po/sjiscorr.c')
-rw-r--r-- | src/po/sjiscorr.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/po/sjiscorr.c b/src/po/sjiscorr.c new file mode 100644 index 000000000..d7706ba73 --- /dev/null +++ b/src/po/sjiscorr.c @@ -0,0 +1,50 @@ +/* + * Simplistic program to correct SJIS inside strings. When a trail byte is a + * backslash it needs to be doubled. + * Public domain. + */ +#include <stdio.h> +#include <string.h> + + int +main(argc, argv) + int argc; + char **argv; +{ + char buffer[BUFSIZ]; + char *p; + + while (fgets(buffer, BUFSIZ, stdin) != NULL) + { + for (p = buffer; *p != 0; p++) + { + if (strncmp(p, "charset=euc-jp", 14) == 0) + { + fputs("charset=cp932", stdout); + p += 13; + } + else if (strncmp(p, "ja.po - Japanese message file", 29) == 0) + { + fputs("ja.sjis.po - Japanese message file for Vim (version 6.x)\n", stdout); + fputs("# generated from ja.po, DO NOT EDIT", stdout); + while (p[1] != '\n') + ++p; + } + else if (*(unsigned char *)p == 0x81 && p[1] == '_') + { + putchar('\\'); + ++p; + } + else + { + if (*p & 0x80) + { + putchar(*p++); + if (*p == '\\') + putchar(*p); + } + putchar(*p); + } + } + } +} |