mirror of
				https://github.com/davidgiven/fluxengine.git
				synced 2025-10-31 11:17:01 -07:00 
			
		
		
		
	
		
			
				
	
	
		
			238 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			238 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef _ADF_STR_H
 | |
| #define _ADF_STR_H 1
 | |
| 
 | |
| /*
 | |
|  *  ADF Library. (C) 1997-2002 Laurent Clevy
 | |
|  *
 | |
|  *  adf_str.h
 | |
|  *
 | |
|  *  $Id$
 | |
|  *
 | |
|  *  structures/constants definitions
 | |
|  *
 | |
|  *  This file is part of ADFLib.
 | |
|  *
 | |
|  *  ADFLib 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 of the License, or
 | |
|  *  (at your option) any later version.
 | |
|  *
 | |
|  *  ADFLib 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
 | |
|  *  aint32_t with Foobar; if not, write to the Free Software
 | |
|  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 | |
|  *
 | |
|  */
 | |
| 
 | |
| #include <stdio.h>
 | |
| 
 | |
| #include "adf_defs.h"
 | |
| #include "adf_blk.h"
 | |
| #include "adf_err.h"
 | |
| 
 | |
| /* ----- VOLUME ----- */
 | |
| 
 | |
| struct Volume
 | |
| {
 | |
|     struct Device* dev;
 | |
| 
 | |
|     SECTNUM
 | |
|         firstBlock;    /* first block of data area (from beginning of device) */
 | |
|     SECTNUM lastBlock; /* last block of data area  (from beginning of device) */
 | |
|     SECTNUM rootBlock; /* root block (from firstBlock) */
 | |
| 
 | |
|     char dosType; /* FFS/OFS, DIRCACHE, INTERNATIONAL */
 | |
|     BOOL bootCode;
 | |
|     BOOL readOnly;
 | |
|     int datablockSize; /* 488 or 512 */
 | |
|     int blockSize;     /* 512 */
 | |
| 
 | |
|     char* volName;
 | |
| 
 | |
|     BOOL mounted;
 | |
| 
 | |
|     int32_t bitmapSize;    /* in blocks */
 | |
|     SECTNUM* bitmapBlocks; /* bitmap blocks pointers */
 | |
|     struct bBitmapBlock** bitmapTable;
 | |
|     BOOL* bitmapBlocksChg;
 | |
| 
 | |
|     SECTNUM curDirPtr;
 | |
| };
 | |
| 
 | |
| struct Partition
 | |
| {
 | |
|     int32_t startCyl;
 | |
|     int32_t lenCyl;
 | |
|     char* volName;
 | |
|     int volType;
 | |
| };
 | |
| 
 | |
| /* ----- DEVICES ----- */
 | |
| 
 | |
| #define DEVTYPE_FLOPDD 1
 | |
| #define DEVTYPE_FLOPHD 2
 | |
| #define DEVTYPE_HARDDISK 3
 | |
| #define DEVTYPE_HARDFILE 4
 | |
| 
 | |
| struct Device
 | |
| {
 | |
|     int devType; /* see below */
 | |
|     BOOL readOnly;
 | |
|     int32_t size; /* in bytes */
 | |
| 
 | |
|     int nVol; /* partitions */
 | |
|     struct Volume** volList;
 | |
| 
 | |
|     int32_t cylinders; /* geometry */
 | |
|     int32_t heads;
 | |
|     int32_t sectors;
 | |
| 
 | |
|     BOOL isNativeDev;
 | |
|     void* nativeDev;
 | |
| };
 | |
| 
 | |
| /* ----- FILE ----- */
 | |
| 
 | |
| struct File
 | |
| {
 | |
|     struct Volume* volume;
 | |
| 
 | |
|     struct bFileHeaderBlock* fileHdr;
 | |
|     void* currentData;
 | |
|     struct bFileExtBlock* currentExt;
 | |
| 
 | |
|     int32_t nDataBlock;
 | |
|     SECTNUM curDataPtr;
 | |
|     uint32_t pos;
 | |
| 
 | |
|     int posInDataBlk;
 | |
|     int posInExtBlk;
 | |
|     BOOL eof, writeMode;
 | |
| };
 | |
| 
 | |
| /* ----- ENTRY ---- */
 | |
| 
 | |
| struct Entry
 | |
| {
 | |
|     int type;
 | |
|     char* name;
 | |
|     SECTNUM sector;
 | |
|     SECTNUM real;
 | |
|     SECTNUM parent;
 | |
|     char* comment;
 | |
|     uint32_t size;
 | |
|     int32_t access;
 | |
|     int year, month, days;
 | |
|     int hour, mins, secs;
 | |
| };
 | |
| 
 | |
| struct CacheEntry
 | |
| {
 | |
|     int32_t header, size, protect;
 | |
|     short days, mins, ticks;
 | |
|     signed char type;
 | |
|     char nLen, cLen;
 | |
|     char name[MAXNAMELEN + 1], comm[MAXCMMTLEN + 1];
 | |
|     /*    char *name, *comm;*/
 | |
| };
 | |
| 
 | |
| struct DateTime
 | |
| {
 | |
|     int year, mon, day, hour, min, sec;
 | |
| };
 | |
| 
 | |
| /* ----- ENVIRONMENT ----- */
 | |
| 
 | |
| #define PR_VFCT 1
 | |
| #define PR_WFCT 2
 | |
| #define PR_EFCT 3
 | |
| #define PR_NOTFCT 4
 | |
| #define PR_USEDIRC 5
 | |
| #define PR_USE_NOTFCT 6
 | |
| #define PR_PROGBAR 7
 | |
| #define PR_USE_PROGBAR 8
 | |
| #define PR_RWACCESS 9
 | |
| #define PR_USE_RWACCESS 10
 | |
| 
 | |
| struct Env
 | |
| {
 | |
|     void (*vFct)(char*); /* verbose callback function */
 | |
|     void (*wFct)(char*); /* warning callback function */
 | |
|     void (*eFct)(char*); /* error callback function */
 | |
| 
 | |
|     void (*notifyFct)(SECTNUM, int);
 | |
|     BOOL useNotify;
 | |
| 
 | |
|     void (*rwhAccess)(SECTNUM, SECTNUM, BOOL);
 | |
|     BOOL useRWAccess;
 | |
| 
 | |
|     void (*progressBar)(int);
 | |
|     BOOL useProgressBar;
 | |
| 
 | |
|     BOOL useDirCache;
 | |
| 
 | |
|     void* nativeFct;
 | |
| };
 | |
| 
 | |
| struct List
 | |
| { /* generic linked tree */
 | |
|     void* content;
 | |
|     struct List* subdir;
 | |
|     struct List* next;
 | |
| };
 | |
| 
 | |
| struct GenBlock
 | |
| {
 | |
|     SECTNUM sect;
 | |
|     SECTNUM parent;
 | |
|     int type;
 | |
|     int secType;
 | |
|     char* name; /* if (type == 2 and (secType==2 or secType==-3)) */
 | |
| };
 | |
| 
 | |
| struct FileBlocks
 | |
| {
 | |
|     SECTNUM header;
 | |
|     int32_t nbExtens;
 | |
|     SECTNUM* extens;
 | |
|     int32_t nbData;
 | |
|     SECTNUM* data;
 | |
| };
 | |
| 
 | |
| struct bEntryBlock
 | |
| {
 | |
|     /*000*/ int32_t type;      /* T_HEADER == 2 */
 | |
|     /*004*/ int32_t headerKey; /* current block number */
 | |
|     int32_t r1[3];
 | |
|     /*014*/ uint32_t checkSum;
 | |
|     /*018*/ int32_t hashTable[HT_SIZE];
 | |
|     int32_t r2[2];
 | |
|     /*140*/ int32_t access; /* bit0=del, 1=modif, 2=write, 3=read */
 | |
|     /*144*/ int32_t byteSize;
 | |
|     /*148*/ char commLen;
 | |
|     /*149*/ char comment[MAXCMMTLEN + 1];
 | |
|     char r3[91 - (MAXCMMTLEN + 1)];
 | |
|     /*1a4*/ int32_t days;
 | |
|     /*1a8*/ int32_t mins;
 | |
|     /*1ac*/ int32_t ticks;
 | |
|     /*1b0*/ char nameLen;
 | |
|     /*1b1*/ char name[MAXNAMELEN + 1];
 | |
|     int32_t r4;
 | |
|     /*1d4*/ int32_t realEntry;
 | |
|     /*1d8*/ int32_t nextLink;
 | |
|     int32_t r5[5];
 | |
|     /*1f0*/ int32_t nextSameHash;
 | |
|     /*1f4*/ int32_t parent;
 | |
|     /*1f8*/ int32_t extension;
 | |
|     /*1fc*/ int32_t secType;
 | |
| };
 | |
| 
 | |
| #define ENV_DECLARATION struct Env adfEnv
 | |
| 
 | |
| #endif /* _ADF_STR_H */
 | |
| /*##########################################################################*/
 |