Merge commit '108f2f381acb93827fb4add0517eeae859afa3bf'
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 7 Apr 2015 17:58:31 +0000 (19:58 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 7 Apr 2015 18:01:36 +0000 (20:01 +0200)
* commit '108f2f381acb93827fb4add0517eeae859afa3bf':
  parseutils: Extend small_strptime to be used in avformat

Conflicts:
libavutil/parseutils.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavutil/parseutils.c

@@@ -465,68 -404,69 +465,71 @@@ char *av_small_strptime(const char *p, 
  {
      int c, val;
  
-     for(;;) {
-         /* consume time string until a non whitespace char is found */
-         while (av_isspace(*fmt)) {
-             while (av_isspace(*p))
-                 p++;
-             fmt++;
+     while((c = *fmt++)) {
+         if (c != '%') {
+             if (av_isspace(c))
+                 for (; *p && av_isspace(*p); p++);
+             else if (*p != c)
+                 return NULL;
+             else p++;
+             continue;
          }
          c = *fmt++;
-         if (c == '\0') {
-             return (char *)p;
-         } else if (c == '%') {
-             c = *fmt++;
-             switch(c) {
-             case 'H':
-             case 'J':
-                 val = date_get_num(&p, 0, c == 'H' ? 23 : INT_MAX, 2);
-                 if (val == -1)
-                     return NULL;
-                 dt->tm_hour = val;
-                 break;
-             case 'M':
-                 val = date_get_num(&p, 0, 59, 2);
-                 if (val == -1)
-                     return NULL;
-                 dt->tm_min = val;
-                 break;
-             case 'S':
-                 val = date_get_num(&p, 0, 59, 2);
-                 if (val == -1)
-                     return NULL;
-                 dt->tm_sec = val;
-                 break;
-             case 'Y':
-                 val = date_get_num(&p, 0, 9999, 4);
-                 if (val == -1)
-                     return NULL;
-                 dt->tm_year = val - 1900;
-                 break;
-             case 'm':
-                 val = date_get_num(&p, 1, 12, 2);
-                 if (val == -1)
-                     return NULL;
-                 dt->tm_mon = val - 1;
-                 break;
-             case 'd':
-                 val = date_get_num(&p, 1, 31, 2);
-                 if (val == -1)
-                     return NULL;
-                 dt->tm_mday = val;
-                 break;
-             case '%':
-                 goto match;
-             default:
+         switch(c) {
+         case 'H':
 -            val = date_get_num(&p, 0, 23, 2);
++        case 'J':
++            val = date_get_num(&p, 0, c == 'H' ? 23 : INT_MAX, 2);
++
+             if (val == -1)
                  return NULL;
-             }
-         } else {
-         match:
-             if (c != *p)
+             dt->tm_hour = val;
+             break;
+         case 'M':
+             val = date_get_num(&p, 0, 59, 2);
+             if (val == -1)
                  return NULL;
-             p++;
+             dt->tm_min = val;
+             break;
+         case 'S':
+             val = date_get_num(&p, 0, 59, 2);
+             if (val == -1)
+                 return NULL;
+             dt->tm_sec = val;
+             break;
+         case 'Y':
+             val = date_get_num(&p, 0, 9999, 4);
+             if (val == -1)
+                 return NULL;
+             dt->tm_year = val - 1900;
+             break;
+         case 'm':
+             val = date_get_num(&p, 1, 12, 2);
+             if (val == -1)
+                 return NULL;
+             dt->tm_mon = val - 1;
+             break;
+         case 'd':
+             val = date_get_num(&p, 1, 31, 2);
+             if (val == -1)
+                 return NULL;
+             dt->tm_mday = val;
+             break;
+         case 'T':
 -            p = small_strptime(p, "%H:%M:%S", dt);
++            p = av_small_strptime(p, "%H:%M:%S", dt);
+             if (!p)
+                 return NULL;
+             break;
+         case '%':
+             if (*p++ != '%')
+                 return NULL;
+             break;
+         default:
+             return NULL;
          }
      }
 -    return p;
++    return (char*)p;
  }
  
  time_t av_timegm(struct tm *tm)