unixfilereader.cpp.svn-base
上传用户:market2
上传日期:2018-11-18
资源大小:18786k
文件大小:1k
源码类别:

外挂编程

开发平台:

Windows_Unix

  1. #include <sys/types.h>
  2. #include <sys/stat.h>
  3. #include <sys/mman.h>
  4. #include <fcntl.h>
  5. #include <unistd.h>
  6. #include "unixfilereader.h"
  7. UnixFileReader::UnixFileReader (const char *filename)
  8. {
  9. struct stat buf;
  10. int fd;
  11. if (stat (filename, &buf) == -1)
  12. throw 1;
  13. len = buf.st_size;
  14. fd = open (filename, O_RDONLY);
  15. if (fd == -1)
  16. throw 2;
  17. addr = (char *) mmap (NULL, len, PROT_READ, MAP_PRIVATE, fd, 0);
  18. close (fd);
  19. if (addr == MAP_FAILED)
  20. throw 3;
  21. }
  22. UnixFileReader::~UnixFileReader ()
  23. {
  24. munmap (addr, len);
  25. }
  26. unsigned int
  27. UnixFileReader::getSize ()
  28. {
  29. return (unsigned int) len;
  30. }
  31. unsigned int
  32. UnixFileReader::readInt (unsigned int offset)
  33. {
  34. unsigned int *i;
  35. i = (unsigned int *) &(addr[offset]);
  36. return *i;
  37. }
  38. const char *
  39. UnixFileReader::readStr (unsigned int offset)
  40. {
  41. const char *s;
  42. s = (const char *) &(addr[offset]);
  43. return s;
  44. }