Библиотека / код для динамической перезагрузки базы данных /usr/share/zoneinfo?

Поскольку система /usr/share/zoneinfo база данных обновляется довольно часто, я хотел бы иметь возможность загружать ее (и перезагружать) динамически в очень долго работающей программе C++.

Теперь я знаю, что стандартная библиотека будет использовать эту базу данных, но я сомневаюсь, что она предлагает ее динамическую перезагрузку (или, по крайней мере, я ничего не смог найти в Google).

Есть ли какая-либо библиотека или код C или C++, которые я могу использовать для этого?

2 ответа

Решение

Я идиот. IANA, которая предоставляет базу данных zoneinfo, также предоставляет библиотеку для работы с ней. Как ни странно, я обнаружил это, прочитав исходный код postgresql.

Я не уверен, что этого достаточно, но это общественное достояние, поэтому, по крайней мере, я могу вставить его в свой код и согнуть под свои нужды.

localtime и др. используйте информацию о преобразовании часового пояса, установленную tzset Таким образом, вы обычно сможете перезагрузить эту информацию, установив TZ к некоторому значению, звоня tzset, установив его обратно и позвонив снова. Это будет работать с glibc, но вы должны проверить на других платформах.

В противном случае вы используете какой-то другой не-Posix API для доступа к базе данных zoneinfo, и вам следует взглянуть на средства, которыми обладает библиотека для перезагрузки своих данных.

Другие вопросы по тегам