152 lines
4.3 KiB
C++
152 lines
4.3 KiB
C++
// CmdLineInfo.cpp: implementation of the CCmdLineInfo class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
#include "stdafx.h"
|
|
#define __FILE_ID__ 81
|
|
|
|
#ifdef _DEBUG
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[]=__FILE__;
|
|
#define new DEBUG_NEW
|
|
#endif
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
// Construction/Destruction
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
void
|
|
CCmdLineInfo::ParseParam(
|
|
LPCTSTR lpszParam,
|
|
BOOL bFlag,
|
|
BOOL bLast
|
|
)
|
|
/*++
|
|
|
|
Routine name : CCmdLineInfo::ParseParam
|
|
|
|
Routine description:
|
|
|
|
parse/interpret individual parameters from the command line
|
|
|
|
Author:
|
|
|
|
Alexander Malysh (AlexMay), Apr, 2000
|
|
|
|
Arguments:
|
|
|
|
lpszParam [in] - parameter or flag
|
|
bFlag [in] - Indicates whether lpszParam is a parameter or a flag
|
|
bLast [in] - Indicates if this is the last parameter or flag on the command line
|
|
|
|
Return Value:
|
|
|
|
None.
|
|
|
|
--*/
|
|
{
|
|
DWORD dwRes = ERROR_SUCCESS;
|
|
DBG_ENTER(TEXT("CCmdLineInfo::ParseParam"));
|
|
|
|
if(bFlag)
|
|
{
|
|
//
|
|
// lpszParam is a flag
|
|
//
|
|
if(_tcsicmp(lpszParam, CONSOLE_CMD_FLAG_STR_FOLDER) == 0)
|
|
{
|
|
//
|
|
// User asked for startup folder.
|
|
// Next param is expected to be folder name.
|
|
//
|
|
m_cmdLastFlag = CMD_FLAG_FOLDER;
|
|
}
|
|
else if(_tcsicmp(lpszParam, CONSOLE_CMD_FLAG_STR_MESSAGE_ID) == 0)
|
|
{
|
|
//
|
|
// User asked for startup message.
|
|
// Next param is expected to be message id.
|
|
//
|
|
m_cmdLastFlag = CMD_FLAG_MESSAGE_ID;
|
|
}
|
|
else if(_tcsicmp(lpszParam, CONSOLE_CMD_FLAG_STR_NEW) == 0)
|
|
{
|
|
//
|
|
// User asked for new instance.
|
|
// No further params required.
|
|
//
|
|
m_bForceNewInstace = TRUE;
|
|
m_cmdLastFlag = CMD_FLAG_NONE;
|
|
}
|
|
else
|
|
{
|
|
//
|
|
// No flag
|
|
//
|
|
m_cmdLastFlag = CMD_FLAG_NONE;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//
|
|
// lpszParam is a parameter.
|
|
// Let's see what was the last flag specified.
|
|
//
|
|
switch(m_cmdLastFlag)
|
|
{
|
|
case CMD_FLAG_FOLDER:
|
|
if(_tcsicmp(lpszParam, CONSOLE_CMD_PRM_STR_OUTBOX) == 0)
|
|
{
|
|
m_FolderType = FOLDER_TYPE_OUTBOX;
|
|
}
|
|
else if(_tcsicmp(lpszParam, CONSOLE_CMD_PRM_STR_INCOMING) == 0)
|
|
{
|
|
m_FolderType = FOLDER_TYPE_INCOMING;
|
|
}
|
|
else if(_tcsicmp(lpszParam, CONSOLE_CMD_PRM_STR_INBOX) == 0)
|
|
{
|
|
m_FolderType = FOLDER_TYPE_INBOX;
|
|
}
|
|
else if(_tcsicmp(lpszParam, CONSOLE_CMD_PRM_STR_SENT_ITEMS) == 0)
|
|
{
|
|
m_FolderType = FOLDER_TYPE_SENT_ITEMS;
|
|
}
|
|
|
|
m_cmdLastFlag = CMD_FLAG_NONE;
|
|
break;
|
|
|
|
case CMD_FLAG_MESSAGE_ID:
|
|
//
|
|
// Try to parse the message to select
|
|
//
|
|
if (1 != _stscanf (lpszParam, TEXT("%I64x"), &m_dwlMessageId))
|
|
{
|
|
//
|
|
// Can't read 64-bits message id from string
|
|
//
|
|
CALL_FAIL (GENERAL_ERR,
|
|
TEXT("Can't read 64-bits message id from input string"),
|
|
ERROR_INVALID_PARAMETER);
|
|
m_dwlMessageId = 0;
|
|
}
|
|
m_cmdLastFlag = CMD_FLAG_NONE;
|
|
break;
|
|
|
|
case CMD_FLAG_NONE:
|
|
try
|
|
{
|
|
m_cstrServerName = lpszParam;
|
|
}
|
|
catch (...)
|
|
{
|
|
CALL_FAIL (MEM_ERR, TEXT("CString::operator ="), ERROR_NOT_ENOUGH_MEMORY);
|
|
return;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
} // CCmdLineInfo::ParseParam
|