1/* 2 * Simplistic program to correct SJIS inside strings. When a trail byte is a 3 * backslash it needs to be doubled. 4 * Public domain. 5 */ 6#include <stdio.h> 7#include <string.h> 8 9 int 10main(argc, argv) 11 int argc; 12 char **argv; 13{ 14 char buffer[BUFSIZ]; 15 char *p; 16 17 while (fgets(buffer, BUFSIZ, stdin) != NULL) 18 { 19 for (p = buffer; *p != 0; p++) 20 { 21 if (strncmp(p, "charset=euc-jp", 14) == 0) 22 { 23 fputs("charset=cp932", stdout); 24 p += 13; 25 } 26 else if (strncmp(p, "ja.po - Japanese message file", 29) == 0) 27 { 28 fputs("ja.sjis.po - Japanese message file for Vim (version 6.x)\n", stdout); 29 fputs("# generated from ja.po, DO NOT EDIT", stdout); 30 while (p[1] != '\n') 31 ++p; 32 } 33 else if (*(unsigned char *)p == 0x81 && p[1] == '_') 34 { 35 putchar('\\'); 36 ++p; 37 } 38 else 39 { 40 if (*p & 0x80) 41 { 42 putchar(*p++); 43 if (*p == '\\') 44 putchar(*p); 45 } 46 putchar(*p); 47 } 48 } 49 } 50} 51