(root)/
glibc-2.38/
wcsmbs/
tst-wcpncpy.c
       1  /* Copyright (C) 2003-2023 Free Software Foundation, Inc.
       2     This file is part of the GNU C Library.
       3  
       4     The GNU C Library is free software; you can redistribute it and/or
       5     modify it under the terms of the GNU Lesser General Public
       6     License as published by the Free Software Foundation; either
       7     version 2.1 of the License, or (at your option) any later version.
       8  
       9     The GNU C Library is distributed in the hope that it will be useful,
      10     but WITHOUT ANY WARRANTY; without even the implied warranty of
      11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      12     Lesser General Public License for more details.
      13  
      14     You should have received a copy of the GNU Lesser General Public
      15     License along with the GNU C Library; if not, see
      16     <https://www.gnu.org/licenses/>.  */
      17  
      18  #include <stdio.h>
      19  #include <wchar.h>
      20  
      21  
      22  static int
      23  do_test (void)
      24  {
      25    int result = 0;
      26  
      27    const wchar_t src[] = L"0";
      28    wchar_t dest[21];
      29    wmemset (dest, L'\0', 10);
      30    wchar_t *endp = wcpncpy (dest, src, 2);
      31    if (wcscmp (dest, src) != 0)
      32      {
      33        result = 1;
      34        puts ("L\"0\" string test failed");
      35      }
      36    if (endp != dest + 1)
      37      {
      38        result = 1;
      39        puts ("return value of L\"0\" string call incorrect");
      40      }
      41  
      42    const wchar_t src2[] = L"abc";
      43    endp = wcpncpy (dest, src2, 2);
      44    if (endp != dest + 2)
      45      {
      46        result = 1;
      47        puts ("return value of limited call incorrect");
      48      }
      49  
      50    const wchar_t src3[] = L"";
      51    endp = wcpncpy (dest, src3, 2);
      52    if (endp != dest)
      53      {
      54        result = 1;
      55        puts ("return value of empty string call incorrect");
      56      }
      57  
      58    const wchar_t src4[] = L"abcdefghijklmnopqrstuvwxyz";
      59    endp = wcpncpy (dest, src4, 2);
      60    if (endp != dest + 2)
      61      {
      62        result = 1;
      63        puts ("return value of long string call incorrect");
      64      }
      65  
      66    const wchar_t src5[] = L"ab";
      67    endp = wcpncpy (dest, src5, 20);
      68    if (endp != dest + 2)
      69      {
      70        result = 1;
      71        puts ("return value of large limit call incorrect");
      72      }
      73  
      74    return result;
      75  }
      76  
      77  #include <support/test-driver.c>