/*++ PRIVATE.H Header files and privates for the options project Created, DavidCHR 6/9/1997 --*/ #include "..\inc\master.h" #include ".\options.h" #include ".\client.h" #define STRCASECMP lstrcmpiA #define STRNCASECMP _strnicmp #ifdef DEBUG_OPTIONS #define OPTIONS_DEBUG printf #else #define OPTIONS_DEBUG /* nothing */ #endif typedef struct savenode { PVOID DataElement; ULONG DeallocMethod; struct savenode *next; } SAVENODE, *PSAVENODE; typedef struct { PSAVENODE FirstNode; PSAVENODE LastNode; } SAVEQUEUE, *PSAVEQUEUE; typedef union _optionUnion { PVOID *raw_data; OPTFUNC *func; OPTFUNC2 *func2; int *integer; float *real; PCHAR *string; BOOL *boolean; optionStruct *optStruct; #ifdef WINNT UNICODE_STRING *unicode_string; PWCHAR *wstring; #endif } optionUnion, OPTU, *POPTU; #define OPT_FLAG_INTERNAL_JUMPOUT 0x10 // for internal use only. /* The DeallocationMethods are: */ typedef enum { DEALLOC_METHOD_TOO_SMALL = 0, /* MUST BE FIRST */ DeallocWithFree, DeallocWithLocalFree, DeallocWithOptionDealloc, DEALLOC_METHOD_TOO_LARGE /* MUST BE LAST */ } DEALLOC_METHOD; BOOL ParseSublist( POPTU Option, PCHAR *argv, int argc, int theIndex, int *argsused, ULONG flags, PBOOL pbStopParsing, PSAVEQUEUE pQueue ); /* sublist.c */ BOOL StoreOption( optionStruct *opt, PCHAR *argv, int argc, int argi, int opti, ULONG flags, int *argsused, BOOL includes_arg, PBOOL pbStopParsing, PSAVEQUEUE pQueue ); /* store.c */ BOOL ParseOneOption( int argc, PCHAR *argv, int argi, ULONG flags, optionStruct *options, int *argsused, PBOOL pbStopParsing, PSAVEQUEUE pSaveQueue ); // parse.c BOOL ParseCompare( optionStruct *optionEntry, ULONG flags, PCHAR argument ); /* compare.c */ /* Use this macro to easily get an option union from the necessarily- obscured structure_entry. */ #define POPTU_CAST( structure_entry ) ( (POPTU) &((structure_entry).data) ) // EXAMPLE: POPTU_CAST( options[opti] )->string BOOL FindUnusedOptions( optionStruct *options, ULONG flags, /* OPTIONAL */ PCHAR prefix, PSAVEQUEUE pQueue ) ; // nonnull.c BOOL StoreEnvironmentOption( optionStruct *opt, ULONG flags, PSAVEQUEUE pQueue); // store.c BOOL ResolveEnumFromStrings( ULONG cStrings, PCHAR *strings, optionStruct *theOpt, ULONG *pcArgsUsed ); // enum.c BOOL PrintEnumValues( FILE *out, PCHAR header, optEnumStruct *pStringTable ); // enum.c