Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <pspkernel.h>
- #include <stdlib.h>
- #include "pbpio.h"
- typedef struct {
- char magicNumber[4];
- int version;
- int offsets[8];
- } PBPHeader;
- PbpIoFile *pbpIoOpen(const char *file, PbpIoSlot slot, int flags, SceMode mode)
- {
- PbpIoFile *fd = malloc(sizeof(PbpIoFile));
- fd->fd = sceIoOpen(file, flags, mode);
- fd->slot = slot;
- PBPHeader pbpHeader;
- sceIoRead(fd->fd, &pbpHeader, sizeof(pbpHeader));
- char correctMagicNumber[4] = { '\0', 'P', 'B', 'P' };
- int correctVersion = 0x010000;
- if(pbpHeader.magicNumber != correctMagicNumber) return NULL;
- if(pbpHeader.version != correctVersion) return NULL;
- sceIoLseek(fd->fd, pbpHeader.offsets[slot], SEEK_SET);
- fd->slotOffset = pbpHeader.offsets[slot];
- return fd;
- }
- int pbpIoClose(PbpIoFile *fd)
- {
- int r = sceIoClose(fd->fd);
- free(fd);
- return r;
- }
- SceOff pbpIoLseek(PbpIoFile *fd, SceOff offset, int whence)
- {
- return sceIoLseek(fd->fd, fd->slotOffst+offset, whence);
- }
- int pbpIoRead(PbpIoFile *fd, void *data, SceSize size)
- {
- return sceIoRead(fd->fd, data, size);
- }
- int pbpIoWrite(PbpIoFile *fd, const void *data, SceSize size)
- {
- return sceIoWrite(fd->fd, data, size);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement