
/*
 * Copyright (C) Igor Sysoev
 */


#include <ngx_config.h>
#include <ngx_core.h>


void ngx_localtime(ngx_tm_t *tm)
{
#if (NGX_HAVE_LOCALTIME_R)
    time_t     now;

    now = ngx_time();
    (void) localtime_r(&now, tm);

#else
    time_t     now;
    ngx_tm_t  *t;

    now = ngx_time();
    t = localtime(&now);
    *tm = *t;

#endif

    tm->ngx_tm_mon++;
    tm->ngx_tm_year += 1900;
}


void ngx_libc_localtime(struct tm *tm)
{
#if (NGX_HAVE_LOCALTIME_R)
    time_t      now;

    now = ngx_time();
    (void) localtime_r(&now, tm);

#else
    time_t      now;
    struct tm  *t;

    now = ngx_time();
    t = localtime(&now);
    *tm = *t;

#endif
}


void ngx_libc_gmtime(struct tm *tm)
{
#if (NGX_HAVE_LOCALTIME_R)
    time_t      now;

    now = ngx_time();
    (void) gmtime_r(&now, tm);

#else
    time_t      now;
    struct tm  *t;

    now = ngx_time();
    t = gmtime(&now);
    *tm = *t;

#endif
}
