[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [kazehakase]: FTBFS под GNU/Hurd: mozilla.cpp:132: error: 'PATH_MAX'
From: |
Yavor Doganov |
Subject: |
Re: [kazehakase]: FTBFS под GNU/Hurd: mozilla.cpp:132: error: 'PATH_MAX' was not declared in this scope |
Date: |
Fri, 21 Aug 2009 15:40:34 +0300 |
В 17:40 +0000 на 20.08.2009 (чт), Dimitur Kirov написа:
> strlen трябва да се избягва, освен ако не сме сигурни, че xpcomPath
> съдържа \0, а като гледам - не сме
Нали в Си (надявам се и C++) всеки низ съхраняван в (указател на) char
по конвенция завършва с \0? Или нещо не съм разбрал...
> ако GRE_GetGREPathWithProperties не е променила xpcomPath тогава
Възможна ли е тази ситуация? На мен ми се струва, че не е.
> (ако наистина се налага този алгоритъм)
Със сигурност се налага да не се ползва PATH_MAX. По мои спомени и
наблюдения от debian-hurd най-често се ползва този механизъм. Сега
погледнах напътствията:
Every unconditionalized use of PATH_MAX, MAX_PATH or MAXPATHLEN is a
POSIX incompatibility. If there is no upper limit on the length of a
path (as its the case for GNU), this symbol is not defined in any header
file. Instead, you need to either use a different implementation that
does not rely on the length of a string or use sysconf() to query the
length at runtime. If sysconf() returns -1, you have to use realloc() to
allocate the needed memory dynamically. Usually it is thus simpler to
just use dynamic allocation. Sometimes the amount is actually known.
Else, a geometrically growing loop can be used: for instance, see Alioth
patch or Pulseaudio patch [1]. Note that in some cases there are GNU
extensions that just work fine: when the __GLIBC__ macro is defined,
getcwd() calls can be just replaced by get_current_dir_name() calls.
> if (NS_FAILED(rv)) {
> if (rv != NS_ERROR_FILE_NAME_TOO_LONG) {
> goto out;
> }
> } else {
> break;
> }
Така няма никакво излизане от цикъла -- пробвай го само да видиш как за
нула време се поставя машината на колене :-D.
> От кръпката личи, че етикетът out винаги ще се изпълни, което
> означава, че функцията винаги връща FALSE.
:-(. Бях го сложил накрая, но не се компилира:
mozilla.cpp: In function ‘gboolean xulrunner_init()’:
mozilla.cpp:183: error: jump to label ‘out’
mozilla.cpp:172: error: from here
mozilla.cpp:174: error: crosses initialization of ‘char* lastSlash’
Освен да разкарам етикета и да дублирам кода, нищо друго не виждам като
решение.
> [1] http://mxr.mozilla.org/mozilla/source/xpcom/glue/nsGREGlue.cpp#150
Великите модзиладжии ползват MAXPATHLEN в имплементацията на тази
функция (и най-вероятно на много други места), което обяснява защо няма
xulrunner на тази платформа. Което пък означава, че кръпката за Kz не е
особено необходима поне засега :-).
[1]
http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=5;filename=patch-pulse;att=1;bug=522100
- [kazehakase]: FTBFS под GNU/Hurd: mozilla.cpp:132: error: 'PATH_MAX' was not declared in this scope, Yavor Doganov, 2009/08/20
- Re: [kazehakase]: FTBFS под GNU/Hurd: mozilla.cpp:132: error: 'PATH_MAX' was not declared in this scope, Dimitur Kirov, 2009/08/20
- Re: [kazehakase]: FTBFS под GNU/Hurd: mozilla.cpp:132: error: 'PATH_MAX' was not declared in this scope, Dimitur Kirov, 2009/08/20
- Re: [kazehakase]: FTBFS под GNU/Hurd: mozilla.cpp:132: error: 'PATH_MAX' was not declared in this scope,
Yavor Doganov <=
- Re: [kazehakase]: FTBFS под GNU/Hurd: mozilla.cpp:132: error: 'PATH_MAX' was not declared in this scope, Dimitur Kirov, 2009/08/21
- Re: [kazehakase]: FTBFS под GNU/Hurd: mozilla.cpp:132: error: 'PATH_MAX' was not declared in this scope, Yavor Doganov, 2009/08/21
- Re: [kazehakase]: FTBFS под GNU/Hurd: mozilla.cpp:132: error: 'PATH_MAX' was not declared in this scope, Dimitur Kirov, 2009/08/21
- Re: [kazehakase]: FTBFS под GNU/Hurd: mozilla.cpp:132: error: 'PATH_MAX' was not declared in this scope, Yavor Doganov, 2009/08/21
- Re: [kazehakase]: FTBFS под GNU/Hurd: mozilla.cpp:132: error: 'PATH_MAX' was not declared in this scope, Dimitur Kirov, 2009/08/21
- Re: [kazehakase]: FTBFS под GNU/Hurd: mozilla.cpp:132: error: 'PATH_MAX' was not declared in this scope, Yavor Doganov, 2009/08/21
- Re: [kazehakase]: FTBFS под GNU/Hurd: mozilla.cpp:132: error: 'PATH_MAX' was not declared in this scope, Dimitur Kirov, 2009/08/21
- Re: [kazehakase]: FTBFS под GNU/Hurd: mozilla.cpp:132: error: 'PATH_MAX' was not declared in this scope, Yavor Doganov, 2009/08/21