simplify stristart()
[libav.git] / libavformat / cutils.c
index bde1c1d..eeeef51 100644 (file)
@@ -44,23 +44,15 @@ int strstart(const char *str, const char *pfx, const char **ptr)
  * prefix.
  *
  * @param str input string
- * @param val prefix to test
+ * @param pfx prefix to test
  * @param ptr updated after the prefix in str in there is a match
  * @return TRUE if there is a match */
-int stristart(const char *str, const char *val, const char **ptr)
+int stristart(const char *str, const char *pfx, const char **ptr)
 {
-    const char *p, *q;
-    p = str;
-    q = val;
-    while (*q != '\0') {
-        if (toupper(*(const unsigned char *)p) != toupper(*(const unsigned char *)q))
-            return 0;
-        p++;
-        q++;
-    }
-    if (ptr)
-        *ptr = p;
-    return 1;
+    while (*pfx && toupper((unsigned)*pfx++) == toupper((unsigned)*str++));
+    if (!*pfx && ptr)
+        *ptr = str;
+    return !*pfx;
 }
 
 /**
@@ -75,26 +67,18 @@ int stristart(const char *str, const char *val, const char **ptr)
  */
 void pstrcpy(char *buf, int buf_size, const char *str)
 {
-    int c;
-    char *q = buf;
-
     if (buf_size <= 0)
         return;
 
-    for(;;) {
-        c = *str++;
-        if (c == 0 || q >= buf + buf_size - 1)
-            break;
-        *q++ = c;
-    }
-    *q = '\0';
+    while (buf_size-- > 1 && *str)
+        *buf++ = *str++;
+    *buf = 0;
 }
 
 /* strcat and truncate. */
 char *pstrcat(char *buf, int buf_size, const char *s)
 {
-    int len;
-    len = strlen(buf);
+    int len = strlen(buf);
     if (len < buf_size)
         pstrcpy(buf + len, buf_size - len, s);
     return buf;