change the way we get CRC for a list of files since folder scans don't sort the same on different platforms
This commit is contained in:
parent
50341e9db6
commit
ff32f34bfe
52
source/shared_lib/include/util/checksum.h
Normal file
52
source/shared_lib/include/util/checksum.h
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
// ==============================================================
|
||||||
|
// This file is part of Glest Shared Library (www.glest.org)
|
||||||
|
//
|
||||||
|
// Copyright (C) 2001-2008 Martiño Figueroa
|
||||||
|
//
|
||||||
|
// You can redistribute this code and/or modify it under
|
||||||
|
// the terms of the GNU General Public License as published
|
||||||
|
// by the Free Software Foundation; either version 2 of the
|
||||||
|
// License, or (at your option) any later version
|
||||||
|
// ==============================================================
|
||||||
|
|
||||||
|
#ifndef _SHARED_UTIL_CHECKSUM_H_
|
||||||
|
#define _SHARED_UTIL_CHECKSUM_H_
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <map>
|
||||||
|
|
||||||
|
#include "types.h"
|
||||||
|
|
||||||
|
using std::string;
|
||||||
|
using Shared::Platform::int32;
|
||||||
|
using Shared::Platform::int8;
|
||||||
|
|
||||||
|
namespace Shared{ namespace Util{
|
||||||
|
|
||||||
|
// =====================================================
|
||||||
|
// class Checksum
|
||||||
|
// =====================================================
|
||||||
|
|
||||||
|
class Checksum{
|
||||||
|
private:
|
||||||
|
int32 sum;
|
||||||
|
int32 r;
|
||||||
|
int32 c1;
|
||||||
|
int32 c2;
|
||||||
|
std::map<string,int32> fileList;
|
||||||
|
|
||||||
|
void addFileToSum(const string &path);
|
||||||
|
|
||||||
|
public:
|
||||||
|
Checksum();
|
||||||
|
|
||||||
|
int32 getSum();
|
||||||
|
|
||||||
|
void addByte(int8 value);
|
||||||
|
void addString(const string &value);
|
||||||
|
void addFile(const string &path);
|
||||||
|
};
|
||||||
|
|
||||||
|
}}//end namespace
|
||||||
|
|
||||||
|
#endif
|
|
@ -252,7 +252,10 @@ void findAll(const string &path, vector<string> &results, bool cutExtension, boo
|
||||||
bool isdir(const char *path)
|
bool isdir(const char *path)
|
||||||
{
|
{
|
||||||
struct stat stats;
|
struct stat stats;
|
||||||
bool ret = stat (path, &stats) == 0 && S_ISDIR (stats.st_mode);
|
|
||||||
|
bool ret = stat (path, &stats) == 0 && S_ISDIR(stats.st_mode);
|
||||||
|
if(ret == false) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] NOT a path [%s]\n",__FILE__,__FUNCTION__,__LINE__,path);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -46,6 +46,10 @@ void Checksum::addString(const string &value){
|
||||||
}
|
}
|
||||||
|
|
||||||
void Checksum::addFile(const string &path){
|
void Checksum::addFile(const string &path){
|
||||||
|
fileList[path] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Checksum::addFileToSum(const string &path){
|
||||||
|
|
||||||
FILE* file= fopen(path.c_str(), "rb");
|
FILE* file= fopen(path.c_str(), "rb");
|
||||||
|
|
||||||
|
@ -67,4 +71,15 @@ void Checksum::addFile(const string &path){
|
||||||
fclose(file);
|
fclose(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32 Checksum::getSum() {
|
||||||
|
if(fileList.size() > 0) {
|
||||||
|
for(std::map<string,int32>::iterator iterMap = fileList.begin();
|
||||||
|
iterMap != fileList.end(); iterMap++)
|
||||||
|
{
|
||||||
|
addFileToSum(iterMap->first);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
|
||||||
}}//end namespace
|
}}//end namespace
|
||||||
|
|
Loading…
Reference in New Issue
Block a user