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.
 
 
 
 
 
 

151 lines
4.3 KiB

// 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