]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Use sort -V by the idea of Georgi Georgiev.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 4 Mar 2012 22:13:16 +0000 (23:13 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 4 Mar 2012 22:13:16 +0000 (23:13 +0100)
* util/grub-mkconfig_lib.in (version_sort): New function.
(version_test_numeric): Use version_sort.

ChangeLog
util/grub-mkconfig_lib.in

index 39399d664d0d402812356d2494f4a6ae767dd27c..2a92bac8171e41f424dcb1eace3075e1203af719 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2012-03-04  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       Use sort -V by the idea of Georgi Georgiev.
+
+       * util/grub-mkconfig_lib.in (version_sort): New function.
+       (version_test_numeric): Use version_sort.
+
 2012-03-04  Vladimir Serbinenko  <phcoder@gmail.com>
 
        Use submenus in grub-mkconfig.
index 797c690690c2a64f07e4dc07d3a546e80214c96f..7e9ea1d9402b1f434d917fcc0c2f5977e8f2c79a 100644 (file)
@@ -185,6 +185,24 @@ grub_file_is_not_garbage ()
   return 0
 }
 
+version_sort ()
+{
+  case $version_sort_sort_has_v in
+    yes)
+      LC_ALL=C sort -V;;
+    no)
+      LC_ALL=C sort -n;;
+    *)
+      if sort -v </dev/null > /dev/null 2>&1; then
+        version_sort_sort_has_v=yes
+       LC_ALL=C sort -V
+      else
+        version_sort_sort_has_v=no
+        LC_ALL=C sort -n
+      fi;;
+   esac
+}
+
 version_test_numeric ()
 {
   version_test_numeric_a="$1"
@@ -201,7 +219,7 @@ version_test_numeric ()
     version_test_numeric_a="$version_test_numeric_b"
     version_test_numeric_b="$version_test_numeric_c"
   fi
-  if (echo "$version_test_numeric_a" ; echo "$version_test_numeric_b") | sort -n | head -n 1 | grep -qx "$version_test_numeric_b" ; then
+  if (echo "$version_test_numeric_a" ; echo "$version_test_numeric_b") | version_sort | head -n 1 | grep -qx "$version_test_numeric_b" ; then
     return 0
   else
     return 1