Stupid winsock needs special way to close sockets.
[dftpd.git] / DataBufferFile.cpp
blob6f24dbd801c724a0a48bc14697700b3f70b74dc6
1 #include <string.h>
2 #include "DataBufferFile.hpp"
4 DataBufferFile::DataBufferFile( FILE* f, int secondaryBufferSize )
5 : m_file( f )
6 , m_secBuf( new char[secondaryBufferSize] )
7 , m_secBufSize( 0 )
11 DataBufferFile::~DataBufferFile()
13 delete[] m_secBuf;
15 fclose( m_file );
18 int DataBufferFile::Read( void* ptr, int size )
20 int bufSize = m_secBufSize;
21 m_secBufSize = 0;
23 memcpy( ptr, m_secBuf, bufSize );
25 return fread( (char*)ptr + bufSize, 1, size - bufSize, m_file ) + bufSize;
28 int DataBufferFile::Write( void* ptr, int size )
30 return fwrite( ptr, size, 1, m_file );
33 void DataBufferFile::Store( void* ptr, int size )
35 memcpy( m_secBuf, ptr, size );
36 m_secBufSize = size;