Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 22 May 2015 07:27:08 +0300
From:      Andrey Chernov <ache@freebsd.org>
To:        Xin LI <delphij@FreeBSD.org>, src-committers@freebsd.org,  svn-src-all@freebsd.org, svn-src-stable@freebsd.org,  svn-src-stable-10@freebsd.org
Subject:   Re: svn commit: r283258 - stable/10/bin/date
Message-ID:  <555EB01C.6020805@freebsd.org>
In-Reply-To: <201505211859.t4LIxCFx070119@svn.freebsd.org>
References:  <201505211859.t4LIxCFx070119@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 21.05.2015 21:59, Xin LI wrote:
> Author: delphij
> Date: Thu May 21 18:59:11 2015
> New Revision: 283258
> URL: https://svnweb.freebsd.org/changeset/base/283258
> 
> Log:
>   MFC r282608:
>   
>   date(1): Make -r behave like GNU's version when the option can not be
>   interpreted as a number, which checks the file's modification time and
>   use that as the date/time value.
>   
>   This improves compatibility with GNU coreutils's version of date(1).

This is ambiguous. What about, say, file '222'? Doing strtoq() first
makes such files not handled and doing stat() first (if the file exists
by chance) makes such dates not handled. GNU date always uses
-r/--reference for files only. Perhaps it will be better to just add
long option --reference for files.

> 
> Modified:
>   stable/10/bin/date/date.1
>   stable/10/bin/date/date.c
> Directory Properties:
>   stable/10/   (props changed)
> 
> Modified: stable/10/bin/date/date.1
> ==============================================================================
> --- stable/10/bin/date/date.1	Thu May 21 18:29:36 2015	(r283257)
> +++ stable/10/bin/date/date.1	Thu May 21 18:59:11 2015	(r283258)
> @@ -32,7 +32,7 @@
>  .\"     @(#)date.1	8.3 (Berkeley) 4/28/95
>  .\" $FreeBSD$
>  .\"
> -.Dd April 26, 2014
> +.Dd May 7, 2015
>  .Dt DATE 1
>  .Os
>  .Sh NAME
> @@ -41,7 +41,7 @@
>  .Sh SYNOPSIS
>  .Nm
>  .Op Fl jRu
> -.Op Fl r Ar seconds
> +.Op Fl r Ar seconds | Ar filename
>  .Oo
>  .Fl v
>  .Sm off
> @@ -150,6 +150,9 @@ is the number of seconds since the Epoch
>  see
>  .Xr time 3 ) ,
>  and can be specified in decimal, octal, or hex.
> +.It Fl r Ar filename
> +Print the date and time of the last modification of
> +.Ar filename .
>  .It Fl t Ar minutes_west
>  Set the system's value for minutes west of
>  .Tn GMT .
> 
> Modified: stable/10/bin/date/date.c
> ==============================================================================
> --- stable/10/bin/date/date.c	Thu May 21 18:29:36 2015	(r283257)
> +++ stable/10/bin/date/date.c	Thu May 21 18:59:11 2015	(r283258)
> @@ -44,6 +44,7 @@ __FBSDID("$FreeBSD$");
>  
>  #include <sys/param.h>
>  #include <sys/time.h>
> +#include <sys/stat.h>
>  
>  #include <ctype.h>
>  #include <err.h>
> @@ -85,6 +86,7 @@ main(int argc, char *argv[])
>  	struct vary *v;
>  	const struct vary *badv;
>  	struct tm lt;
> +	struct stat sb;
>  
>  	v = NULL;
>  	fmt = NULL;
> @@ -116,8 +118,12 @@ main(int argc, char *argv[])
>  		case 'r':		/* user specified seconds */
>  			rflag = 1;
>  			tval = strtoq(optarg, &tmp, 0);
> -			if (*tmp != 0)
> -				usage();
> +			if (*tmp != 0) {
> +				if (stat(optarg, &sb) == 0)
> +					tval = sb.st_mtim.tv_sec;
> +				else
> +					usage();
> +			}
>  			break;
>  		case 't':		/* minutes west of UTC */
>  					/* error check; don't allow "PST" */
> 


-- 
http://ache.vniz.net/



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?555EB01C.6020805>