[PATCH] date: fix incorrect year in dates of the form [[[MM]DD]hh]mm
Ron Yorston
rmy at tigress.co.uk
Mon Jan 20 20:53:35 UTC 2014
Since commit 688a7e3f dates of the form [[[MM]DD]hh]mm have the
wrong year:
$ ./busybox date -d 10101010
Fri Oct 10 10:10:00 GMT 10102910
Signed-off-by: Ron Yorston <rmy at tigress.co.uk>
---
libbb/time.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/libbb/time.c b/libbb/time.c
index ea2f72e..5aa5aeb 100644
--- a/libbb/time.c
+++ b/libbb/time.c
@@ -12,6 +12,7 @@ void FAST_FUNC parse_datestr(const char *date_str, struct tm *ptm)
{
char end = '\0';
const char *last_colon = strrchr(date_str, ':');
+ unsigned year;
if (last_colon != NULL) {
/* Parse input and assign appropriately to ptm */
@@ -69,16 +70,16 @@ void FAST_FUNC parse_datestr(const char *date_str, struct tm *ptm)
}
} else
/* yyyy-mm-dd HH */
- if (sscanf(date_str, "%u-%u-%u %u%c", &ptm->tm_year,
+ if (sscanf(date_str, "%u-%u-%u %u%c", &year,
&ptm->tm_mon, &ptm->tm_mday,
&ptm->tm_hour,
&end) >= 4
/* yyyy-mm-dd */
- || sscanf(date_str, "%u-%u-%u%c", &ptm->tm_year,
+ || sscanf(date_str, "%u-%u-%u%c", &year,
&ptm->tm_mon, &ptm->tm_mday,
&end) >= 3
) {
- ptm->tm_year -= 1900; /* Adjust years */
+ ptm->tm_year = year - 1900; /* Adjust years */
ptm->tm_mon -= 1; /* Adjust month from 1-12 to 0-11 */
} else
if (date_str[0] == '@') {
--
1.8.4.2
More information about the busybox
mailing list