Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
// convert.cpp : Defines the class behaviors for the application.
//
#include "stdafx.h"
#include "tchar.h"
#include "stdio.h"
#include "convert.h"
#include "convertDlg.h"
#include "FileConv.h"
#include "Msg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__; #endif
BOOL CConvertApp::CommandLineHandle() { // GBTOUNIC.EXE [/U] [/G] [/?] [/H] Filename1 [Filename2]
// If Filename2 is not provided, the tool should create a file named
// Filename1.old as the copy of Filename1, and perform the appropriate
// conversion from Filename1.old to Filename1,
// Filename1 as the final converted destination file.
//
// /U or /u performing GB18030 to Unicode conversion
// /G or /g performing Unicode to GB18030 conversion
// /H or /? Displaying help message.
TCHAR* tszFlag = NULL;
TCHAR* tszSrc = NULL; CString strTar; BOOL fAnsiToUnicode; BOOL fRet = FALSE; FILE* pFile = NULL;
if (__argc > 4 || __argc < 3) { MsgUsage(); goto Exit; } tszFlag = __targv[1]; if (*tszFlag != TEXT('-') && *tszFlag != TEXT('/')) { MsgUsage(); goto Exit; } if (lstrlen(tszFlag) != 2) { MsgUsage(); goto Exit; } // Convert direct
if (tszFlag[1] == TEXT('U') || tszFlag[1] == TEXT('u')) { fAnsiToUnicode = TRUE; } else if (tszFlag[1] == TEXT('G') || tszFlag[1] == TEXT('g')) { fAnsiToUnicode = FALSE; } else { MsgUsage(); goto Exit; }
tszSrc = __targv[2]; /*
pFile = _tfopen(tszSrc, TEXT("r")); if (!pFile) { MsgOpenSourceFileError(tszSrc); return FALSE; } fclose(pFile); */ // Source and Target file name
if (__argc == 3) { /*
// Hasn't give target file name
// Save source file set target file name
tszBuf = new TCHAR[lstrlen(tszSrc) + 5]; // 5, sizeof(TEXT(".old"))/sizeof(TCHAR)
lstrcpy(tszBuf, tszSrc); lstrcat(tszBuf, TEXT(".old")); BOOL f = CopyFile (tszSrc, tszBuf, TRUE); if (f) { tszTar = tszSrc; tszSrc = tszBuf; } else { MsgFailToBackupFile(tszSrc, tszBuf); goto Exit; } */ if (!GenerateTargetFileName(tszSrc, &strTar, fAnsiToUnicode)) { goto Exit; } } else if (__argc == 4) { strTar = __targv[3]; } else { ASSERT(FALSE); } fRet = Convert(tszSrc, strTar, fAnsiToUnicode);
Exit: /*
if (tszBuf) { delete[] tszBuf; tszBuf = NULL; } */ return fRet; }
/////////////////////////////////////////////////////////////////////////////
// CConvertApp
BEGIN_MESSAGE_MAP(CConvertApp, CWinApp) //{{AFX_MSG_MAP(CConvertApp)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG
ON_COMMAND(ID_HELP, CWinApp::OnHelp) END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CConvertApp construction
CConvertApp::CConvertApp() { }
/////////////////////////////////////////////////////////////////////////////
// The one and only CConvertApp object
CConvertApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CConvertApp initialization
BOOL CConvertApp::InitInstance() { AfxEnableControlContainer();
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
if (__argc >= 2) { CommandLineHandle(); return FALSE; }
CConvertDlg dlg; m_pMainWnd = &dlg; INT_PTR nResponse = dlg.DoModal();
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE; }
|