Patch from David Daney:
authorEric Andersen <andersen@codepoet.org>
Mon, 11 Oct 2004 20:52:16 +0000 (20:52 -0000)
committerEric Andersen <andersen@codepoet.org>
Mon, 11 Oct 2004 20:52:16 +0000 (20:52 -0000)
It seems that date  -s MMDDHHMMYYYY.ss

will ignore the .ss part.  This patch tries to fix the problem.

David Daney.

coreutils/date.c

index 26251c37ba5cebe613b8fe6dcd2566295bf4d97b..3608df69fceceed08e6967ef16bd97c659e0e8b1 100644 (file)
@@ -47,6 +47,7 @@
 static struct tm *date_conv_time(struct tm *tm_time, const char *t_string)
 {
        int nr;
+       char *cp;
 
        nr = sscanf(t_string, "%2d%2d%2d%2d%d", &(tm_time->tm_mon),
                                &(tm_time->tm_mday), &(tm_time->tm_hour), &(tm_time->tm_min),
@@ -56,6 +57,14 @@ static struct tm *date_conv_time(struct tm *tm_time, const char *t_string)
                bb_error_msg_and_die(bb_msg_invalid_date, t_string);
        }
 
+       cp = strchr(t_string, '.');
+       if (cp) {
+               nr = sscanf(cp + 1, "%2d", &(tm_time->tm_sec));
+               if (nr != 1) {
+                       bb_error_msg_and_die(bb_msg_invalid_date, t_string);
+               }
+       }
+
        /* correct for century  - minor Y2K problem here? */
        if (tm_time->tm_year >= 1900) {
                tm_time->tm_year -= 1900;