/* MakeArgv.h */
#ifndef _makeargv_h_
#define _makeargv_h_
/* Result codes returned after parsing a command line. */
#define kMavNoErr 0
#define kMavErrUnbalancedQuotes 1
#define kMavErrTooManyQuotePairs 2
#define kMavErrTooManyReDirections 3
#define kMavErrNoReDirectedFileName 4
#define kMavErrNoPipeCommand 5
#define kMavErrNoReDirectedInput 6
#define kMavErrBothPipeAndReDirOut 7
/* The different sets of quotes supported. */
#define ISQUOTE(c) (((c) == '"') || ((c) == '\'') || ((c) == '`'))
/* Max number of sets of nested quotes supported. */
#define kMaxQuotePairs 15
/* Special token types. */
#define kRegularArg 0
#define kReDirectOutArg 1
#define kReDirectOutAppendArg 2
/* Limit on number of arguments to track. */
#define kMaxArgs 128
typedef struct CmdLineInfo {
int argCount;
int isAppend;
char outFileName[1024];
char pipeCmdLine[1024];
int savedStdout;
int outFile;
char argBuf[1024];
char *argVector[kMaxArgs + 4];
int err;
char *errStr;
} CmdLineInfo, *CmdLineInfoPtr;
#define NEWCMDLINEINFOPTR \
((CmdLineInfoPtr) calloc((size_t)1, sizeof(CmdLineInfo)))
/* We put a few more things in the arg vector. */
#define CMDLINEFROMARGS(c,v) (v[(c) + 1])
#define CLIPFROMARGS(c,v) ((CmdLineInfoPtr) (v[(c) + 2]))
int MakeArgVector(char *str, CmdLineInfoPtr clp);
void ExpandDollarVariables(char *cmdLine, size_t sz, int argc, char **argv);
#endif /* _makeargv_h_ */
/* eof makeargv.h */
syntax highlighted by Code2HTML, v. 0.9.1