diff mbox

Greater resolution in test -nt / test -ot

Message ID 9903b02c-041f-38b6-e510-06b9f8744fbb@gmail.com (mailing list archive)
State Changes Requested
Delegated to: Herbert Xu
Headers show

Commit Message

Petr Skočík June 22, 2017, 8:30 a.m. UTC
Hi,

would you be willing to pull something like this?

 static int
@@ -488,7 +490,9 @@ olderf (const char *f1, const char *f2)

 	return (stat (f1, &b1) == 0 &&
 		stat (f2, &b2) == 0 &&
-		b1.st_mtime < b2.st_mtime);
+		(b1.st_mtim.tv_sec < b2.st_mtim.tv_sec ||
+		 (b1.st_mtim.tv_sec == b2.st_mtim.tv_sec && (b1.st_mtim.tv_nsec <
b2.st_mtim.tv_nsec )))
+	);
 }

 static int

I could use greater resolution in `test -nt` / `test -ot`, and st_mtim
field is standardized under POSIX.1-2008 (or so stat(2) says).

Best Regards,
Petr Skocik
--
To unsubscribe from this list: send the line "unsubscribe dash" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Herbert Xu March 6, 2018, 9:19 a.m. UTC | #1
On Thu, Jun 22, 2017 at 10:30:02AM +0200, Petr Skočík wrote:
> Hi,
> 
> would you be willing to pull something like this?
> 
>  static int
> @@ -488,7 +490,9 @@ olderf (const char *f1, const char *f2)
> 
>  	return (stat (f1, &b1) == 0 &&
>  		stat (f2, &b2) == 0 &&
> -		b1.st_mtime < b2.st_mtime);
> +		(b1.st_mtim.tv_sec < b2.st_mtim.tv_sec ||
> +		 (b1.st_mtim.tv_sec == b2.st_mtim.tv_sec && (b1.st_mtim.tv_nsec <
> b2.st_mtim.tv_nsec )))
> +	);
>  }
> 
>  static int
> 
> I could use greater resolution in `test -nt` / `test -ot`, and st_mtim
> field is standardized under POSIX.1-2008 (or so stat(2) says).

Sure.  But your patch is corrupted.

Cheers,
diff mbox

Patch

diff --git a/src/bltin/test.c b/src/bltin/test.c
index 58c05fe..7ea02f2 100644
--- a/src/bltin/test.c
+++ b/src/bltin/test.c
@@ -478,7 +478,9 @@  newerf (const char *f1, const char *f2)

 	return (stat (f1, &b1) == 0 &&
 		stat (f2, &b2) == 0 &&
-		b1.st_mtime > b2.st_mtime);
+		( b1.st_mtim.tv_sec > b2.st_mtim.tv_sec ||
+		 (b1.st_mtim.tv_sec == b2.st_mtim.tv_sec && (b1.st_mtim.tv_nsec >
b2.st_mtim.tv_nsec )))
+	);
 }