On Mon, Oct 02, 2023 at 04:35:47PM +0800, Qian Yun wrote:
> In HyperDoc, when using search functionality, for example:
> click "Browse" -> type "Integer" in search bar -> click "Reference"
> The result page is sorting matching count by only 1 digit:
>
> The underlying shell command is:
>
> $FRICAS/lib/hthits Integer $FRICAS/share/hypertex/pages/ht.db | sort -r
> -n -k 1.22
AFAICS this is "off by one" error, sort command should be
sort -r -n -k 1.23
<snip>
> This can be fixed by following patch.
>
> - Qian
>
>
> diff --git a/src/hyper/htsearch b/src/hyper/htsearch
> index 8958c89b..24e67d38 100755
> --- a/src/hyper/htsearch
> +++ b/src/hyper/htsearch
> @@ -8,5 +8,5 @@ if test -z "$1"
> then
> echo ""|$htbindir/presea use_case=1 -
> else
> -( cd $htpagedir; $htbindir/hthits "$1" $htpagedir/ht.db |sort -r -n -k 1.22
> |$htbindir/presea use_case=0 expr="$1" -)
> +( cd $htpagedir; $htbindir/hthits "$1" $htpagedir/ht.db |sort -r -n -t { -k
> 2 |$htbindir/presea use_case=0 expr="$1" -)
> fi
You propose to use 'sort -r -n -t { -k 2'. Assuming that this works as intended it shoud be independent of count of characters, which is
good. However, Posix contains the following definition of '-t':
-t char
Use char as the field separator character; char shall not be
considered to be part of a field (although it can be included
in a sort key). Each occurrence of char shall be significant
The phrase "although it can be included in a sort key" suggests that
some implementations of 'sort' include separator char as part of the
field, this would defeat the purpose. Given the spec using counts
looks safer.
--
Waldek Hebisch