I suspect this breaks an usage case which is not documented.

People may be doing leave +1 to mean "1 minutes".

% leave +1
Alarm set for Tue Jan 21 19:23. (pid 55602)
% date
Tue Jan 21 19:22:32 MST 2020
% Just one more minute!

1) it isn't documented that + can take a smaller number
2) it will be hard to train people to use +0001

Ted Unangst <[email protected]> wrote:

> In testing leave, I found it accepts "12" and will alarm at 00:12, which is
> probably not desirable. this check thats the specified time has 4 digits so
> that the hour/minute math works properly.
> 
> 
> Index: leave.c
> ===================================================================
> RCS file: /home/cvs/src/usr.bin/leave/leave.c,v
> retrieving revision 1.19
> diff -u -p -r1.19 leave.c
> --- leave.c   10 Feb 2018 00:00:47 -0000      1.19
> +++ leave.c   22 Jan 2020 02:13:03 -0000
> @@ -35,6 +35,7 @@
>  #include <err.h>
>  #include <stdio.h>
>  #include <stdlib.h>
> +#include <string.h>
>  #include <unistd.h>
>  
>  static __dead void   usage(void);
> @@ -83,6 +84,9 @@ main(int argc, char *argv[])
>               plusnow = 1;
>               ++cp;
>       }
> +
> +     if (strlen(cp) != 4)
> +             usage();
>  
>       for (hours = 0; (c = *cp) && c != '\n'; ++cp) {
>               if (!isdigit((unsigned char)c))
> 

Reply via email to