-/*
- * Simplistic program to correct SJIS inside strings. When a trail byte is a
- * backslash it needs to be doubled.
- * Public domain.
- */
+// 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>
+#ifdef _WIN32
+# include <fcntl.h>
+# include <io.h>
+#endif
+
int
main(int argc, char **argv)
{
char buffer[BUFSIZ];
char *p;
+ // Windows only: put standard input and output into binary mode so that the
+ // line endings in the output match those in the input.
+#ifdef _WIN32
+ _setmode(_fileno(stdin), _O_BINARY);
+ _setmode(_fileno(stdout), _O_BINARY);
+#endif
+
while (fgets(buffer, BUFSIZ, stdin) != NULL)
{
for (p = buffer; *p != 0; p++)
fputs("charset=CP932", stdout);
p += 12;
}
- else if (strncmp(p, "# Original translations", 23) == 0)
+ else if (strncmp(p, "# Original translations.", 24) == 0)
{
+ p += 24 - 1; // subtracting 1 by considering "p++" in the loop.
fputs("# Generated from ja.po, DO NOT EDIT.", stdout);
- while (p[1] != '\n')
- ++p;
}
else if (*(unsigned char *)p == 0x81 && p[1] == '_')
{
}
}
}
+
+// vim:set ts=4 sts=4 sw=4 noet: