adf_str.h
上传用户:hy_wanghao
上传日期:2007-01-08
资源大小:279k
文件大小:4k
源码类别:

Shell编程

开发平台:

Visual C++

  1. #ifndef _ADF_STR_H
  2. #define _ADF_STR_H 1
  3. /*
  4.  *  ADF Library. (C) 1997-1999 Laurent Clevy
  5.  *
  6.  *  adf_str.h
  7.  *
  8.  *  structures/constants definitions
  9.  */
  10. #include<stdio.h>
  11. #include"adf_defs.h"
  12. #include"adf_blk.h"
  13. #include"adf_err.h"
  14. /* ----- VOLUME ----- */
  15. struct Volume {
  16.     struct Device* dev;
  17.     SECTNUM firstBlock;     /* first block of data area (from beginning of device) */
  18.     SECTNUM lastBlock;      /* last block of data area  (from beginning of device) */
  19.     SECTNUM rootBlock;      /* root block (from firstBlock) */
  20.     char dosType;           /* FFS/OFS, DIRCACHE, INTERNATIONAL */
  21.     BOOL bootCode;
  22.     BOOL readOnly;
  23.     int datablockSize;      /* 488 or 512 */
  24.     int blockSize; /* 512 */
  25.     char *volName;
  26.     BOOL mounted;
  27.     long bitmapSize;             /* in blocks */
  28.     SECTNUM *bitmapBlocks;       /* bitmap blocks pointers */
  29.     struct bBitmapBlock **bitmapTable;
  30.     BOOL *bitmapBlocksChg;
  31.     SECTNUM curDirPtr;
  32. };
  33. struct Partition {
  34.     long startCyl;
  35.     long lenCyl;
  36.     char* volName;
  37.     int volType;
  38. };
  39. /* ----- DEVICES ----- */
  40. #define DEVTYPE_FLOPDD  1
  41. #define DEVTYPE_FLOPHD  2
  42. #define DEVTYPE_HARDDISK  3
  43. #define DEVTYPE_HARDFILE  4
  44. struct Device {
  45.     int devType;               /* see below */
  46.     BOOL readOnly;
  47.     long size;                 /* in bytes */
  48.     int nVol;                  /* partitions */
  49.     struct Volume** volList;  
  50.     long cylinders;            /* geometry */
  51.     long heads;
  52.     long sectors;
  53.     BOOL isNativeDev;
  54.     void *nativeDev;
  55. };
  56. /* ----- FILE ----- */
  57. struct File {
  58.     struct Volume *volume;
  59.     struct bFileHeaderBlock* fileHdr;
  60.     void *currentData;
  61.     struct bFileExtBlock* currentExt;
  62.     long nDataBlock;
  63.     SECTNUM curDataPtr;
  64.     unsigned long pos;
  65.     int posInDataBlk;
  66.     int posInExtBlk;
  67.     BOOL eof, writeMode;
  68.     };
  69. /* ----- ENTRY ---- */
  70. struct Entry{
  71.     int type;
  72.     char* name;
  73.     SECTNUM sector;
  74.     SECTNUM real;
  75.     SECTNUM parent;
  76.     char* comment;
  77.     unsigned long size;
  78. long access;
  79.     int year, month, days;
  80.     int hour, mins, secs;
  81. };
  82. struct CacheEntry{
  83.     long header, size, protect;
  84.     short days, mins, ticks;
  85.     signed char type;
  86.     char nLen, cLen;
  87.     char name[MAXNAMELEN+1], comm[MAXCMMTLEN+1];
  88. //    char *name, *comm;
  89. };
  90. struct DateTime{
  91.     int year,mon,day,hour,min,sec;
  92. };
  93. /* ----- ENVIRONMENT ----- */
  94. #define PR_VFCT 1
  95. #define PR_WFCT 2
  96. #define PR_EFCT 3
  97. #define PR_NOTFCT 4
  98. #define PR_USEDIRC 5
  99. #define PR_USE_NOTFCT  6
  100. #define PR_PROGBAR  7
  101. #define PR_USE_PROGBAR  8
  102. #define PR_RWACCESS  9
  103. #define PR_USE_RWACCESS 10
  104. struct Env{
  105.     void (*vFct)(char*);       /* verbose callback function */
  106.     void (*wFct)(char*);       /* warning callback function */
  107.     void (*eFct)(char*);       /* error callback function */
  108.     void (*notifyFct)(SECTNUM, int);
  109.     BOOL useNotify;
  110.     void (*rwhAccess)(SECTNUM,SECTNUM,BOOL);
  111.     BOOL useRWAccess;
  112.     void (*progressBar)(int);
  113.     BOOL useProgressBar;
  114.     BOOL useDirCache;
  115.     void *nativeFct;
  116. };
  117. struct List{         /* generic linked tree */
  118.     void *content;
  119.     struct List* subdir;
  120.     struct List* next;
  121. };
  122. struct GenBlock{
  123.     SECTNUM sect;
  124.     SECTNUM parent;
  125.     int type;
  126.     int secType;
  127.     char *name; /* if (type == 2 and (secType==2 or secType==-3)) */
  128. };
  129. struct FileBlocks{
  130.     SECTNUM header;
  131.     long nbExtens;
  132.     SECTNUM* extens;
  133.     long nbData;
  134.     SECTNUM* data;
  135. };
  136. struct bEntryBlock {
  137. /*000*/ long type; /* T_HEADER == 2 */
  138. /*004*/ long headerKey; /* current block number */
  139.         long r1[3];
  140. /*014*/ unsigned long checkSum;
  141. /*018*/ long hashTable[HT_SIZE];
  142.         long r2[2];
  143. /*140*/ long access; /* bit0=del, 1=modif, 2=write, 3=read */
  144. /*144*/ long byteSize;
  145. /*148*/ char commLen;
  146. /*149*/ char comment[MAXCMMTLEN+1];
  147.         char r3[91-(MAXCMMTLEN+1)];
  148. /*1a4*/ long days;
  149. /*1a8*/ long mins;
  150. /*1ac*/ long ticks;
  151. /*1b0*/ char nameLen;
  152. /*1b1*/ char name[MAXNAMELEN+1];
  153.         long r4;
  154. /*1d4*/ long realEntry;
  155. /*1d8*/ long nextLink;
  156.         long r5[5];
  157. /*1f0*/ long nextSameHash;
  158. /*1f4*/ long parent;
  159. /*1f8*/ long extension;
  160. /*1fc*/ long secType;
  161. };
  162. #define ENV_DECLARATION struct Env adfEnv
  163. #endif /* _ADF_STR_H */
  164. /*##########################################################################*/