| 37 | } |
| 38 | |
| 39 | size_t EMUFILE_MEMORY::_fread(const void *ptr, size_t bytes){ |
| 40 | size_t remain = len-pos; |
| 41 | size_t todo = std::min<size_t>(remain,bytes); |
| 42 | if(len==0) |
| 43 | { |
| 44 | failbit = true; |
| 45 | return 0; |
| 46 | } |
| 47 | if(todo<=4) |
| 48 | { |
| 49 | u8* src = buf()+pos; |
| 50 | u8* dst = (u8*)ptr; |
| 51 | for(size_t i=0;i<todo;i++) |
| 52 | *dst++ = *src++; |
| 53 | } |
| 54 | else |
| 55 | { |
| 56 | memcpy((void*)ptr,buf()+pos,todo); |
| 57 | } |
| 58 | pos += todo; |
| 59 | if(todo<bytes) |
| 60 | failbit = true; |
| 61 | return todo; |
| 62 | } |
| 63 | |
| 64 | void EMUFILE_FILE::open(const char* fname, const char* mode) |
| 65 | { |