diff --git a/newlib/libc/time/strptime.c b/newlib/libc/time/strptime.c index 12b2ef4695de..5e64af262516 100644 --- a/newlib/libc/time/strptime.c +++ b/newlib/libc/time/strptime.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999 Kungliga Tekniska H?gskolan + * Copyright (c) 1999 Kungliga Tekniska Högskolan * (Royal Institute of Technology, Stockholm, Sweden). * All rights reserved. * @@ -298,6 +298,14 @@ strptime_l (const char *buf, const char *format, struct tm *timeptr, } else timeptr->tm_hour += 12; break; + case 'q' : /* quarter year - GNU extension */ + ret = strtol_l (buf, &s, 10, locale); + if (s == buf) + return NULL; + timeptr->tm_mon = (ret - 1)*3; + buf = s; + ymd |= SET_MON; + break; case 'r' : /* %I:%M:%S %p */ s = strptime_l (buf, _ctloc (ampm_fmt), timeptr, locale); if (s == NULL) @@ -365,6 +373,13 @@ strptime_l (const char *buf, const char *format, struct tm *timeptr, buf = s; ymd |= SET_WDAY; break; + case 'v' : /* %d-%b-%Y - OSX/Ruby extension VMS/Oracle date */ + s = strptime_l (buf, "%d-%b-%Y", timeptr, locale); + if (s == NULL || s == buf) + return NULL; + buf = s; + ymd |= SET_YMD; + break; case 'U' : ret = strtol_l (buf, &s, 10, locale); if (s == buf) @@ -402,6 +417,7 @@ strptime_l (const char *buf, const char *format, struct tm *timeptr, return NULL; buf = s; break; + case 'i' : /* Non-POSIX extension. */ case 'y' : ret = strtol_l (buf, &s, 10, locale); if (s == buf)