claws-mail/libkcc/jis.c
2001-04-19 12:21:46 +00:00

131 lines
3 KiB
C

#include "libkcc.h"
extern enum mode outmode;
extern char shiftout[], shiftin[];
extern bool nogaiji;
/*---------------------------------------------------------------------
NAME
jisascii
---------------------------------------------------------------------*/
void Kcc_jisascii(ddd, c)
register int c;
char **ddd;
{
int i;
switch (outmode) {
case M_ASCII:
break;
case M_SO:
**ddd = SI; (*ddd)++;
outmode = M_ASCII;
break;
default:
for (i=0; i< strlen(shiftout); i++) { **ddd = shiftout[i]; (*ddd)++; }
outmode = M_ASCII;
break;
}
**ddd = c; (*ddd)++;
}
/*---------------------------------------------------------------------
NAME
jisgaiji
---------------------------------------------------------------------*/
void Kcc_jisgaiji(ddd, c1, c2)
register int c1, c2;
char **ddd;
{
if (nogaiji)
Kcc_jiskanji(ddd, ZENPAD >> 8, ZENPAD & 0xff);
else {
if (outmode != M_GAIJI) {
if (outmode == M_SO) { **ddd = SI; (*ddd)++; }
**ddd = '\033'; (*ddd)++;
**ddd = '$'; (*ddd)++;
**ddd = '('; (*ddd)++;
**ddd = 'D'; (*ddd)++;
outmode = M_GAIJI;
}
**ddd = c1;
**ddd = c2;
}
}
/*---------------------------------------------------------------------
NAME
jiskana
---------------------------------------------------------------------*/
void Kcc_jiskana(ddd, c)
register int c;
char **ddd;
{
int i;
if (outmode != M_SO) {
if (outmode != M_ASCII) {
for (i=0; i< strlen(shiftout); i++) {**ddd = shiftout[i]; (*ddd)++; }
}
**ddd = SO; (*ddd)++;
outmode = M_SO;
}
**ddd = !nogaiji || (0x20 < c && c < 0x60) ? c : HANPAD; (*ddd)++;
}
/*---------------------------------------------------------------------
NAME
jiskana8
---------------------------------------------------------------------*/
void Kcc_jiskana8(ddd, c)
register int c;
char **ddd;
{
int i;
if (outmode != M_ASCII) {
for (i=0; i< strlen(shiftout); i++) {**ddd = shiftout[i]; (*ddd)++; }
outmode = M_ASCII;
}
**ddd = (!nogaiji || (0x20 < c && c < 0x60) ? c : HANPAD) | 0x80; (*ddd)++;
}
/*---------------------------------------------------------------------
NAME
jiskanak
---------------------------------------------------------------------*/
void Kcc_jiskanak(ddd, c)
register int c;
char **ddd;
{
if (outmode != M_ESCI) {
**ddd = '\033'; (*ddd)++;
**ddd = '('; (*ddd)++;
**ddd = 'I'; (*ddd)++;
outmode = M_ESCI;
}
**ddd = !nogaiji || (0x20 < c && c < 0x60) ? c : HANPAD; (*ddd)++;
}
/*---------------------------------------------------------------------
NAME
jiskanji
---------------------------------------------------------------------*/
void Kcc_jiskanji(ddd, c1, c2)
register int c1, c2;
char **ddd;
{
int i;
if (outmode != M_KANJI) {
if (outmode == M_SO)
{ **ddd = SI; (*ddd)++; }
for (i=0; i< strlen(shiftin); i++) {**ddd = shiftin[i]; (*ddd)++; }
outmode = M_KANJI;
}
**ddd = c1; (*ddd)++;
**ddd = c2; (*ddd)++;
}