Date: Sun, 12 May 2019 18:57:20 +0000 (UTC) From: Wolfram Schneider <wosch@FreeBSD.org> To: doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-head@freebsd.org Subject: svn commit: r53009 - head/en_US.ISO8859-1/htdocs/cgi Message-ID: <201905121857.x4CIvKEv087040@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: wosch Date: Sun May 12 18:57:19 2019 New Revision: 53009 URL: https://svnweb.freebsd.org/changeset/doc/53009 Log: sort versions with major.minor.patch number, e.g.: 5.1.1 <> 5.2.2 Modified: head/en_US.ISO8859-1/htdocs/cgi/man.cgi Modified: head/en_US.ISO8859-1/htdocs/cgi/man.cgi ============================================================================== --- head/en_US.ISO8859-1/htdocs/cgi/man.cgi Sun May 12 18:25:31 2019 (r53008) +++ head/en_US.ISO8859-1/htdocs/cgi/man.cgi Sun May 12 18:57:19 2019 (r53009) @@ -672,7 +672,7 @@ $manPathDefault = 'FreeBSD 12.0-RELEASE and Ports'; 'HP-UX 10.01', "$manLocalDir/HP-UX-10.01", 'HP-UX 9.07', "$manLocalDir/HP-UX-9.07", - 'IRIX-6.5.30', "$manLocalDir/IRIX-6.5.30/catman/a_man:$manLocalDir/IRIX-6.5.30/catman/p_man:$manLocalDir/IRIX-6.5.30/catman/u_man:$manLocalDir/IRIX-6.5.30/dt", + 'IRIX 6.5.30', "$manLocalDir/IRIX-6.5.30/catman/a_man:$manLocalDir/IRIX-6.5.30/catman/p_man:$manLocalDir/IRIX-6.5.30/catman/u_man:$manLocalDir/IRIX-6.5.30/dt", 'SunOS 5.10', "$manLocalDir/SunOS-5.10", 'SunOS 5.9', "$manLocalDir/SunOS-5.9", @@ -911,18 +911,53 @@ sub sort_versions { my @b = ( lc($b) =~ m,^(\D+)([\d\.]+)(\D*)$, ); if (@a and @b) { - return $a[0] cmp $b[0] || (-1 * ($a[1] <=> $b[1])) || $a[2] cmp $a[2] || $a cmp $b; + return $a[0] cmp $b[0] || # FreeBDS <=> IRIX + &version($a[1], $b[1]) || # 6.5.30 <=> 6.5.31 + $a[2] cmp $a[2] || # RELEASE <=> ports + $a cmp $b; # rest } # 2.9.1 BSD - @a = ( lc($a) =~ m,^(\d\.+)(.*)$, ); - @b = ( lc($b) =~ m,^(\d\.+)(.*)$, ); + @a = ( lc($a) =~ m,^([\d\.]+)(.*)$, ); + @b = ( lc($b) =~ m,^([\d\.]+)(.*)$, ); if (@a and @b) { - return (-1 * ( $a[0] <=> $b[0])) || $a[1] <=> $b[1] || $a cmp $b; + return &version($a[0], $b[0]) || # 2.9.1BSD + $a[1] <=> $b[1] || # BSD + $a cmp $b; # rest } # rest return $a cmp $b; +} + +sub version { + return &version_compare(@_) * -1; +} + +# compare two versions, e.g.: 5.1.1 <> 5.2.2 +sub version_compare { + my $a = shift; + my $b = shift; + + my @a = split( '\.', $a ); + my @b = split( '\.', $b ); + + my $max = @a >= @b ? @a : @b; + + for ( my $i = 0 ; $i < $max ; $i++ ) { + + # 5.1 <=> 5.1.1 + return -1 if !defined $a[$i]; + + # 5.1.1 <=> 5.1 + return +1 if !defined $b[$i]; + + if ( ( $a[$i] <=> $b[$i] ) != 0 ) { + return $a[$i] <=> $b[$i]; + } + } + + return 0; } # FreeBSD manual pages first before any other manual pages
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201905121857.x4CIvKEv087040>