[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