svn commit: r327476 - head/sbin/shutdown

Ian Lepore ian at freebsd.org
Mon Jan 1 22:40:40 UTC 2018


On Mon, 2018-01-01 at 22:33 +0000, Eitan Adler wrote:
> Author: eadler
> Date: Mon Jan  1 22:33:57 2018
> New Revision: 327476
> URL: https://svnweb.freebsd.org/changeset/base/327476
> 
> Log:
>   shutdown: Assume absolute time is in the future
> 
[...]
> Modified: head/sbin/shutdown/shutdown.c
> ==============================================================================
> --- head/sbin/shutdown/shutdown.c	Mon Jan  1 22:31:52 2018	(r327475)
> +++ head/sbin/shutdown/shutdown.c	Mon Jan  1 22:33:57 2018	(r327476)
> @@ -431,7 +431,7 @@ getoffset(char *timearg)
>  	struct tm *lt;
>  	char *p;
>  	time_t now;
> -	int this_year;
> +	int this_year, maybe_today;
>  	char *timeunit;
>  
>  	(void)time(&now);
> @@ -503,6 +503,7 @@ getoffset(char *timearg)
>  			badtime();
>  		/* FALLTHROUGH */
>  	case 6:
> +		maybe_today = 0;
>  		lt->tm_mday = ATOI2(timearg);
>  		if (lt->tm_mday < 1 || lt->tm_mday > 31)
>  			badtime();
> @@ -517,8 +518,23 @@ getoffset(char *timearg)
>  		lt->tm_sec = 0;
>  		if ((shuttime = mktime(lt)) == -1)
>  			badtime();
> -		if ((offset = shuttime - now) < 0)
> -			errx(1, "that time is already past.");
> +
> +		if ((offset = shuttime - now) < 0) {
> +			if (!maybe_today)
> +				errx(1, "that time is already past.");
> +
> +			/*
> +			 * If the user only gave a time, assume that
> +			 * any time earlier than the current time
> +			 * was intended to be that time tomorrow.
> +			 */
> +			lt->tm_mday++;
> +			if ((shuttime = mktime(lt)) == -1)
> +				badtime();
> +			if ((offset = shuttime - now) < 0) {
> +				errx(1, "tomorrow is before today?");
> +			}
> +		}
>  		break;
>  	default:
>  		badtime();
> 

Where does maybe_today ever get set to non-zero?

-- Ian


More information about the svn-src-head mailing list