#include "StdAfx.h"
#include "BKFile.h"


CBKFile::CBKFile(const CString &strName)
	: CMyFile(strName)
{
	m_nTabWidth = 8;
}


CBKFile::~CBKFile(void)
{
	Close();
}

//выход: TRUE - Файл открылся, FALSE - не открылся.
BOOL CBKFile::Open(BOOL bWrite)
{
	BOOL bRet = FALSE;
	CString strMode;

	if (!bWrite)
	{
		strMode = _T("r");
	}
	else
	{
		strMode = _T("w");
	}

	m_f = _tfopen(m_strFileName, strMode + _T("b"));

	if (m_f) //если файл открылся, то всё нормально
	{
		if (!bWrite)
		{
			fseek(m_f, 0, SEEK_END);
			m_nFileLength = ftell(m_f);
			fseek(m_f, 0, SEEK_SET);
		}

		bRet = TRUE;
	}

	return bRet;
}

WCHAR CBKFile::ReadChar()
{
	BYTE ch = 0;
	WCHAR tch = 0;

	if (m_f)
	{
		fread(&ch, 1, 1, m_f);
		tch = BKToUNICODE_Byte(ch);
	}

	return tch;
}

BOOL CBKFile::WriteChar(WCHAR tch)
{
	size_t n = 0;

	if (m_f)
	{
		BYTE ch = UNICODEtoBK_Byte(tch);
		n = fwrite(&ch, 1, 1, m_f);
	}

	return (n != 0);
}
