|  |  | 
|  | /* | 
|  | * 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(); | 
|  | 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(); | 
|  | 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(); | 
|  | gmtime_r(&now, tm); | 
|  |  | 
|  | #else | 
|  | time_t      now; | 
|  | struct tm  *t; | 
|  |  | 
|  | now = ngx_time(); | 
|  | t = gmtime(&now); | 
|  | *tm = *t; | 
|  |  | 
|  | #endif | 
|  | } |