simplify stristart()
[libav.git] / libavformat / cutils.c
index 7e76d3b..eeeef51 100644 (file)
@@ -2,18 +2,20 @@
  * Various simple utilities for ffmpeg system
  * Copyright (c) 2000, 2001, 2002 Fabrice Bellard
  *
- * This library is free software; you can redistribute it and/or
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
  * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
  *
- * This library is distributed in the hope that it will be useful,
+ * FFmpeg is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
+ * License along with FFmpeg; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 #include "avformat.h"
  * set to the next character in 'str' after the 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 strstart(const char *str, const char *val, const char **ptr)
+int strstart(const char *str, const char *pfx, const char **ptr)
 {
-    const char *p, *q;
-    p = str;
-    q = val;
-    while (*q != '\0') {
-        if (*p != *q)
-            return 0;
-        p++;
-        q++;
-    }
-    if (ptr)
-        *ptr = p;
-    return 1;
+    while (*pfx && *pfx++ == *str++);
+    if (!*pfx && ptr)
+        *ptr = str;
+    return !*pfx;
 }
 
 /**
@@ -50,23 +44,15 @@ int strstart(const char *str, const char *val, 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;
 }
 
 /**
@@ -81,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;