tech-pkg: Re: Comparing version numbers

Subject: Re: Comparing version numbers
To: Alistair Crooks <agc@wasabisystems.com>
From: Rene Hexel <rh@netbsd.org>
List: tech-pkg
Date: 08/02/2002 10:47:14
On Fri, 2002年08月02日 at 06:58, Alistair Crooks wrote:
> Basically, all of the comparison work is done in
> 
> 	pkg_install/lib/str.c
> 
> An array of 64-bit integers is constructed, using the rules in the comment
> in line 156 (ish).
 Thanks, Al, that was a good pointer. I always had some sort of fuzzy
intuitive understanding of what's actually used for comparison, but it's
good to have a look at the real code.
> '_' encodes as 'patchlevel', or '0'
 I'm not sure I understand this part, though. Here is a sniplet from
the code that does the encoding:
 if (*num == '_') {
 num += 1;
 if (isdigit(*(num + 1))) {
 ap->v[ap->c++] = Dot;
 return 1;
 Shouldn't that isdigit() part read
 if (isdigit(*num)) {
 instead? 'num' has already been incremented in the preceding line, so
that would check whether the next character is actually a digit. The
original code actually checks the 2nd character after the '_'. Maybe
I'm missing something here ...
 Cheers
 ,
 Rene

AltStyle によって変換されたページ (->オリジナル) /