forked from KolibriOS/kolibrios
newlib-2.4.0
git-svn-id: svn://kolibrios.org@6536 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
76
contrib/sdk/sources/newlib/libc/string/strxfrm.c
Normal file
76
contrib/sdk/sources/newlib/libc/string/strxfrm.c
Normal file
@@ -0,0 +1,76 @@
|
||||
/*
|
||||
FUNCTION
|
||||
<<strxfrm>>---transform string
|
||||
|
||||
INDEX
|
||||
strxfrm
|
||||
|
||||
ANSI_SYNOPSIS
|
||||
#include <string.h>
|
||||
size_t strxfrm(char *restrict <[s1]>, const char *restrict <[s2]>,
|
||||
size_t <[n]>);
|
||||
|
||||
TRAD_SYNOPSIS
|
||||
#include <string.h>
|
||||
size_t strxfrm(<[s1]>, <[s2]>, <[n]>);
|
||||
char *<[s1]>;
|
||||
char *<[s2]>;
|
||||
size_t <[n]>;
|
||||
|
||||
DESCRIPTION
|
||||
This function transforms the string pointed to by <[s2]> and
|
||||
places the resulting string into the array pointed to by
|
||||
<[s1]>. The transformation is such that if the <<strcmp>>
|
||||
function is applied to the two transformed strings, it returns
|
||||
a value greater than, equal to, or less than zero,
|
||||
correspoinding to the result of a <<strcoll>> function applied
|
||||
to the same two original strings.
|
||||
|
||||
No more than <[n]> characters are placed into the resulting
|
||||
array pointed to by <[s1]>, including the terminating null
|
||||
character. If <[n]> is zero, <[s1]> may be a null pointer. If
|
||||
copying takes place between objects that overlap, the behavior
|
||||
is undefined.
|
||||
|
||||
With a C locale, this function just copies.
|
||||
|
||||
RETURNS
|
||||
The <<strxfrm>> function returns the length of the transformed string
|
||||
(not including the terminating null character). If the value returned
|
||||
is <[n]> or more, the contents of the array pointed to by
|
||||
<[s1]> are indeterminate.
|
||||
|
||||
PORTABILITY
|
||||
<<strxfrm>> is ANSI C.
|
||||
|
||||
<<strxfrm>> requires no supporting OS subroutines.
|
||||
|
||||
QUICKREF
|
||||
strxfrm ansi pure
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
|
||||
size_t
|
||||
_DEFUN (strxfrm, (s1, s2, n),
|
||||
char *__restrict s1 _AND
|
||||
_CONST char *__restrict s2 _AND
|
||||
size_t n)
|
||||
{
|
||||
size_t res;
|
||||
res = 0;
|
||||
while (n-- > 0)
|
||||
{
|
||||
if ((*s1++ = *s2++) != '\0')
|
||||
++res;
|
||||
else
|
||||
return res;
|
||||
}
|
||||
while (*s2)
|
||||
{
|
||||
++s2;
|
||||
++res;
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
Reference in New Issue
Block a user