LCOV - code coverage report
Current view: top level - lib/libkern - strlcpy.c (source / functions) Hit Total Coverage
Test: 6.4 Lines: 0 9 0.0 %
Date: 2018-10-19 03:25:38 Functions: 0 1 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*      $OpenBSD: strlcpy.c,v 1.8 2015/01/15 03:54:28 millert Exp $     */
       2             : 
       3             : /*
       4             :  * Copyright (c) 1998, 2015 Todd C. Miller <Todd.Miller@courtesan.com>
       5             :  *
       6             :  * Permission to use, copy, modify, and distribute this software for any
       7             :  * purpose with or without fee is hereby granted, provided that the above
       8             :  * copyright notice and this permission notice appear in all copies.
       9             :  *
      10             :  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
      11             :  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
      12             :  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
      13             :  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
      14             :  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
      15             :  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
      16             :  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
      17             :  */
      18             : 
      19             : #include <lib/libkern/libkern.h>
      20             : 
      21             : /*
      22             :  * Copy string src to buffer dst of size dsize.  At most dsize-1
      23             :  * chars will be copied.  Always NUL terminates (unless dsize == 0).
      24             :  * Returns strlen(src); if retval >= dsize, truncation occurred.
      25             :  */
      26             : size_t
      27           0 : strlcpy(char *dst, const char *src, size_t dsize)
      28             : {
      29             :         const char *osrc = src;
      30             :         size_t nleft = dsize;
      31             : 
      32             :         /* Copy as many bytes as will fit. */
      33           0 :         if (nleft != 0) {
      34           0 :                 while (--nleft != 0) {
      35           0 :                         if ((*dst++ = *src++) == '\0')
      36             :                                 break;
      37             :                 }
      38             :         }
      39             : 
      40             :         /* Not enough room in dst, add NUL and traverse rest of src. */
      41           0 :         if (nleft == 0) {
      42           0 :                 if (dsize != 0)
      43           0 :                         *dst = '\0';            /* NUL-terminate dst */
      44           0 :                 while (*src++)
      45             :                         ;
      46             :         }
      47             : 
      48           0 :         return(src - osrc - 1); /* count does not include NUL */
      49             : }

Generated by: LCOV version 1.13