From 9a51d4481d9630963966a5871e799c43d9c8f292 Mon Sep 17 00:00:00 2001 From: dteske Date: Sat, 30 Nov 2013 23:47:18 +0000 Subject: Sort function output on name of the function. --- usr.sbin/bsdconfig/includes/includes | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) (limited to 'usr.sbin/bsdconfig/includes') diff --git a/usr.sbin/bsdconfig/includes/includes b/usr.sbin/bsdconfig/includes/includes index 95be4f3..db32115 100755 --- a/usr.sbin/bsdconfig/includes/includes +++ b/usr.sbin/bsdconfig/includes/includes @@ -69,16 +69,36 @@ show_include() -v use_color=${USE_COLOR:-0} \ -v re="$pattern" \ -v show_desc=${SHOW_DESC:-0} ' + function asorti(src, dest) + { + # Copy src indices to dest and calculate array length + nitems = 0; for (i in src) dest[++nitems] = i + + # Sort the array of indices (dest) using insertion sort method + for (i = 1; i <= nitems; k = i++) + { + idx = dest[i] + while ((k > 0) && (dest[k] > idx)) + { + dest[k+1] = dest[k] + k-- + } + dest[k+1] = idx + } + + return nitems + } /^$/,/^#/ { if ($0 ~ /^# f_/) { if (!match($2, re)) next + fn = $2 if (use_color) - printf "+%s%s%s\n", + syntax[fn] = sprintf("+%s%s%s\n", substr($0, 2, RSTART), substr($0, 2 + RSTART, RLENGTH), - substr($0, 2 + RSTART + RLENGTH) + substr($0, 2 + RSTART + RLENGTH)) else - print "+" substr($0, 2) + syntax[fn] = "+" substr($0, 2) "\n" if (show_desc) print_more = 1 else @@ -87,15 +107,20 @@ show_include() if (show_desc && print_more) { getline while ($0 ~ /^#/) { - print " " substr($0, 2) + syntax[fn] = syntax[fn] " " substr($0, 2) "\n" getline } print_more = 0 } else while (print_more) { getline - print " " substr($0, 2) + syntax[fn] = syntax[fn] " " substr($0, 2) "\n" print_more = substr($0, length($0)) == "\\" } + } + END { + n = asorti(syntax, sorted_indices) + for (i = 1; i <= n; i++) + printf "%s", syntax[sorted_indices[i]] }' "$file" ) if [ "$output" ]; then if [ ! "$SHOW_FUNCS" ]; then -- cgit v1.1