date: restore hadling of MMDDhhmm[[CC]YY][.ss] date format
function old new delta date_main 698 889 +191 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
@@ -123,8 +123,33 @@ int date_main(int argc UNUSED_PARAM, char **argv)
|
||||
if (!(opt & (OPT_SET | OPT_DATE))) {
|
||||
opt |= OPT_SET;
|
||||
date_str = argv[0]; /* can be NULL */
|
||||
if (date_str)
|
||||
if (date_str) {
|
||||
#if ENABLE_DESKTOP
|
||||
int len = strspn(date_str, "0123456789");
|
||||
if (date_str[len] == '\0'
|
||||
|| (date_str[len] == '.'
|
||||
&& isdigit(date_str[len+1])
|
||||
&& isdigit(date_str[len+2])
|
||||
&& date_str[len+3] == '\0'
|
||||
)
|
||||
) {
|
||||
/* Dreaded [MMDDhhmm[[CC]YY][.ss]] format!
|
||||
* It does not match -d or -s format.
|
||||
* Some users actually do use it.
|
||||
*/
|
||||
len -= 8;
|
||||
if (len < 0 || len > 4 || (len & 1))
|
||||
bb_error_msg_and_die(bb_msg_invalid_date, date_str);
|
||||
if (len != 0) { /* move YY or CCYY to front */
|
||||
char buf[4];
|
||||
memcpy(buf, date_str + 8, len);
|
||||
memmove(date_str + len, date_str, 8);
|
||||
memcpy(date_str, buf, len);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
argv++;
|
||||
}
|
||||
}
|
||||
if (*argv)
|
||||
bb_show_usage();
|
||||
|
Reference in New Issue
Block a user