From: Michael Tremer Date: Sat, 17 Jul 2010 08:45:58 +0000 (+0200) Subject: network: Replace listsort by a function that doesn't use /usr/bin/sort. X-Git-Url: http://git.ipfire.org/?p=people%2Farne_f%2Fnetwork.git;a=commitdiff_plain;h=940e6f3681392ff48829a4d6e907e25320847513 network: Replace listsort by a function that doesn't use /usr/bin/sort. --- 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() {