diff options
author | Kirill Volinsky <mataes2007@gmail.com> | 2012-07-20 16:21:49 +0000 |
---|---|---|
committer | Kirill Volinsky <mataes2007@gmail.com> | 2012-07-20 16:21:49 +0000 |
commit | f424a18112032cf61d2871a6b91a5af607c171ae (patch) | |
tree | 88fedc4e28941ceecda7026f0b06eba6271f91d5 /plugins/CryptoPP/crypto/files.cpp | |
parent | bfe1bd0fc087be44c70904aee0fe4276643d206d (diff) |
CryptoPP:
changed folder structure
git-svn-id: http://svn.miranda-ng.org/main/trunk@1083 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/CryptoPP/crypto/files.cpp')
-rw-r--r-- | plugins/CryptoPP/crypto/files.cpp | 212 |
1 files changed, 0 insertions, 212 deletions
diff --git a/plugins/CryptoPP/crypto/files.cpp b/plugins/CryptoPP/crypto/files.cpp deleted file mode 100644 index 61915d777a..0000000000 --- a/plugins/CryptoPP/crypto/files.cpp +++ /dev/null @@ -1,212 +0,0 @@ -// files.cpp - written and placed in the public domain by Wei Dai
-
-#include "pch.h"
-
-#ifndef CRYPTOPP_IMPORTS
-
-#include "files.h"
-
-#include <limits>
-
-NAMESPACE_BEGIN(CryptoPP)
-
-using namespace std;
-
-void Files_TestInstantiations()
-{
- FileStore f0;
- FileSource f1;
- FileSink f2;
-}
-
-void FileStore::StoreInitialize(const NameValuePairs ¶meters)
-{
- m_file.reset(new std::ifstream);
- const char *fileName;
- if (parameters.GetValue(Name::InputFileName(), fileName))
- {
- ios::openmode binary = parameters.GetValueWithDefault(Name::InputBinaryMode(), true) ? ios::binary : ios::openmode(0);
- m_file->open(fileName, ios::in | binary);
- if (!*m_file)
- throw OpenErr(fileName);
- m_stream = m_file.get();
- }
- else
- {
- m_stream = NULL;
- parameters.GetValue(Name::InputStreamPointer(), m_stream);
- }
- m_waiting = false;
-}
-
-lword FileStore::MaxRetrievable() const
-{
- if (!m_stream)
- return 0;
-
- streampos current = m_stream->tellg();
- streampos end = m_stream->seekg(0, ios::end).tellg();
- m_stream->seekg(current);
- return end-current;
-}
-
-size_t FileStore::TransferTo2(BufferedTransformation &target, lword &transferBytes, const std::string &channel, bool blocking)
-{
- if (!m_stream)
- {
- transferBytes = 0;
- return 0;
- }
-
- lword size=transferBytes;
- transferBytes = 0;
-
- if (m_waiting)
- goto output;
-
- while (size && m_stream->good())
- {
- {
- size_t spaceSize = 1024;
- m_space = HelpCreatePutSpace(target, channel, 1, UnsignedMin(size_t(0)-1, size), spaceSize);
-
- m_stream->read((char *)m_space, (unsigned int)STDMIN(size, (lword)spaceSize));
- }
- m_len = m_stream->gcount();
- size_t blockedBytes;
-output:
- blockedBytes = target.ChannelPutModifiable2(channel, m_space, m_len, 0, blocking);
- m_waiting = blockedBytes > 0;
- if (m_waiting)
- return blockedBytes;
- size -= m_len;
- transferBytes += m_len;
- }
-
- if (!m_stream->good() && !m_stream->eof())
- throw ReadErr();
-
- return 0;
-}
-
-size_t FileStore::CopyRangeTo2(BufferedTransformation &target, lword &begin, lword end, const std::string &channel, bool blocking) const
-{
- if (!m_stream)
- return 0;
-
- if (begin == 0 && end == 1)
- {
- int result = m_stream->peek();
- if (result == char_traits<char>::eof())
- return 0;
- else
- {
- size_t blockedBytes = target.ChannelPut(channel, byte(result), blocking);
- begin += 1-blockedBytes;
- return blockedBytes;
- }
- }
-
- // TODO: figure out what happens on cin
- streampos current = m_stream->tellg();
- streampos endPosition = m_stream->seekg(0, ios::end).tellg();
- streampos newPosition = current + (streamoff)begin;
-
- if (newPosition >= endPosition)
- {
- m_stream->seekg(current);
- return 0; // don't try to seek beyond the end of file
- }
- m_stream->seekg(newPosition);
- try
- {
- assert(!m_waiting);
- lword copyMax = end-begin;
- size_t blockedBytes = const_cast<FileStore *>(this)->TransferTo2(target, copyMax, channel, blocking);
- begin += copyMax;
- if (blockedBytes)
- {
- const_cast<FileStore *>(this)->m_waiting = false;
- return blockedBytes;
- }
- }
- catch(...)
- {
- m_stream->clear();
- m_stream->seekg(current);
- throw;
- }
- m_stream->clear();
- m_stream->seekg(current);
-
- return 0;
-}
-
-lword FileStore::Skip(lword skipMax)
-{
- lword oldPos = m_stream->tellg();
- std::istream::off_type offset;
- if (!SafeConvert(skipMax, offset))
- throw InvalidArgument("FileStore: maximum seek offset exceeded");
- m_stream->seekg(offset, ios::cur);
- return (lword)m_stream->tellg() - oldPos;
-}
-
-void FileSink::IsolatedInitialize(const NameValuePairs ¶meters)
-{
- m_file.reset(new std::ofstream);
- const char *fileName;
- if (parameters.GetValue(Name::OutputFileName(), fileName))
- {
- ios::openmode binary = parameters.GetValueWithDefault(Name::OutputBinaryMode(), true) ? ios::binary : ios::openmode(0);
- m_file->open(fileName, ios::out | ios::trunc | binary);
- if (!*m_file)
- throw OpenErr(fileName);
- m_stream = m_file.get();
- }
- else
- {
- m_stream = NULL;
- parameters.GetValue(Name::OutputStreamPointer(), m_stream);
- }
-}
-
-bool FileSink::IsolatedFlush(bool hardFlush, bool blocking)
-{
- if (!m_stream)
- throw Err("FileSink: output stream not opened");
-
- m_stream->flush();
- if (!m_stream->good())
- throw WriteErr();
-
- return false;
-}
-
-size_t FileSink::Put2(const byte *inString, size_t length, int messageEnd, bool blocking)
-{
- if (!m_stream)
- throw Err("FileSink: output stream not opened");
-
- while (length > 0)
- {
- std::streamsize size;
- if (!SafeConvert(length, size))
- size = numeric_limits<std::streamsize>::max();
- m_stream->write((const char *)inString, size);
- inString += size;
- length -= size;
- }
-
- if (messageEnd)
- m_stream->flush();
-
- if (!m_stream->good())
- throw WriteErr();
-
- return 0;
-}
-
-NAMESPACE_END
-
-#endif
|