Back to index

glibc  2.9
Functions
wcpncpy.c File Reference
#include <wchar.h>

Go to the source code of this file.

Functions

wchar_t * __wcpncpy (wchar_t *dest, const wchar_t *src, size_t n)

Function Documentation

wchar_t* __wcpncpy ( wchar_t *  dest,
const wchar_t *  src,
size_t  n 
)

Definition at line 26 of file wcpncpy.c.

{
  wint_t c;
  wchar_t *const s = dest;

  if (n >= 4)
    {
      size_t n4 = n >> 2;

      for (;;)
       {
         c = *src++;
         *dest++ = c;
         if (c == L'\0')
           break;
         c = *src++;
         *dest++ = c;
         if (c == L'\0')
           break;
         c = *src++;
         *dest++ = c;
         if (c == L'\0')
           break;
         c = *src++;
         *dest++ = c;
         if (c == L'\0')
           break;
         if (--n4 == 0)
           goto last_chars;
       }
      n -= dest - s;
      goto zero_fill;
    }

 last_chars:
  n &= 3;
  if (n == 0)
    return dest;

  for (;;)
    {
      c = *src++;
      --n;
      *dest++ = c;
      if (c == L'\0')
       break;
      if (n == 0)
       return dest;
    }

 zero_fill:
  while (n-- > 0)
    dest[n] = L'\0';

  return dest - 1;
}

Here is the caller graph for this function: