home *** CD-ROM | disk | FTP | other *** search
- /* 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 */
-