Программист исправил ошибку в генерации конфигов из предыдущей задачи.
Кроме того, он улучшил бекап старых конфигов:
теперь предыдущие версии будут попадать последовательно
в файлы app.conf.bak.1
, app.conf.bak.2
и т.п.
Удобно? Да, но есть одна особенность…
Новый конфиг генерится, предложение забекапить старый конфиг появляется и обрабатывается.
Вот только старых версий хранится слишком малое количество.
Прямо скажем: ровно одна старая версия сохраняется в app.conf.bak.1
,
при следующих запусках перезаписывается этот же файл,
а app.conf.bak.2
никогда не появляется.
Проблема классическая, C-подобная, и
происходит из-за постфиксного инкремента ($i++
) вот в этом цикле:
Сначала проверяется существование файла с номером из текущего значения $i
,
потом $i
увеличивается на единицу, и с таким номером
записывается файл в строке
Первый бекап происходит так: проверяем наличие файла с номером 0, его нет, записываем файл с номером 1. То же самое происходит и при создании всех следующих резервных копий.
Чтобы исправить ошибку, стоило бы использовать префиксный инкремент:
Или же не пожалеть лишней строчки кода и написать совсем явно: