home *** CD-ROM | disk | FTP | other *** search
- #ifndef LIBRARIES_XADMASTER_H
- #define LIBRARIES_XADMASTER_H
-
- /*
- ** $VER: xadmaster.h 2.2 (17.07.1999)
- ** xadmaster.library defines and structures
- **
- ** Copyright © 1998-1999 by Dirk Stöcker
- ** All Rights Reserved.
- */
-
- #ifndef EXEC_LIBRARIES_H
- #include <exec/libraries.h>
- #endif
-
- #ifndef UTILITY_TAGITEM_H
- #include <utility/tagitem.h>
- #endif
-
- /* NOTE: Nearly all structures need to be allocated using the
- xadAllocObject function. */
-
- /************************************************************************
- * *
- * library base structure *
- * *
- ************************************************************************/
-
- struct xadMasterBase {
- struct Library xmb_LibNode;
- struct ExecBase * xmb_SysBase;
- struct DosLibrary * xmb_DOSBase;
- struct UtilityBase * xmb_UtilityBase;
- ULONG xmb_RecogSize; /* read only */
- };
-
- /************************************************************************
- * *
- * tag-function call flags *
- * *
- ************************************************************************/
-
- /* input tags for xadGetInfo, only one can be specified per call */
- #define XAD_INSIZE (TAG_USER+ 1) /* input data size */
- #define XAD_INFILENAME (TAG_USER+ 2)
- #define XAD_INFILEHANDLE (TAG_USER+ 3)
- #define XAD_INMEMORY (TAG_USER+ 4)
- #define XAD_INHOOK (TAG_USER+ 5)
- #define XAD_INSPLITTED (TAG_USER+ 6) /* (V2) */
-
- /* output tags, only one can be specified per call, xadXXXXUnArc */
- #define XAD_OUTSIZE (TAG_USER+ 10) /* output data size */
- #define XAD_OUTFILENAME (TAG_USER+ 11)
- #define XAD_OUTFILEHANDLE (TAG_USER+ 12)
- #define XAD_OUTMEMORY (TAG_USER+ 13)
- #define XAD_OUTHOOK (TAG_USER+ 14)
- #define XAD_OUTDEVICE (TAG_USER+ 15) /* for disk archives only */
-
- /* object allocation tags for xadAllocObjectA */
- #define XAD_OBJNAMESIZE (TAG_USER+ 20) /* XADOBJ_FILEINFO, size of needed name space */
- #define XAD_OBJCOMMENTSIZE (TAG_USER+ 21) /* XADOBJ_FILEINFO, size of needed comment space */
- #define XAD_OBJPRIVINFOSIZE (TAG_USER+ 22) /* XADOBJ_FILEINFO & XADOBJ_DISKINFO, self use size */
- #define XAD_OBJBLOCKENTRIES (TAG_USER+ 23) /* XADOBJ_DISKINFO, number of needed entries */
-
- /* tags for xadGetInfo, xadFileUnArc and xadDiskUnArc */
- #define XAD_NOEXTERN (TAG_USER+ 50) /* do not use extern clients */
- #define XAD_PASSWORD (TAG_USER+ 51) /* password when needed */
- #define XAD_ENTRYNUMBER (TAG_USER+ 52) /* number of wanted entry */
- #define XAD_PROGRESSHOOK (TAG_USER+ 53) /* the progress hook */
- #define XAD_OVERWRITE (TAG_USER+ 54) /* overwrite file ? */
- #define XAD_MAKEDIRECTORY (TAG_USER+ 55) /* create directory tree */
- #define XAD_IGNOREGEOMETRY (TAG_USER+ 56) /* ignore drive geometry ? */
- #define XAD_LOWCYLINDER (TAG_USER+ 57) /* lowest cylinder */
- #define XAD_HIGHCYLINDER (TAG_USER+ 58) /* highest cylinder */
- #define XAD_VERIFY (TAG_USER+ 59) /* verify for disk hook */
-
- /* input tags for xadConvertDates, only one can be passed */
- #define XAD_DATEUNIX (TAG_USER+ 70) /* unix date variable */
- #define XAD_DATEAMIGA (TAG_USER+ 71) /* amiga date variable */
- #define XAD_DATEDATESTAMP (TAG_USER+ 72) /* struct DateStamp */
- #define XAD_DATEXADDATE (TAG_USER+ 73) /* struct xadDate */
- #define XAD_DATECLOCKDATA (TAG_USER+ 74) /* struct ClockData */
- #define XAD_DATECURRENTTIME (TAG_USER+ 75) /* input is system time */
- #define XAD_DATEMSDOS (TAG_USER+ 76) /* MS-DOS packed format (V2) */
-
- /* output tags, there can be specified multiple tags for one call */
- #define XAD_GETDATEUNIX (TAG_USER+ 80) /* unix date variable */
- #define XAD_GETDATEAMIGA (TAG_USER+ 81) /* amiga date variable */
- #define XAD_GETDATEDATESTAMP (TAG_USER+ 82) /* struct DateStamp */
- #define XAD_GETDATEXADDATE (TAG_USER+ 83) /* struct xadDate */
- #define XAD_GETDATECLOCKDATA (TAG_USER+ 84) /* struct ClockData */
- #define XAD_GETDATEMSDOS (TAG_USER+ 86) /* MS-DOS packed format (V2) */
-
- /* following tags need locale.library to be installed */
- #define XAD_MAKEGMTDATE (TAG_USER+ 90) /* make local to GMT time */
- #define XAD_MAKELOCALDATE (TAG_USER+ 91) /* make GMT to local time */
-
- /************************************************************************
- * *
- * objects for xadAllocObjectA *
- * *
- ************************************************************************/
-
- #define XADOBJ_ARCHIVEINFO 0x0001 /* struct xadArchiveInfo */
- #define XADOBJ_FILEINFO 0x0002 /* struct xadFileInfo */
- #define XADOBJ_DISKINFO 0x0003 /* struct xadDiskInfo */
- #define XADOBJ_HOOKPARAM 0x0004 /* struct HookParam */
- #define XADOBJ_DEVICEINFO 0x0005 /* struct xadDeviceInfo */
- #define XADOBJ_PROGRESSINFO 0x0006 /* struct xadProgressInfo */
- #define XADOBJ_TEXTINFO 0x0007 /* struct xadTextInfo */
- #define XADOBJ_SPLITFILE 0x0008 /* struct xadSplitFile */
-
- /* result type of xadAllocVec */
- #define XADOBJ_MEMBLOCK 0x0100 /* memory of requested size and type */
-
- /************************************************************************
- * *
- * modes for xadCalcCRC126 and xadCalcCRC32 *
- * *
- ************************************************************************/
-
- #define XADCRC16_ID1 0xA001
- #define XADCRC32_ID1 0xEDB88320
-
- /************************************************************************
- * *
- * hook related stuff *
- * *
- ************************************************************************/
-
- #define XADHC_READ 1 /* read data into buffer */
- #define XADHC_WRITE 2 /* write buffer data to file/memory */
- #define XADHC_SEEK 3 /* seek in file */
- #define XADHC_INIT 4 /* initialize the hook */
- #define XADHC_FREE 5 /* end up hook work, free stuff */
- #define XADHC_ABORT 6 /* an error occured, delete partial stuff */
- #define XADHC_FULLSIZE 7 /* complete input size is needed */
-
- struct xadHookParam {
- ULONG xhp_Command;
- LONG xhp_CommandData;
- APTR xhp_BufferPtr;
- ULONG xhp_BufferSize;
- ULONG xhp_DataPos; /* current seek position */
- APTR xhp_PrivatePtr;
- };
-
- /* xadHookAccess commands */
- #define XADAC_READ 10 /* get data */
- #define XADAC_WRITE 11 /* write data */
- #define XADAC_COPY 12 /* copy input to ouput */
- #define XADAC_INPUTSEEK 13 /* seek in input file */
- #define XADAC_OUTPUTSEEK 14 /* seek in output file */
-
- /************************************************************************
- * *
- * support structures *
- * *
- ************************************************************************/
-
- /* Own date structure to cover all possible dates in a human friendly
- format. xadConvertDates may be used to convert between different date
- structures and variables. */
- struct xadDate {
- ULONG xd_Micros; /* values 0 to 999999 */
- LONG xd_Year; /* values 1 to 2147483648 */
- UBYTE xd_Month; /* values 1 to 12 */
- UBYTE xd_WeekDay; /* values 1 to 7 */
- UBYTE xd_Day; /* values 1 to 31 */
- UBYTE xd_Hour; /* values 0 to 23 */
- UBYTE xd_Minute; /* values 0 to 60 */
- UBYTE xd_Second; /* values 0 to 60 */
- };
-
- #define XADDAY_MONDAY 1 /* monday is the first day and */
- #define XADDAY_TUESDAY 2
- #define XADDAY_WEDNESDAY 3
- #define XADDAY_THURSDAY 4
- #define XADDAY_FRIDAY 5
- #define XADDAY_SATURDAY 6
- #define XADDAY_SUNDAY 7 /* sunday the last day of a week */
-
- struct xadDeviceInfo { /* for XAD_OUTDEVICE tag */
- STRPTR xdi_DeviceName; /* name of device */
- ULONG xdi_Unit; /* unit of device */
- STRPTR xdi_DOSName; /* instead of Device+Unit, dos name without ':' */
- };
-
- struct xadSplitFile { /* for XAD_INSPLITTED */
- struct xadSplitFile *xsf_Next;
- ULONG xsf_Type; /* XAD_INFILENAME, XAD_INFILEHANDLE, XAD_INMEMORY, XAD_INHOOK */
- ULONG xsf_Size; /* necessary for XAD_INMEMORY, useful for others */
- ULONG xsf_Data; /* FileName, Filehandle, Hookpointer or Memory */
- };
-
- /************************************************************************
- * *
- * information structures *
- * *
- ************************************************************************/
-
- struct xadArchiveInfo {
- struct xadClient * xai_Client; /* pointer to unarchiving client */
- APTR xai_PrivateClient; /* private client data */
- STRPTR xai_Password; /* password for crypted archives */
- ULONG xai_Flags; /* read only XADAIF_ flags */
- ULONG xai_LowCyl; /* lowest cylinder to unarchive */
- ULONG xai_HighCyl; /* highest cylinder to unarchive */
- ULONG xai_InPos; /* input position, read only */
- ULONG xai_InSize; /* input size, read only */
- ULONG xai_OutPos; /* output position, read only */
- ULONG xai_OutSize; /* output file size, read only */
- struct xadFileInfo * xai_FileInfo; /* data pointer for file arcs */
- struct xadDiskInfo * xai_DiskInfo; /* data pointer for disk arcs */
- struct xadFileInfo * xai_CurFile; /* data pointer for current file arc */
- struct xadDiskInfo * xai_CurDisk; /* data pointer for current disk arc */
- LONG xai_LastError; /* last error, when XADAIF_FILECORRUPT (V2) */
- ULONG * xai_MultiVolume; /* array of start offsets from parts (V2) */
- };
- /* This structure is nearly complete private to either xadmaster or its
- clients. An application program may access for reading only xai_Client,
- xai_Flags, xai_FileInfo and xai_DiskInfo. For xai_Flags only XADAIF_CRYPTED
- and XADAIF_FILECORRUPT are useful. All the other stuff is private and should
- not be accessed! */
-
- #define XADAIB_CRYPTED 0 /* archive entries are encrypted */
- #define XADAIB_FILECORRUPT 1 /* file is corrupt, but valid entries are in the list */
- #define XADAIB_FILEARCHIVE 2 /* unarchive file entry */
- #define XADAIB_DISKARCHIVE 3 /* unarchive disk entry */
- #define XADAIB_OVERWRITE 4 /* overwrite the file */
- #define XADAIB_MAKEDIRECTORY 5 /* create directory when missing */
- #define XADAIB_IGNOREGEOMETRY 6 /* ignore drive geometry */
- #define XADAIB_VERIFY 7 /* verify is turned on for disk hook */
-
- #define XADAIF_CRYPTED (1<<XADAIB_CRYPTED)
- #define XADAIF_FILECORRUPT (1<<XADAIB_FILECORRUPT)
- #define XADAIF_FILEARCHIVE (1<<XADAIB_FILEARCHIVE)
- #define XADAIF_DISKARCHIVE (1<<XADAIB_DISKARCHIVE)
- #define XADAIF_OVERWRITE (1<<XADAIB_OVERWRITE)
- #define XADAIF_MAKEDIRECTORY (1<<XADAIB_MAKEDIRECTORY)
- #define XADAIF_IGNOREGEOMETRY (1<<XADAIB_IGNOREGEOMETRY)
- #define XADAIF_VERIFY (1<<XADAIB_VERIFY)
-
- struct xadFileInfo {
- struct xadFileInfo * xfi_Next;
- ULONG xfi_EntryNumber;/* number of entry, starts with 1 */
- STRPTR xfi_EntryInfo; /* additional archiver text */
- APTR xfi_PrivateInfo;/* client private, see XAD_OBJPRIVINFOSIZE */
- ULONG xfi_Flags; /* see XADFIF_xxx defines */
- STRPTR xfi_FileName; /* see XAD_OBJNAMESIZE tag */
- STRPTR xfi_Comment; /* see XAD_OBJCOMMENTSIZE tag */
- ULONG xfi_Protection; /* OS 3 bits (including multiuser) */
- ULONG xfi_OwnerUID; /* user ID */
- ULONG xfi_OwnerGID; /* group ID */
- STRPTR xfi_UserName; /* user name */
- STRPTR xfi_GroupName; /* group name */
- ULONG xfi_Size; /* size of this file */
- ULONG xfi_GroupCrSize;/* crunched size of group */
- ULONG xfi_CrunchSize; /* crunched size */
- STRPTR xfi_LinkName; /* name and path of link */
- struct xadDate xfi_Date;
- };
-
- #define XADFIB_CRYPTED 0 /* entry is crypted */
- #define XADFIB_DIRECTORY 1 /* entry is a directory */
- #define XADFIB_LINK 2 /* entry is a link */
- #define XADFIB_INFOTEXT 3 /* file is an information text */
- #define XADFIB_GROUPED 4 /* file is in a crunch group */
- #define XADFIB_ENDOFGROUP 5 /* crunch group ends here */
- #define XADFIB_NODATE 6 /* no date supported, current date is set */
-
- #define XADFIF_CRYPTED (1<<XADFIB_CRYPTED)
- #define XADFIF_DIRECTORY (1<<XADFIB_DIRECTORY)
- #define XADFIF_LINK (1<<XADFIB_LINK)
- #define XADFIF_INFOTEXT (1<<XADFIB_INFOTEXT)
- #define XADFIF_GROUPED (1<<XADFIB_GROUPED)
- #define XADFIF_ENDOFGROUP (1<<XADFIB_ENDOFGROUP)
- #define XADFIF_NODATE (1<<XADFIB_NODATE)
-
- /* NOTE: the texts passed with that structure must not always be printable.
- Although the clients should add an additional (not counted) zero at the text
- end, the whole file may contain other unprintable stuff (e.g. for DMS).
- So when printing this texts do it on a byte for byte base including
- printability checks.
- */
- struct xadTextInfo {
- struct xadTextInfo * xti_Next;
- ULONG xti_Size; /* maybe zero - no text - e.g. when crypted */
- STRPTR xti_Text; /* and there is no password in xadGetInfo() */
- ULONG xti_Flags; /* see XADTIF_xxx defines */
- };
-
- #define XADTIB_CRYPTED 0 /* entry is empty, as data was crypted */
- #define XADTIB_BANNER 1 /* text is a banner */
- #define XADTIB_FILEDIZ 2 /* text is a file description */
-
- #define XADTIF_CRYPTED (1<<XADTIB_CRYPTED)
- #define XADTIF_BANNER (1<<XADTIB_BANNER)
- #define XADTIF_FILEDIZ (1<<XADTIB_FILEDIZ)
-
- struct xadDiskInfo {
- struct xadDiskInfo * xdi_Next;
- ULONG xdi_EntryNumber; /* number of entry, starts with 1 */
- STRPTR xdi_EntryInfo; /* additional archiver text */
- APTR xdi_PrivateInfo; /* client private, see XAD_OBJPRIVINFOSIZE */
- ULONG xdi_Flags; /* see XADDIF_xxx defines */
- ULONG xdi_SectorSize;
- ULONG xdi_TotalSectors; /* see devices/trackdisk.h */
- ULONG xdi_Cylinders; /* to find out what these */
- ULONG xdi_CylSectors; /* fields mean, they are equal */
- ULONG xdi_Heads; /* to struct DriveGeometry */
- ULONG xdi_TrackSectors;
- ULONG xdi_LowCyl; /* lowest cylinder stored */
- ULONG xdi_HighCyl; /* highest cylinder stored */
- ULONG xdi_BlockInfoSize;/* number of BlockInfo entries */
- UBYTE * xdi_BlockInfo; /* see XADBIF_xxx defines and XAD_OBJBLOCKENTRIES tag */
- struct xadTextInfo * xdi_TextInfo; /* linked list with info texts */
- };
-
- /* BlockInfo points to a UBYTE field for every track from first sector of
- lowest cylinder to last sector of highest cylinder. When not used,
- pointer must be 0. Do not use it, when there are no entries!
- This is just for information. The applications still asks the client
- to unarchive whole cylinders and not archived blocks are cleared for
- unarchiving.
- */
-
- #define XADDIB_CRYPTED 0 /* entry is crypted */
-
- /* Some of the crunchers do not store all necessary information, so it
- may be needed to guess some of them. Set the following flags in that case
- and geometry check will ignore these fields. */
- #define XADDIB_GUESSCYLINDERS 7 /* cylinder number is guessed */
- #define XADDIB_GUESSCYLSECTORS 8 /* cylsectors is guessed */
- #define XADDIB_GUESSHEADS 9 /* number of heads is guessed */
- #define XADDIB_GUESSTRACKSECTORS 10 /* tracksectors is guessed */
- #define XADDIB_GUESSLOWCYL 11 /* lowcyl is guessed */
- #define XADDIB_GUESSHIGHCYL 12 /* highcyl is guessed */
-
- /* If it is impossible to set some of the fields, you not to set some of
- these flags. NOTE: XADDIB_NOCYLINDERS is really important, as this turns
- of usage of lowcyl and highcyl keywords. When you have cylinder information,
- you should not use these and instead use guess flags and calculate
- possible values for the missing fields. */
- #define XADDIB_NOCYLINDERS 15 /* cylinder number is not set */
- #define XADDIB_NOCYLSECTORS 16 /* cylsectors is not set */
- #define XADDIB_NOHEADS 17 /* number of heads is not set */
- #define XADDIB_NOTRACKSECTORS 18 /* tracksectors is not set */
- #define XADDIB_NOLOWCYL 19 /* lowcyl is not set */
- #define XADDIB_NOHIGHCYL 20 /* highcyl is not set */
-
- #define XADDIF_CRYPTED (1<<XADDIB_CRYPTED)
-
- #define XADDIF_GUESSCYLINDERS (1<<XADDIB_GUESSCYLINDERS)
- #define XADDIF_GUESSCYLSECTORS (1<<XADDIB_GUESSCYLSECTORS)
- #define XADDIF_GUESSHEADS (1<<XADDIB_GUESSHEADS)
- #define XADDIF_GUESSTRACKSECTORS (1<<XADDIB_GUESSTRACKSECTORS)
- #define XADDIF_GUESSLOWCYL (1<<XADDIB_GUESSLOWCYL)
- #define XADDIF_GUESSHIGHCYL (1<<XADDIB_GUESSHIGHCYL)
-
- #define XADDIF_NOCYLINDERS (1<<XADDIB_NOCYLINDERS)
- #define XADDIF_NOCYLSECTORS (1<<XADDIB_NOCYLSECTORS)
- #define XADDIF_NOHEADS (1<<XADDIB_NOHEADS)
- #define XADDIF_NOTRACKSECTORS (1<<XADDIB_NOTRACKSECTORS)
- #define XADDIF_NOLOWCYL (1<<XADDIB_NOLOWCYL)
- #define XADDIF_NOHIGHCYL (1<<XADDIB_NOHIGHCYL)
-
- /* defines for BlockInfo */
- #define XADBIB_CLEARED 0 /* this block was cleared for archiving */
- #define XADBIB_UNUSED 1 /* this block was not archived */
-
- #define XADBIF_CLEARED (1<<XADBIB_CLEARED)
- #define XADBIF_UNUSED (1<<XADBIB_UNUSED)
-
- /************************************************************************
- * *
- * progress report stuff *
- * *
- ************************************************************************/
-
- struct xadProgressInfo {
- ULONG xpi_Mode; /* work modus */
- struct xadClient * xpi_Client; /* the client doing the work */
- struct xadDiskInfo * xpi_DiskInfo; /* current diskinfo, for disks */
- struct xadFileInfo * xpi_FileInfo; /* current info for files */
- ULONG xpi_CurrentSize;/* current filesize */
- ULONG xpi_LowCyl; /* for disks only */
- ULONG xpi_HighCyl; /* for disks only */
- ULONG xpi_Status; /* see XADPIF flags */
- LONG xpi_Error; /* any of the error codes */
- STRPTR xpi_FileName; /* name of file to overwrite (V2) */
- STRPTR xpi_NewName; /* new name buffer, passed by hook (V2) */
- };
- /* NOTE: For disks CurrentSize is Sector*SectorSize, where SectorSize can
- be found in xadDiskInfo structure. So you may output the sector value. */
-
- /* different progress modes */
- #define XADPMODE_ASK 1
- #define XADPMODE_PROGRESS 2
- #define XADPMODE_END 3
- #define XADPMODE_ERROR 4
-
- /* flags for progress hook and ProgressInfo status field */
- #define XADPIB_OVERWRITE 0 /* overwrite the file */
- #define XADPIB_MAKEDIRECTORY 1 /* create the directory */
- #define XADPIB_IGNOREGEOMETRY 2 /* ignore drive geometry */
- #define XADPIB_RENAME 10 /* rename the file (V2) */
- #define XADPIB_OK 16 /* all ok, proceed */
- #define XADPIB_SKIP 17 /* skip file */
-
- #define XADPIF_OVERWRITE (1<<XADPIB_OVERWRITE)
- #define XADPIF_MAKEDIRECTORY (1<<XADPIB_MAKEDIRECTORY)
- #define XADPIF_IGNOREGEOMETRY (1<<XADPIB_IGNOREGEOMETRY)
- #define XADPIF_RENAME (1<<XADPIB_RENAME)
- #define XADPIF_OK (1<<XADPIB_OK)
- #define XADPIF_SKIP (1<<XADPIB_SKIP)
-
- /************************************************************************
- * *
- * errors *
- * *
- ************************************************************************/
-
- #define XADERR_OK 0x0000 /* no error */
- #define XADERR_UNKNOWN 0x0001 /* unknown error */
- #define XADERR_INPUT 0x0002 /* input data buffers border exceeded */
- #define XADERR_OUTPUT 0x0003 /* output data buffers border exceeded */
- #define XADERR_BADPARAMS 0x0004 /* function called with illegal parameters */
- #define XADERR_NOMEMORY 0x0005 /* not enough memory available */
- #define XADERR_ILLEGALDATA 0x0006 /* data is corrupted */
- #define XADERR_NOTSUPPORTED 0x0007 /* command is not supported */
- #define XADERR_RESOURCE 0x0008 /* required resource missing */
- #define XADERR_DECRUNCH 0x0009 /* error on decrunching */
- #define XADERR_FILETYPE 0x000A /* unknown file type */
- #define XADERR_OPENFILE 0x000B /* opening file failed */
- #define XADERR_SKIP 0x000C /* file, disk has been skipped */
- #define XADERR_BREAK 0x000D /* user break in progress hook */
- #define XADERR_FILEEXISTS 0x000E /* file already exists */
- #define XADERR_PASSWORD 0x000F /* missing or wrong password */
- #define XADERR_MAKEDIR 0x0010 /* could not create directory */
- #define XADERR_CHECKSUM 0x0011 /* wrong checksum */
- #define XADERR_VERIFY 0x0012 /* verify failed (disk hook) */
- #define XADERR_GEOMETRY 0x0013 /* wrong drive geometry */
- #define XADERR_DATAFORMAT 0x0014 /* unknown data format */
-
- /************************************************************************
- * *
- * client related stuff *
- * *
- ************************************************************************/
-
- struct xadForeman {
- ULONG xfm_Security; /* should be XADFOREMAN_SECURITY */
- ULONG xfm_ID; /* must be XADFOREMAN_ID */
- UWORD xfm_Version; /* set to XADFOREMAN_VERSION */
- UWORD xfm_Reserved;
- STRPTR xfm_VersString; /* pointer to $VER: string */
- struct xadClient * xfm_FirstClient; /* pointer to first client */
- };
-
- #define XADFOREMAN_SECURITY 0x70FF4E75 /* MOVEQ #-1,D0 and RTS */
- #define XADFOREMAN_ID 0x58414446 /* 'XADF' identification ID */
- #define XADFOREMAN_VERSION 1
-
- struct xadClient {
- struct xadClient * xc_Next;
- UWORD xc_Version; /* set to XADCLIENT_VERSION */
- UWORD xc_MasterVersion;
- UWORD xc_ClientVersion;
- UWORD xc_ClientRevision;
- ULONG xc_RecogSize; /* needed size to recog the type */
- ULONG xc_Flags; /* see XADCF_xxx defines */
- ULONG xc_Identifier; /* ID of internal clients */
- STRPTR xc_ArchiverName;
- BOOL (* xc_RecogData)();
- LONG (* xc_GetInfo)();
- LONG (* xc_UnArchive)();
- void (* xc_Free)();
- };
-
- /* xc_RecogData returns 1 when recognized and 0 when not, all the others
- return 0 when ok and XADERR values on error. xc_FinishUnArc has no
- return value. */
-
- /* function interface
- ASM(BOOL) xc_RecogData(REG(d0, ULONG size), REG(a0, STRPTR data),
- REG(a6, struct xadMasterBase *xadMasterBase));
- ASM(LONG) xc_GetInfo(REG(a0, struct xadArchiveInfo *ai),
- REG(a6, struct xadMasterBase *xadMasterBase));
- ASM(LONG) xc_UnArchive(REG(a0, struct xadArchiveInfo *ai),
- REG(a6, struct xadMasterBase *xadMasterBase));
- ASM(void) xc_Free(REG(a0, struct xadArchiveInfo *ai),
- REG(a6, struct xadMasterBase *xadMasterBase));
- */
-
- #define XADCLIENT_VERSION 1
-
- #define XADCB_FILEARCHIVER 0 /* archiver is a file archiver */
- #define XADCB_DISKARCHIVER 1 /* archiver is a disk archiver */
- #define XADCB_EXTERN 2 /* external client, set by xadmaster */
- #define XADCB_FREETEXTINFO 28 /* master frees xadTextInfo structures (V2) */
- #define XADCB_FREETEXTINFOTEXT 29 /* master frees xadTExtInfo text block (V2) */
- #define XADCB_FREEFILEINFO 30 /* master frees xadFileInfo structures (V2) */
- #define XADCB_FREEDISKINFO 31 /* master frees xadDiskInfo structures (V2) */
-
- #define XADCF_FILEARCHIVER (1<<XADCB_FILEARCHIVER)
- #define XADCF_DISKARCHIVER (1<<XADCB_DISKARCHIVER)
- #define XADCF_EXTERN (1<<XADCB_EXTERN)
- #define XADCF_FREETEXTINFO (1<<XADCB_FREETEXTINFO)
- #define XADCF_FREETEXTINFOTEXT (1<<XADCB_FREETEXTINFOTEXT)
- #define XADCF_FREEFILEINFO (1<<XADCB_FREEFILEINFO)
- #define XADCF_FREEDISKINFO (1<<XADCB_FREEDISKINFO)
-
- /************************************************************************
- * *
- * client ID's *
- * *
- ************************************************************************/
-
- /* If an external client has set the xc_Identifier field, the internal
- client is replaced. */
-
- /* disk archivers start with 1000 */
- #define XADCID_XMASH 1000
- #define XADCID_SUPERDUPER3 1001
- #define XADCID_XDISK 1002
- #define XADCID_PACKDEV 1003
- #define XADCID_ZOOM 1004
- #define XADCID_ZOOM5 1005
-
- /* file archivers start with 5000 */
- #define XADCID_TAR 5000
- #define XADCID_SDSSFX 5001
- #define XADCID_LZX 5002
- #define XADCID_MXMSIMPLEARC 5003
- #define XADCID_LHPAK 5004
- #define XADCID_AMIGAPLUSUNPACK 5005
- #define XADCID_AMIPACK 5006
- #define XADCID_LHA 5007
- #define XADCID_LHASFX 5008
-
- /* mixed archivers start with 9000 */
- #define XADCID_DMS 9000
- #define XADCID_DMSSFX 9001
-
- #endif /* LIBRARIES_XADMASTER_H */
-