|  | 
 | /* | 
 |  * 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 | 
 | } |