Conversión de zona horaria C API en Linux, ¿alguien?

Estoy buscando algo que presumí que sería muy simple, dada la hora local de Unix en una zona horaria específica (especificada como una cadena, por ejemplo, "America / New_York" - nota que esno mi hora local), obtenga el valor de tiempo correspondiente en GMT. Es decir, algo en la línea de

time_t get_gmt_time(time_t local_time,
                    const char* time_zone);

Tan engañosamente simple como suena, lo más cercano que pude encontrar fue el siguiente fragmento de código de la página de manual de timegm:

       #include <time.h>
       #include <stdlib.h>

       time_t
       my_timegm(struct tm *tm)
       {
           time_t ret;
           char *tz;

           tz = getenv("TZ");
           setenv("TZ", "", 1);
           tzset();
           ret = mktime(tm);
           if (tz)
               setenv("TZ", tz, 1);
           else
               unsetenv("TZ");
           tzset();
           return ret;
       } 

Tiene que haber una mejor manera que esta abominación beligerante, sin hilos, ¿verdad? ¿¿Derecha??

Respuestas a la pregunta(6)

Su respuesta a la pregunta