159 lines
4 KiB
C
159 lines
4 KiB
C
#include <windows.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <conio.h>
|
|
#include <string.h>
|
|
#include "graftabl.h"
|
|
|
|
/************************************************************************\
|
|
*
|
|
* FUNCTION: 32-bit version of GRAFTABL
|
|
*
|
|
* Syntax: GRAFTABL [XXX]
|
|
* GRAFTABL /STATUS
|
|
*
|
|
* COMMENTS: This program changes only Console Output CP and
|
|
* cannot change console (input) CP as normal GRAFTABL
|
|
* in MS-DOS 5.0
|
|
*
|
|
* HISTORY: Jan. 4, 1993
|
|
* YSt
|
|
*
|
|
* Copyright Microsoft Corp. 1993
|
|
*
|
|
\************************************************************************/
|
|
void _cdecl main( int argc, char* argv[] )
|
|
{
|
|
int iCP, iPrevCP, iRet;
|
|
char szArgv[128];
|
|
TCHAR szSour[256];
|
|
char szDest[256];
|
|
|
|
#ifdef DBCS
|
|
//bug fix #14165
|
|
//fix kksuzuka: #988
|
|
//Support billingual messages.
|
|
iPrevCP = GetConsoleOutputCP();
|
|
switch (iPrevCP)
|
|
{
|
|
case 932:
|
|
case 936:
|
|
case 949:
|
|
case 950:
|
|
SetThreadLocale(
|
|
MAKELCID( MAKELANGID( PRIMARYLANGID(GetSystemDefaultLangID()),
|
|
SUBLANG_ENGLISH_US ),
|
|
SORT_DEFAULT ) );
|
|
break;
|
|
default:
|
|
SetThreadLocale(
|
|
MAKELCID( MAKELANGID( LANG_ENGLISH, SUBLANG_ENGLISH_US ),
|
|
SORT_DEFAULT ) );
|
|
break;
|
|
}
|
|
#else // !DBCS
|
|
iPrevCP = 0;
|
|
#endif // DBCS
|
|
if(argc > 1) {
|
|
strncpy(szArgv, argv[1],127);
|
|
szArgv[127]='\0';
|
|
_strupr(szArgv);
|
|
|
|
// Help option
|
|
if(!strcmp(szArgv, "/?") || !strcmp(szArgv, "-?")) {
|
|
iRet = LoadString(NULL, HELP_TEXT, szSour, sizeof(szSour)/sizeof(TCHAR));
|
|
CharToOem(szSour, szDest);
|
|
|
|
printf(szDest);
|
|
exit(0);
|
|
}
|
|
// Status option
|
|
else if(!strcmp(szArgv, "/STATUS") ||
|
|
!strcmp(szArgv, "-STATUS") ||
|
|
!strcmp(szArgv, "-STA") ||
|
|
!strcmp(szArgv, "/STA")) {
|
|
|
|
iRet = LoadString(NULL, ACTIVE_CP, szSour, sizeof(szSour)/sizeof(TCHAR));
|
|
CharToOem(szSour, szDest);
|
|
|
|
#ifdef DBCS
|
|
if(iPrevCP == 932) {
|
|
iRet = LoadString(NULL,NONE_CP, szSour, sizeof(szSour)/sizeof(TCHAR));
|
|
printf("%ws", szDest);
|
|
}
|
|
else
|
|
#endif // DBCS
|
|
printf(szDest, GetConsoleOutputCP());
|
|
exit(0);
|
|
}
|
|
|
|
|
|
// Change output CP
|
|
else {
|
|
#ifdef DBCS // v-junm - 08/11/93
|
|
// Since Japanese DOS runs in graphics mode, this function is not supported.
|
|
if(((iCP = atoi(szArgv)) < 1) || (iCP > 10000) || (iCP == 932)) {
|
|
#else // !DBCS
|
|
iPrevCP = GetConsoleOutputCP();
|
|
|
|
if(((iCP = atoi(szArgv)) < 1) || (iCP > 10000)) {
|
|
#endif // !DBCS
|
|
iRet = LoadString(NULL, INVALID_SWITCH, szSour, sizeof(szSour)/sizeof(TCHAR));
|
|
CharToOem(szSour, szDest);
|
|
|
|
fprintf(stderr, szDest, argv[1]);
|
|
exit(1);
|
|
}
|
|
if(!SetConsoleOutputCP(iCP)) {
|
|
iRet = LoadString(NULL, NOT_ALLOWED, szSour, sizeof(szSour)/sizeof(TCHAR));
|
|
CharToOem(szSour, szDest);
|
|
fprintf(stderr, szDest, iCP);
|
|
exit(2);
|
|
}
|
|
}
|
|
#ifdef DBCS
|
|
//bug fix #14165
|
|
//fix kksuzuka: #988
|
|
//Support billingual messages.
|
|
switch (iCP)
|
|
{
|
|
case 932:
|
|
case 936:
|
|
case 949:
|
|
case 950:
|
|
SetThreadLocale(
|
|
MAKELCID( MAKELANGID( PRIMARYLANGID(GetSystemDefaultLangID()),
|
|
SUBLANG_ENGLISH_US ),
|
|
SORT_DEFAULT ) );
|
|
break;
|
|
default:
|
|
SetThreadLocale(
|
|
MAKELCID( MAKELANGID( LANG_ENGLISH, SUBLANG_ENGLISH_US ),
|
|
SORT_DEFAULT ) );
|
|
break;
|
|
}
|
|
#endif // DBCS
|
|
}
|
|
#ifdef DBCS
|
|
if(iPrevCP && iPrevCP != 932) {
|
|
#else // !DBCS
|
|
if(iPrevCP) {
|
|
#endif // !DBCS
|
|
iRet = LoadString(NULL,PREVIOUS_CP, szSour, sizeof(szSour)/sizeof(TCHAR));
|
|
CharToOem(szSour, szDest);
|
|
printf(szDest, iPrevCP);
|
|
}
|
|
else {
|
|
iRet = LoadString(NULL,NONE_CP, szSour, sizeof(szSour)/sizeof(TCHAR));
|
|
CharToOem(szSour, szDest);
|
|
printf(szDest);
|
|
}
|
|
|
|
iRet = LoadString(NULL,ACTIVE_CP, szSour, sizeof(szSour)/sizeof(TCHAR));
|
|
CharToOem(szSour, szDest);
|
|
#ifdef DBCS
|
|
if ( GetConsoleOutputCP() != 932 )
|
|
#endif // DBCS
|
|
printf(szDest, GetConsoleOutputCP());
|
|
}
|