Newer
Older
UbixOS / Dump / hybos / lib / string / strcat.c~
@cwolsen cwolsen on 31 Oct 2018 3 KB Big Dump
/***
*strncat.c - append n chars of string to new string
*
*       Copyright (c) 1985-1997, Microsoft Corporation. All rights reserved.
*
*Purpose:
*       defines strncat() - appends n characters of string onto
*       end of other string
*
*******************************************************************************/


/***
*char *strncat(front, back, count) - append count chars of back onto front
*
*Purpose:
*       Appends at most count characters of the string back onto the
*       end of front, and ALWAYS terminates with a null character.
*       If count is greater than the length of back, the length of back
*       is used instead.  (Unlike strncpy, this routine does not pad out
*       to count characters).
*
*Entry:
*       char *front - string to append onto
*       char *back - string to append
*       unsigned count - count of max characters to append
*
*Exit:
*       returns a pointer to string appended onto (front).
*
*Uses:
*
*Exceptions:
*
*******************************************************************************/
#include <_size_t.h>

/******************************************************************************/
/* strcat - Concatenate String                                                */
/*                                                                            */
/* This fuction concatenates two strings (add the source string to the end of */
/* the destination string. It assumes there is enough space in the            */
/* destination to add the source string to it.                                */
/*                                                                            */
/* s    The destination string.                                               */
/* t    The source string.                                                    */
/* @    The destination string.                                               */
/******************************************************************************/
char *strcat(char *s, const char *t)
{
    char *c = s;

    /* Find the end of the destination string.                                */
    while (*s) s++;

    /* Copy the source sting to the destination string.                       */
    while (*s++ = *t++);

    return (c);
}

/******************************************************************************/
/* strncat - Concatenate String up to n Characters                            */
/*                                                                            */
/* This fuction concatenates two strings (add the source string to the end of */
/* the destination string. It assumes there is enough space in the            */
/* destination to add the source string to it. The total lenght of the        */
/* concatened string may not be larger than n characters. This includes the   */
/* NULL charecter.                                                            */
/*                                                                            */
/* s    The destination string.                                               */
/* t    The source string.                                                    */
/* n    The maximum lenght of the concatednated string.                       */
/* @    The destination string.                                               */
/******************************************************************************/

char *strncat(char *front, const char *back, size_t count)
{
	char *start = front;

	while(*front++);
	front--;

	while(count--)
		if(!(*front++ = *back++))
			return(start);

	*front = '\0';
	return(start);
}