Onde o / usr / share / zoneinfo é especificado?

3

Estamos adicionando suporte a fuso horário para nosso aplicativo Ubuntu.

A informação de fuso horário na minha máquina está em /usr/share/zoneinfo .

  
  1. Está sempre nesse diretório? Se sim, onde está especificado ?
  2.   
  3. Se não, há alguma chamada do sistema semelhante a "gettimeofday (2)" que eu possa fazer para descobrir onde ela está?
  4.   

Obrigado antecipadamente.

    
por Donald MacQueen 01.04.2012 / 23:43

1 resposta

3

O local de pesquisa para os fusos horários é codificado na biblioteca C (onde as várias funções de reconhecimento de fuso horário são encontradas):

$ strings -a /lib/x86_64-linux-gnu/libc.so.6 | grep zoneinfo
/usr/share/zoneinfo

O código da biblioteca C faz uso desse diretório como um pré-processador #define , portanto, não há rotina para perguntar com que valor ele foi compilado.

Se você precisar analisar os dados do fuso horário por conta própria (ao invés de usar as poucas rotinas da biblioteca C disponíveis), o código /usr/share/zoneinfo deve estar bem: se suas plataformas de destino seguirem o Hierarquia do sistema de arquivos Linux , você deve estar seguro.

Se você estiver interessado apenas no fuso horário local, leia /etc/localtime , que será uma cópia do arquivo relevante de /usr/share/zoneinfo .

    
por James Henstridge 02.04.2012 / 02:04