Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
software/libbase: add strcat strncat
  • Loading branch information
Sebastien Bourdeauducq committed May 31, 2012
1 parent 20b137f commit 8fa0198
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 0 deletions.
2 changes: 2 additions & 0 deletions software/include/base/string.h
Expand Up @@ -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);
Expand Down
42 changes: 42 additions & 0 deletions software/libbase/libc.c
Expand Up @@ -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
Expand Down

0 comments on commit 8fa0198

Please sign in to comment.