#include <fstream>
-#if 0
-#ifdef HAVE_SSTREAM
-#include <sstream>
-using std::ostringstream;
-#else
-#include <strstream>
-#endif
-#else
#include "Lsstream.h"
-#endif
#include "support/lyxlib.h"
using std::ifstream;
using std::ios;
+namespace {
+
// DO _NOT_ CHANGE _ANYTHING_ IN THIS TABLE
-static
unsigned long const crctab[256] =
{
0x0,
Return crc if successful, 0 if an error occurs. */
template<typename InputIterator>
-static inline
+inline
unsigned long do_crc(InputIterator first, InputIterator last)
{
unsigned long crc = 0;
return ~crc & 0xFFFFFFFF;
}
+} // namespace
+
// And this would be the file interface.
-unsigned long lyx::sum(char const * file)
+unsigned long lyx::sum(string const & file)
{
- ifstream ifs(file);
+ ifstream ifs(file.c_str());
if (!ifs) return 0;
ifs.unsetf(ios::skipws);
-//#ifdef HAVE_SSTREAM
ostringstream ostr;
ostr << ifs.rdbuf();
// The .c_str() is here in case we use our lyxstring class
// instead of standard string.
string w = ostr.str().c_str();
return do_crc(w.begin(), w.end());
-//#else
-// ostrstream ostr;
-// ostr << ifs.rdbuf();
-// ostr << '\0';
-// char * tmp = ostr.str();
-// if (!tmp) return 0; // empty file
-// string w(tmp, ostr.tellp());
-// unsigned long crc = do_crc(w.begin(), w.end());
-// delete tmp;
-// return crc;
-//#endif
}
+