Date: Sat, 30 Nov 2013 23:47:18 +0000 (UTC) From: Devin Teske <dteske@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r258785 - head/usr.sbin/bsdconfig/includes Message-ID: <201311302347.rAUNlIoe068005@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dteske Date: Sat Nov 30 23:47:18 2013 New Revision: 258785 URL: http://svnweb.freebsd.org/changeset/base/258785 Log: Sort function output on name of the function. Modified: head/usr.sbin/bsdconfig/includes/includes Modified: head/usr.sbin/bsdconfig/includes/includes ============================================================================== --- head/usr.sbin/bsdconfig/includes/includes Sat Nov 30 23:08:32 2013 (r258784) +++ head/usr.sbin/bsdconfig/includes/includes Sat Nov 30 23:47:18 2013 (r258785) @@ -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[1;31m%s[0m%s\n", + syntax[fn] = sprintf("+%s[1;31m%s[0m%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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201311302347.rAUNlIoe068005>