mirror of
https://github.com/markdavidlong/AppleSAWS.git
synced 2024-09-25 15:54:39 +00:00
56 lines
2.0 KiB
C
56 lines
2.0 KiB
C
#ifndef FILEDESCRIPTIVEENTRY_H
|
|
#define FILEDESCRIPTIVEENTRY_H
|
|
|
|
#include "util.h"
|
|
#include <QDebug>
|
|
#include "applestring.h"
|
|
|
|
struct FileDescriptiveEntry {
|
|
TSPair firstTSListSector;
|
|
int fileTypeAndFlags;
|
|
AppleString filename;
|
|
quint16 lengthInSectors;
|
|
bool deleted;
|
|
|
|
FileDescriptiveEntry() {
|
|
fileTypeAndFlags = 0;
|
|
lengthInSectors = 0;
|
|
deleted = false;
|
|
}
|
|
|
|
bool operator<(const FileDescriptiveEntry& f1) const {
|
|
return f1.filename < filename;
|
|
}
|
|
|
|
QString fileType() {
|
|
if (fileTypeAndFlags & DOSIntegerBasicFile) { return "I"; }
|
|
if (fileTypeAndFlags & DOSApplesoftBasicFile) { return "A"; }
|
|
if (fileTypeAndFlags & DOSRelocatableFile) { return "R"; }
|
|
if (fileTypeAndFlags & DOSRawBinaryFile) { return "B"; }
|
|
if (fileTypeAndFlags & DOSTypeSFile) { return "S"; }
|
|
if (fileTypeAndFlags & DOSTypeAFile) { return "a"; }
|
|
if (fileTypeAndFlags & DOSTypeBFile) { return "b"; }
|
|
return "T";
|
|
}
|
|
|
|
bool isLocked() { return (fileTypeAndFlags & DOSIsLocked); }
|
|
|
|
void dump() {
|
|
qDebug() << "First TS List Sector: Track: " << QString("%1").arg(firstTSListSector.track,2,16,QChar('0')).toUpper()
|
|
<< " Sector: " << QString("%1").arg(firstTSListSector.sector,2,16,QChar('0')).toUpper();
|
|
qDebug() << "File Type and Flags: " << QString::number((quint8)fileTypeAndFlags) << "(" << fileType() << "," << (isLocked()?"Locked":"Unlocked") << ")";
|
|
qDebug() << "Filename: " << filename.printable();
|
|
qDebug() << "Length in Sectors: " << lengthInSectors;
|
|
}
|
|
|
|
void catalog() {
|
|
QString output = QString("%1 %2 %3 %4").arg(QString(isLocked()?"*":" "))
|
|
.arg(lengthInSectors,3,10,QChar('0'))
|
|
.arg(fileType())
|
|
.arg(filename.printable().trimmed());
|
|
qDebug() << output;
|
|
}
|
|
};
|
|
|
|
#endif // FILEDESCRIPTIVEENTRY_H
|