/*-------------------------------------------------------------------------
*
* strlcpy . c
* strncpy done right
*
* Portions Copyright ( c ) 1996 - 2025 , PostgreSQL Global Development Group
*
*
* IDENTIFICATION
* src / port / strlcpy . c
*
* This file was taken from OpenBSD and is used on platforms that don ' t
* provide strlcpy ( ) . The OpenBSD copyright terms follow .
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*/
/* $OpenBSD: strlcpy.c,v 1.11 2006/05/05 15:27:38 millert Exp $ */
/*
* Copyright ( c ) 1998 Todd C . Miller < Todd . Miller @ courtesan . com >
*
* Permission to use , copy , modify , and distribute this software for any
* purpose with or without fee is hereby granted , provided that the above
* copyright notice and this permission notice appear in all copies .
*
* THE SOFTWARE IS PROVIDED " AS IS " AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS . IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL , DIRECT , INDIRECT , OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE , DATA OR PROFITS , WHETHER IN AN
* ACTION OF CONTRACT , NEGLIGENCE OR OTHER TORTIOUS ACTION , ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE .
*/
#include "c.h"
/*
* Copy src to string dst of size siz . At most siz - 1 characters
* will be copied . Always NUL terminates ( unless siz = = 0 ) .
* Returns strlen ( src ) ; if retval > = siz , truncation occurred .
* Function creation history : http : //www.gratisoft.us/todd/papers/strlcpy.html
*/
size_t
strlcpy(char *dst, const char *src, size_t siz)
{
char *d = dst;
const char *s = src;
size_t n = siz;
/* Copy as many bytes as will fit */
if (n != 0 )
{
while (--n != 0 )
{
if ((*d++ = *s++) == '\0' )
break ;
}
}
/* Not enough room in dst, add NUL and traverse rest of src */
if (n == 0 )
{
if (siz != 0 )
*d = '\0' ; /* NUL-terminate dst */
while (*s++)
;
}
return (s - src - 1 ); /* count does not include NUL */
}
Messung V0.5 in Prozent C=88 H=72 G=80
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-08-04)
¤
*© Formatika GbR, Deutschland