SFT.H
上传用户:dcs7469208
上传日期:2010-01-02
资源大小:443k
文件大小:8k
源码类别:

操作系统开发

开发平台:

DOS

  1. /****************************************************************/
  2. /*                                                              */
  3. /*                            sft.h                             */
  4. /*                            DOS-C                             */
  5. /*                                                              */
  6. /*                 DOS System File Table Structure              */
  7. /*                                                              */
  8. /*                   Copyright (c) 1995, 1996                   */
  9. /*                      Pasquale J. Villani                     */
  10. /*                      All Rights Reserved                     */
  11. /*                                                              */
  12. /* This file is part of DOS-C.                                  */
  13. /*                                                              */
  14. /* DOS-C is free software; you can redistribute it and/or       */
  15. /* modify it under the terms of the GNU General Public License  */
  16. /* as published by the Free Software Foundation; either version */
  17. /* 2, or (at your option) any later version.                    */
  18. /*                                                              */
  19. /* DOS-C is distributed in the hope that it will be useful, but */
  20. /* WITHOUT ANY WARRANTY; without even the implied warranty of   */
  21. /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See    */
  22. /* the GNU General Public License for more details.             */
  23. /*                                                              */
  24. /* You should have received a copy of the GNU General Public    */
  25. /* License along with DOS-C; see the file COPYING.  If not,     */
  26. /* write to the Free Software Foundation, 675 Mass Ave,         */
  27. /* Cambridge, MA 02139, USA.                                    */
  28. /****************************************************************/
  29. /* $Logfile:   C:/dos-c/hdr/sft.h_v  $ */
  30. #ifdef MAIN
  31. # ifdef VERSION_STRINGS
  32. static BYTE *sft_hRcsId = "$Header:   C:/dos-c/hdr/sft.h_v   1.6   04 Jan 1998 23:14:18   patv  $";
  33. # endif
  34. #endif
  35. /* $Log:   C:/dos-c/hdr/sft.h_v  $
  36.  *
  37.  *    Rev 1.6   04 Jan 1998 23:14:18   patv
  38.  * Changed Log for strip utility
  39.  *
  40.  *    Rev 1.5   16 Jan 1997 12:46:04   patv
  41.  * pre-Release 0.92 feature additions
  42.  *      
  43.  *         Rev 1.4   29 May 1996 21:25:18   patv
  44.  *      bug fixes for v0.91a
  45.  *      
  46.  *         Rev 1.3   19 Feb 1996  3:15:34   patv
  47.  *      Added NLS, int2f and config.sys processing
  48.  *      
  49.  *         Rev 1.2   01 Sep 1995 17:35:44   patv
  50.  *      First GPL release.
  51.  *      
  52.  *         Rev 1.1   30 Jul 1995 20:43:50   patv
  53.  *      Eliminated version strings in ipl
  54.  *      
  55.  *         Rev 1.0   02 Jul 1995 10:39:52   patv
  56.  *      Initial revision.
  57.  */
  58. /* $EndLog$ */
  59. #define SFTMAX  128
  60. /* Handle Definition entry                                              */
  61. typedef struct
  62. {
  63. WORD    sft_count;      /* reference count                      */
  64. WORD    sft_mode;       /* open mode - see below                */
  65. BYTE    sft_attrib;     /* file attribute - dir style           */
  66. WORD    sft_flags;      /* flags - see below                    */
  67. union
  68. {
  69. struct  dpb FAR *
  70. _sft_dcb;       /* The device control block     */
  71. struct dhdr FAR *
  72. _sft_dev;       /* device driver for char dev   */
  73. } sft_dcb_or_dev;
  74. WORD    sft_stclust;    /* Starting cluster                     */
  75. time    sft_time;       /* File time                            */
  76. date    sft_date;       /* File date                            */
  77. LONG    sft_size;       /* File size                            */
  78. LONG    sft_posit;      /* Current file position                */
  79. WORD    sft_relclust;   /* File relative cluster                */
  80. WORD    sft_cuclust;    /* File current cluster                 */
  81. WORD    sft_dirdlust;   /* Sector containing cluster            */
  82. BYTE    sft_diridx;     /* directory index                      */
  83. BYTE    sft_name[11];   /* dir style file name                  */
  84. BYTE    FAR *
  85. sft_bshare;     /* backward link of file sharing sft    */
  86. WORD    sft_mach;       /* machine number - network apps        */
  87. WORD    sft_psp;        /* owner psp                            */
  88. WORD    sft_shroff;     /* Sharing offset                       */
  89. WORD    sft_status;     /* this sft status                      */
  90. } sft;
  91. /* SFT Table header definition                                          */
  92. typedef struct _sftheader
  93. {
  94. struct _sfttbl FAR *            /* link to next table in list   */
  95. sftt_next;
  96. WORD    sftt_count;             /* # of handle definition       */
  97. /* entries, this table          */
  98. } sftheader;
  99. /* System File Definition List                                          */
  100. typedef struct _sfttbl
  101. {
  102. struct _sfttbl FAR *            /* link to next table in list   */
  103. sftt_next;
  104. WORD    sftt_count;             /* # of handle definition       */
  105. /* entries, this table          */
  106. sft     sftt_table[SFTMAX];     /* The array of sft for block   */
  107. } sfttbl;
  108. /* defines for sft use                                                  */
  109. #define SFT_MASK        0x0060          /* splits device data           */
  110. /* mode bits                                                            */
  111. #define SFT_MFCB        0x8000          /* entry is for fcb             */
  112. #define SFT_MDENYNONE   0x0040          /* sharing bits                 */
  113. #define SFT_MDENYREAD   0x0030          /*     "      "                 */
  114. #define SFT_MDENYWRITE  0x0020          /*     "      "                 */
  115. #define SFT_MEXCLUSIVE  0x0010          /*     "      "                 */
  116. #define SFT_NOINHERIT   0x0080          /* inhibit inherting of file    */
  117. #define SFT_NETFCB      0x0070          /* networked fcb                */
  118. #define SFT_MSHAREMASK  0x0070          /* mask to isolate shared bits  */
  119. #define SFT_MRDWR       0x0002          /* read/write bit               */
  120. #define SFT_MWRITE      0x0001          /* write bit                    */
  121. #define SFT_MREAD       0x0000          /* ~ write bit                  */
  122. #define SFT_OMASK       0x00f3          /* valid open mask              */
  123. /* flag bits                                                            */
  124. /* the following bit is for redirection                                 */
  125. #define SFT_FSHARED     0x8000          /* Networked access             */
  126. /* the following entry differntiates char & block access                */
  127. #define SFT_FDEVICE     0x0080          /* device entry                 */
  128. /* the following bits are file (block) unique                           */
  129. #define SFT_FDATE       0x4000          /* File date set                */
  130. #define SFT_FDIRTY      0x0040          /* File has been written to     */
  131. #define SFT_FDMASK      0x003f          /* File mask for drive no       */
  132. /* the following bits are device (char) unique                          */
  133. #define SFT_FIOCTL      0x4000          /* IOCTL support - device       */
  134. #define SFT_FEOF        0x0040          /* device eof                   */
  135. #define SFT_FBINARY     0x0020          /* device binary mode           */
  136. #define SFT_FSPECIAL    0x0010          /* int 29 support               */
  137. #define SFT_FCLOCK      0x0008          /* device is clock              */
  138. #define SFT_FNUL        0x0004          /* device is nul                */
  139. #define SFT_FSTDOUT     0x0002          /* device is stdout             */
  140. #define SFT_FSTDIN      0x0001          /* device is stdin              */
  141. /* Covienence defines                                                   */
  142. #define sft_dcb         sft_dcb_or_dev._sft_dcb
  143. #define sft_dev         sft_dcb_or_dev._sft_dev