поясняю а) Наборы данных не равноценны, самый резервный это 2
б) Засада: значение ошибки кодируется по разному RestoreSetupUntil : нет ошибки = 0, а RestoreAllSetup ошибка = 0 (Я обычно добавляю признак полярности в имя функции, но тут не удосужился)
char RestoreSetupUntilSuccessful(void)
{ if (RestoreAllSetup(0)) // прочитали основной набор без ошибок ?
return 0; // да, отдаем сбоев нет
if (RestoreAllSetup(1)) // читаем резерв 1, без ошибок?
{ StoreAllSetup(0); // да, восстанавливаем основной набор данных из считанного резерв 1
return 1; // отдаем количество сбоев
}
if (RestoreAllSetup(2)) // читаем резерв два, без ошибок?
{ StoreAllSetup(1); // да, восстанавливаем
StoreAllSetup(0); // и еще раз
return 2; // возвращаем двойной сбой
}
return 3; // ховайся в жыто
}