ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Разные архитектуры



Hello!

On Thu, Nov 24, 2011 at 02:35:35PM +0400, Igor Sysoev wrote:

> On Thu, Nov 24, 2011 at 02:34:33PM +0400, Igor Sysoev wrote:
> > On Thu, Nov 24, 2011 at 02:13:07PM +0400, Dmitry E. Oboukhov wrote:
> > > Есть архитектуры [1], на которых отсутствует макрос PATH_MAX.
> > > 
> > > Есть так же много размышлений (например [2]) в сети на тему почему
> > > PATH_MAX использовать не стоит итп.
> > > 
> > > Ну и есть в частности результат в виде логов, что nginx на этих
> > > платформах недоступен (как пример [3]).
> > > 
> > > grep на предмет использования PATH_MAX показывает всего два места где
> > > это применяется:
> > > 
> > > $ grep NGX_MAX_PATH -r src 
> > > 
> > > src/http/ngx_http_variables.c:    u_char
> > > real[NGX_MAX_PATH];
> > > src/os/unix/ngx_files.h:#define NGX_MAX_PATH             PATH_MAX
> > > src/core/nginx.c:        p = ngx_pnalloc(cycle->pool, NGX_MAX_PATH);
> > > src/core/nginx.c:        if (ngx_getcwd(p, NGX_MAX_PATH) == 0) {
> > > rc/core/ngx_file.h:#define NGX_MAX_PATH_LEVEL  3
> > > 
> > > 
> > > И вроде их оба несложно пофиксить для более успешного продвижения
> > > nginx на другие архитектуры.
> > > 
> > > Что кто думает по этому поводу? Ну кроме "hurd не нужен"?
> > > 
> > > 1. http://www.gnu.org/s/hurd/community/gsoc/project_ideas/maxpath.html
> > > 2. http://insanecoding.blogspot.com/2007/11/pathmax-simply-isnt.html
> > > 3. 
> > > https://buildd.debian.org/status/fetch.php?pkg=nginx&arch=hurd-i386&ver=1.1.8-2&stamp=1322127530
> > 
> > И как узнать необходимую длину ?
> > 
> > http://pubs.opengroup.org/onlinepubs/000095399/functions/getcwd.html
> > 
> >    If buf is a null pointer, the behavior of getcwd() is unspecified.

Тут можно просто взять большой буфер, благо его размер передаётся.  
Если не влезет - будет ERANGE.

> > http://pubs.opengroup.org/onlinepubs/7908799/xsh/realpath.html
> > 
> >    Ничего про NULL буфер нет.
> 
> Вернее, есть:
> 
> [EINVAL]
>     Either the file_name or resolved_name argument is a null pointer. 

Появилось в Issue 7:

http://pubs.opengroup.org/onlinepubs/9699919799/functions/realpath.html

Т.е. если PATH_MAX определён, надо действовать по старому.  Если 
не определён - можно пытаться использовать интерфейс из Issue 7.

Maxim Dounin

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.