Patch from David Daney:
It seems that date -s MMDDHHMMYYYY.ss will ignore the .ss part. This patch tries to fix the problem. David Daney.
This commit is contained in:
@@ -47,6 +47,7 @@
|
|||||||
static struct tm *date_conv_time(struct tm *tm_time, const char *t_string)
|
static struct tm *date_conv_time(struct tm *tm_time, const char *t_string)
|
||||||
{
|
{
|
||||||
int nr;
|
int nr;
|
||||||
|
char *cp;
|
||||||
|
|
||||||
nr = sscanf(t_string, "%2d%2d%2d%2d%d", &(tm_time->tm_mon),
|
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),
|
&(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);
|
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? */
|
/* correct for century - minor Y2K problem here? */
|
||||||
if (tm_time->tm_year >= 1900) {
|
if (tm_time->tm_year >= 1900) {
|
||||||
tm_time->tm_year -= 1900;
|
tm_time->tm_year -= 1900;
|
||||||
|
Reference in New Issue
Block a user