Beispiel #1
0
void deleteByOffset(DeletionHandler *dh, long offset) {
	long head = readLong(dh->bfr, 0L); // read head

	seekBinaryFile(dh->bfr->bf, offset); // point to offset
	int size = readInt(dh->bfr, getStreamOffset(dh->bfr->bf));
	size *= -1; // delete

	seekBinaryFile(dh->bfw->bf, offset);
	writeInt(dh->bfw, size, getStreamOffset(dh->bfw->bf)); // write deleted

	seekBinaryFile(dh->bfw->bf, (offset + sizeof(int)));
	writeLong(dh->bfw, head, getStreamOffset(dh->bfw->bf)); // write head

	writeLong(dh->bfw, offset, 0L); // updated head with new offset
}
Beispiel #2
0
void selectTables(TableManager *tm) {
	BinaryFile *bf = newBinaryFile(tm->fileName);
	if(getBinaryFileSize(bf) > 0) {
		BinaryFileReader *bfr = newBinaryFileReader(bf, DELIMITER);
		seekBinaryFile(bf, 0L);
		long offset = getStreamOffset(bf);
		while(offset < getBinaryFileSize(bf)) {
			char *fileName = readString(bfr, offset);
			setArrayListObject(tm->names, fileName, tm->names->length);
			offset += (sizeof(char)*(strlen(fileName) + 1));
		}
		deleteBinaryFileReader(bfr);
	}
	deleteBinaryFile(bf);
}
Beispiel #3
0
off_t	MDATAtom::getEOF()
{
	return getStreamOffset() + getAtomSize();
}