Advertisement
Terbaddo

PSP PBP File Input/Output API v0.1 - pbpio.c

Aug 8th, 2011
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.18 KB | None | 0 0
  1. #include <pspkernel.h>
  2. #include <stdlib.h>
  3. #include "pbpio.h"
  4.  
  5. typedef struct {
  6.         char magicNumber[4];
  7.         int version;  
  8.         int offsets[8];
  9. } PBPHeader;
  10.  
  11. PbpIoFile *pbpIoOpen(const char *file, PbpIoSlot slot, int flags, SceMode mode)
  12. {
  13.     PbpIoFile *fd = malloc(sizeof(PbpIoFile));
  14.     fd->fd = sceIoOpen(file, flags, mode);
  15.     fd->slot = slot;
  16.    
  17.     PBPHeader pbpHeader;
  18.     sceIoRead(fd->fd, &pbpHeader, sizeof(pbpHeader));
  19.     char correctMagicNumber[4] = { '\0', 'P', 'B', 'P' };
  20.     int correctVersion = 0x010000;
  21.     if(pbpHeader.magicNumber != correctMagicNumber) return NULL;
  22.     if(pbpHeader.version != correctVersion) return NULL;
  23.     sceIoLseek(fd->fd, pbpHeader.offsets[slot], SEEK_SET);
  24.  
  25.     fd->slotOffset = pbpHeader.offsets[slot];
  26.  
  27.     return fd;
  28. }
  29.  
  30. int pbpIoClose(PbpIoFile *fd)
  31. {
  32.     int r = sceIoClose(fd->fd);
  33.     free(fd);
  34.     return r;
  35. }
  36.  
  37. SceOff pbpIoLseek(PbpIoFile *fd, SceOff offset, int whence)
  38. {
  39.     return sceIoLseek(fd->fd, fd->slotOffst+offset, whence);
  40. }
  41.  
  42. int pbpIoRead(PbpIoFile *fd, void *data, SceSize size)
  43. {
  44.     return sceIoRead(fd->fd, data, size);
  45. }
  46. int pbpIoWrite(PbpIoFile *fd, const void *data, SceSize size)
  47. {
  48.     return sceIoWrite(fd->fd, data, size);
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement