#include #include "datalib0.h" /* DataLib */ #define NAMEDIR_CHAR ' ' /* the 1st char of ordinary name */ #define NAMEDIR_STR " " /* the 1st char of ordinary name */ #define HIDDEN_CHAR '\x01' /* the 1st char of each hidden name */ #define HIDDEN_STR "\x01" /* the 1st char of each hidden name */ #define SUBDIR_CHAR '\x02' /* the 1st char of each subdirectiry name */ /* Use only DataLibVar(..) to declare DataLib variables. It ensures proper initialisation of the Stream field. */ #define DataLibVar(var) DataLib var={NULL} Global(Boolean) DataLibIsClosed(DataLibPtr dl); Global(Int2) DataLibOpen(DataLibPtr dl, CharPtr fn); Global(void) DataLibClose(DataLibPtr dl); Global(size_t) DataLibRead(DataLibPtr dl, CharPtr buf, size_t len); Global(size_t) DataLibWrite(DataLibPtr dl, CharPtr buf, size_t len); Global(void) DataLibFlush(DataLibPtr dl); Global(Int2) DataLibTell(DataLibPtr dl, DataLibPosPtr pos); Global(Int2) DataLibSeek(DataLibPtr dl, DataLibPosPtr pos); Global(Int2) DataLibFind(DataLibPtr dl, CharPtr name); Global(Int2) DataLibFindBySubstr(DataLibPtr dl, CharPtr name, Boolean from1st); Global(Int2) DataLibDelete(DataLibPtr dl); Global(Int2) DataLibCreate(DataLibPtr dl, CharPtr name); Global(Int2) DataLibRename(DataLibPtr dl, CharPtr newname); Global(Int2) DataLibUp(DataLibPtr dl); Global(Int2) DataLibDown(DataLibPtr dl); Global(Int2) DataLibPrev(DataLibPtr dl, Int2 n); Global(Int2) DataLibNext(DataLibPtr dl, Int2 n); Global(Int2) DataLibSeekDir(DataLibPtr dl, FilePtr dp); Global(FilePtr) DataLibGetUserPtr(DataLibPtr dl, FilePtr dirptr); Global(void) DataLibSetUserPtr(DataLibPtr dl, FilePtr dirptr, FilePtr datafp); Global(void) DataLibSetSelected(DataLibPtr dl); extern Global(size_t) DataLibLastVRecLen; extern Global(size_t) DataLibLastVRecDesc; Global(size_t) DataLibGetDescLen(size_t VRecLen); Global(CharPtr) DataLibReadVRecord(DataLibPtr dl, CharPtr partition); Global(Int2) DataLibWriteVRecord(DataLibPtr dl, CharPtr partition, CharPtr buf, size_t len); Global(size_t) DataLibReadVRecordN(DataLibPtr dl, CharPtr buf, size_t maxlen); Global(void) DataLibDeletePartitions(DataLibPtr dl, ...); Global(void) DataLibSkipVRecord(DataLibPtr dl); Global(size_t) DataLibSkipPartition(DataLibPtr dl); Global(size_t) DataLibSkip(DataLibPtr dl, size_t n); /* DataLibEnum */ typedef Int2 (PNTR DataLibEnumCallback)(DataLibPtr dl); extern Global(Int2) DataLibEnumEx; extern Global(Int2) DataLibEnumEvent; Global(Int2) DataLibEnum(DataLibPtr dl, DataLibEnumCallback callback, Boolean recursive); Global(void) DataLibEnumIgnore(CharPtr s); Global(DataLibPtr) DataLibSavePosPtr(DataLibPtr dl); Global(void) DataLibRestorePosPtr(DataLibPtr dl, DataLibPtr dlsaved); Global(void) DataLibSavePos(DataLibPtr dl); Global(void) DataLibRestorePos(DataLibPtr dl); /* DatalibShow */ #define NOTIFY_DESELECT 2 /* used in Notify callback only */ #define NOTIFY_SELECT 1 #define NOTIFY_CANCEL 0 typedef void (PNTR DataLibNotify)(DataLibPtr, Int2); typedef Int2 (PNTR DataLibCallback)(DataLibPtr, DataLibNotify); Global(Int2) DataLibShow(DataLibPtr dl, CharPtr Title, DataLibNotify Notify, CharPtr Format, ...); #if DEB_DL Global(void) Debug_DataLibShow(Int2); Global(void) Debug_DataLibShowU(Int2); Global(Boolean)Debug_DataLibShowU_Status(Int2); #endif