ALT Linux Team development discussions
 help / color / mirror / Atom feed
* Re: [devel] [git update] packages/apt: heads/master
  @ 2007-12-18  8:34 ` Slava Semushin
  2007-12-18  9:42   ` Alex Myltsev
  0 siblings, 1 reply; 9+ messages in thread
From: Slava Semushin @ 2007-12-18  8:34 UTC (permalink / raw)
  To: ALT Devel discussion list

2007/12/18, Dmitry V. Levin <ldv / altlinux.org>:
> Update of /people/ldv/packages/apt.git
[...]
> +--- a/apt/apt-pkg/algorithms.cc
> ++++ b/apt/apt-pkg/algorithms.cc
[...]
> ++/* Like strcmp, but compares digit sections by number value.
> ++ * E.g.: tar-1.10 > tar-1.9 > tar-1.1a
> ++ * (while strcmp gives tar-1.10 < tar-1.9). */
> ++static int nameCompare(const char* n1, const char* n2)
> ++{
> ++   while(*n1 && *n2) {
> ++      if(isdigit(*n1) && isdigit(*n2)) {
> ++       unsigned long long i1, i2;
> ++       i1 = strtoull(n1, const_cast<char **>(&n1), 10);
> ++       i2 = strtoull(n2, const_cast<char **>(&n2), 10);
> ++       if(i1 != i2)
> ++          return (i1 > i2) ? 1 : -1;
> ++      } else if(*n1 != *n2) {
> ++       return (*n1 > *n2) ? 1 : -1;
> ++      } else {
> ++       n1++;
> ++       n2++;
> ++      }
> ++   }
> ++   return 0;
> ++}
[...]

Почему бы не использовать  strverscmp() для этих целей? Оно, правда,
GNU extenstion, но портабельность, как понимаю, для нас не критична.
Зато она более стандартна, чем самописный nameCompare() и лучше
документирована.


-- 
+ Slava Semushin | slava.semushin @ gmail.com
+ ALT Linux Team | php-coder @ altlinux.ru

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] [git update] packages/apt: heads/master
  2007-12-18  8:34 ` [devel] [git update] packages/apt: heads/master Slava Semushin
@ 2007-12-18  9:42   ` Alex Myltsev
  2007-12-18 10:18     ` Dmitry V. Levin
  2008-03-30  4:28     ` [devel] apt-pkg/algorithms.cc nameCompare Alexey Tourbin
  0 siblings, 2 replies; 9+ messages in thread
From: Alex Myltsev @ 2007-12-18  9:42 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Dec 18, 2007 11:34 AM, Slava Semushin <slava.semushin@gmail.com> wrote:
> > ++static int nameCompare(const char* n1, const char* n2)
> Почему бы не использовать  strverscmp() для этих целей?
Просто не знал я про такую функцию.

> GNU extension, но портабельность, как понимаю, для нас не критична.
> Зато она более стандартна, чем самописный nameCompare() и лучше
> документирована.
Сравнил с nameCompare на строчках из "apt-cache pkgnames".
Отличие в единственном случае:

  perl(versions/html4_0.pl)  V  perl(versions/html4_01.pl)
           nameCompare:      <
           strverscmp:       >
	
В общем, можно и поменять.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] [git update] packages/apt: heads/master
  2007-12-18  9:42   ` Alex Myltsev
@ 2007-12-18 10:18     ` Dmitry V. Levin
  2007-12-18 10:35       ` Alexey Rusakov
  2007-12-19  6:17       ` Slava Semushin
  2008-03-30  4:28     ` [devel] apt-pkg/algorithms.cc nameCompare Alexey Tourbin
  1 sibling, 2 replies; 9+ messages in thread
From: Dmitry V. Levin @ 2007-12-18 10:18 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 820 bytes --]

On Tue, Dec 18, 2007 at 12:42:58PM +0300, Alex Myltsev wrote:
> On Dec 18, 2007 11:34 AM, Slava Semushin <slava.semushin@gmail.com> wrote:
> > > ++static int nameCompare(const char* n1, const char* n2)
> > Почему бы не использовать  strverscmp() для этих целей?
> Просто не знал я про такую функцию.
> 
> > GNU extension, но портабельность, как понимаю, для нас не критична.
> > Зато она более стандартна, чем самописный nameCompare() и лучше
> > документирована.
> Сравнил с nameCompare на строчках из "apt-cache pkgnames".
> Отличие в единственном случае:
> 
>   perl(versions/html4_0.pl)  V  perl(versions/html4_01.pl)
>            nameCompare:      <
>            strverscmp:       >
> 	
> В общем, можно и поменять.

Зачем?  У неё неадекватное поведение на вышеприведённом примере.


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] [git update] packages/apt: heads/master
  2007-12-18 10:18     ` Dmitry V. Levin
@ 2007-12-18 10:35       ` Alexey Rusakov
  2007-12-18 10:38         ` Dmitry V. Levin
  2007-12-19  6:17       ` Slava Semushin
  1 sibling, 1 reply; 9+ messages in thread
From: Alexey Rusakov @ 2007-12-18 10:35 UTC (permalink / raw)
  To: ALT Linux Team development discussions

> > Сравнил с nameCompare на строчках из "apt-cache pkgnames".
> > Отличие в единственном случае:
> > 
> >   perl(versions/html4_0.pl)  V  perl(versions/html4_01.pl)
> >            nameCompare:      <
> >            strverscmp:       >
> > 	
> > В общем, можно и поменять.
> 
> Зачем?  У неё неадекватное поведение на вышеприведённом примере.
В любом случае наличие двух разных инструментов - это зло. Мне кажется,
лучше всего исправить поведение strverscmp (я не могу придумать
обоснование её поведению в приведённом случае), после чего выбросить
nameCompare и использовать strverscmp.

-- 
  Alexey Rusakov
  ALT Linux, project manager



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] [git update] packages/apt: heads/master
  2007-12-18 10:35       ` Alexey Rusakov
@ 2007-12-18 10:38         ` Dmitry V. Levin
  2007-12-18 11:00           ` Alexey Rusakov
  0 siblings, 1 reply; 9+ messages in thread
From: Dmitry V. Levin @ 2007-12-18 10:38 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 842 bytes --]

On Tue, Dec 18, 2007 at 01:35:51PM +0300, Alexey Rusakov wrote:
> > > Сравнил с nameCompare на строчках из "apt-cache pkgnames".
> > > Отличие в единственном случае:
> > > 
> > >   perl(versions/html4_0.pl)  V  perl(versions/html4_01.pl)
> > >            nameCompare:      <
> > >            strverscmp:       >
> > > 	
> > > В общем, можно и поменять.
> > 
> > Зачем?  У неё неадекватное поведение на вышеприведённом примере.
> В любом случае наличие двух разных инструментов - это зло.

Наоборот. ;)

> Мне кажется,
> лучше всего исправить поведение strverscmp (я не могу придумать
> обоснование её поведению в приведённом случае), после чего выбросить
> nameCompare и использовать strverscmp.

Изменять поведение функций в libc можно только в том случае если для этого
есть достаточно веские основания.


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] [git update] packages/apt: heads/master
  2007-12-18 10:38         ` Dmitry V. Levin
@ 2007-12-18 11:00           ` Alexey Rusakov
  2007-12-18 14:04             ` Dmitry V. Levin
  0 siblings, 1 reply; 9+ messages in thread
From: Alexey Rusakov @ 2007-12-18 11:00 UTC (permalink / raw)
  To: ALT Linux Team development discussions

В Втр, 18/12/2007 в 13:38 +0300, Dmitry V. Levin пишет:
> On Tue, Dec 18, 2007 at 01:35:51PM +0300, Alexey Rusakov wrote:
> > > > Сравнил с nameCompare на строчках из "apt-cache pkgnames".
> > > > Отличие в единственном случае:
> > > > 
> > > >   perl(versions/html4_0.pl)  V  perl(versions/html4_01.pl)
> > > >            nameCompare:      <
> > > >            strverscmp:       >
> > > > 	
> > > > В общем, можно и поменять.
> > > 
> > > Зачем?  У неё неадекватное поведение на вышеприведённом примере.
> > В любом случае наличие двух разных инструментов - это зло.
> 
> Наоборот. ;)
Наоборот - только при условии документированности различий и их причин.
А так мы обречены на то, что часть программ будет пользоваться
strverscmp, apt будет пользоваться nameCompare, будут неочевидные
различия в поведении (между прочим, а чем пользуется rpm в аналогичной
ситуации сейчас?) и вопросы от тех, кто на эти различия будет налетать.
Два инструмента хороши, когда кому-то лучше так, а кому-то - иначе. В
данном случае я вижу только один возможный вариант "лучше", если эти
функции действительно отличаются настолько слабо.

> > Мне кажется,
> > лучше всего исправить поведение strverscmp (я не могу придумать
> > обоснование её поведению в приведённом случае), после чего выбросить
> > nameCompare и использовать strverscmp.
> 
> Изменять поведение функций в libc можно только в том случае если для этого
> есть достаточно веские основания.
Неадекватность поведения в указанном случае - не является веским
основанием?

-- 
  Alexey Rusakov
  ALT Linux, project manager



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] [git update] packages/apt: heads/master
  2007-12-18 11:00           ` Alexey Rusakov
@ 2007-12-18 14:04             ` Dmitry V. Levin
  0 siblings, 0 replies; 9+ messages in thread
From: Dmitry V. Levin @ 2007-12-18 14:04 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 763 bytes --]

On Tue, Dec 18, 2007 at 02:00:33PM +0300, Alexey Rusakov wrote:
> В Втр, 18/12/2007 в 13:38 +0300, Dmitry V. Levin пишет:
> > On Tue, Dec 18, 2007 at 01:35:51PM +0300, Alexey Rusakov wrote:
[...]
> > > Мне кажется,
> > > лучше всего исправить поведение strverscmp (я не могу придумать
> > > обоснование её поведению в приведённом случае), после чего выбросить
> > > nameCompare и использовать strverscmp.
> > 
> > Изменять поведение функций в libc можно только в том случае если для этого
> > есть достаточно веские основания.
> Неадекватность поведения в указанном случае - не является веским
> основанием?

Данная неадекватность субъективна.  Люди, придумавшие strverscmp, имели
свой взгляд на то, как эта функция должна работать.


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] [git update] packages/apt: heads/master
  2007-12-18 10:18     ` Dmitry V. Levin
  2007-12-18 10:35       ` Alexey Rusakov
@ 2007-12-19  6:17       ` Slava Semushin
  1 sibling, 0 replies; 9+ messages in thread
From: Slava Semushin @ 2007-12-19  6:17 UTC (permalink / raw)
  To: ALT Linux Team development discussions

18.12.07, Dmitry V. Levin<ldv / altlinux.org> написал(а):
[...]
> > > Почему бы не использовать  strverscmp() для этих целей?
[...]
> Зачем?  У неё неадекватное поведение на вышеприведённом примере.

Что ж в таком случае, давайте хотя бы добавим комментарий, объясняющий
почему мы не используем strverscmp()?


-- 
+ Slava Semushin | slava.semushin @ gmail.com
+ ALT Linux Team | php-coder @ altlinux.ru

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [devel] apt-pkg/algorithms.cc nameCompare
  2007-12-18  9:42   ` Alex Myltsev
  2007-12-18 10:18     ` Dmitry V. Levin
@ 2008-03-30  4:28     ` Alexey Tourbin
  1 sibling, 0 replies; 9+ messages in thread
From: Alexey Tourbin @ 2008-03-30  4:28 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 890 bytes --]

On Tue, Dec 18, 2007 at 12:42:58PM +0300, Alex Myltsev wrote:
> On Dec 18, 2007 11:34 AM, Slava Semushin <slava.semushin@gmail.com> wrote:
> > > ++static int nameCompare(const char* n1, const char* n2)
> > Почему бы не использовать  strverscmp() для этих целей?
> Просто не знал я про такую функцию.
> 
> > GNU extension, но портабельность, как понимаю, для нас не критична.
> > Зато она более стандартна, чем самописный nameCompare() и лучше
> > документирована.
> Сравнил с nameCompare на строчках из "apt-cache pkgnames".
> Отличие в единственном случае:
> 
>   perl(versions/html4_0.pl)  V  perl(versions/html4_01.pl)
>            nameCompare:      <
>            strverscmp:       >

У этой новой функции есть одна неприятная особенность:
	mutt			V	mutt1.5
		nameCompre:	0
	
Собственно, что нужно выбирать, если один пакет с версионным
суфиксом, а другой -- без?

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2008-03-30  4:28 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-12-18  8:34 ` [devel] [git update] packages/apt: heads/master Slava Semushin
2007-12-18  9:42   ` Alex Myltsev
2007-12-18 10:18     ` Dmitry V. Levin
2007-12-18 10:35       ` Alexey Rusakov
2007-12-18 10:38         ` Dmitry V. Levin
2007-12-18 11:00           ` Alexey Rusakov
2007-12-18 14:04             ` Dmitry V. Levin
2007-12-19  6:17       ` Slava Semushin
2008-03-30  4:28     ` [devel] apt-pkg/algorithms.cc nameCompare Alexey Tourbin

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git