Ok, I'll drop the diff. I misunderstood our previous conversation. Sorry for the stir it caused.
On Mon, 2021-08-16 at 12:31 +0200, Ingo Schwarze wrote: > Hi Martijn, > > Martijn van Duren wrote on Sun, Aug 15, 2021 at 11:40:49PM +0200: > > To quote schwarze in the jot mutually exclusive thread: > > On Fri, 2021-08-13 at 11:48 +0200, Ingo Schwarze wrote: > > > > In this case, even though this is not a POSIX command, POSIX utility > > > convention 12.2.11 is pertinent: > > > > > > The order of different options relative to one another should not > > > matter, unless the options are documented as mutually-exclusive > > > and such an option is documented to override any incompatible > > > options preceding it. If an option that has option-arguments is > > > repeated, the option and option-argument combinations should be > > > interpreted in the order specified on the command line. > > > This is also violated by cal(1) > > You seem to misunderstand. > > The cal(1) utility does *not* violate this syntax guideline. > It neither has options where the order on the command line matters > nor options that take arguments, so this guideline simply makes > no recommendation whatsoever for cal(1). > > > (and maybe others, but this one came > > up first). Diff below should fix this. > > I think the diff is not OK. > > It changes established and documented behaviour of a program, and > you provide no explanation why the new behaviour would be more > useful than the old one. Also, considering whether this might or > might not cause compatibility issues would would be required. > > Compatibility issues may be unlikely because it merely defines new > behaviour for something that is now a syntax error. That alone does > not make the change useful, though. > > The change itself seems illogical and confusing to me. If a user > says "i want days numbered consecutively from Jan 1 *and* week > numbers displayed in addition", why should the first half of the > request be ignored? And worse, *silently* ignored? Both halfs of > the request are unrelated to each other, so both one overriding > the other and their effect depending on their order would seem > surprising and hardly useful. > > Also, allowing additional syntax makes the user interface more > complex, which should not be done without a very good reason. > > Finally, even *if* we would decide to make the UI more complex and > allow -jw and -wj (i see no pressing need because -j does not seem > all that useful in the first place, and needing both at the same > time would be an even less common task), then the logical behaviour > would be to simply honour both at the the same time. So your change > not only makes the UI more complex without a good reason. It also > blocks syntax space that could, in the future, possibly be assigned > to more useful functionality. > > I admit there are no strong logical reasons why these two options > have to mutually exclusive. That's seems merely an implementation > choice to keep the command and documentation simpler. Nothing is > wrong with having some (not usually needed) functionality unimplemented > in a program. In this case, this is even properly documented. > > To summarize, i oppose the diff as a whole, and i see not parts in > it that could be salvaged. > > Yours, > Ingo > > > > Index: cal.1 > > =================================================================== > > RCS file: /cvs/src/usr.bin/cal/cal.1,v > > retrieving revision 1.31 > > diff -u -p -r1.31 cal.1 > > --- cal.1 27 Nov 2016 10:37:22 -0000 1.31 > > +++ cal.1 15 Aug 2021 21:39:28 -0000 > > @@ -53,11 +53,8 @@ The options are as follows: > > .Bl -tag -width Ds > > .It Fl j > > Display Julian dates (days one-based, numbered from January 1). > > -The options > > -.Fl j > > -and > > -.Fl w > > -are mutually exclusive. > > +Overrides earlier > > +.Fl w . > > .It Fl m > > Display weeks starting on Monday instead of Sunday. > > .It Fl w > > @@ -65,11 +62,8 @@ Display week numbers in the month displa > > If > > .Fl m > > is specified the ISO week format is assumed. > > -The options > > -.Fl j > > -and > > -.Fl w > > -are mutually exclusive. > > +Overrides earlier > > +.Fl j . > > .It Fl y > > Display a calendar for the current year. > > .El > > Index: cal.c > > =================================================================== > > RCS file: /cvs/src/usr.bin/cal/cal.c,v > > retrieving revision 1.30 > > diff -u -p -r1.30 cal.c > > --- cal.c 9 Oct 2015 01:37:06 -0000 1.30 > > +++ cal.c 15 Aug 2021 21:39:28 -0000 > > @@ -158,12 +158,14 @@ main(int argc, char *argv[]) > > switch(ch) { > > case 'j': > > julian = 1; > > + wflag = 0; > > break; > > case 'm': > > mflag = 1; > > break; > > case 'w': > > wflag = 1; > > + julian = 0; > > break; > > case 'y': > > yflag = 1; > > @@ -174,9 +176,6 @@ main(int argc, char *argv[]) > > } > > argc -= optind; > > argv += optind; > > - > > - if (julian && wflag) > > - usage(); > > > > day_headings = DAY_HEADINGS_S; > > sep1752 = sep1752s;