Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/stdlib/wcsnrtombs.c')
-rw-r--r--newlib/libc/stdlib/wcsnrtombs.c185
1 files changed, 0 insertions, 185 deletions
diff --git a/newlib/libc/stdlib/wcsnrtombs.c b/newlib/libc/stdlib/wcsnrtombs.c
deleted file mode 100644
index 5f885a454..000000000
--- a/newlib/libc/stdlib/wcsnrtombs.c
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
-FUNCTION
-<<wcsrtombs>>, <<wcsnrtombs>>---convert a wide-character string to a character string
-
-INDEX
- wcsrtombs
-INDEX
- _wcsrtombs_r
-INDEX
- wcsnrtombs
-INDEX
- _wcsnrtombs_r
-
-ANSI_SYNOPSIS
- #include <wchar.h>
- size_t wcsrtombs(char *<[dst]>, const wchar_t **<[src]>, size_t <[len]>,
- mbstate_t *<[ps]>);
-
- #include <wchar.h>
- size_t _wcsrtombs_r(struct _reent *<[ptr]>, char *<[dst]>,
- const wchar_t **<[src]>, size_t <[len]>,
- mbstate_t *<[ps]>);
-
- #include <wchar.h>
- size_t wcsnrtombs(char *<[dst]>, const wchar_t **<[src]>,
- size_t <[nwc]>, size_t <[len]>, mbstate_t *<[ps]>);
-
- #include <wchar.h>
- size_t _wcsnrtombs_r(struct _reent *<[ptr]>, char *<[dst]>,
- const wchar_t **<[src]>, size_t <[nwc]>,
- size_t <[len]>, mbstate_t *<[ps]>);
-
-TRAD_SYNOPSIS
- #include <wchar.h>
- size_t wcsrtombs(<[dst]>, <[src]>, <[len]>, <[ps]>)
- char *<[dst]>;
- const wchar_t **<[src]>;
- size_t <[len]>;
- mbstate_t *<[ps]>;
-
- #include <wchar.h>
- size_t _wcsrtombs_r(<[ptr]>, <[dst]>, <[src]>, <[len]>, <[ps]>)
- struct _rent *<[ptr]>;
- char *<[dst]>;
- const wchar_t **<[src]>;
- size_t <[len]>;
- mbstate_t *<[ps]>;
-
- #include <wchar.h>
- size_t wcsnrtombs(<[dst]>, <[src]>, <[nwc]>, <[len]>, <[ps]>)
- char *<[dst]>;
- const wchar_t **<[src]>;
- size_t <[nwc]>;
- size_t <[len]>;
- mbstate_t *<[ps]>;
-
- #include <wchar.h>
- size_t _wcsnrtombs_r(<[ptr]>, <[dst]>, <[src]>, <[nwc]>, <[len]>, <[ps]>)
- struct _rent *<[ptr]>;
- char *<[dst]>;
- const wchar_t **<[src]>;
- size_t <[nwc]>;
- size_t <[len]>;
- mbstate_t *<[ps]>;
-
-DESCRIPTION
-The <<wcsrtombs>> function converts a string of wide characters indirectly
-pointed to by <[src]> to a corresponding multibyte character string stored in
-the array pointed to by <[dst}>. No more than <[len]> bytes are written to
-<[dst}>.
-
-If <[dst}> is NULL, no characters are stored.
-
-If <[dst}> is not NULL, the pointer pointed to by <[src]> is updated to point
-to the character after the one that conversion stopped at. If conversion
-stops because a null character is encountered, *<[src]> is set to NULL.
-
-The mbstate_t argument, <[ps]>, is used to keep track of the shift state. If
-it is NULL, <<wcsrtombs>> uses an internal, static mbstate_t object, which
-is initialized to the initial conversion state at program startup.
-
-The <<wcsnrtombs>> function behaves identically to <<wcsrtombs>>, except that
-conversion stops after reading at most <[nwc]> characters from the buffer
-pointed to by <[src]>.
-
-RETURNS
-The <<wcsrtombs>> and <<wcsnrtombs>> functions return the number of bytes
-stored in the array pointed to by <[dst]> (not including any terminating
-null), if successful, otherwise it returns (size_t)-1.
-
-PORTABILITY
-<<wcsrtombs>> is defined by C99 standard.
-<<wcsnrtombs>> is defined by the POSIX.1-2008 standard.
-*/
-
-#include <reent.h>
-#include <newlib.h>
-#include <wchar.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <errno.h>
-#include "local.h"
-
-size_t
-_DEFUN (_wcsnrtombs_r, (r, dst, src, nwc, len, ps),
- struct _reent *r _AND
- char *dst _AND
- const wchar_t **src _AND
- size_t nwc _AND
- size_t len _AND
- mbstate_t *ps)
-{
- char *ptr = dst;
- char buff[10];
- wchar_t *pwcs;
- size_t n;
- int i;
-
-#ifdef _MB_CAPABLE
- if (ps == NULL)
- {
- _REENT_CHECK_MISC(r);
- ps = &(_REENT_WCSRTOMBS_STATE(r));
- }
-#endif
-
- /* If no dst pointer, treat len as maximum possible value. */
- if (dst == NULL)
- len = (size_t)-1;
-
- n = 0;
- pwcs = (wchar_t *)(*src);
-
- while (n < len && nwc-- > 0)
- {
- int count = ps->__count;
- wint_t wch = ps->__value.__wch;
- int bytes = __wctomb (r, buff, *pwcs, __locale_charset (), ps);
- if (bytes == -1)
- {
- r->_errno = EILSEQ;
- ps->__count = 0;
- return (size_t)-1;
- }
- if (n + bytes <= len)
- {
- n += bytes;
- if (dst)
- {
- for (i = 0; i < bytes; ++i)
- *ptr++ = buff[i];
- ++(*src);
- }
- if (*pwcs++ == 0x00)
- {
- if (dst)
- *src = NULL;
- ps->__count = 0;
- return n - 1;
- }
- }
- else
- {
- /* not enough room, we must back up state to before __wctomb call */
- ps->__count = count;
- ps->__value.__wch = wch;
- len = 0;
- }
- }
-
- return n;
-}
-
-#ifndef _REENT_ONLY
-size_t
-_DEFUN (wcsnrtombs, (dst, src, nwc, len, ps),
- char *dst _AND
- const wchar_t **src _AND
- size_t nwc _AND
- size_t len _AND
- mbstate_t *ps)
-{
- return _wcsnrtombs_r (_REENT, dst, src, nwc, len, ps);
-}
-#endif /* !_REENT_ONLY */