mirror of
https://github.com/mangosfour/server.git
synced 2025-12-22 04:37:01 +00:00
[c12536] Happy New Year 2013
Update authorship information and prepare for easier ways next year Signed-off-by: Schmoozerd <schmoozerd@cmangos> (based on commit [12325] - b7dbcda)
This commit is contained in:
parent
86a243c910
commit
a05738717a
542 changed files with 3274 additions and 1846 deletions
|
|
@ -1,86 +0,0 @@
|
|||
#include "mpqfile.h"
|
||||
#include <deque>
|
||||
#include <cstdio>
|
||||
#include "StormLib.h"
|
||||
|
||||
MPQFile::MPQFile(HANDLE mpq, const char* filename):
|
||||
eof(false),
|
||||
buffer(0),
|
||||
pointer(0),
|
||||
size(0)
|
||||
{
|
||||
HANDLE file;
|
||||
if (!SFileOpenFileEx(mpq, filename, SFILE_OPEN_PATCHED_FILE, &file))
|
||||
{
|
||||
fprintf(stderr, "Can't open %s, err=%u!\n", filename, GetLastError());
|
||||
eof = true;
|
||||
return;
|
||||
}
|
||||
|
||||
DWORD hi = 0;
|
||||
size = SFileGetFileSize(file, &hi);
|
||||
|
||||
if (hi)
|
||||
{
|
||||
fprintf(stderr, "Can't open %s, size[hi] = %u!\n", filename, (uint32)hi);
|
||||
SFileCloseFile(file);
|
||||
eof = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (size <= 1)
|
||||
{
|
||||
fprintf(stderr, "Can't open %s, size = %u!\n", filename, size);
|
||||
SFileCloseFile(file);
|
||||
eof = true;
|
||||
return;
|
||||
}
|
||||
|
||||
DWORD read = 0;
|
||||
buffer = new char[size];
|
||||
if (!SFileReadFile(file, buffer, size, &read, NULL) || size != read)
|
||||
{
|
||||
fprintf(stderr, "Can't read %s, size=%u read=%u!\n", filename, size, read);
|
||||
SFileCloseFile(file);
|
||||
eof = true;
|
||||
return;
|
||||
}
|
||||
|
||||
SFileCloseFile(file);
|
||||
}
|
||||
|
||||
size_t MPQFile::read(void* dest, size_t bytes)
|
||||
{
|
||||
if (eof) return 0;
|
||||
|
||||
size_t rpos = pointer + bytes;
|
||||
if (rpos > size) {
|
||||
bytes = size - pointer;
|
||||
eof = true;
|
||||
}
|
||||
|
||||
memcpy(dest, &(buffer[pointer]), bytes);
|
||||
|
||||
pointer = rpos;
|
||||
|
||||
return bytes;
|
||||
}
|
||||
|
||||
void MPQFile::seek(int offset)
|
||||
{
|
||||
pointer = offset;
|
||||
eof = (pointer >= size);
|
||||
}
|
||||
|
||||
void MPQFile::seekRelative(int offset)
|
||||
{
|
||||
pointer += offset;
|
||||
eof = (pointer >= size);
|
||||
}
|
||||
|
||||
void MPQFile::close()
|
||||
{
|
||||
if (buffer) delete[] buffer;
|
||||
buffer = 0;
|
||||
eof = true;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue