home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / coders / jËzyki_programowania / ace_basic / ace / include / dos / dosasl.h < prev    next >
C/C++ Source or Header  |  1977-12-31  |  5KB  |  168 lines

  1. #ifndef DOS_DOSASL_H
  2. #define DOS_DOSASL_H 1
  3. /*
  4. ** dosasl.h for ACE Basic
  5. **
  6. ** Note: Translated to ACE by ConvertC2ACE
  7. **       @ MapMeadow Software, Nils Sjoholm
  8. **
  9. **
  10. ** Date: 09/02/95
  11. **
  12. **
  13. */
  14.  
  15. /*
  16. ** This are the StructPointer defines for dosasl.h
  17. */
  18. #ifndef AChainPtr
  19. #define AChainPtr ADDRESS
  20. #endif
  21. #ifndef AnchorPathPtr
  22. #define AnchorPathPtr ADDRESS
  23. #endif
  24. /*
  25. ** End of StructPointer defines for dosasl.h
  26. */
  27.       
  28. #ifndef EXEC_LIBRARIES_H
  29. #include <exec/libraries.h>
  30. #endif
  31.  
  32. #ifndef EXEC_LISTS_H
  33. #include <exec/lists.h>
  34. #endif
  35.  
  36. #ifndef DOS_DOS_H
  37. #include <dos/dos.h>
  38. #endif
  39.  
  40.  
  41.  
  42. /***********************************************************************
  43. ************************ PATTERN MATCHING ******************************
  44. ************************************************************************
  45.  
  46. * structure expected by MatchFirst,  MatchNext.
  47. * Allocate this structure and initialize it as follows:
  48. *
  49. * Set ap_BreakBits to the signal bits (CDEF) that you want to take a
  50. * break on,  or NULL,  if you don't want to convenience the user.
  51. *
  52. * If you want to have the FULL PATH NAME of the files you found, 
  53. * allocate a buffer at the END of this structure,  and put the size of
  54. * it into ap_Strlen.  If you don't want the full path name,  make sure
  55. * you set ap_Strlen to zero.  In this case,  the name of the file,  and stats
  56. * are available in the ap_Info,  as per usual.
  57. *
  58. * Then call MatchFirst() and then afterwards,  MatchNext() with this structure.
  59. * You should check the return value each time (see below) and take the
  60. * appropriate action,  ultimately calling MatchEnd() when there are
  61. * no more files and you are done.  You can tell when you are done by
  62. * checking for the normal AmigaDOS return code ERROR_NO_MORE_ENTRIES.
  63. *
  64. */
  65.  
  66. STRUCT AnchorPath  
  67.     AChainPtr  ap_Base    /* pointer to first anchor */
  68. #define ap_First ap_Base
  69.     AChainPtr  ap_Last    /* pointer to last anchor */
  70. #define ap_Current ap_Last
  71.     LONGINT    ap_BreakBits    /* Bits we want to break on */
  72.     LONGINT    ap_FoundBreak   /* Bits we broke on. Also returns ERROR_BREAK */
  73.     BYTE    ap_Flags    /* New use for extra word. */
  74.     BYTE    ap_Reserved 
  75.     SHORTINT    ap_Strlen   /* This is what ap_Length used to be */
  76. #define ap_Length ap_Flags  /* Old compatability for LONGWORD ap_Length */
  77.     FileInfoBlock ap_Info 
  78.     STRING ap_Buf SIZE 1    /* Buffer for path name,  allocated by user */
  79.     /* FIX! */
  80. END STRUCT 
  81.  
  82.  
  83. #define APB_DOWILD  0   /* User option ALL */
  84. #define APF_DOWILD  1
  85.  
  86. #define APB_ITSWILD 1   /* Set by MatchFirst,  used by MatchNext  */
  87. #define APF_ITSWILD 2   /* Application can test APB_ITSWILD,  too */
  88.                 /* (means that there's a wildcard    */
  89.                 /* in the pattern after calling      */
  90.                 /* MatchFirst).              */
  91.  
  92. #define APB_DODIR   2   /* Bit is SET if a DIR node should be */
  93. #define APF_DODIR   4   /* entered. Application can RESET this */
  94.                 /* bit after MatchFirst/MatchNext to AVOID */
  95.                 /* entering a dir. */
  96.  
  97. #define APB_DIDDIR  3   /* Bit is SET for an "expired" dir node. */
  98. #define APF_DIDDIR  8
  99.  
  100. #define APB_NOMEMERR    4   /* Set on memory error */
  101. #define APF_NOMEMERR    16
  102.  
  103. #define APB_DODOT   5   /* If set,  allow conversion of '.' to */
  104. #define APF_DODOT   32  /* CurrentDir */
  105.  
  106. #define APB_DirChanged  6   /* ap_Current->an_Lock changed */
  107. #define APF_DirChanged  64  /* since last MatchNext call */
  108.  
  109. #define APB_FollowHLinks 7  /* follow hardlinks on DODIR - defaults   */
  110. #define APF_FollowHLinks 128    /* to not following hardlinks on a DODIR. */
  111.  
  112.  
  113. STRUCT AChain  
  114.     AChainPtr  an_Child 
  115.     AChainPtr  an_Parent 
  116.     ADDRESS    an_Lock 
  117.     FileInfoBlock an_Info 
  118.     BYTE    an_Flags 
  119.     STRING an_String SIZE 1     /* FIX!! */
  120. END STRUCT 
  121.  
  122. #define DDB_PatternBit  0
  123. #define DDF_PatternBit  1
  124. #define DDB_ExaminedBit 1
  125. #define DDF_ExaminedBit 2
  126. #define DDB_Completed   2
  127. #define DDF_Completed   4
  128. #define DDB_AllBit  3
  129. #define DDF_AllBit  8
  130. #define DDB_Single  4
  131. #define DDF_Single  16
  132.  
  133. /*
  134.  * Constants used by wildcard routines,  these are the pre-parsed tokens
  135.  * referred to by pattern match.  It is not necessary for you to do
  136.  * anything about these,  MatchFirst() MatchNext() handle all these for you.
  137.  */
  138.  
  139. #define P_ANY       &H80    /* Token for '*' or '#?  */
  140. #define P_SINGLE    &H81    /* Token for '?' */
  141. #define P_ORSTART   &H82    /* Token for '(' */
  142. #define P_ORNEXT    &H83    /* Token for '|' */
  143. #define P_OREND &H84    /* Token for ')' */
  144. #define P_NOT       &H85    /* Token for '~' */
  145. #define P_NOTEND    &H86    /* Token for */
  146. #define P_NOTCLASS  &H87    /* Token for '^' */
  147. #define P_CLASS &H88    /* Token for '[]' */
  148. #define P_REPBEG    &H89    /* Token for '[' */
  149. #define P_REPEND    &H8A    /* Token for ']' */
  150. #define P_STOP      &H8B    /* token to force end of evaluation */
  151.  
  152. /* Values for an_Status,  NOTE: These are the actual bit numbers */
  153.  
  154. #define COMPLEX_BIT 1   /* Parsing complex pattern */
  155. #define EXAMINE_BIT 2   /* Searching directory */
  156.  
  157. /*
  158.  * Returns from MatchFirst(),  MatchNext()
  159.  * You can also get dos error returns,  such as ERROR_NO_MORE_ENTRIES, 
  160.  * these are in the dos.h file.
  161.  */
  162.  
  163. #define ERROR_BUFFER_OVERFLOW   303 /* User or internal buffer overflow */
  164. #define ERROR_BREAK     304 /* A break character was received */
  165. #define ERROR_NOT_EXECUTABLE    305 /* A file has E bit cleared */
  166.  
  167. #endif /* DOS_DOSASL_H */
  168.