]> mj.ucw.cz Git - libucw.git/blobdiff - ucw/string.c
tableprinter: definition of the table separated from handle
[libucw.git] / ucw / string.c
index c235292a3acf7c45a60829350e2c7c8a1a27e629..29cfa42b5e50699de6fd5f4e62645fbb380c8d15 100644 (file)
@@ -2,7 +2,7 @@
  *     UCW Library -- String Routines
  *
  *     (c) 2006 Pavel Charvat <pchar@ucw.cz>
- *     (c) 2007 Martin Mares <mj@ucw.cz>
+ *     (c) 2007--2012 Martin Mares <mj@ucw.cz>
  *
  *     This software may be freely distributed and used according to the terms
  *     of the GNU Lesser General Public License.
 
 #undef LOCAL_DEBUG
 
-#include "ucw/lib.h"
-#include "ucw/string.h"
+#include <ucw/lib.h>
+#include <ucw/string.h>
+
+#ifdef CONFIG_DARWIN
+size_t
+strnlen(const char *str, size_t n)
+{
+  const char *end = str + n;
+  const char *c;
+  for (c = str; *c && c < end; c++);
+  return c - str;
+}
+#endif
 
 char *
-str_format_flags(char *dest, const char *fmt, uns flags)
+str_format_flags(char *dest, const char *fmt, uint flags)
 {
   char *start = dest;
-  for (uns i=0; fmt[i]; i++)
+  for (uint i=0; fmt[i]; i++)
     {
       if (flags & (1 << i))
        *dest++ = fmt[i];
@@ -27,3 +38,14 @@ str_format_flags(char *dest, const char *fmt, uns flags)
   *dest = 0;
   return start;
 }
+
+size_t
+str_count_char(const char *str, uint chr)
+{
+  const byte *s = str;
+  size_t i = 0;
+  while (*s)
+    if (*s++ == chr)
+      i++;
+  return i;
+}