LCOV - differential code coverage report
Current view: top level - src/port - strlcpy.c (source / functions) Coverage Total Hit CBC
Current: Differential Code Coverage HEAD vs 15 Lines: 100.0 % 13 13 13
Current Date: 2023-04-08 17:13:01 Functions: 100.0 % 1 1 1
Baseline: 15 Line coverage date bins:
Baseline Date: 2023-04-08 15:09:40 (240..) days: 100.0 % 13 13 13
Legend: Lines: hit not hit Function coverage date bins:
(240..) days: 100.0 % 1 1 1

 Age         Owner                  TLA  Line data    Source code
                                  1                 : /*-------------------------------------------------------------------------
                                  2                 :  *
                                  3                 :  * strlcpy.c
                                  4                 :  *    strncpy done right
                                  5                 :  *
                                  6                 :  * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
                                  7                 :  *
                                  8                 :  *
                                  9                 :  * IDENTIFICATION
                                 10                 :  *    src/port/strlcpy.c
                                 11                 :  *
                                 12                 :  * This file was taken from OpenBSD and is used on platforms that don't
                                 13                 :  * provide strlcpy().  The OpenBSD copyright terms follow.
                                 14                 :  *-------------------------------------------------------------------------
                                 15                 :  */
                                 16                 : 
                                 17                 : /*  $OpenBSD: strlcpy.c,v 1.11 2006/05/05 15:27:38 millert Exp $    */
                                 18                 : 
                                 19                 : /*
                                 20                 :  * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
                                 21                 :  *
                                 22                 :  * Permission to use, copy, modify, and distribute this software for any
                                 23                 :  * purpose with or without fee is hereby granted, provided that the above
                                 24                 :  * copyright notice and this permission notice appear in all copies.
                                 25                 :  *
                                 26                 :  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
                                 27                 :  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
                                 28                 :  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
                                 29                 :  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
                                 30                 :  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
                                 31                 :  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
                                 32                 :  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
                                 33                 :  */
                                 34                 : 
                                 35                 : #include "c.h"
                                 36                 : 
                                 37                 : 
                                 38                 : /*
                                 39                 :  * Copy src to string dst of size siz.  At most siz-1 characters
                                 40                 :  * will be copied.  Always NUL terminates (unless siz == 0).
                                 41                 :  * Returns strlen(src); if retval >= siz, truncation occurred.
                                 42                 :  * Function creation history:  http://www.gratisoft.us/todd/papers/strlcpy.html
                                 43                 :  */
                                 44                 : size_t
 6038 tgl                        45 CBC     3524703 : strlcpy(char *dst, const char *src, size_t siz)
                                 46                 : {
 6031 bruce                      47         3524703 :     char       *d = dst;
 6038 tgl                        48         3524703 :     const char *s = src;
 6031 bruce                      49         3524703 :     size_t      n = siz;
                                 50                 : 
                                 51                 :     /* Copy as many bytes as will fit */
                                 52         3524703 :     if (n != 0)
                                 53                 :     {
                                 54        27389495 :         while (--n != 0)
                                 55                 :         {
 6038 tgl                        56        27311800 :             if ((*d++ = *s++) == '\0')
                                 57         3447012 :                 break;
                                 58                 :         }
                                 59                 :     }
                                 60                 : 
                                 61                 :     /* Not enough room in dst, add NUL and traverse rest of src */
 6031 bruce                      62         3524703 :     if (n == 0)
                                 63                 :     {
 6038 tgl                        64           77698 :         if (siz != 0)
 6031 bruce                      65           77698 :             *d = '\0';          /* NUL-terminate dst */
 6038 tgl                        66         1828861 :         while (*s++)
                                 67                 :             ;
                                 68                 :     }
                                 69                 : 
 6031 bruce                      70         3524703 :     return (s - src - 1);       /* count does not include NUL */
                                 71                 : }
        

Generated by: LCOV version v1.16-55-g56c0a2a