home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / ncftp-2.3.0-base.tgz / ncftp-2.3.0-base.tar / contrib / ncftp / MakeArgv.h < prev    next >
C/C++ Source or Header  |  1995-03-07  |  1KB  |  57 lines

  1. /* MakeArgv.h */
  2.  
  3. #ifndef _makeargv_h_
  4. #define _makeargv_h_
  5.  
  6. /* Result codes returned after parsing a command line. */
  7. #define kMavNoErr                    0
  8. #define kMavErrUnbalancedQuotes        1
  9. #define kMavErrTooManyQuotePairs    2
  10. #define kMavErrTooManyReDirections    3
  11. #define kMavErrNoReDirectedFileName    4
  12. #define kMavErrNoPipeCommand        5
  13. #define kMavErrNoReDirectedInput    6
  14. #define kMavErrBothPipeAndReDirOut    7
  15.  
  16. /* The different sets of quotes supported. */
  17. #define ISQUOTE(c) (((c) == '"') || ((c) == '\'') || ((c) == '`'))
  18.  
  19. /* Max number of sets of nested quotes supported. */
  20. #define kMaxQuotePairs 15
  21.  
  22. /* Special token types. */
  23. #define kRegularArg 0
  24. #define kReDirectOutArg 1
  25. #define kReDirectOutAppendArg 2
  26.  
  27. /* Limit on number of arguments to track. */
  28. #define kMaxArgs 128
  29.  
  30.  
  31. typedef struct CmdLineInfo {
  32.     int argCount;
  33.     int isAppend;
  34.     char outFileName[1024];
  35.     char pipeCmdLine[1024];
  36.     int savedStdout;
  37.     int outFile;
  38.     char argBuf[1024];
  39.     char *argVector[kMaxArgs + 4];
  40.     int err;
  41.     char *errStr;
  42. } CmdLineInfo, *CmdLineInfoPtr;
  43.  
  44. #define NEWCMDLINEINFOPTR \
  45.     ((CmdLineInfoPtr) calloc((size_t)1, sizeof(CmdLineInfo)))
  46.  
  47. /* We put a few more things in the arg vector. */
  48. #define CMDLINEFROMARGS(c,v) (v[(c) + 1])
  49. #define CLIPFROMARGS(c,v) ((CmdLineInfoPtr) (v[(c) + 2]))
  50.  
  51. int MakeArgVector(char *str, CmdLineInfoPtr clp);
  52. void ExpandDollarVariables(char *cmdLine, size_t sz, int argc, char **argv);
  53.  
  54. #endif    /* _makeargv_h_ */
  55.  
  56. /* eof makeargv.h */
  57.