home *** CD-ROM | disk | FTP | other *** search
- // Backup.h
- // 16 Nov 1996 14:40:06
-
- #ifndef BACKUP_H_INCLUDED
-
- #include <assert.h>
- #include "ScrollingWindows.h"
- #include "Resources.h"
- #include "Backup_Rev.h"
-
-
- #define VERS_OFFSET 230 // früheste Backup-Version, die mit Byte-Offset
- // statt Sektornummer in NameField arbeitet
-
- #define FILELABEL 0x117755aa // Magic ID für FileLabel
-
- // Magic ID für binäre Protokollfiles
- #define PROTFILEHEADER ("\x55\xaa" "BACKUP_PROTFILE" "\x55\xaa")
- #define COMPRESSEDPROTFILEHEADER ("\x55\xaa" "BACKUP_COMPPROT" "\x55\xaa")
-
-
- // Benötigte Library-Versionen
- #define INTUITION_REV 39
- #define GRAPHICS_REV 39
- #define ICON_REV 39
-
- #define GADCODE_HELP 0x5f // Exitcode für Stringgadgets wenn Help-Taste gedrückt
- #define GADCODE_UP 0x4c // Exitcode für Stringgadgets wenn Up-Taste gedrückt
- #define GADCODE_DOWN 0x4d // Exitcode für Stringgadgets wenn Down-Taste gedrückt
- #define GADCODE_LEFT 0x4f // Exitcode für Stringgadgets wenn Left-Taste gedrückt
- #define GADCODE_RIGHT 0x4e // Exitcode für Stringgadgets wenn Right-Taste gedrückt
- #define GADCODE_PAGEUP 0x104c // Exitcode für Stringgadgets wenn Shift+Up-Taste gedrückt
- #define GADCODE_PAGEDOWN 0x104d // Exitcode für Stringgadgets wenn Shift+Down-Taste gedrückt
- #define GADCODE_TOP 0x204c // Exitcode für Stringgadgets wenn Ctrl+Up-Taste gedrückt
- #define GADCODE_BOTTOM 0x204d // Exitcode für Stringgadgets wenn Ctrl+Down-Taste gedrückt
- #define GADCODE_CANCEL 0x5555 // Exitcode für Stringgadgets wenn Escape gedrückt
- #define GADCODE_NOP (~0)
-
-
- #define CSI "\x9b" // Lead-In für Console-Steuerzeichen
-
-
- // AppMessage-IDs
- #define AMID_FILESELECT 1
- #define AMID_GO 2
-
-
- // Zählerstand für Verzögerung bei Scrollen mit betätigten Pfeil-Gadgets (in IntuiTicks
- #define MAX_TICK_COUNT 1
-
- #define YEARZERO 1970 // Jahr #0 für MinDate und MaxDate
- #define YEARDIFF (6*365+2*366) // Tages-Unterschied zwischen 1.1.70 und 1.1.78
-
- #define LOGNAME "Backup.%d.%t.Directory" // default-Name für Protokoll-File
- #define LOGDIR "t:" // default Directory für Protokoll-File
-
- #define MIN_STACK 20000 // mindestens benötigter Stack
-
- #define NCHG 5 // so oft muß DiskChangeCount konstant bleiben,
- // damit Diskettenwechsel erkannt wird
- // Window-Größe
- #define BREITE 640
- #define HOEHE 170
-
-
- #define XPK_PASSWORDLEN 40 // max. Länge für Xpk-Password
- #define XPK_PACKNAMELEN (6+4) // max. Länge für Xpk-Packername + Mode, Format "ABCD.100"
-
- #define PASSWORD_FONTNAME "Backup_Password.font"
-
- #define DEFAULT_DISKSAVE "t:Backup" // Prefix für Disksave-File
-
- #define DEFAULT_TAPEDRIVEDATABASE "s:Backup.TapeDriveData"
-
- #define DEFAULT_SCRIPTPATH "PROGDIR:" // Default-Pfad für Backup-Script
- #define DEFAULT_HELPPATH "PROGDIR:guide/" // Default-Pfad für Hilfe-Files
-
-
- #define DEFAULT_QFA_PARTSIZE 10 // Defaultgröße für eine QFA-Partition in MB
-
-
- // Kennungen in myOptions.Compress
- #define COMPRESS_NONE 0
- #define COMPRESS_INTERNAL 1
- #define COMPRESS_XPK 2
-
- #define DISKTEXT_WIDTH 28 // Breite des Textfeldes rechts oben
- // für die Laufwerke (in Zeichen)
-
- #define CYLSIZE_TAPE 99999999 // dieser Wert wird bei Tapes als Cylindergröße eingetragen
-
-
- // OBSOLET
- // ein Teil der File Protection Bits wurde früher (Format=0) für private Flags benutzt
- #define FILEPROT 0xffffff // Bitmaske für System-Bits
-
-
- // die übrigen Bits MYFLAGS werden für interne Zwecke benutzt
- #define MYFLAGS 0xff000000
-
- // Definitionen für MYFLAGS
- #define FIBB_COMPRESS 31 // File wurde komprimiert
- #define FIBF_COMPRESS (1<<FIBB_COMPRESS)
- #define FIBB_SOFTLINK 30 // Dies ist ein Soft-Link
- #define FIBF_SOFTLINK (1<<FIBB_SOFTLINK)
- #define FIBB_HARDLINK 29 // Dies ist ein Hard-Link
- #define FIBF_HARDLINK (1<<FIBB_HARDLINK)
-
-
- #define BACKUP_FORMAT_ID 1 // Id. des aktuellen Aufzeichnungsformats
-
-
- #define PATTERN_LEN 25 // max. Länge Include- und Exclude-Pattern
-
- #define PROT_FNAME_LEN 64 // max. Zeilenlänge für Filename in Prot-File
-
- #define MAX_CYLBUFF 15 // maximale Anzahl Disk-Buffer
- #define MIN_CYLBUFF 3 // minimale Anzahl Disk-Buffer
-
- #define NDISK 4 // max. Anzahl Laufwerke
- #define NO_DRIVE (~0)
- #define DFLT_BLOCKSIZE 512
-
- #define IMAGEBUTTON_KIND 1099
-
- #define DISKID "BACKUP"
-
-
- // Ergebniscodes FileSelect
- #define FS_START 5001
- #define FS_ABORT 5002
- #define FS_NOTHING 5004
-
- // Ergebniscodes GlobOpt
- #define GO_OK 6001
- #define GO_ABORT 6002
-
-
- #define BORDERXY(Name, Gw, Gh) \
- static SHORT Name##XY1[] = { 1, Gh-1, Gw-1, Gh-1, Gw-1, 0, Gw-2, 1, Gw-2, Gh-2 };\
- static SHORT Name##XY2[] = { Gw-2, 0, 0, 0, 0, Gh-1, 1, Gh-2, 1, 1 };
-
- #define BORDER(Name, Width, Height, Left, Top) \
- static SHORT Name##BorderXY1[] = { 1, Height-1, Width-1, Height-1, Width-1, 0, Width-2, 1, Width-2, Height-2 };\
- static SHORT Name##BorderXY2[] = { Width-2, 0, 0, 0, 0, Height-1, 1, Height-2, 1, 1 };\
- static struct Border Name##Border[] = \
- { \
- { Left, Top, 1, BGCOLOR, JAM1, 5, Name##BorderXY1, #Name##Border[1] }, \
- { Left, Top, 2, BGCOLOR, JAM1, 5, Name##BorderXY2, NULL }, \
- };
-
- #define IBORDER(Name, Width, Height, Left, Top) \
- static SHORT Name##BorderXY1[] = { 1, Height-1, Width-1, Height-1, Width-1, 0, Width-2, 1, Width-2, Height-2 };\
- static SHORT Name##BorderXY2[] = { Width-2, 0, 0, 0, 0, Height-1, 1, Height-2, 1, 1 };\
- static struct Border Name##Border[] = \
- { \
- { Left, Top, 2, BGCOLOR, JAM1, 5, Name##BorderXY1, #Name##Border[1] }, \
- { Left, Top, 1, BGCOLOR, JAM1, 5, Name##BorderXY2, NULL }, \
- };
-
-
- typedef long code_int;
- typedef long count_int;
- typedef unsigned char char_type;
-
-
- enum MsgPriority { MSGPRI_Info, MSGPRI_Warning, MSGPRI_Error, MSGPRI_FatalError };
-
- enum DevSelExclude { DSX_ExcludeNothing, DSX_ExcludeTape, DSX_ExcludeNull };
-
- enum CloseDiskParm { CDP_UnloadTape, CDP_KeepTape };
-
- enum TapeFunc { TF_Rewind, TF_Retension, TF_Erase, TF_Unload, TF_Load };
-
- enum BufferStatus { LEER = 1, FUELLEN, LEEREN, VOLL };
-
- enum TestDiskResult { UNREADABLE, DOSDISK, OK, DISKCHANGED, NOTLASTDISK,
- FROMTHISSET, NOBACKUPDISK, PANIC };
-
- enum DskStat { EmptyDrive, WaitingForDisk, CheckingDisk, DiskInUse, DiskObsolete, DiskOk };
-
- enum DCResult { UNKNOWN, BAD, DCOK, FINISHED };
-
- enum ArchiveStatus { Ignore, Set, Reset };
-
- enum FType { File, HardLinkFile, SoftLinkFile, Device, Directory, Assign, Volume,
- SoftLinkDir, HardLinkDir, EmptyDir };
-
- enum SelectType { ST_None=0, ST_Deselected, ST_Selected };
-
- enum ProtType { PT_None, PT_Binary, PT_ASCII };
-
- enum DirSort { DirFirst, DirLast, DirBetween };
- enum SortType { SortName, SortDate, SortSize };
-
-
- struct GadgetShortInfo
- {
- struct Gadget *gi_Gadget; // das Gadget
- UWORD gi_GadgetType; // der Gadget-Typ
- ULONG gi_Extra; // Zusatz-Info je nach Gadget-Typ
- };
-
- struct GadgetShort
- {
- struct GadgetShortInfo gs_Info[UCHAR_MAX];
- };
-
- struct myDate
- {
- short Day;
- short Month;
- short Year;
- };
-
- struct TapeIO
- {
- struct BackupDevInfo *DrvDat;
- struct IOExtTD *Req;
- struct SCSICmd Cmd;
- UBYTE Befehl[10]; // SCSI-Befehl
- UBYTE Sense[27]; // SCSI-Sense nach Fehler
- UBYTE IOError; // Fehlercode aus IORequest
-
- short Medium; // Band-Typ
- short Density; // Aufzeichnungsformat
-
- unsigned int withQFA : 1; // benutzt QFA
- };
-
-
- struct Buffer
- {
- struct SignalSemaphore BuffSema;
- char *dbp; // Pointer auf Disk-Buffer
- enum BufferStatus Status; // Statusflag
- unsigned long BufferCheckSum; // Prüfsumme über Bufferinhalt
- unsigned char disknr; // Disk-Nummer für Buffer-Inhalt
- struct IOExtTD BufIOReq; // IORequest für Buffer
- struct IOExtTD VerifyReq; // IORequest für Verify
- struct TapeIO *TapeReq; // Zusatzinfo für Tape Devices
-
- char *WritePtr; // Write Pointer
- unsigned long BuffFree; // freier Platz in Bytes
- };
-
- struct DiskLabel
- {
- char Id[7]; // "BACKUP\0"
- char pad1;
- UBYTE diskno; // Disk-Nummer
- UBYTE lastdisk; // != 0 bei der letzten Disk im Backup-Set
- short Version; // Backup-Version
- unsigned long LabelCheckSum; // Prüfsumme für DiskLabel
- char BackupZeit[8]; // Startzeit des Backups
- char pad3[1];
- char withQFA; // Band benutzt QFA
- unsigned long DirCheckSum; // Prüfsumme für Directory
- unsigned short RecordedFormat; // Variante des Aufzeichnungsformats
- unsigned long DirAnf; // Startsektor für Directory: 1 bei QFA!!
- unsigned long DirLen; // Länge Directory in Sektoren
- unsigned long DirAnz; // Anzahl Directory-Einträge
- unsigned long EndOfData; // Offset des letzten Datenbyte aus Files
- char ProtFileName[FMSIZE]; // Name des Protokollfiles
-
- unsigned long RealDirAnf; // Startsektor für Directory, auch richtig bei QFA
-
- char pad4[DFLT_BLOCKSIZE-52-FMSIZE];
- };
-
- #if sizeof(struct DiskLabel) != DFLT_BLOCKSIZE
- #error Größe von DiskLabel stimmt nicht
- #endif
-
- struct OldNameField
- {
- struct NameField *NextName;
-
- unsigned long Offset; // Hier steht die Datei (Offset in Bytes)
- unsigned long FileLen; // Länge der Datei
- struct DateStamp FileDate; // Datum & Uhrzeit der Datei
- unsigned long Flags; // File-Attribute
- char Complete; // != 0 wenn komplett auf akt. Disk
- SHORT Extension; // Extensionnummer bei diskübergreifenden Dateien
- SHORT NameLen; // Länge des Filenamens
- char Name[1]; // Hier fängt der Filename an
- };
-
-
- struct NameField
- {
- struct NameField *NextName;
-
- int isComplete : 1; // != 0 wenn komplett auf akt. Disk
- int isCompressed : 1; // OBSOLETE !!! File ist komprimiert
- // neu hierfür: CompressionType
- int isHardLink : 1; // Dieser Eintrag beschreibt ein Hardlink
- int isSoftLink : 1; // Dieser Eintrag beschreibt ein Softlink
- int isDir : 1; // Dies ist ein Directory
- int isPartition : 1; // hier wurde eine Partition gesichert
- int Reserved1 : 26;
-
- unsigned short Extension; // Extensionnummer bei diskübergreifenden Dateien
- unsigned short SessionNr; // fortlaufende Nummer bei Append
-
- char CompressionType; // legt Art der Kompression fest
-
- char Reserved2;
-
- unsigned char NFCheckSum; // Prüfsumme für diesen Eintrag
-
- unsigned char DiskNr; // auf dieser Disk steht der File-Anfang
-
- unsigned long Offset; // Hier steht die Datei (Offset in Bytes)
- unsigned long FileLen; // Länge der Datei
- unsigned long RecordedLen; // tatsächlich geschriebene Länge
- struct DateStamp FileDate; // Datum & Uhrzeit der Datei
- long Protection; // File-Attribute
-
- unsigned short NameLen; // Länge des Filenamens
-
- char Name[1]; // Hier fängt der Filename an
- };
-
- // Makro zur Bestimmung der Länge eines NameField <nf>
- #define NF_LEN(nf) (sizeof(struct NameField) + (nf)->NameLen)
-
-
- // dieses Feld wird jedem File auf einem Band vorangestellt
- // die Länge ist variabel wegen des NameField (File-Name)
- struct FileLabel
- {
- unsigned long FL_Magic1, FL_Magic2; // Kennung
- unsigned long FL_CheckSum;
- unsigned long FL_Length; // gesamte Länge des File-Labels
- struct NameField FL_nf;
- };
-
-
- struct DirEntry
- {
- struct MinNode Node;
- struct MinList Sub; // Anfang d. Liste von Subdirectories
- struct DirEntry *Root;
- unsigned short Contents; // Zähler für Einträge im aktuellen Directory
-
- int Virgin : 1;
- int Done : 1;
- int Temporary : 1;
-
- char Name[1];
- };
-
-
- struct PartitionInfo
- {
- struct DiskFlags *Dsk; // Pointer in Disks[]
- struct IOExtTD *PartIO; // IORequest zum Lesen
-
- APTR TrackBuff;
- size_t TrackBuffSize; // Länge von TrackBuff
- ULONG BytesInTrackBuff;
- ULONG TBOffset; // Offset Lesezeiger vom TrackBuff-Anfang
-
- ULONG CurrentOffset;
-
- ULONG FirstSector, LastSector;
- ULONG SectorSize;
-
- ULONG PartSize; // Größe in Bytes
-
- BOOL Locked; // Flag: TRUE solange Partition mit Inhibit() gesperrt
- };
-
- struct NextFileInfo
- {
- unsigned long nfi_FSDirIndex;
- char nfi_FSDirListDone;
-
- unsigned long nfi_VisibleIndex;
- struct FSDir *nfi_Dir;
-
- BPTR nfi_DirLock; // Lock für Directories
- struct MinList nfi_FirstDir;
-
- struct ExAllControl *nfi_eaControl; // Control für ExAll()
- APTR nfi_eaBuffer; // Buffer für ExAll()
- struct ExAllData *nfi_eaData; // Ergebnisdaten von ExAll()
- BOOL nfi_eaMore; // Ergebnis von ExAll()
-
- BOOL nfi_TellSkips; // Flag: melden wenn Files weggelassen werden (z.B. aktuelles ProtFile)
-
- struct BackupOptions *nfi_Opt;
-
- void (*nfi_DirDisplay)(struct DirEntry *); // Anzeige der neuen Directories
- };
-
-
- struct NfSplit
- {
- struct NameField *aktName;
- void *FirstPart, *SecondPart;
- unsigned long FirstPartLen;
- unsigned long SecondPartLen;
- };
-
- struct DirBlock
- {
- struct MinNode db_Node;
- struct NameField *LostNF; // NF, das teilweise am Ende von Data steht
- char *wp; // Schreibzeiger
- unsigned long DataLength; // gesamte Länge von Data[]
- unsigned long Space; // noch verfügbarer Platz
- char Data[1]; // Datenblock (Dsk_CylSize lang)
- };
-
-
- struct Disk
- {
- struct MinList DirBuffers; // Liste der Buffer fürs Directory
- BOOL dirwritten;
- unsigned long dirlength; // Directorylänge auf aktueller Disk
- unsigned long diranz; // Anzahl Einträge auf der aktuellen Disk
- unsigned long diranf; // Startsektor des Directory
- long maxbyte; // Disk-Größe in Bytes
- long Offset; // aktueller Offset-Stand beim Lesen
- long MaxOffset; // Letzter Offset beim Lesen (1. freies Byte)
- unsigned char nr; // aktuelle Disk-Nummer
- };
-
-
- // Makros zum bequemeren Umgang mit der DirBuffers-Liste
- #define FIRST_NF(Disk) ((struct NameField *) (((struct DirBlock *) Disk.DirBuffers.mlh_Head)->Data))
- #define LATEST_DB(Disk) ((struct DirBlock *) (Disk).DirBuffers.mlh_TailPred)
- #define DB_EMPTY(Disk) (IsListEmpty((struct List *) &(Disk).DirBuffers))
-
-
- // Kompatibilitätsflags für Bandlaufwerke
- struct TapeFlags
- {
- unsigned int DriveKnown : 1; // Flag: 1 wenn Laufwerk bekannt, 0 wenn default-Werte
- unsigned int Valid : 1; // TapeFlags sind gültig
-
- unsigned int canQFA : 1; // benutzt QFA
- unsigned int FastSpace : 1; // kann Fast Space
- unsigned int canLocate : 1; // kennt Locate
- unsigned int SpaceBack : 1; // kann Space rückwärts
- unsigned int PageFormat : 1; // kennt Mode Pages
- unsigned int InvertEOT : 1; // EOT bei Unload invertieren
- unsigned int EraseLONG : 1; // LONG-Bit setzen bei ERASE
- unsigned int AppendQFA : 1; // QFA klappt bei Append
- unsigned int SpaceEOR : 1; // kann Space to End Of Recorded Area
- unsigned int UpdateInPlace : 1; // kann beliebige Blöcke überschreiben
- };
-
- struct BackupDevInfo
- {
- ULONG BlockSize; // Sektorgröße in Bytes
- USHORT NumHeads; // Anzahl Köpfe
- ULONG NumCyls; // Anzahl Zylinder
- ULONG NumSecs; // Sektoren je Track
- ULONG TrackSize; // Bytes je Spur
- ULONG CylSize; // Bytes je Zylinder
- ULONG FirstCyl; // Start-Zylinder
- ULONG BufMemType;
- ULONG Flags; // Flags für OpenDevice
-
- UBYTE DeviceType; // codes as defined in the SCSI-2 spec
-
- short SCSILevel; // SCSI Level (1/2)
-
- struct TapeFlags Properties;
-
- UBYTE InquiryData[60]; // INQUIRY-Daten (für Tape)
-
- char isPreliminary; // Werte sind nur vorläufig bis Disk im Laufwerk
- char useGetGeometry; // TD_GETGEOMETRY darf benutzt werden
- char useCompression; // eingebaute Hardwarekompression wird benutzt
- char isDDSDC; // dies ist ein DDS-DC Laufwerk
-
- char isTape; // Flag: dies ist ein Bandlaufwerk
- };
-
- struct DiskFlags
- {
- struct IOExtTD *diskreq;
- struct DiskChangeInfo *DcI;
- struct BackupDevInfo DrvDat;
- char DOSName[FNSIZE]; // Device-Name, z.B: "DF0"
- char DeviceName[FNSIZE]; // name des Devices, z.B. "trackdisk.device"
- ULONG Unit; // Unitnr. des Device
- char valid; // Flag: Laufwerk ist vorhanden
- char inhibited; // Flag : LW mit Inhibit blockiert
- struct TapeIO *TapeReq; // Zusatzinfo für Tape Devices
- struct DosEnvec *Env; // zugehöriger DosList-Eintrag
- struct SignalSemaphore DskSema;
- };
-
-
- struct NamePattern
- {
- char RawName[FNSIZE];
- char ParsedPattern[2*FNSIZE];
- char isParsed;
- };
-
-
- struct GenericGadgetImages
- {
- struct Image *gi_Render;
- struct Image *gi_Selected;
- };
-
-
- struct DiskChangeInfo
- {
- struct SignalSemaphore Sema;
-
- short NextDiskNr;
-
- short UnitNr; // Index in Disks[]
-
- char *DOSName; // DOS-Name des Laufwerkes
- char *TDName; // Name des Devices
- ULONG TDUnit; // Unit-Nr.
- ULONG TDFlags; // Flags für OpenDevice
- struct timerequest *TimerIOReq; // IORequest für timer.device
- struct IOExtTD *DiskIOReq; // IORequest für algemeine Zwecke
- struct IOExtTD ChangeIOReq; // IORequest für AddChangeInt
- struct TapeIO *TapeReq;
-
- struct MsgPort *DCTxPort; // Port für Nachrichten DiskChanger -> main
- struct MsgPort *DCRxPort; // Port für Nachrichten main -> DiskChanger
-
- unsigned long DCTxPortMask; // Signal-Maske für DCTxPort
-
- short TimerInUse; // Flag: TimerIOReq wird benutzt
- short isTape; // Flag: Backup auf Tape
- short withQFA; // Flag: Tape benutzt QFA
-
- ULONG ChangeCount; // DiskChangeCount
- struct DiskLabel Label; // Disklabel des aktuellen Disk
-
- struct Interrupt DiskChangeInt;
-
- enum DskStat DiskStatus; // Flag, ob Disk eingelegt
-
- char *DiskReady; // Zeiger auf Ready-Flag
- enum DCResult Result; // Ergebnis-Variable
-
- struct DosEnvec *Env; // DosList-Eintrag für Drive
- struct BackupDevInfo *DrvDat; // Zeiger auf Disks[].DrvDat
-
- struct Task *DiskChangerTask; // Task des DiskChanger-Prozesses
- ULONG DiskChangeMask; // Signal bei Diskwechsel
- ULONG TimerMask; // Signal vom timer.device
-
- short Pos; // Kennung f. Laufwerksanzeige (1 oder 2)
- char StartZeit[8]; // Startzeit des Backups
-
- unsigned long DiskBlockSize; // Sektorlänge
- unsigned long DiskBufMemType;
-
- char ProcessName[80];
- };
-
-
- struct BackupOptions
- {
- long bo_Dummy; // damit offsetof(bo_IncludeFile) nicht 0 ist!
-
- struct NamePattern bo_IncludeFile;
- struct NamePattern bo_ExcludeFile;
-
- struct IBox bo_MainWindowPos;
-
- char bo_ProtFileName[FMSIZE]; // Name für das Protokoll-File
- char bo_DrivesWithoutGeometry[FMSIZE];
- char bo_CmdFileIcon[FMSIZE];
- char bo_NeverCompress[FMSIZE];
- char bo_DiskSavePrefix[FMSIZE]; // Pfad für die DiskSave-Files
- char bo_HelpPath[FMSIZE]; // Pfad für die Online-Hilfedateien
- char bo_ScriptPath[FMSIZE]; // Pfad, in dem die Skripte zuerst gesucht werden
- char bo_TapeDriveDataFileName[FMSIZE]; // Filename der Bandlaufwerks-Datenbank
-
- char bo_AppIconName[FMSIZE]; // Filename für AppIcon (#?.info)
-
- char bo_ListFontName[FMSIZE]; // Font für die Auswahl-Listen
-
- char bo_PubScreen[FMSIZE]; // Name eines PubScreens oder ""
-
- char bo_Language[FMSIZE]; // eine Sprache oder "" für die Standard-Sprache
-
- char bo_CurrentDir[FMSIZE]; // Dieses Directory wird beim Start angezeigt
-
- long bo_AppIconPosX; // X-Position für AppIcon
- long bo_AppIconPosY; // Y-Position für AppIcon
-
- long bo_QFAPartitionSize; // Partitionsgröße für QFA-Partition in MBytes
-
- long bo_FirstDate;
- long bo_LastDate;
-
- char bo_IncludeSubDirs; // Flag: Subdirectories mitsichern
- enum ArchiveStatus bo_UseArc;
- char bo_UseFirstDate;
- char bo_UseLastDate;
- char bo_UseGrepPattern;
- char bo_SaveSoftLinks;
- char bo_SaveHardLinks;
- char bo_Append; // Flag: Anhängen an altes Backup
- char bo_UseHardwareCompression; // Flag: Hardware-Kompression des Laufwerks nutzen
- char bo_Iconify; // Flag: nach Start ikonifizieren?
- char bo_WarnDosDisk; // Flag: vor Überschreiben einer DOS-Disk warnen
-
- enum ArchiveStatus bo_SetArc;
- enum DirSort bo_WhereSortDirs; // Plazierung für sortierte Directories
- enum ProtType bo_ProtFile; // Protokollfile erzeugen?
-
- char bo_KeepProtFile; // Flag: Protokollfile nach Ende aufheben
- char bo_Verify; // Flag: mit Verify
- char bo_Preview; // Flag: mit Preview
- char bo_Compress; // Files komprimieren
- // COMPRESS_NONE keine Kompression
- // COMPRESS_INTERNAL interne Kompression
- // COMPRESS_XPK XPK-Kompression
-
- short bo_WarnLevel; // Meldungen >= diesem Level werden angezeigt
-
- enum SortType bo_HowToSort;
- int (*bo_FSCompare)(struct FSDirEntry **, struct FSDirEntry **); // Sortierroutine nach Name/Datum/Größe
-
- struct FSDir **bo_FSDirList;
- unsigned long bo_FSDirCount;
-
- short bo_FirstUnit; // Index des ersten Laufwerk in disks[]
- short bo_SecondUnit; // Index des zweiten Laufwerk in disks[]
-
- char XPKPackerName[XPK_PACKNAMELEN]; // Packer-Type mit XPK Library, Format "ABCD.100"
- char XPKEncrypt; // Flag: Encryption yes/no
- char XPKPassword[XPK_PASSWORDLEN]; // Passwort für XPK-Encryption
- };
-
-
- struct PushedInfoLine
- {
- struct MinNode pil_Node;
- char pil_Text[1]; // ab hier steht der Text (variable Länge!)
- };
-
- typedef struct PushedInfoLine *InfoLineHandle;
-
-
- struct BInputHandler
- {
- struct Node bih_Node;
- ULONG bih_WaitMask;
- int (*bih_Handler)(void);
- };
-
-
- // toupper() und tolower() werden durch eigene Funktionen ersetzt, die ggf.
- // die utility.library benutzen (wegen locale!)
- #undef toupper
- #undef tolower
- #undef stricmp
- #undef strnicmp
-
- #define toupper(c) mytoupper(c)
- #define tolower(c) mytolower(c)
- #define stricmp(s1, s2) mystricmp(s1, s2)
- #define strnicmp(s1, s2, n) mystrnicmp(s1, s2, n)
-
-
- // Pointer Check, für Debug-Zwecke
- #ifndef NDEBUG
- #define ASSERT_VALID0(x) assert((x) == NULL || TypeOfMem((void *) (x)) != 0)
- #define ASSERT_VALID(x) assert((x) != NULL && TypeOfMem((void *) (x)) != 0)
- #else
- #define ASSERT_VALID(x) ;
- #define ASSERT_VALID0(x) ;
- #endif
-
-
- // Zugriff auf StringGadgets
- #define GADSTRING(gad) (((struct StringInfo *) (gad)->SpecialInfo)->Buffer)
-
- // Zugriff auf Integer-Gadgets
- #define GADINT(gad) (((struct StringInfo *) (gad)->SpecialInfo)->LongInt)
-
-
- // statische Initialisierung von Listen
- #define MINLIST(list) struct MinList list = { (struct MinNode *) &(list).mlh_Tail, NULL, (struct MinNode *) &(list) }
- #define LIST(list) struct List list = { (struct Node *) &(list).mlh_Tail, NULL, (struct Node *) &(list) }
-
- #define BACKUP_H_INCLUDED
- #endif
-