Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

software/libbase: add strcat strncat

  • Loading branch information...
commit 8fa0198089fa26dcc47e2c7aceccca34a50a4e99 1 parent 20b137f
@sbourdeauducq sbourdeauducq authored
Showing with 44 additions and 0 deletions.
  1. +2 −0  software/include/base/string.h
  2. +42 −0 software/libbase/libc.c
View
2  software/include/base/string.h
@@ -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);
View
42 software/libbase/libc.c
@@ -161,6 +161,48 @@ int strncmp(const char *cs, const char *ct, size_t count)
}
/**
+ * 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
*/
Please sign in to comment.
Something went wrong with that request. Please try again.