| 1403 |
return i; |
return i; |
| 1404 |
} |
} |
| 1405 |
|
|
| 1406 |
int FAR PASCAL TextEchoJP(PComVar cv, PCHAR B, int C) |
int FAR PASCAL TextEchoMBCS(PComVar cv, PCHAR B, int C) |
| 1407 |
{ |
{ |
| 1408 |
int i, TempLen; |
int i, TempLen; |
| 1409 |
WORD K; |
WORD K; |
| 1565 |
return i; |
return i; |
| 1566 |
} |
} |
| 1567 |
|
|
|
int FAR PASCAL TextEchoKR(PComVar cv, PCHAR B, int C) |
|
|
{ |
|
|
int i, TempLen; |
|
|
WORD K; |
|
|
char TempStr[11]; |
|
|
int EchoCodeNew; |
|
|
BYTE d; |
|
|
BOOL Full, KanjiFlagNew; |
|
|
|
|
|
Full = FALSE; |
|
|
i = 0; |
|
|
while (! Full && (i < C)) { |
|
|
TempLen = 0; |
|
|
d = (BYTE)B[i]; |
|
|
EchoCodeNew = cv->EchoCode; |
|
|
KanjiFlagNew = FALSE; |
|
|
|
|
|
if (cv->EchoKanjiFlag) { |
|
|
EchoCodeNew = IdKanji; |
|
|
|
|
|
K = (cv->EchoKanjiFirst << 8) + d; |
|
|
|
|
|
// UTF-8への変換を行う。1〜3バイトまでの対応なので注意。 |
|
|
if (cv->KanjiCodeEcho == IdUTF8) { |
|
|
TempLen += OutputTextUTF8(K, TempStr, cv); |
|
|
} |
|
|
else { |
|
|
TempStr[TempLen++] = HIBYTE(K); |
|
|
TempStr[TempLen++] = LOBYTE(K); |
|
|
} |
|
|
} |
|
|
else if (IsDBCSLeadByteEx(*cv->CodePage, d)) { |
|
|
KanjiFlagNew = TRUE; |
|
|
cv->EchoKanjiFirst = d; |
|
|
EchoCodeNew = IdKanji; |
|
|
} |
|
|
else { |
|
|
EchoCodeNew = IdASCII; |
|
|
|
|
|
if (d==0x0d) { |
|
|
TempStr[TempLen++] = 0x0d; |
|
|
if (cv->CRSend==IdCRLF) { |
|
|
TempStr[TempLen++] = 0x0a; |
|
|
} |
|
|
else if ((cv->CRSend==IdCR) && |
|
|
cv->TelFlag && ! cv->TelBinSend) { |
|
|
TempStr[TempLen++] = 0; |
|
|
} |
|
|
} |
|
|
else if ((d>=0x80) && (cv->KanjiCodeEcho==IdUTF8)) { |
|
|
TempLen += OutputTextUTF8((WORD)d, TempStr, cv); |
|
|
} |
|
|
else { |
|
|
TempStr[TempLen++] = d; |
|
|
if (cv->TelFlag && (d==0xff)) { |
|
|
TempStr[TempLen++] = (char)0xff; |
|
|
} |
|
|
} |
|
|
} // if (cv->EchoKanjiFlag) else if ... else ... end |
|
|
|
|
|
if (TempLen == 0) { |
|
|
i++; |
|
|
cv->EchoCode = EchoCodeNew; |
|
|
cv->EchoKanjiFlag = KanjiFlagNew; |
|
|
} |
|
|
else { |
|
|
Full = InBuffSize-cv->InBuffCount-TempLen < 0; |
|
|
if (! Full) { |
|
|
i++; |
|
|
cv->EchoCode = EchoCodeNew; |
|
|
cv->EchoKanjiFlag = KanjiFlagNew; |
|
|
memcpy(&(cv->InBuff[cv->InBuffCount]),TempStr,TempLen); |
|
|
cv->InBuffCount = cv->InBuffCount + TempLen; |
|
|
} |
|
|
} |
|
|
|
|
|
} // end of "while {}" |
|
|
|
|
|
return i; |
|
|
} |
|
|
|
|
| 1568 |
int FAR PASCAL CommTextEcho(PComVar cv, PCHAR B, int C) |
int FAR PASCAL CommTextEcho(PComVar cv, PCHAR B, int C) |
| 1569 |
{ |
{ |
| 1570 |
int i, TempLen; |
int i, TempLen; |
| 1584 |
switch (cv->Language) { |
switch (cv->Language) { |
| 1585 |
case IdUtf8: |
case IdUtf8: |
| 1586 |
case IdJapanese: |
case IdJapanese: |
|
return TextEchoJP(cv,B,C); |
|
|
break; |
|
| 1587 |
case IdKorean: |
case IdKorean: |
| 1588 |
return TextEchoKR(cv,B,C); |
return TextEchoMBCS(cv,B,C); |
| 1589 |
break; |
break; |
| 1590 |
} |
} |
| 1591 |
|
|