Windows2003-3790/termsrv/newclient/clshell/fstream.h
2020-09-30 16:53:55 +02:00

65 lines
1.6 KiB
C++

//
// fsteam.h
// Implements a file stream
// for reading text files line by line with UNICODE
// support (the standard C streams, only support
// unicode as binary streams which are a pain to work
// with)
//
// Copyright(C) Microsoft Corporation 2000
// Author: Nadim Abdo (nadima)
//
#ifndef _fstream_h_
#define _fstream_h_
#define LINEBUF_SIZE 2048
#define READ_BUF_SIZE 8192
#define UNICODE_BOM 0xFEFF
#define ERR_SUCCESS 1
#define ERR_UNKNOWN -1
#define ERR_OUT_OF_MEM -2
#define ERR_CREATEFILE -3
#define ERR_BUFTOOSMALL -4
#define ERR_EOF -5
#define ERR_NOTOPENFORREAD -6
#define ERR_NOTOPENFORWRITE -7
#define ERR_FILEOP -8
class CTscFileStream
{
public:
CTscFileStream();
~CTscFileStream();
INT OpenForRead(LPTSTR szFileName);
INT OpenForWrite(LPTSTR szFileName, BOOL fWriteUnicode=TRUE);
INT Write(LPWSTR szLine);
INT ReadNextLine(LPTSTR szLine, INT lineSize);
INT Close();
BOOL IsOpenForWrite() {return _fOpenForWrite;}
BOOL IsOpenForRead() {return _fOpenForRead;}
private:
inline void CheckFirstBufMarkedUnicode();
inline void EatCRLF(LPWSTR szLine, INT nChars);
private:
HANDLE _hFile;
PBYTE _pBuffer;
PBYTE _pAnsiLineBuf;
INT _cbAnsiBufSize;
BOOL _fOpenForRead;
BOOL _fOpenForWrite;
BOOL _fReadToEOF;
INT _curBytePtr;
INT _curBufSize;
TCHAR _szFileName[MAX_PATH+1];
BOOL _fFileIsUnicode;
BOOL _fAtStartOfFile;
};
#endif //_fstream_h_