LTP GCOV extension - code coverage report
Current view: directory - main - strlcpy.c
Test: PHP Code Coverage
Date: 2007-04-10 Instrumented lines: 13
Code covered: 100.0 % Executed lines: 13
Legend: not executed executed

       1                 : /*
       2                 :   +----------------------------------------------------------------------+
       3                 :   | PHP Version 5                                                        |
       4                 :   +----------------------------------------------------------------------+
       5                 :   | Copyright (c) 1997-2007 The PHP Group                                |
       6                 :   +----------------------------------------------------------------------+
       7                 :   | This source file is subject to version 3.01 of the PHP license,      |
       8                 :   | that is bundled with this package in the file LICENSE, and is        |
       9                 :   | available through the world-wide-web at the following url:           |
      10                 :   | http://www.php.net/license/3_01.txt                                  |
      11                 :   | If you did not receive a copy of the PHP license and are unable to   |
      12                 :   | obtain it through the world-wide-web, please send a note to          |
      13                 :   | license@php.net so we can mail you a copy immediately.               |
      14                 :   +----------------------------------------------------------------------+
      15                 :   | Author:                                                              |
      16                 :   +----------------------------------------------------------------------+
      17                 : */
      18                 : 
      19                 : /* $Id: strlcpy.c,v 1.13.2.1.2.1 2007/01/01 09:36:11 sebastian Exp $ */
      20                 : 
      21                 : #include "php.h"
      22                 : 
      23                 : #ifndef HAVE_STRLCPY
      24                 : 
      25                 : /*      $OpenBSD: strlcpy.c,v 1.4 1999/05/01 18:56:41 millert Exp $     */
      26                 : 
      27                 : /*
      28                 :  * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
      29                 :  * All rights reserved.
      30                 :  *
      31                 :  * Redistribution and use in source and binary forms, with or without
      32                 :  * modification, are permitted provided that the following conditions
      33                 :  * are met:
      34                 :  * 1. Redistributions of source code must retain the above copyright
      35                 :  *    notice, this list of conditions and the following disclaimer.
      36                 :  * 2. Redistributions in binary form must reproduce the above copyright
      37                 :  *    notice, this list of conditions and the following disclaimer in the
      38                 :  *    documentation and/or other materials provided with the distribution.
      39                 :  * 3. The name of the author may not be used to endorse or promote products
      40                 :  *    derived from this software without specific prior written permission.
      41                 :  *
      42                 :  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
      43                 :  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
      44                 :  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
      45                 :  * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
      46                 :  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
      47                 :  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
      48                 :  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
      49                 :  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
      50                 :  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
      51                 :  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      52                 :  */
      53                 : 
      54                 : #if defined(LIBC_SCCS) && !defined(lint)
      55                 : static char *rcsid = "$OpenBSD: strlcpy.c,v 1.4 1999/05/01 18:56:41 millert Exp $";
      56                 : #endif /* LIBC_SCCS and not lint */
      57                 : 
      58                 : #include <sys/types.h>
      59                 : #include <string.h>
      60                 : 
      61                 : /*
      62                 :  * Copy src to string dst of size siz.  At most siz-1 characters
      63                 :  * will be copied.  Always NUL terminates (unless siz == 0).
      64                 :  * Returns strlen(src); if retval >= siz, truncation occurred.
      65                 :  */
      66                 : PHPAPI size_t php_strlcpy(dst, src, siz)
      67                 :         char *dst;
      68                 :         const char *src;
      69                 :         size_t siz;
      70            1551 : {
      71            1551 :         register char *d = dst;
      72            1551 :         register const char *s = src;
      73            1551 :         register size_t n = siz;
      74                 : 
      75                 :         /* Copy as many bytes as will fit */
      76            1551 :         if (n != 0 && --n != 0) {
      77                 :                 do {
      78            3823 :                         if ((*d++ = *s++) == 0)
      79            1464 :                                 break;
      80            2359 :                 } while (--n != 0);
      81                 :         }
      82                 : 
      83                 :         /* Not enough room in dst, add NUL and traverse rest of src */
      84            1551 :         if (n == 0) {
      85              87 :                 if (siz != 0)
      86              87 :                         *d = '\0';              /* NUL-terminate dst */
      87              87 :                 while (*s++)
      88                 :                         ;
      89                 :         }
      90                 : 
      91            1551 :         return(s - src - 1);    /* count does not include NUL */
      92                 : }
      93                 : 
      94                 : #endif /* !HAVE_STRLCPY */
      95                 : 
      96                 : /*
      97                 :  * Local variables:
      98                 :  * tab-width: 4
      99                 :  * c-basic-offset: 4
     100                 :  * End:
     101                 :  * vim600: sw=4 ts=4 fdm=marker
     102                 :  * vim<600: sw=4 ts=4
     103                 :  */

Generated by: LTP GCOV extension version 1.5