/*
 * 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);
			}
		}
	}
}
