blob: e4683354da42ff1bb10ac2292ce3e9941bfeaf8e [file] [log] [blame]
#ifndef SNMP_PARSE_ARGS_H
#define SNMP_PARSE_ARGS_H
#ifdef __cplusplus
extern "C" {
#endif
/**
* @file snmp_parse_args.h
*
* Support for initializing variables of type netsnmp_session from command
* line arguments
*/
/** Don't enable any logging even if there is no -L argument */
#define NETSNMP_PARSE_ARGS_NOLOGGING 0x0001
/** Don't zero out sensitive arguments as they are not on the command line
* anyway, typically used when the function is called from an internal
* config-line handler
*/
#define NETSNMP_PARSE_ARGS_NOZERO 0x0002
/**
* Parsing of command line arguments succeeded and application is expected
* to continue with normal operation.
*/
#define NETSNMP_PARSE_ARGS_SUCCESS 0
/**
* Parsing of command line arguments succeeded, but the application is expected
* to exit with zero exit code. For example, '-V' parameter has been found.
*/
#define NETSNMP_PARSE_ARGS_SUCCESS_EXIT -2
/**
* Parsing of command line arguments failed and application is expected to show
* usage (i.e. list of parameters) and exit with nozero exit code.
*/
#define NETSNMP_PARSE_ARGS_ERROR_USAGE -1
/**
* Parsing of command line arguments failed and application is expected to exit
* with nozero exit code. netsnmp_parse_args() has already printed what went
* wrong.
*/
#define NETSNMP_PARSE_ARGS_ERROR -3
/**
* Parse an argument list and initialize \link netsnmp_session
* session\endlink
* from it.
* @param argc Number of elements in argv
* @param argv string array of at least argc elements
* @param session
* @param localOpts Additional option characters to accept
* @param proc function pointer used to process any unhandled arguments
* @param flags flags directing how to handle the string
*
* @retval 0 (= #NETSNMP_PARSE_ARGS_SUCCESS) on success
* @retval #NETSNMP_PARSE_ARGS_SUCCESS_EXIT when the application is expected
* to exit with zero exit code (e.g. '-V' option was found)
* @retval #NETSNMP_PARSE_ARGS_ERROR_USAGE when the function failed to parse
* the command line and the application is expected to show it's usage
* @retval #NETSNMP_PARSE_ARGS_ERROR when the function failed to parse
* the command line and it has already printed enough information for the user
* and no other output is needed
*
* The proc function is called with argc, argv and the currently processed
* option as arguments
*/
NETSNMP_IMPORT int
netsnmp_parse_args(int argc, char **argv, netsnmp_session *session,
const char *localOpts, void (*proc)(int, char *const *, int),
int flags);
/**
* Calls \link netsnmp_parse_args()
* netsnmp_parse_args(argc, argv, session, localOpts, proc, 0)\endlink
*/
NETSNMP_IMPORT
int
snmp_parse_args(int argc, char **argv, netsnmp_session *session,
const char *localOpts, void (*proc)(int, char *const *, int));
NETSNMP_IMPORT
void
snmp_parse_args_descriptions(FILE *);
NETSNMP_IMPORT
void
snmp_parse_args_usage(FILE *);
#ifdef __cplusplus
}
#endif
#endif