Path: blob/master/waterbox/libc/functions/uchar/c32rtomb.c
2 views
/* c32rtomb( char *, char32_t, mbstate_t * )12This file is part of the Public Domain C Library (PDCLib).3Permission is granted to use, modify, and / or redistribute at will.4*/56#ifndef REGTEST7#include <uchar.h>8#include <errno.h>9#include <stdint.h>10#include <assert.h>11#include <stdlib.h>12#include "_PDCLIB_encoding.h"13#include "_PDCLIB_locale.h"1415size_t c32rtomb_l(16char *restrict s,17char32_t c32,18mbstate_t *restrict ps,19locale_t restrict l20)21{22char buf[s ? 0 : MB_CUR_MAX];23s = s ? s : buf;2425const char32_t *restrict psrc = &c32;26size_t srcsz = 1;27size_t dstsz = MB_CUR_MAX;28size_t dstrem = dstsz;2930if(l->_Codec->__c32stombs(&s, &dstrem, &psrc, &srcsz, ps)) {31// Successful conversion32return dstsz - dstrem;33} else {34errno = EILSEQ;35return (size_t) -1;36}37}3839size_t c32rtomb(40char *restrict s,41char32_t c32,42mbstate_t *restrict ps43)44{45return c32rtomb_l(s, c32, ps, _PDCLIB_threadlocale());46}4748#endif4950#ifdef TEST51#include "_PDCLIB_test.h"5253int main( void )54{55TESTCASE( NO_TESTDRIVER );56return TEST_RESULTS;57}58#endif596061