comparison src/os/unix/ngx_time.c @ 410:a094317ba307 NGINX_0_7_14

nginx 0.7.14 *) Change: now the ssl_certificate and ssl_certificate_key directives have not default values. *) Feature: the "listen" directive supports the "ssl" parameter. *) Feature: now nginx takes into account a time zone change while reconfiguration on FreeBSD and Linux. *) Bugfix: the "listen" directive parameters such as "backlog", "rcvbuf", etc. were not set, if a default server was not the first one. *) Bugfix: if URI part captured by a "rewrite" directive was used as a query string, then the query string was not escaped. *) Bugfix: configuration file validity test improvements.
author Igor Sysoev <http://sysoev.ru>
date Mon, 01 Sep 2008 00:00:00 +0400
parents 408f195b3482
children
comparison
equal deleted inserted replaced
409:d46814b99ca0 410:a094317ba307
4 */ 4 */
5 5
6 6
7 #include <ngx_config.h> 7 #include <ngx_config.h>
8 #include <ngx_core.h> 8 #include <ngx_core.h>
9
10
11 /*
12 * FreeBSD does not test /etc/localtime change, however, we can workaround it
13 * by calling tzset() with TZ and then without TZ to update timezone.
14 * The trick should work since FreeBSD 2.1.0.
15 *
16 * Linux does not test /etc/localtime change in localtime(),
17 * but may stat("/etc/localtime") several times in every strftime(),
18 * therefore we use it to update timezone.
19 *
20 * Solaris does not test /etc/TIMEZONE change too and no workaround available.
21 */
22
23 void
24 ngx_timezone_update(void)
25 {
26 #if (NGX_FREEBSD)
27
28 if (getenv("TZ")) {
29 return;
30 }
31
32 putenv("TZ=UTC");
33
34 tzset();
35
36 unsetenv("TZ");
37
38 tzset();
39
40 #elif (NGX_LINUX)
41 time_t s;
42 struct tm *t;
43 char buf[4];
44
45 s = time(0);
46
47 t = localtime(&s);
48
49 strftime(buf, 4, "%H", t);
50
51 #endif
52 }
9 53
10 54
11 void 55 void
12 ngx_localtime(time_t s, ngx_tm_t *tm) 56 ngx_localtime(time_t s, ngx_tm_t *tm)
13 { 57 {