xref: /vim-8.2.3635/src/po/sjiscorr.c (revision d1d037e9)
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
main(int argc,char ** argv)10 main(int argc, char **argv)
11 {
12 	char buffer[BUFSIZ];
13 	char *p;
14 
15 	while (fgets(buffer, BUFSIZ, stdin) != NULL)
16 	{
17 		for (p = buffer; *p != 0; p++)
18 		{
19 			if (strncmp(p, "charset=utf-8", 13) == 0
20 				|| strncmp(p, "charset=UTF-8", 13) == 0)
21 			{
22 				fputs("charset=cp932", stdout);
23 				p += 12;
24 			}
25 			else if (strncmp(p, "# Original translations", 23) == 0)
26 			{
27 				fputs("# generated from ja.po, DO NOT EDIT", stdout);
28 				while (p[1] != '\n')
29 					++p;
30 			}
31 			else if (*(unsigned char *)p == 0x81 && p[1] == '_')
32 			{
33 				putchar('\\');
34 				++p;
35 			}
36 			else
37 			{
38 				if (*p & 0x80)
39 				{
40 					putchar(*p++);
41 					if (*p == '\\')
42 						putchar(*p);
43 				}
44 				putchar(*p);
45 			}
46 		}
47 	}
48 }
49