Klaus Demo nginx / ff8da91
nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright Igor Sysoev 16 years ago
250 changed file(s) with 407 addition(s) and 274 deletion(s). Raw diff Collapse all Expand all
0
1 # Copyright (C) Igor Sysoev
2
03
14 CFLAGS="$CFLAGS $CC_OPT"
25
2427 # optimize for Pentium 4, gcc 3.x
2528 CPU_OPT="-march=pentium4"
2629 ;;
30
31 sparc64)
32 # build 64-bit binary, sparcv9 only
33 CPU_OPT="-m64"
34 ;;
35
2736 esac
2837
2938 # STUB for batch builds
00 #!/bin/sh
1
2 # Copyright (C) Igor Sysoev
3
14
25 . auto/options
36 . auto/init
4245 have=NGX_SBIN_PATH value="\"$SBIN_PATH\"" . auto/define
4346 have=NGX_CONF_PATH value="\"$CONF_PATH\"" . auto/define
4447 have=NGX_PID_PATH value="\"$PID_PATH\"" . auto/define
45 have=NGX_ERROR_LOG_PATH value="\"$ERROR_LOG_PATH\"" . auto/define
48 if [ ".$NGX_ERROR_LOG_PATH" != "." ]; then
49 have=NGX_ERROR_LOG_PATH value="\"$ERROR_LOG_PATH\"" . auto/define
50 fi
4651 have=NGX_HTTP_LOG_PATH value="\"$HTTP_LOG_PATH\"" . auto/define
4752
4853 . auto/summary
0
1 # Copyright (C) Igor Sysoev
2
03
14 cat << END >> $NGX_AUTO_CONFIG_H
25
0
1 # Copyright (C) Igor Sysoev
2
03
14 echo $ngx_n "checking for system endianess ..." $ngx_c
25 echo >> $NGX_ERR
0
1 # Copyright (C) Igor Sysoev
2
03
14 echo $ngx_n "checking for $ngx_feature ..." $ngx_c
25 echo >> $NGX_ERR
0
1 # Copyright (C) Igor Sysoev
2
03
14 echo $ngx_n "checking for $ngx_type printf() format ..." $ngx_c
25 echo >> $NGX_ERR
0
1 # Copyright (C) Igor Sysoev
2
03
14 echo $ngx_n "checking for $ngx_type printf() format ..." $ngx_c
25 echo >> $NGX_ERR
0
1 # Copyright (C) Igor Sysoev
2
03
14 cat << END | sed -e 's/d"$/x"/' >> $NGX_AUTO_CONFIG_H
25
0
1 # Copyright (C) Igor Sysoev
2
03
14 echo $ngx_n "checking for $ngx_func ..." $ngx_c
25 echo >> $NGX_ERR
0
1 # Copyright (C) Igor Sysoev
2
03
14 cat << END >> $NGX_AUTO_CONFIG_H
25
0
1 # Copyright (C) Igor Sysoev
2
03
14 ngx_inc="unistd.h"; . auto/inc
25 ngx_inc="inttypes.h"; . auto/inc
0
1 # Copyright (C) Igor Sysoev
2
03
14 echo $ngx_n "checking for $ngx_inc ..." $ngx_c
25 echo >> $NGX_ERR
0
1 # Copyright (C) Igor Sysoev
2
03
14 MAKEFILE=$OBJS/Makefile
25
0
1 # Copyright (C) Igor Sysoev
2
03
14 cat << END >> $MAKEFILE
25 install:
1720 cp conf/nginx.conf `dirname $CONF_PATH`/nginx.conf.default
1821
1922 test -d `dirname $PID_PATH` || mkdir -p `dirname $PID_PATH`
20 test -d `dirname $ERROR_LOG_PATH` || mkdir -p `dirname $ERROR_LOG_PATH`
23
2124 test -d `dirname $HTTP_LOG_PATH` || mkdir -p `dirname $HTTP_LOG_PATH`
2225
2326 test -d $PREFIX/html || cp -r html $PREFIX
2427
2528 #test -d $PREFIX/temp || mkdir -p $PREFIX/temp
2629 END
30
31
32 if [ ".$ERROR_LOG_PATH" != "." ]; then
33 cat << END >> $MAKEFILE
34
35 test -d `dirname $ERROR_LOG_PATH` || mkdir -p `dirname $ERROR_LOG_PATH`
36 END
37
38 fi
2739
2840
2941 if test ! -f Makefile; then
0
1 # Copyright (C) Igor Sysoev
2
03
14 if [ $USE_PCRE = YES ]; then
25 . auto/lib/pcre/conf
0
1 # Copyright (C) Igor Sysoev
2
03
14 if [ $PCRE != NONE -a $PCRE != NO -a $PCRE != YES ]; then
25 . auto/lib/pcre/make
0
1 # Copyright (C) Igor Sysoev
2
03
14 if [ $MD5 != NONE ]; then
25
0
1 # Copyright (C) Igor Sysoev
2
03
14 case "$CC" in
25
0
1 # Copyright (C) Igor Sysoev
2
03
14 CFLAGS = -q -O2 -tWM $(CPU_OPT) -DL_ENDIAN
25
0
1 # Copyright (C) Igor Sysoev
2
03
14 CFLAGS = -nologo -MT -O2 -Ob1 -Oi -Gs $(LIBC) $(CPU_OPT) -D L_ENDIAN
25
0
1 # Copyright (C) Igor Sysoev
2
03
14 CFLAGS = -zq -bt=nt -bm -ot -op -oi -oe -s $(CPU_OPT)
25
0
1 # Copyright (C) Igor Sysoev
2
03
14 if [ $OPENSSL != NONE ]; then
25 CORE_INCS="$CORE_INCS $OPENSSL/include"
0
1 # Copyright (C) Igor Sysoev
2
03
14 case $PLATFORM in
25 *)
0
1 # Copyright (C) Igor Sysoev
2
03
14 if [ $PCRE != NONE ]; then
25 CORE_INCS="$CORE_INCS $PCRE"
0
1 # Copyright (C) Igor Sysoev
2
03
14 case "$CC" in
25
0
1 # Copyright (C) Igor Sysoev
2
03
14 CFLAGS = -q -O2 -tWM $(CPU_OPT)
25 PCREFLAGS = -DPCRE_STATIC -DPOSIX_MALLOC_THRESHOLD=10
0
1 # Copyright (C) Igor Sysoev
2
03
14 CFLAGS = -O2 -Ob1 -Oi -Gs $(LIBC) $(CPU_OPT)
25 PCREFLAGS = -DPCRE_STATIC -DPOSIX_MALLOC_THRESHOLD=10
0
1 # Copyright (C) Igor Sysoev
2
03
14 CFLAGS = -c -zq -bt=nt -ot -op -oi -oe -s -bm $(CPU_OPT)
25 PCREFLAGS = -DPCRE_STATIC -DPOSIX_MALLOC_THRESHOLD=10
0
1 # Copyright (C) Igor Sysoev
2
03
14 echo $ngx_n "checking for $ngx_lib ..." $ngx_c
25 echo >> $NGX_ERR
0
1 # Copyright (C) Igor Sysoev
2
03
14 if [ $ZLIB != NONE ]; then
25 CORE_INCS="$CORE_INCS $ZLIB"
0
1 # Copyright (C) Igor Sysoev
2
03
14 case "$CC" in
25
0
1 # Copyright (C) Igor Sysoev
2
03
14 CFLAGS = -q -O2 -tWM $(CPU_OPT)
25
0
1 # Copyright (C) Igor Sysoev
2
03
14 CFLAGS = -nologo -O2 -Ob1 -Oi -Gs $(LIBC) $(CPU_OPT)
25
0
1 # Copyright (C) Igor Sysoev
2
03
14 CFLAGS = -zq -bt=nt -ot -op -oi -oe -s -bm $(CPU_OPT)
25
0
1 # Copyright (C) Igor Sysoev
2
03
14 mkdir -p $OBJS/src/core $OBJS/src/event $OBJS/src/event/modules \
25 $OBJS/src/os/unix $OBJS/src/os/win32 \
0
1 # Copyright (C) Igor Sysoev
2
03
14 if [ $EVENT_SELECT = NO -a $EVENT_FOUND = NO ]; then
25 EVENT_SELECT=YES
0
1 # Copyright (C) Igor Sysoev
2
03
14 cat << END >> $NGX_AUTO_CONFIG_H
25
0
1 # Copyright (C) Igor Sysoev
02
13 help=no
24
233235 ERROR_LOG_PATH=$PREFIX/logs/error.log
234236 ;;
235237
238 .stderr)
239 ERROR_LOG_PATH=
240 ;;
241
236242 *)
237243 ERROR_LOG_PATH=$PREFIX/$ERROR_LOG_PATH
238244 ;;
0
1 # Copyright (C) Igor Sysoev
2
03
14 if [ ".$PLATFORM" = "." ]; then
25 echo "checking for OS"
0
1 # Copyright (C) Igor Sysoev
2
03
14 CORE_INCS="$UNIX_INCS"
25 CORE_DEPS="$UNIX_DEPS $FREEBSD_DEPS"
6164
6265 echo " + using rfork()"
6366
64 # kqueue's EVFILT_SIGNAL is safe
65
66 if [ $version -gt 460101 ]; then
67 echo " + kqueue's EVFILT_SIGNAL is safe"
68 have=HAVE_SAFE_EVFILT_SIGNAL . auto/have
69 else
70 echo "$0: error: the kqueue's EVFILT_SIGNAL is unsafe on this"
71 echo "FreeBSD version, so --with-threads=rfork could not be used"
72 echo
73
74 exit 1
75 fi
67 # # kqueue's EVFILT_SIGNAL is safe
68 #
69 # if [ $version -gt 460101 ]; then
70 # echo " + kqueue's EVFILT_SIGNAL is safe"
71 # have=HAVE_SAFE_EVFILT_SIGNAL . auto/have
72 # else
73 # echo "$0: error: the kqueue's EVFILT_SIGNAL is unsafe on this"
74 # echo "FreeBSD version, so --with-threads=rfork could not be used"
75 # echo
76 #
77 # exit 1
78 # fi
7679 fi
7780
7881
0
1 # Copyright (C) Igor Sysoev
2
03
14 CORE_INCS="$UNIX_INCS"
25 CORE_DEPS="$UNIX_DEPS $LINUX_DEPS"
1417 | sed -e 's/^.* \(.*\)$/\1/'`
1518
1619
17 # enable rt signals on Linux 2.2.19 and onward
20 # enable the rt signals on Linux 2.2.19 and onward
1821
1922 if [ $version -ge 131609 -o $EVENT_RTSIG = YES ]; then
2023 echo " + using rt signals"
0
1 # Copyright (C) Igor Sysoev
2
03
14 CORE_INCS="$UNIX_INCS"
25 CORE_DEPS="$UNIX_DEPS $SOLARIS_DEPS"
0
1 # Copyright (C) Igor Sysoev
2
03
14 CORE_MODULES="ngx_core_module ngx_errlog_module ngx_conf_module"
25
0
1 # Copyright (C) Igor Sysoev
2
03
14 echo
25 echo "Configuration summary"
6871 echo " nginx binary file: $SBIN_PATH"
6972 echo " nginx configuration file: $CONF_PATH"
7073 echo " nginx pid file: $PID_PATH"
71 echo " nginx error log file: $ERROR_LOG_PATH"
74 if [ ".$ERROR_LOG_PATH" != "." ]; then
75 echo " nginx error log file: $ERROR_LOG_PATH"
76 else
77 echo " nginx logs errors to stderr"
78 fi
7279 echo " nginx http access log file: $HTTP_LOG_PATH"
7380 echo
0
1 # Copyright (C) Igor Sysoev
2
03
14 case $USE_THREADS in
25 rfork)
0
1 # Copyright (C) Igor Sysoev
2
03
14 echo $ngx_n "checking for $ngx_type size ..." $ngx_c
25 echo >> $NGX_ERR
0
1 # Copyright (C) Igor Sysoev
2
03
14 echo $ngx_n "checking for $ngx_type ..." $ngx_c
25 echo >> $NGX_ERR
0
1 # Copyright (C) Igor Sysoev
2
03
14 echo $ngx_n "checking for uintptr_t ... " $ngx_c
25 echo >> $NGX_ERR
0
1 # Copyright (C) Igor Sysoev
2
03
14 cat << END >> $NGX_AUTO_CONFIG_H
25
0
1 # Copyright (C) Igor Sysoev
2
03
14 CC_WARN=$CC
25 ngx_fmt_collect=yes
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
9494
9595 ngx_uint_t ngx_max_module;
9696
97 ngx_uint_t ngx_use_stderr;
98
9997
10098 int main(int argc, char *const *argv)
10199 {
119117
120118 ngx_pid = ngx_getpid();
121119
122 log = ngx_log_init_errlog();
120 if (!(log = ngx_log_init_errlog())) {
121 return 1;
122 }
123123
124124 #if (NGX_OPENSSL)
125125 ngx_ssl_init(log);
141141
142142 if (ngx_getopt(&ctx, &init_cycle) == NGX_ERROR) {
143143 return 1;
144 }
145
146 if (ngx_use_stderr) {
147 log = ngx_log_init_errlog();
148144 }
149145
150146 if (ngx_os_init(log) == NGX_ERROR) {
323319
324320 case 't':
325321 ngx_test_config = 1;
326 break;
327
328 case 's':
329 ngx_use_stderr = 1;
330322 break;
331323
332324 case 'c':
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
2828 static ngx_connection_t dumb;
2929 /* STUB */
3030
31 #ifdef NGX_ERROR_LOG_PATH
3132 static ngx_str_t error_log = ngx_string(NGX_ERROR_LOG_PATH);
33 #else
34 static ngx_str_t error_log = ngx_null_string;
35 #endif
3236
3337
3438 ngx_cycle_t *ngx_init_cycle(ngx_cycle_t *old_cycle)
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
111111 if (err) {
112112
113113 if (len > max - 50) {
114
114115 /* leave a space for an error code */
116
115117 len = max - 50;
116118 errstr[len++] = '.';
117119 errstr[len++] = '.';
221223 #endif
222224
223225
224 #if 0
225
226 void ngx_log_stderr(ngx_event_t *ev)
227 {
228 char errstr[MAX_ERROR_STR];
229 ssize_t n;
230 ngx_err_t err;
231
232 for ( ;; ) {
233 n = read((ngx_fd_t) ev->data, errstr, sizeof(errstr - 1));
234
235 if (n == -1) {
236 err = ngx_errno;
237 if (err == NGX_EAGAIN) {
238 return;
239 }
240
241 ngx_log_error(NGX_LOG_ALERT, &ngx_log, err, "read() failed");
242 return;
243 }
244
245 if (n == 0) {
246 ngx_log_error(NGX_LOG_ALERT, &ngx_log, 0, "stderr clolsed");
247 return;
248 }
249
250 errstr[n] = '\0';
251 ngx_log_error(NGX_LOG_STDERR, &ngx_log, 0, "%s", errstr);
252 }
253 }
254
255 #endif
256
257
258226
259227 ngx_log_t *ngx_log_init_errlog()
260228 {
286254 ngx_log.file = &ngx_stderr;
287255 ngx_log.log_level = NGX_LOG_ERR;
288256
289 #if 0
257 #ifdef NGX_ERROR_LOG_PATH
258
290259 fd = ngx_open_file(NGX_ERROR_LOG_PATH, NGX_FILE_RDWR,
291260 NGX_FILE_CREATE_OR_OPEN|NGX_FILE_APPEND);
292261
314283 }
315284
316285 #endif
286
317287 #endif
318288
319289 return &ngx_log;
404374
405375 value = cf->args->elts;
406376
407 if (value[1].len == 6 && ngx_strcmp(value[1].data, "stderr") == 0) {
408 cf->cycle->new_log->file->fd = ngx_stderr.fd;
409 cf->cycle->new_log->file->name.len = 0;
410 cf->cycle->new_log->file->name.data = NULL;
411
412 } else {
413 cf->cycle->new_log->file->name = value[1];
414
415 if (ngx_conf_full_name(cf->cycle, &cf->cycle->new_log->file->name)
377 cf->cycle->new_log->file->name = value[1];
378
379 if (ngx_conf_full_name(cf->cycle, &cf->cycle->new_log->file->name)
416380 == NGX_ERROR)
417 {
418 return NGX_CONF_ERROR;
419 }
381 {
382 return NGX_CONF_ERROR;
420383 }
421384
422385 return ngx_set_error_log_levels(cf, cf->cycle->new_log);
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55
00
11 /*
2 * Copyright (C) 2002-2004 Igor Sysoev
2 * Copyright (C) Igor Sysoev
33 */
44
55