On Wed, Jan 01, 2020 at 09:39:18PM -0800, Michael Forney wrote: > On 2020-01-01, Richard Ipsum <richardip...@vx21.xyz> wrote: [snip] > > I think the following diff should cover those cases as well: > > diff --git a/sort.c b/sort.c > index a51997f..fbb1abf 100644 > --- a/sort.c > +++ b/sort.c > @@ -385,7 +385,8 @@ main(int argc, char *argv[]) > /* -b shall only apply to custom key definitions */ > if (TAILQ_EMPTY(&kdhead) && global_flags) > addkeydef("1", global_flags & ~(MOD_STARTB | MOD_ENDB)); > - addkeydef("1", global_flags & MOD_R); > + if (TAILQ_EMPTY(&kdhead) || (!Cflag && !cflag)) > + addkeydef("1", global_flags & MOD_R); > > if (!argc) { > if (Cflag || cflag) { > > I'm still not convinced of the value of this tie-breaker keydef, so > another option might be to just only add it if no -k flag is > specified: > > diff --git a/sort.c b/sort.c > index a51997f..adf1d6d 100644 > --- a/sort.c > +++ b/sort.c > @@ -383,9 +383,8 @@ main(int argc, char *argv[]) > } ARGEND > > /* -b shall only apply to custom key definitions */ > - if (TAILQ_EMPTY(&kdhead) && global_flags) > + if (TAILQ_EMPTY(&kdhead)) > addkeydef("1", global_flags & ~(MOD_STARTB | MOD_ENDB)); > - addkeydef("1", global_flags & MOD_R); > > if (!argc) { > if (Cflag || cflag) { > > I think I will apply the first diff for now to fix the bug, and > perhaps propose the second as a patch to the list, since it involves > an unrelated behavior change (order of equal lines according to > options passed to sort).
First diff looks good, as does the second, personally I don't feel too strongly either way about the presence of the tie-breaker, I think other sorts do something like it, so for this reason it may be worth keeping it. Thanks, Richard