cvs commit: src/sbin/hammer cache.c cmd_show.c

YONETANI Tomokazu qhwt+dfly at les.ath.cx
Fri Jan 18 03:17:18 PST 2008


On Wed, Jan 16, 2008 at 09:14:49PM -0800, Matthew Dillon wrote:
> dillon      2008/01/16 21:14:49 PST
> 
> DragonFly src repository
> 
>   Modified files:
>     sbin/hammer          cache.c cmd_show.c 
>   Log:
>   HAMMER utilities:

fix/modification to `stamp' command:
  * bug: don't clobber the time we just calculated
  * bug: actual (year,month) are (tm_year+1900,tm_mon+1), so we need to
	 add first, overwrite, then subtract.

  * feature: if I say `hammer stamp YYYYmmdd', I almost always assume
	it's the same thing as `hammer stamp YYYYmmdd:000000', but that
	may be different from what others think...

Cheers.

diff --git a/sbin/hammer/hammer.c b/sbin/hammer/hammer.c
index d1da775..c2e9b67 100644
--- a/sbin/hammer/hammer.c
+++ b/sbin/hammer/hammer.c
@@ -158,17 +158,20 @@ hammer_parsetime(u_int64_t *tidp, const char *timestr)
 	} else {
 		localtime_r(&t, &tm);
 		seconds = (double)tm.tm_sec;
-		tm.tm_year -= 1900;
-		tm.tm_mon -= 1;
+		tm.tm_year += 1900;
+		tm.tm_mon += 1;
 		n = sscanf(timestr, "%4d%2d%2d:%2d%2d%lf",
 			   &tm.tm_year, &tm.tm_mon, &tm.tm_mday,
 			   &tm.tm_hour, &tm.tm_min, &seconds);
-		tm.tm_mon += 1;
-		tm.tm_year += 1900;
-		tm.tm_sec = (int)seconds;
+		tm.tm_mon -= 1;
+		tm.tm_year -= 1900;
+		/* if [:hhmmss] is omitted, assume :000000.0 */
+		if (n < 4)
+			tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
+		else
+			tm.tm_sec = (int)seconds;
 		t = mktime(&tm);
 	}
-	localtime_r(&t, &tm);
 	*tidp = (u_int64_t)t * 1000000000 + 
 		(seconds - (int)seconds) * 1000000000;
 }

-- 
YONETANI Tomokazu





More information about the Commits mailing list