summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2015-12-11 12:04:41 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2016-01-07 08:45:12 +0100
commit6eb5d78419299d01f500140dd9400a68725e142b (patch)
tree08740da960aa8f512689a3924c986af6af37cf4d
parenta9e7e68279de3aec38b038211a15a80cfc612c4e (diff)
downloadbarebox-6eb5d78419299d01f500140dd9400a68725e142b.tar.gz
barebox-6eb5d78419299d01f500140dd9400a68725e142b.tar.xz
hwclock command: use format like the Linux tool does
Print three-letter abbreviations of the days and months. With a fixup by Andrey Smirnov: | common/date.c: Fix off-by-one error | | As per http://pubs.opengroup.org/onlinepubs/007908775/xsh/time.h.html | 'tm_wday' is zero indexed with zero representing Sunday, this is also | corroborated by the code in rtc_time_to_tm() which used 4 to represent | Thursday. Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--commands/hwclock.c4
-rw-r--r--common/date.c18
-rw-r--r--include/rtc.h2
3 files changed, 21 insertions, 3 deletions
diff --git a/commands/hwclock.c b/commands/hwclock.c
index a1f5293122..49569a99c2 100644
--- a/commands/hwclock.c
+++ b/commands/hwclock.c
@@ -138,9 +138,7 @@ static int do_hwclock(int argc, char *argv[])
snprintf(t, 12, "%lu", time);
setenv(env_name, t);
} else {
- printf("%02d:%02d:%02d %02d-%02d-%04d\n",
- tm.tm_hour, tm.tm_min, tm.tm_sec,
- tm.tm_mday, tm.tm_mon + 1, tm.tm_year + 1900);
+ printf("%s\n", time_str(&tm));
}
return 0;
diff --git a/common/date.c b/common/date.c
index 6b6b7ab495..129192e232 100644
--- a/common/date.c
+++ b/common/date.c
@@ -148,3 +148,21 @@ mktime (unsigned int year, unsigned int mon,
)*60 + min /* now have minutes */
)*60 + sec; /* finally seconds */
}
+
+const char *time_str(struct rtc_time *tm)
+{
+ const char *weekdays[] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
+ const char *months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug",
+ "Sep", "Oct", "Nov", "Dec" };
+ static char buf[128];
+
+ sprintf(buf, "%s %02d %s %4d %02d:%02d:%02d",
+ weekdays[tm->tm_wday],
+ tm->tm_mday,
+ months[tm->tm_mon],
+ tm->tm_year + 1900,
+ tm->tm_hour,
+ tm->tm_min,
+ tm->tm_sec);
+ return buf;
+}
diff --git a/include/rtc.h b/include/rtc.h
index e2414fb7b1..600dc46c41 100644
--- a/include/rtc.h
+++ b/include/rtc.h
@@ -55,4 +55,6 @@ unsigned long mktime (unsigned int, unsigned int, unsigned int,
extern struct rtc_device *rtc_lookup(const char *name);
+const char *time_str(struct rtc_time *tm);
+
#endif /* _RTC_H_ */