[devel] 0ldconfig.filetrigger (packages/rpm: heads/altlinux-4.1)
Alexey Tourbin
=?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Сб Ноя 8 17:52:20 MSK 2008
On Sat, Nov 08, 2008 at 05:29:47PM +0300, Dmitry V. Levin wrote:
> On Thu, Nov 06, 2008 at 07:13:31PM +0300, Alexey M. Tourbin wrote:
> > --- a/scripts/0ldconfig.filetrigger
> > +++ b/scripts/0ldconfig.filetrigger
> [...]
> > + # 0) Short circuit condition: if a library is already found,
> > + # skip the remaining list of non-system libraries. Note that
> > + # the input file list is sorted, and "/lic" collates after
> > + # "/lib" and "/lib64".
> > + if [ -n "$lib" ] && LC_ALL=C [ "$f" '>' "/lic" ]; then
>
> Тогда лучше написать без обиняков: [ "$f" '>' "/lib64" ]
Не совсем. Нужно обрубать цикл только тогда, когда все файлы
"/lib64/*" уже пройдены. А так любой файл "/lib64/*" будет больше
"/lib64", а ведь флаг sys=1 ещё не выставлен. То есть то, что ты
предлагаешь, -- неверно. Но идея понятна: условие окончание цикла
можно выразить ещё немного более точно. Если во всех локалях
"/lib64" > "/lib/" (цифра больше слеша), то в принципе можно сравнивать
с "/lib7".
Тут есть ещё одна тонкость, на которую я обратл внимание: в bash(1)
сказано
string1 > string2
True if string1 sorts after string2 lexicographically in the current locale.
Но на самом деле в bash/test.c:binary_test() используется strcmp:
379 else if ((op[0] == '>' || op[0] == '<') && op[1] == '\0')
380 return ((op[0] == '>') ? (strcmp (arg1, arg2) > 0) : (strcmp (arg1, arg2) < 0));
то есть, вопреки документации, локаль не используется.
А в ash(1) другая формулировка, которая вроде бы подразумевает strcmp:
s1 > s2 True if string s1 comes after s2 based on the ASCII value of their characters.
В общем, всё это заставило меня придумать вот такую странную,
но вроде бы наиболее безопасную конструкцию.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 197 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20081108/9ac5b7f0/attachment.bin>
Подробная информация о списке рассылки Devel