home *** CD-ROM | disk | FTP | other *** search
/ vim.ftp.fu-berlin.de / 2015-02-03.vim.ftp.fu-berlin.de.tar / vim.ftp.fu-berlin.de / messages / sjiscorr.c < prev    next >
Encoding:
C/C++ Source or Header  |  2007-10-28  |  932 b   |  51 lines

  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
  10. main(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.