windows-nt/Source/XPSP1/NT/base/busdrv/acpi/tools/kdext/uparsearg.h

119 lines
3 KiB
C
Raw Permalink Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 1997 Microsoft Corporation
Module Name:
parsearg.h
Abstract:
Argument Handling
Author:
MikeTs
Environment:
Any
Revision History:
--*/
#ifndef _PARSEARG_H_
#define _PARSEARG_H_
//
// Error Codes
//
#define ARGERR_NONE 0
#define ARGERR_UNKNOWN_SWITCH 1
#define ARGERR_NO_SEPARATOR 2
#define ARGERR_INVALID_NUM 3
#define ARGERR_INVALID_TAIL 4
//
// Parsing options
//
#define DEF_SWITCHCHARS "/-"
#define DEF_SEPARATORS ":="
//
// Argument types
//
#define AT_STRING 1
#define AT_NUM 2
#define AT_ENABLE 3
#define AT_DISABLE 4
#define AT_ACTION 5
//
// Parse flags
//
#define PF_NOI 0x0001 //No-Ignore-Case
#define PF_SEPARATOR 0x0002 //parse for separator
//
// Type definitions
//
typedef struct _ARGTYPE ARGTYPE, *PARGTYPE;
typedef int (*PFNARG)(char **, PARGTYPE);
struct _ARGTYPE {
UCHAR *ArgID; // argument ID string
ULONG ArgType; // see argument types defined above
ULONG ParseFlags; // see parse flags defined above
VOID *ArgData; // ARG_STRING: (char **) - ptr to string ptr
// ARG_NUM: (int *) - ptr to integer number
// ARG_ENABLE: (unsigned *) - ptr to flags
// ARG_DISABLE: (unsigned *) - ptr to flags
// ARG_ACTION: ptr to function
ULONG ArgParam; // ARG_STRING: none
// ARG_NUM: base
// ARG_ENABLE: flag bit mask
// ARG_DISABLE: flag bit mask
// ARG_ACTION: none
PFNARG ArgVerify; // pointer to argument verification function
// this will be ignored for ARG_ACTION
};
typedef struct _PROGINFO {
UCHAR *SwitchChars; // if null, DEF_SWITCHCHARS is used
UCHAR *Separators; // if null, DEF_SEPARATORS is used
UCHAR *ProgPath; // ParseProgInfo set this ptr to prog. path
UCHAR *ProgName; // ParseProgInfo set this ptr to prog. name
} PROGINFO;
typedef PROGINFO *PPROGINFO;
ULONG
ParseArgSwitch(
PUCHAR *Argument,
PARGTYPE ArgumentArray,
PPROGINFO ProgramInfo
);
VOID
ParseProgramInfo(
PUCHAR ProgramName,
PPROGINFO ProgramInfo
);
ULONG
ParseSwitches(
PULONG ArgumentCount,
PUCHAR **ArgumentList,
PARGTYPE ArgumentArray,
PPROGINFO ProgramInfo
);
VOID
PrintError(
ULONG ErrorCode,
PUCHAR Argument,
PPROGINFO ProgramInfo
);
#endif