144 lines
2.9 KiB
C
144 lines
2.9 KiB
C
|
/*++
|
||
|
|
||
|
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
|
||
|
|