Howard Chu writes:
Oops. Except piping to sort loses the field boundaries, so continuation lines are messed up.
Also the POSIX folks in their wisdom normalized the arguments to sort. Thus GNU sort no longer accepts sort +0, you must say sort -k 1. And of course comparison obeys the current locale, which may do "interesting" things to the ordering. But then, so does awk. And several perl versions have had broken locale support. Maybe defines.sh should hunt down $LC_*, $LANG etc and unset them:-(
Anyway, I don't expect we lose much by dropping proper compares if perl is absent. So I've been doing something like this. Though that was for back-ldif where only some test outputs need to be sorted.
# With arguments -S backend,backend,...backend, also sort the input for # those backends: By entries+attrs if possible, just by lines otherwise. # That's a poor man's testdata verification for backends that return # entries in a different order than the test expects. It allows us # to at least get some verification. # if test "$BACKEND" = null ; then # Do not output anything to compare for null backend : else case $1,$2, in -S*,$BACKEND,*) grep -v '^#' | if (perl -e 0) >/dev/null 2>&1 ; then # There is a Perl in $PATH perl -ne ' if (/^ /) { $entry[-1] .= $_; } elsif (/^\r?$/) { &entry; } else { push @entry, $_; } sub entry { $dn = shift(@entry); push @out, join "", ($dn || ""), sort @entry; @entry = (); } END { &entry; print join "\n", sort @out; }' else sort fi ;; *) grep -v '^#' ;; esac fi