LCOV - differential code coverage report
Current view: top level - src/port - strlcpy.c (source / functions) Coverage Total Hit UBC CBC
Current: Differential Code Coverage 16@8cea358b128 vs 17@8cea358b128 Lines: 100.0 % 13 13 13
Current Date: 2024-04-14 14:21:10 Functions: 100.0 % 1 1 1
Baseline: 16@8cea358b128 Branches: 83.3 % 12 10 2 10
Baseline Date: 2024-04-14 14:21:09 Line coverage date bins:
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed (240..) days: 100.0 % 13 13 13
Function coverage date bins:
(240..) days: 100.0 % 1 1 1
Branch coverage date bins:
(240..) days: 83.3 % 12 10 2 10

 Age         Owner                    Branch data    TLA  Line data    Source code
                                  1                 :                : /*-------------------------------------------------------------------------
                                  2                 :                :  *
                                  3                 :                :  * strlcpy.c
                                  4                 :                :  *    strncpy done right
                                  5                 :                :  *
                                  6                 :                :  * Portions Copyright (c) 1996-2024, 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
 6409 tgl@sss.pgh.pa.us          45                 :CBC     3269130 : strlcpy(char *dst, const char *src, size_t siz)
                                 46                 :                : {
 6402 bruce@momjian.us           47                 :        3269130 :     char       *d = dst;
 6409 tgl@sss.pgh.pa.us          48                 :        3269130 :     const char *s = src;
 6402 bruce@momjian.us           49                 :        3269130 :     size_t      n = siz;
                                 50                 :                : 
                                 51                 :                :     /* Copy as many bytes as will fit */
                                 52         [ +  - ]:        3269130 :     if (n != 0)
                                 53                 :                :     {
                                 54         [ +  + ]:       31135966 :         while (--n != 0)
                                 55                 :                :         {
 6409 tgl@sss.pgh.pa.us          56         [ +  + ]:       30944995 :             if ((*d++ = *s++) == '\0')
                                 57                 :        3078159 :                 break;
                                 58                 :                :         }
                                 59                 :                :     }
                                 60                 :                : 
                                 61                 :                :     /* Not enough room in dst, add NUL and traverse rest of src */
 6402 bruce@momjian.us           62         [ +  + ]:        3269130 :     if (n == 0)
                                 63                 :                :     {
 6409 tgl@sss.pgh.pa.us          64         [ +  - ]:         190971 :         if (siz != 0)
 6402 bruce@momjian.us           65                 :         190971 :             *d = '\0';          /* NUL-terminate dst */
 6409 tgl@sss.pgh.pa.us          66         [ +  + ]:        2387943 :         while (*s++)
                                 67                 :                :             ;
                                 68                 :                :     }
                                 69                 :                : 
 6402 bruce@momjian.us           70                 :        3269130 :     return (s - src - 1);       /* count does not include NUL */
                                 71                 :                : }
        

Generated by: LCOV version 2.1-beta2-3-g6141622