If you really want a headache, go look at the revision history for vercmp()
in the RPM repo.

On Sat, Jul 28, 2018 at 4:08 PM ToddAndMargo <[email protected]> wrote:

> On 07/28/2018 08:26 AM, Brandon Allbery wrote:
> > I think you can use Version.new on that and compare them reasonably
> > directly? That said, comparison of version numbers is a bit of a
> > minefield for exactly this reason: not everyone agrees on when to use
> > string vs.  numeric comparison, or what to do when one is numeric and
> > the other isn't.
>
> Hi Brandon,
>
> I wrote my own routine to test if a revision is greater
> than a prior revision.  It took two years of thinking
> and refining and recently moved it from Perl 5 to Perl 6.
>
> I am working on my program to go the web and update various
> programs I support at customer's sites.
>
> You are right about the mine field.  Delimiter variations
> I have to deal with are
>
>     1_2_3_4
>     1.2.4-4
>     1.2.3_4
>     1a10
>     1b10
>     1rc10
>     8u123  (freaking Java)
>     and so on and so forth.
>
>     and is 1.2.3 newer than 1.2.3.0, etc.?  (I tag them as identical.)
>
> First I take a,b and rc and adjust them
>          2.3a5  --> 2.2.4997
>          2.3b5  --> 2.2.4998
>          2.3rc5 --> 2.2.4999
>
> Then I do is to first bust both strings into dot only
> delimiters.
>
> Next I create number arrays out of each.  Then I make sure
> both array have the same number of cell by back filling
> the short array with zeros.
>
> And finally, I loop across both arrays at the same
> time to find if the revision is newer.
>
> As I said, it took me two years of thinking and refining.
> If anyone want to see this code, drop me a line.  I'd
> love to share what I have been up to for the last two years!
>
> -T
>


-- 
brandon s allbery kf8nh                               sine nomine associates
[email protected]                                  [email protected]
unix, openafs, kerberos, infrastructure, xmonad        http://sinenomine.net

Reply via email to