Cygwin: mmap: allow remapping part of an existing anonymous mapping
[newlib-cygwin.git] / newlib / libc / string / wcsncpy.c
blob9b103b1bd6fd4006bf99ff462d153c4c3324ee7a
1 /*
2 FUNCTION
3 <<wcsncpy>>---copy part of a wide-character string
5 SYNOPSIS
6 #include <wchar.h>
7 wchar_t *wcsncpy(wchar_t *__restrict <[s1]>,
8 const wchar_t *__restrict <[s2]>, size_t <[n]>);
10 DESCRIPTION
11 The <<wcsncpy>> function copies not more than <[n]> wide-character codes
12 (wide-character codes that follow a null wide-character code are not
13 copied) from the array pointed to by <[s2]> to the array pointed to
14 by <[s1]>. If copying takes place between objects that overlap, the
15 behaviour is undefined. Note that if <[s1]> contains more than <[n]>
16 wide characters before its terminating null, the result is not
17 null-terminated.
19 If the array pointed to by <[s2]> is a wide-character string that is
20 shorter than <[n]> wide-character codes, null wide-character codes are
21 appended to the copy in the array pointed to by <[s1]>, until <[n]>
22 wide-character codes in all are written.
24 RETURNS
25 The <<wcsncpy>> function returns <[s1]>; no return value is reserved to
26 indicate an error.
28 PORTABILITY
29 ISO/IEC 9899; POSIX.1.
31 No supporting OS subroutines are required.
34 #include <_ansi.h>
35 #include <wchar.h>
37 wchar_t *
38 wcsncpy (wchar_t *__restrict s1,
39 const wchar_t *__restrict s2,
40 size_t n)
42 wchar_t *dscan=s1;
44 while(n > 0)
46 --n;
47 if((*dscan++ = *s2++) == L'\0') break;
49 while(n-- > 0) *dscan++ = L'\0';
51 return s1;