// if pureChecksums[ 0 ] == 0, all data sources will be allowed
// otherwise, only pak files that match one of the checksums will be checked for files
// with the sole exception of .cfg files.
// the function tries to configure pure mode from the paks already referenced and this new list
// it returns wether the switch was successfull, and sets the missing checksums
// the process is verbosive when fs_debug 1
virtual fsPureReply_t SetPureServerChecksums( const int pureChecksums[ MAX_PURE_PAKS ], int gamePakChecksum, int missingChecksums[ MAX_PURE_PAKS ], int *missingGamePakChecksum ) = 0;
// fills a 0-terminated list of pak checksums for a client
// if OS is -1, give the current game pak checksum. if >= 0, lookup the game pak table (server only)
virtual void GetPureServerChecksums( int checksums[ MAX_PURE_PAKS ], int OS, int *gamePakChecksum ) = 0;
// before doing a restart, force the pure list and the search order
// if the given checksum list can't be completely processed and set, will error out
virtual void SetRestartChecksums( const int pureChecksums[ MAX_PURE_PAKS ], int gamePakChecksum ) = 0;
// equivalent to calling SetPureServerChecksums with an empty list
virtual void ClearPureChecksums( void ) = 0;
// get a mask of supported OSes. if not pure, returns -1
virtual unsigned int GetOSMask( void ) = 0;
// Reads a complete file.
// Returns the length of the file, or -1 on failure.
// A null buffer will just return the file length without loading.
// A null timestamp will be ignored.
// As a quick check for existance. -1 length == not present.
// A 0 byte will always be appended at the end, so string ops are safe.
// The buffer should be considered read-only, because it may be cached for other uses.