software/libbase: add strcat strncat
authorSebastien Bourdeauducq <sebastien@milkymist.org>
Thu, 31 May 2012 19:03:52 +0000 (21:03 +0200)
committerSebastien Bourdeauducq <sebastien@milkymist.org>
Thu, 31 May 2012 19:03:52 +0000 (21:03 +0200)
software/include/base/string.h
software/libbase/libc.c

index e0a04400200cc357a3b2af773d8eb5fba020d447..f997a007a9a413868a0ac32b1a50aa3eeef2c1ec 100644 (file)
@@ -29,6 +29,8 @@ char *strcpy(char *dest, const char *src);
 char *strncpy(char *dest, const char *src, size_t count);
 int strcmp(const char *cs, const char *ct);
 int strncmp(const char *cs, const char *ct, size_t count);
+char *strcat(char *dest, const char *src);
+char *strncat(char *dest, const char *src, size_t n);
 size_t strlen(const char *s);
 size_t strnlen(const char *s, size_t count);
 size_t strspn(const char *s, const char *accept);
index 69b08f54fa11491d663757c1def11c746cc9a03a..876e195dc1b08dfa0ffdf6d22c93b07c47b82910 100644 (file)
@@ -160,6 +160,48 @@ int strncmp(const char *cs, const char *ct, size_t count)
        return __res;
 }
 
+/**
+ * strcat - Append one %NUL-terminated string to another
+ * @dest: The string to be appended to
+ * @src: The string to append to it
+ */
+char *strcat(char *dest, const char *src)
+{
+  char *tmp = dest;
+
+  while (*dest)
+    dest++;
+  while ((*dest++ = *src++) != '\0')
+    ;
+  return tmp;
+}
+
+/**
+ * strncat - Append a length-limited, %NUL-terminated string to another
+ * @dest: The string to be appended to
+ * @src: The string to append to it
+ * @count: The maximum numbers of bytes to copy
+ *
+ * Note that in contrast to strncpy(), strncat() ensures the result is
+ * terminated.
+ */
+char *strncat(char *dest, const char *src, size_t count)
+{
+  char *tmp = dest;
+
+  if (count) {
+    while (*dest)
+      dest++;
+    while ((*dest++ = *src++) != 0) {
+      if (--count == 0) {
+        *dest = '\0';
+        break;
+      }
+    }
+  }
+  return tmp;
+}
+
 /**
  * strlen - Find the length of a string
  * @s: The string to be sized