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.
120 lines
3.2 KiB
120 lines
3.2 KiB
/*++
|
|
|
|
Copyright (c) 1992-1997 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
args.c
|
|
|
|
Abstract:
|
|
|
|
Contains routines for processing command line arguments.
|
|
|
|
Environment:
|
|
|
|
User Mode - Win32
|
|
|
|
Revision History:
|
|
|
|
10-Feb-1997 DonRyan
|
|
Rewrote to implement SNMPv2 support.
|
|
|
|
--*/
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// Include files //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "globals.h"
|
|
#include "args.h"
|
|
#include "stdlib.h"
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// Public procedures //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
BOOL
|
|
ProcessArguments(
|
|
DWORD NumberOfArgs,
|
|
LPSTR ArgumentPtrs[]
|
|
)
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
Processes command line arguments.
|
|
|
|
Arguments:
|
|
|
|
NumberOfArgs - number of command line arguments.
|
|
ArgumentPtrs - array of pointers to arguments.
|
|
|
|
Return Values:
|
|
|
|
Returns true if successful.
|
|
|
|
--*/
|
|
|
|
{
|
|
DWORD dwArgument;
|
|
LPSTR pCurrentArg;
|
|
|
|
// initialize logging arguments
|
|
g_CmdLineArguments.nLogLevel = INVALID_ARGUMENT;
|
|
g_CmdLineArguments.nLogType = INVALID_ARGUMENT;
|
|
|
|
// initialize service controller argument
|
|
g_CmdLineArguments.fBypassCtrlDispatcher = FALSE;
|
|
|
|
// process arguments
|
|
while (NumberOfArgs--) {
|
|
|
|
// retrieve argument pointer
|
|
pCurrentArg = ArgumentPtrs[NumberOfArgs];
|
|
|
|
// make sure valid argument passed
|
|
if (IS_ARGUMENT(pCurrentArg, LOGLEVEL)) {
|
|
|
|
// convert string into dword argument
|
|
dwArgument = DWORD_ARGUMENT(pCurrentArg, LOGLEVEL);
|
|
|
|
// store in global argument structure
|
|
g_CmdLineArguments.nLogLevel = dwArgument;
|
|
|
|
// modify the level at which logging occurs
|
|
SnmpSvcSetLogLevel(g_CmdLineArguments.nLogLevel);
|
|
|
|
} else if (IS_ARGUMENT(pCurrentArg, LOGTYPE)) {
|
|
|
|
// convert string into dword argument
|
|
dwArgument = DWORD_ARGUMENT(pCurrentArg, LOGTYPE);
|
|
|
|
// store in global argument structure
|
|
g_CmdLineArguments.nLogType = dwArgument;
|
|
|
|
// modify the log type used during logging
|
|
SnmpSvcSetLogType(g_CmdLineArguments.nLogType);
|
|
|
|
} else if (IS_ARGUMENT(pCurrentArg, DEBUG)) {
|
|
|
|
// disable service controller when debugging
|
|
g_CmdLineArguments.fBypassCtrlDispatcher = TRUE;
|
|
|
|
} else if (NumberOfArgs) {
|
|
|
|
SNMPDBG((
|
|
SNMP_LOG_WARNING,
|
|
"SNMP: SVC: Ignoring argument %s.\n",
|
|
pCurrentArg
|
|
));
|
|
}
|
|
}
|
|
|
|
return TRUE;
|
|
}
|