}
}
+bool cStructLoader::CheckUnmodified(void)
+{
+ time_t curr_mtime=MTime();
+ if(mtime && mtime<curr_mtime && SL_TSTFLAG(SL_WATCH)) {
+ PRINTF(L_CORE_LOAD,"abort save as file %s has been changed externaly",path);
+ return false;
+ }
+ return true;
+}
+
void cStructLoader::Load(bool reload)
{
if(SL_TSTFLAG(SL_DISABLED) || (reload && !SL_TSTFLAG(SL_WATCH))) return;
void cStructLoader::Save(void)
{
- if(!SL_TSTFLAG(SL_DISABLED) && SL_TSTFLAG(SL_READWRITE) && SL_TSTFLAG(SL_LOADED) && IsModified()) {
+ if(!SL_TSTFLAG(SL_DISABLED) && SL_TSTFLAG(SL_READWRITE) && SL_TSTFLAG(SL_LOADED)
+ && IsModified() && CheckUnmodified()) {
cSafeFile f(path);
if(f.Open()) {
ListLock(false);
void cStructLoaderPlain::Save(void)
{
- if(!SL_TSTFLAG(SL_DISABLED) && SL_TSTFLAG(SL_READWRITE) && SL_TSTFLAG(SL_LOADED) && IsModified()) {
+ if(!SL_TSTFLAG(SL_DISABLED) && SL_TSTFLAG(SL_READWRITE) && SL_TSTFLAG(SL_LOADED)
+ && IsModified() && CheckUnmodified()) {
cSafeFile f(path);
if(f.Open()) {
ListLock(false);