From 940e6f3681392ff48829a4d6e907e25320847513 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 17 Jul 2010 10:45:58 +0200 Subject: [PATCH] network: Replace listsort by a function that doesn't use /usr/bin/sort. --- functions.util | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/functions.util b/functions.util index 023de250..1163634b 100644 --- a/functions.util +++ b/functions.util @@ -39,12 +39,30 @@ function warning_log() { log WARNING "$@" } -# XXX uses tr +# This function does not exist because we cannot use /usr/bin/sort. +# It implements some kind of bubble sort which is generally very slow +# but we only have to sort very small data. function listsort() { + local list=($@) + local list_prev + local i - for i in $@; do - echo "${i}" - done | sort | tr "\n" " " + local j + local var + while [ "${list[*]}" != "${list_prev}" ]; do + list_prev="${list[*]}" + for j in $(seq 1 ${#list[*]}); do + [ ${j} -ge ${#list[*]} ] && continue + i=$(( ${j} - 1 )) + if [[ "${list[${j}]}" < "${list[${i}]}" ]]; then + var="${list[${i}]}" + list[${i}]="${list[${j}]}" + list[${j}]="${var}" + fi + done + done + + echo "${list[*]}" } function listmatch() { -- 2.39.2