# HG changeset patch # User Igor Sysoev # Date 1096902246 0 # Node ID 551102312e19b704cd22bd7254a9444b9ea14e96 # Parent 3b1e8c9df9ad495babf3ead83d9ddffb71812408 nginx-0.1.0-RELEASE import *) The first public version. diff --git a/conf/koi-win b/conf/koi-win new file mode 100644 --- /dev/null +++ b/conf/koi-win @@ -0,0 +1,85 @@ + +charset_map koi8-r windows-1251 { + + 95 95 ; # bullet + + 9A A0 ; #   + + 9C B0 ; # ° + + 9E B7 ; # · + + A3 B8 ; # small yo + + B3 A8 ; # capital YO + + BF A9 ; # (C) + + C0 FE ; # small yu + C1 E0 ; # small a + C2 E1 ; # small b + C3 F6 ; # small ts + C4 E4 ; # small d + C5 E5 ; # small ye + C6 F4 ; # small f + C7 E3 ; # small g + C8 F5 ; # small kh + C9 E8 ; # small i + CA E9 ; # small j + CB EA ; # small k + CC EB ; # small l + CD EC ; # small m + CE ED ; # small n + CF EE ; # small o + + D0 EF ; # small p + D1 FF ; # small ya + D2 F0 ; # small r + D3 F1 ; # small s + D4 F2 ; # small t + D5 F3 ; # small u + D6 E6 ; # small zh + D7 E2 ; # small v + D8 FC ; # small soft sign + D9 FB ; # small y + DA E7 ; # small z + DB F8 ; # small sh + DC FD ; # small e + DD F9 ; # small shch + DE F7 ; # small ch + DF FA ; # small hard sign + + E0 DE ; # capital YU + E1 C0 ; # capital A + E2 C1 ; # capital B + E3 D6 ; # capital TS + E4 C4 ; # capital D + E5 C5 ; # capital YE + E6 D4 ; # capital F + E7 C3 ; # capital G + E8 D5 ; # capital KH + E9 C8 ; # capital I + EA C9 ; # capital J + EB CA ; # capital K + EC CB ; # capital L + ED CC ; # capital M + EE CD ; # capital N + EF CE ; # capital O + + F0 CF ; # capital P + F1 DF ; # capital YA + F2 D0 ; # capital R + F3 D1 ; # capital S + F4 D2 ; # capital T + F5 D3 ; # capital U + F6 C6 ; # capital ZH + F7 C2 ; # capital V + F8 DC ; # capital soft sign + F9 DB ; # capital Y + FA C7 ; # capital Z + FB D8 ; # capital SH + FC DD ; # capital E + FD D9 ; # capital SHCH + FE D7 ; # capital CH + FF DA ; # capital hard sign +} diff --git a/conf/mime.types b/conf/mime.types new file mode 100644 --- /dev/null +++ b/conf/mime.types @@ -0,0 +1,24 @@ + +types { + text/html html htm shtml; + text/xml xml rss; + text/css css; + text/plain txt; + + image/gif gif; + image/png png; + image/jpeg jpeg jpg; + image/x-icon ico; + + application/pdf pdf; + application/x-shockwave-flash swf; + application/x-javascript js; + + audio/mpeg mp3; + audio/x-realaudio ra; + + video/mpeg mpeg mpg; + video/quicktime mov; + video/x-msvideo avi; + video/x-ms-wmv wmv; +} diff --git a/conf/nginx.conf b/conf/nginx.conf new file mode 100644 --- /dev/null +++ b/conf/nginx.conf @@ -0,0 +1,37 @@ + +user nobody; +worker_processes 3; + +#error_log logs/error.log; +#pid logs/nginx.pid; + + +events { + connections 1024; +} + + +http { + include conf/mime.types; + default_type application/octet-stream; + + sendfile on; + + #gzip on; + + server { + listen 80; + + charset on; + source_charset koi8-r; + + #access_log logs/access.log; + + location / { + root html; + index index.html index.htm; + } + + } + +} diff --git a/docs/dtd/change_log_conf.dtd b/docs/dtd/change_log_conf.dtd new file mode 100644 --- /dev/null +++ b/docs/dtd/change_log_conf.dtd @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + diff --git a/docs/dtd/changes.dtd b/docs/dtd/changes.dtd new file mode 100644 --- /dev/null +++ b/docs/dtd/changes.dtd @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/index.html b/docs/html/index.html new file mode 100644 --- /dev/null +++ b/docs/html/index.html @@ -0,0 +1,8 @@ + + +Welcome to nginx! + + +

Welcome to nginx!

+ + diff --git a/docs/text/LICENSE b/docs/text/LICENSE new file mode 100644 --- /dev/null +++ b/docs/text/LICENSE @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2002-2004 Igor Sysoev + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ diff --git a/docs/text/README b/docs/text/README new file mode 100644 --- /dev/null +++ b/docs/text/README @@ -0,0 +1,3 @@ + +Documentation is available at http://sysoev.ru/nginx/ only. + diff --git a/docs/xml/change_log_conf.xml b/docs/xml/change_log_conf.xml new file mode 100644 --- /dev/null +++ b/docs/xml/change_log_conf.xml @@ -0,0 +1,45 @@ + + + + + +78 + + *) + + + + Изменения в + 66 + + Исправление + Добавление + Изменение + Изменение + + + + Changes with + 65 + + Bugfix + Feature + Change + Workaround + + Jan + Feb + Mar + Apr + May + Jun + Jul + Aug + Sep + Oct + Nov + Dec + + + + diff --git a/docs/xml/nginx/changes.xml b/docs/xml/nginx/changes.xml new file mode 100644 --- /dev/null +++ b/docs/xml/nginx/changes.xml @@ -0,0 +1,979 @@ + + + + + + + + + + + +mod_accel не определял и не патчил EAPI, если собирался вместе +с mod_ssl-2.8.13-1.3.27+. + + +mod_accel did not detect and patch broken EAPI when built with +mod_ssl-2.8.13-1.3.27+. + + + + + +при проксировании с помощью модуля mod_rewrite mod_accel +поддерживает переписывание заголовков "Location" и "Refresh" с помощью +этого же модуля и +для этого +указывает имя бэкенда в переменной +среды "ACCEL_REWRITE". + + +when request is proxied with the help of mod_rewrite module mod_accel +set the backend name in the "ACCEL_RWRITE" enviroment variable and +supports the rewriting of "Location" and "Refresh" headers with the help of +mod_rewrite module. + + + + + +mod_accel переписывает содержимое заголовка "Destination", +если имя хоста в этом заголовке совпадает с содержимым +заголовка "Host", или же если URI не абсолютный. + + +mod_accel now rewrites "Destination" header if the host name in this header +is as in "Host" header or if the destination URI is not absolute. + + + + + +mod_accel зацикливался в случае, если клиент запрашивал byte range, +а бэкенд не передавал кэшируемый ответ полностью. + + +mod_accel went into an endless loop if the client requested the byte range +and the backend did not send the full cachable response. + + + + + + + + + + +сделана проверка и патч для EAPI из mod_ssl-2.8.13-1.3.27+. + + +broken EAPI from mod_ssl-2.8.13-1.3.27+ now is checked and patched. + + + + + +директива AccelSetXURI не работала. + + +AccelSetXURI directive did not work. + + + + + + + + + + +бэкенды, использующие named-based вирутальные хосты, не были доступны +через _the_same_host_. + + +backends that use named-based virtual hosts can not be accessed via +_the_same_host_. + + + + + + + + + + +AccelReverse работает и для запросов, проксированных через AccelPass. + + +AccelReverse works for AccelPass'ed requests too. + + + + + +action remove в accel-cachemgr не работал с URL, в которых символы +кодировались в виде %XX. + + +accel-cachemgr's remove action did not work with URLs with characters +endcoded as %XX. + + + + + + + + + + +флаги дополнительных модулей R, Q и F залипали в кэше до тех пор, пока +файл не удалялся из кэша. + + +additional modules R, Q and F flags were sticky until cache file was +not removed from cache. + + + + + +не работал action remove в accel-cachemgr. + + +accel-cachemgr's remove action did not work. + + + + + +давно неменяемые документы не кэшировались, если для кэширования +использовался AccelLastModifiedFactor. + + +long invariable documents were not cached if AccelLastModifiedFactor +was used to choose cache time. + + + + + + + + + + +если в URL, созданным модулем mod_rewrite, находились +символы в виде %XX, +то они передавались бэкенду в раскрытом виде. + + +if mod_rewrite created URL contained characters encoded as %XX then +they was passed to backend unescaped. + + + + + +ключ -DMOD_REWRITE_DISABLE_TO_PROXY_SUBREQ. + + +-DMOD_REWRITE_DISABLE_TO_PROXY_SUBREQ switch was added. + + + + + +переменная среды ACCEL_NOCACHE. + + +ACCEL_NOCACHE enviroment variable was added. + + + + + + + + + + +в директиве FreezeStart. + + +in FreezeStart directive. + + + + + +директива AccelCacheSetCookie. + + +AccelCacheSetCookie directive. + + + + + +AccelCacheRoot не понимал параметры в кавычках. + + +AccelCacheRoot did not understand quoted parameters. + + + + + +модуль mod_freeze не замораживал схемы, если они указаны в +одинарных кавычках. + + +mod_freeze did not freeze schemas if they was quoted in apostrophes. + + + + + +модуль mod_freeze не замораживал тэг style, параметр style и +схему behavior:. + + +mod_freeze did not freeze style tag, style parameter and behavior: schema. + + + + + +последовательность вида <<script не замораживалась модулем mod_freeze. + + +<<script sequence was not frozen by mod_freeze. + + + + + +оптимизирован алгоритм поиска в модуле mod_freeze. + + +mod_freeze's search algorithm was optimized. + + + + + + + + + + +флаги дополнительных модулей R, Q и F не выставлялись, +если запрос был некэшируемым. + + +additional modules R, Q and F flags were not set +if request was not cachable. + + + + + +директива AccelPassXAccel. + + +AccelPassXAccel directive. + + + + + +модуль mod_freeze. + + +mod_freeze module. + + + + + + + + + + +директива "AccelPassServer off" в Apache-1.3.26 вообще не выдавала +заголовок "Server". + + +"AccelPassServer off" did not send any "Server" header in Apache-1.3.26. + + + + + +документация по mod_accel копируется в /manual/mod/mod_accel.html. + + +mod_accel Russian documentation is copied in /manual/mod/mod_accel.html. + + + + + + + + + + +параметр MP в директиве AccelPass работал некорректно, если также +был задал параметр PH или использовалось специальное имя _the_same_host_. + + +AccelPass MP parameter was worked incorrectly if used with PH parameter +or with special _the_same_host_ host name. + + + + + + + + + + +во время плавного (graceful) рестарта мог произойти segmentation fault +в основном процессе, если все рабочие слоты были заняты. + + +segmentation fault can occur in main process while graceful restart +when all child slots were busy. + + + + + + + + + + +директивы AccelRetry5XX и AccelSetXURI. + + +AccelRetry5XX and AccelSetXURI directives were added. + + + + + +заметки accel_request_body и accel_rewrite_response. + + +accel_request_body and accel_rewrite_response notes were added. + + + + + +mod_accel не собирался компилятором aCC на платформе HP-UX. +Спасибо Marko Asplund, aspakronodoc.fi. + + +mod_accel is not built by aCC on HP-UX.
+Thanks to Marko Asplund, aspakronodoc.fi. +
+
+ + + +косметические правки. + + +code clean up. + + + +
+ + + + + + +если в URL перед аргументами находились символы в виде %XX, +то они передавались бэкенду в раскрытом виде. + + +if URL before arguments contained characters encoded as %XX then +they was passed to backend unescaped. + + + + + + + + + + +в директиве AccelPass можно использовать специальное +имя хоста _the_same_host_. + + +special hostname _the_same_host_ can be used in AccelPass directive. + + + + + +не работало ограничение количества соединений и ждущих процессов +при использовании флага PH в директиве AccelPass. + + +limition of connections and waiting processes does not work +if PH flag in AccelPass directive was used. + + + + + +директива AccelPassServer. + + +AccelPassServer directive was added. + + + + + + + + + + +если модули mod_quoted или mod_randban были собраны статически +или подгружались с помощью LoadModule, но не были добавлены +директивой AddModule после директивы ClearModuleList, то +директивы этих модулей не воспринимались. +Если же директивы этих модулей не использовались в конфигурационных файлах, +то при любых запросах, обрабатываемых модулем mod_accel, +происходил segmentation fault. + + +if mod_quoted or mod_randban modules were statically build +or were loaded with LoadModule directive and were not added +with AddModule directive after ClearModuleList directive then +their directives were unrecognized. +If their directives were not used in configration files +then any request handled by mod_accel caused segmentation fault. + + + + + + + + + + +некорректно обрабатывались ответы бэкенда с большими заголовками. + + +backend response with big header was incorrectly handled. + + + + + +игнорируются строки типа "HTTP/1.0 200 OK" в середине заголовка ответа +бэкенда. Добавлена запись в ErrorLog некорректных заголовков в ответе +бэкенда. + + +lines like "HTTP/1.0 200 OK" are ignored in middle of backend response header. +Incorrect backend header lines are logged in ErrorLog. + + + + + +директива AccelInvalidate, accel-cachemgr и заголовки типа +"Pragma: no-cache" не обновляли кэш, +если задана директива "AccelUnlinkNoCached off". + + +AccelInvalidate directive, accel-cachemgr and headers like +"Pragma: no-cache" did not refresh cache +if AccelUnlinkNoCached directive was off. + + + + + +порядок наследования AccelPass изменён, сначала проверяются +директивы из виртуального сервера, а затем из основного. + + +merge order of AccelPass directive is changed. Virtual server direcitves +are checked first. + + + + + + + + + + +не корректировался порт в заголовках "Location" и "Refresh" +если использовался флаг PH в директиве AccelPass и номера портов +фронтенда и бэкенда отличались. + + +port was not corrected in "Location" and "Refresh" headers +if PH flag in AccelPass directive was used and frontend and backend +port numbers were not the same. + + + + + + + + + + +флаг PH в директиве AccelPass. + + +PH flag was added in AccelPass directive. + + + + + + + + + + +упразднена директива AccelContentTail. + + +AccelContentTail directive was removed. + + + + + +если перезаписываемая строка попадала на границу буфера, mod_randban +мог некорректно поменять случайное число. + + +mod_randban can incorrectly change random value if string to rewrite +was on buffer edge. + + + + + +Совместимость с Apache 1.3.23. + + +Apache 1.3.23 compatibility. + + + + + +если в конфигурации AccelPass описан Location в виде /proxied/, +то при запросе /proxied возвращается редирект на URL с добавленным +слэшом - /proxied/. + + +if Location is specified in AccelPass as /proxied/ then +on request /proxied redirect is returned to URL with slash added - /proxied/. + + + + + +не возвращалась ошибка, если не удавалось создать временный файл +для хранения тела запроса POST. + + +error was not returned if POST request body temporary file creation was failed. + + + + + + + + + + +директива AccelReverse. + + +AccelReverse directive was added. + + + + + + + + + + +на Solaris 7 и FreeBSD 2.x большие ответы передавались не до конца. + + +big repsonses was truncated on Solaris 7 and FreeBSD 2.x. + + + + + + + + + + +скорректированы некоторые сообщения об ошибках. + + +some error messages was corrected. + + + + + +если клиент в запросе POST обрывал соединение, +то бэкенду передавалось неполное тело запроса. +Теперь mod_accel в такой ситуации не соединяется с бэкендом. + + +if client aborted connection while POST +then backend received incompleted request body. +Now mod_accel doesn't connect to backend in this situation. + + + + + +mod_accel не собирался без библиотеки mm. + + +mod_accel did not build without mm library. + + + + + + + + + + +в сообщения об ошибках добавлен URL, который передаётся бэкенду. + + +backend URL was added in error messages. + + + + + +третий параметр в директиве AccelBusyLock. + + +third parameter was added in AccelBusyLock directory. + + + + + +порядок загрузки модулей mod_accel, mod_randban, mod_quoted +и mod_ssl не важен. + + +load order of mod_accel, mod_randban, mod_quoted and mod_ssl +has no meaning now. + + + + + +добавлен параметр --with-patch в configure.
+Упразднены параметры --without-mod_charset и --without-mod_ssl. +
+ +--with-patch directive was added in configure.
+--without-mod_charset and --without-mod_ssl directives is removed. +
+
+ + + +улучшение портабильности. + + +portability enhancement. + + + +
+ + + + + + +во флаге MP директивы AccelPass можно указывать тэг. + + +MP flag of AccelPass directive can have tag. + + + + + +при использовании проксирования (флаг P) в директиве +RewriteRule модуля mod_rewrite можно использовать флаг MP. + + +MP flag can be used in mod_rewrite module RewriteRule +directive when proxing is specified (P flag). + + + + + +при указании времени кэширования с помощью директив +AccelDefaultExpire или AccelLastModifiedFactor ответ не сохранялся +в кэш, если разница во времени между фронтендом и бэкендом была +больше время кэширования. + + +if time to cache is specified in AccelDefaultExpire or +AccelLastModifiedFactor directive and time difference between +frontend and backend is more then specified time then answer +was not saved in cache. + + + + + + + + + + +директива AccelIgnoreAuth. + + +AccelIgnoreAuth directive was added. + + + + + +при использовании проксирования (флаг P) в директиве +RewriteRule модуля mod_rewrite модуль mod_proxy дублировал +строку аргументов. + + +mod_proxy module duplicated argument string when proxing +is specified in mod_rewrite module RewriteRule directive (P flag). + + + + + + + + + + +если бэкендов несколько и с одним из них соединение +не было установлено, то информация об этой попытке в заметки +%{accel*}x не добавлялась. + + +if there are several backends and connection with one of them +was not established then %{accel*}x notes did not contain state of it. + + + + + +при получении от бэкенда большого заголовка происходил +segmentation fault. + + +backend big header caused segmentation fault. + + + + + +в accel-cachemgr добавлены два состояния - invalid +и no_accelerated. + + +two status codes - invalid and no_accelerated was added +in accel-cachemgr. + + + + + +директива RewriteRule модуля mod_rewrite с флагом [P] +работала только при использовании в SSI. + + +mod_rewrite module RewriteRule directive with flag [P] +worked in SSI enviroment only. + + + + + + + + + + +Изменения в директиве AccelCacheCookie: +Добавлены параметр "all", запрещающие параметры и регулярные выражения. +В одной директиве может быть указано несколько параметров. +Директивы из вложенных блоков не объединяются. +Имена cookie сортируются в алфавитном порядке. + + +Changes in AccelCacheCookie directive: +"all" parameter, supressing parameters and regular expressions was added. +There can be several parameters in one directive. +Directives is not merged. +Cookie names is sorted in alphabetical order. + + + + + +Изменения в директиве AccelNoPass: +Регулярное выражение может быть нечуствительно к регистру. +Между символом "~" и регулярным выражением не должно быть пробела. +В одной директиве может быть указано несколько параметров. + + +Changes in AccelNoPass directive: +Regular expression can be case-insensitive. +There should not be space between "~" symbol and regular expression. +There can be several parameters in one directive. + + + + + + + + + + +директива AccelCacheCookie. + + +AccelCacheCookie directive was added. + + + + + +заметка accel_nocache. + + +accel_nocache note was added. + + + + + +обработчик accel-cachemgr. + + +accel-cachemgr handler was added. + + + + + +при запросе нескольких невозрастающих byteranges мог +выдаваться неверный ответ. + + +answer may be wrong if request contains several non-growing +byteranges. + + + + + +заметка %{accel_r}x не записывалась в лог. + + +%{accel_r}x note was not logged. + + + + + +если ответ некэшируемый, то при преждевременном обрыве +соединения с клиентом соединение с бэкендом не закрывалось сразу. + + +if response is not cachable and client prematurely closes +connection then connection to backend was not closed at once. + + + + + + + + + + +ошибка в accel_read_and_check_writable() вызывала нагрузку на процессор. + + +bug in accel_read_and_check_writable() caused high CPU usage. + + + + + + + + + + +Первая версия.
+Тестировалась на Apache 1.3.14, 1.3.17, 1.3.19, 1.3.20 на +FreeBSD 3.4, 4.2. +
+ +First release.
+Tested with Apache 1.3.14, 1.3.17, 1.3.19, 1.3.20 on FreeBSD 3.4, 4.2. +
+
+ +
+ +
diff --git a/docs/xsls/changes.xsls b/docs/xsls/changes.xsls new file mode 100644 --- /dev/null +++ b/docs/xsls/changes.xsls @@ -0,0 +1,118 @@ +X:stylesheet { + +X:output method="text" encoding="koi8-r"; + +X:param lang="'en'"; +X:param configuration="'../xml/change_log_conf.xml'"; + +X:var conf = "document($configuration)/configuration"; +X:var start = "$conf/start"; +X:var indent = "$conf/indent"; +X:var max = "$conf/length"; +X:var br = {<br>} + + +X:template = "/" { !! "change_log"; } +X:template = "change_log" { !! "changes"; } + + +X:template = "changes" { + X:text { } + + !{substring(concat($conf/changes[@lang=$lang]/title, + //change_log/@title, + ' ', @ver, + ' '), + 1, $conf/changes[@lang=$lang]/length)} + + X:if "$lang='ru'" { !{@date} } + + X:if "$lang='en'" { + !{substring(@date, 1, 2)} + !{$conf/changes[@lang=$lang]/month[number(substring(current()/@date, + 4, 2))]} + !{substring(@date, 7, 4)} + } + + X:text { } + + !! "change"; + + X:text { } +} + + +X:template = "change" { + X:var prefix = "$conf/changes[@lang=$lang]/*[local-name(.)=current()/@type]" + + X:var postfix = { X:if "$prefix" { X:text {: } } } + + !! "para[@lang=$lang]" (prefix = "concat($start, $prefix, $postfix)"); +} + + +X:template para(prefix) = "para" { + X:var text = { !!; } + + X:text { } + + !wrap(text = "normalize-space($text)", + prefix = { X:if "position() = 1" { !{$prefix} } else { !{$indent} } }) +} + + +X:template wrap(text, prefix) { + X:if "$text" { + X:var offset = { + X:if "starts-with($text, concat($br, ' '))" { + !{string-length($br) + 2} + } else { + 1 + } + } + + X:var length = { + !length(text = "substring($text, $offset)", + prefix = "string-length($prefix)", + length = "$max") + } + + !{$prefix} + + !{translate(substring($text, $offset, $length), ' ', ' ')} + + X:text { } + + !wrap(text = "substring($text, $length + $offset)", prefix = "$indent") + } +} + + +X:template length(text, prefix, length) { + X:var break = "substring-before(substring($text, 1, $length - $prefix), + $br)" + + X:choose { + X:when "$break" { !{string-length($break)} } + + X:when "$length = 0" { !{$max} } + + X:when "string-length($text) + $prefix <= $length + or substring($text, $length - $prefix, 1) = ' '" + { + !{$length - $prefix} + } + + X:otherwise { + !length(text = "$text", prefix = "$prefix", length = "$length - 1") + } + } +} + + +X:template = "at" {@} +X:template = "br" { !{$br} } +X:template = "nobr" { !{translate(., ' ', ' ')} } + + +} diff --git a/docs/xsls/dump.xsls b/docs/xsls/dump.xsls new file mode 100644 --- /dev/null +++ b/docs/xsls/dump.xsls @@ -0,0 +1,29 @@ +X:stylesheet { + +X:output method="xml" +X:param indent-increment="' '"; + +X:template noname(indent="' '") = "*" { + !{$indent} + + X:if "name()='xsl:template'" { + !{$indent} + } + + X:copy { + X:copy-of "@*" + !!( indent = "concat($indent, $indent-increment)" ); + X:if "./* " { !{$indent} } + } +} + + +X:template = "comment()|processing-instruction()" { + X:copy; +} + + + +} diff --git a/docs/xslt/changes.xslt b/docs/xslt/changes.xslt new file mode 100644 --- /dev/null +++ b/docs/xslt/changes.xslt @@ -0,0 +1,158 @@ + + + + + + + + + + + + + <br> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + \ No newline at end of file diff --git a/src/os/unix/ngx_linux_init.c b/src/os/unix/ngx_linux_init.c --- a/src/os/unix/ngx_linux_init.c +++ b/src/os/unix/ngx_linux_init.c @@ -55,7 +55,7 @@ ngx_int_t ngx_os_init(ngx_log_t *log) name[0] = CTL_KERN; name[1] = KERN_RTSIGMAX; - len = sizeof(rtsig_max); + len = sizeof(ngx_linux_rtsig_max); if (sysctl(name, sizeof(name), &ngx_linux_rtsig_max, &len, NULL, 0) == -1) { ngx_log_error(NGX_LOG_INFO, log, ngx_errno, "sysctl(KERN_RTSIGMAX) failed");