mirror of
				https://github.com/FDOS/kernel.git
				synced 2025-10-25 17:34:08 +02:00 
			
		
		
		
	git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@485 6ac86273-5f31-0410-b378-82cca8765d1b
		
			
				
	
	
		
			121 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			121 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /****************************************************************/
 | |
| /*                                                              */
 | |
| /*                            fcb.h                             */
 | |
| /*                                                              */
 | |
| /*    FAT FCB and extended FCB data structures & declarations   */
 | |
| /*                                                              */
 | |
| /*                      November 23, 1991                       */
 | |
| /*                                                              */
 | |
| /*                      Copyright (c) 1995                      */
 | |
| /*                      Pasquale J. Villani                     */
 | |
| /*                      All Rights Reserved                     */
 | |
| /*                                                              */
 | |
| /* This file is part of DOS-C.                                  */
 | |
| /*                                                              */
 | |
| /* DOS-C is free software; you can redistribute it and/or       */
 | |
| /* modify it under the terms of the GNU General Public License  */
 | |
| /* as published by the Free Software Foundation; either version */
 | |
| /* 2, or (at your option) any later version.                    */
 | |
| /*                                                              */
 | |
| /* DOS-C is distributed in the hope that it will be useful, but */
 | |
| /* WITHOUT ANY WARRANTY; without even the implied warranty of   */
 | |
| /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See    */
 | |
| /* the GNU General Public License for more details.             */
 | |
| /*                                                              */
 | |
| /* You should have received a copy of the GNU General Public    */
 | |
| /* License along with DOS-C; see the file COPYING.  If not,     */
 | |
| /* write to the Free Software Foundation, 675 Mass Ave,         */
 | |
| /* Cambridge, MA 02139, USA.                                    */
 | |
| /****************************************************************/
 | |
| 
 | |
| #ifdef MAIN
 | |
| #ifdef VERSION_STRINGS
 | |
| static BYTE *fcb_hRcsId =
 | |
|     "$Id$";
 | |
| #endif
 | |
| #endif
 | |
| 
 | |
| /* fcb convience defines                                                */
 | |
| /* block device info                                                    */
 | |
| #define FID_CHARDEV     0x80    /* 1 defines character device   */
 | |
|                                         /* 0 defines block file         */
 | |
| #define FID_NOWRITE     0x40    /* 0 file dirty (write occured) */
 | |
|                                         /* 1 file has no changes        */
 | |
| #define FID_MASK        0x3f    /* file #                       */
 | |
| /* char device info                                                     */
 | |
| #define FID_EOF         0x40    /* 1 = no eof detected          */
 | |
|                                         /* 0 = end of file on input     */
 | |
| #define FID_BINARY      0x20    /* 1 = binary (raw) mode device */
 | |
|                                         /* 0 = ascii (cooked) mode device */
 | |
| #define FID_CLOCK       0x08    /* Clock device                 */
 | |
| #define FID_NULL        0x04    /* Null device                  */
 | |
| #define FID_CONOUT      0x02    /* Console output device        */
 | |
| #define FID_CONIN       0x01    /* Console input device         */
 | |
| 
 | |
| #ifndef FNAME_SIZE
 | |
| #define FNAME_SIZE      8       /* limit on file name           */
 | |
| #endif
 | |
| 
 | |
| #ifndef FEXT_SIZE
 | |
| #define FEXT_SIZE       3       /* limit on extension           */
 | |
| #endif
 | |
| 
 | |
| #ifndef FDFLT_DRIVE
 | |
| #define FDFLT_DRIVE     0       /* default drive                */
 | |
| #endif
 | |
| 
 | |
| #define PARSE_SEP_STOP          0x01
 | |
| #define PARSE_DFLT_DRIVE        0x02
 | |
| #define PARSE_BLNK_FNAME        0x04
 | |
| #define PARSE_BLNK_FEXT         0x08
 | |
| 
 | |
| #define PARSE_RET_NOWILD        0
 | |
| #define PARSE_RET_WILD          1
 | |
| #define PARSE_RET_BADDRIVE      0xff
 | |
| 
 | |
| #define FCB_READ  0
 | |
| #define FCB_WRITE 1
 | |
| 
 | |
| /* File Control Block (FCB)                                             */
 | |
| typedef struct {
 | |
|   UBYTE fcb_drive;              /* Drive number 0=default, 1=A, etc     */
 | |
|   BYTE fcb_fname[FNAME_SIZE];   /* File name                    */
 | |
|   BYTE fcb_fext[FEXT_SIZE];     /* File name Extension          */
 | |
|   UWORD fcb_cublock;            /* Current block number of              */
 | |
|   /* 128 records/block, for seq. r/w      */
 | |
|   UWORD fcb_recsiz;             /* Logical record size in bytes,        */
 | |
|   /* default = 128                        */
 | |
|   ULONG fcb_fsize;              /* File size in bytes                   */
 | |
|   date fcb_date;                /* Date file created                    */
 | |
|   time fcb_time;                /* Time of last write                   */
 | |
|   /* the following are reserved by system                         */
 | |
|   BYTE fcb_sftno;               /* Device ID                            */
 | |
|   BYTE fcb_attrib_hi;           /* share info, dev attrib word hi       */
 | |
|   BYTE fcb_attrib_lo;           /* dev attrib word lo, open mode        */
 | |
|   UWORD fcb_strtclst;           /* file starting cluster                */
 | |
|   UWORD fcb_dirclst;            /* cluster of the dir entry             */
 | |
|   UBYTE fcb_diroff_unused;      /* offset of the dir entry              */
 | |
|   /* end reserved                                                 */
 | |
|   UBYTE fcb_curec;              /* Current block number of              */
 | |
|   ULONG fcb_rndm;               /* Current relative record number       */
 | |
| } fcb;
 | |
| 
 | |
| /* FAT extended fcb                                                     */
 | |
| typedef struct {
 | |
|   UBYTE xfcb_flag;              /* 0xff indicates Extended FCB  */
 | |
|   BYTE xfcb_resvrd[5];          /* Reserved                     */
 | |
|   UBYTE xfcb_attrib;            /* Attribute                    */
 | |
|   fcb xfcb_fcb;
 | |
| } xfcb;
 | |
| 
 | |
| typedef struct {
 | |
|   UBYTE renDriveID;             /* drive no.                    */
 | |
|   BYTE renOldName[8];           /* Old Filename                 */
 | |
|   BYTE renOldExtent[3];         /* Old File Extension           */
 | |
|   BYTE renReserved1[5];
 | |
|   BYTE renNewName[8];           /* New Filename                 */
 | |
|   BYTE renNewExtent[3];         /* New FileExtension            */
 | |
|   BYTE renReserved2[9];
 | |
| } rfcb;
 | |
| 
 |