Lines Matching defs:psenc
181 _UTF7State * __restrict psenc, size_t * __restrict nresult)
189 _DIAGASSERT(psenc != NULL);
192 sv = *psenc;
195 _DIAGASSERT(i <= psenc->chlen);
196 if (i == psenc->chlen) {
200 sv.chlen = psenc->chlen;
201 *psenc = sv;
204 psenc->ch[psenc->chlen++] = *s0++;
206 if (SHIFT7BIT((int)psenc->ch[i]))
208 if (!psenc->mode) {
209 if (psenc->bits > 0 || psenc->cache > 0)
211 if (psenc->ch[i] == BASE64_IN) {
212 psenc->mode = 1;
214 if (!ISDIRECT(ei, (int)psenc->ch[i]))
216 *u16 = (uint16_t)psenc->ch[i];
221 if (psenc->ch[i] == BASE64_OUT && psenc->cache == 0) {
222 psenc->mode = 0;
227 len = FINDLEN(ei, (int)psenc->ch[i]);
229 if (psenc->bits >= BASE64_BIT)
231 psenc->mode = 0;
232 psenc->bits = psenc->cache = 0;
233 if (psenc->ch[i] != BASE64_OUT) {
234 if (!ISDIRECT(ei, (int)psenc->ch[i]))
236 *u16 = (uint16_t)psenc->ch[i];
240 psenc->cache =
241 (psenc->cache << BASE64_BIT) | len;
242 switch (psenc->bits) {
244 psenc->bits += BASE64_BIT;
247 psenc->bits -= (UTF16_BIT - BASE64_BIT);
248 *u16 = (psenc->cache >> psenc->bits)
259 if (psenc->chlen > i)
261 psenc->chlen = 0;
275 _UTF7State * __restrict psenc, size_t * __restrict nresult)
286 _DIAGASSERT(psenc != NULL);
289 _citrus_UTF7_init_state(ei, psenc);
294 if (psenc->surrogate) {
295 hi = (psenc->cache >> 2) & UTF16_MAX;
300 err = _citrus_UTF7_mbtoutf16(ei, &hi, &s0, n, psenc, &nr);
313 psenc->surrogate = 1;
315 err = _citrus_UTF7_mbtoutf16(ei, &lo, &s0, n, psenc, &nr);
332 _citrus_UTF7_init_state(ei, psenc);
335 psenc->surrogate = 0;
343 _UTF7State * __restrict psenc, size_t * __restrict nresult)
348 _DIAGASSERT(psenc != NULL);
350 if (psenc->chlen != 0 || psenc->bits > BASE64_BIT)
354 if (psenc->mode) {
355 if (psenc->bits > 0) {
356 bits = BASE64_BIT - psenc->bits;
357 i = (psenc->cache << bits) & BASE64_MAX;
358 psenc->ch[psenc->chlen++] = base64[i];
359 psenc->bits = psenc->cache = 0;
362 psenc->ch[psenc->chlen++] = BASE64_OUT;
363 psenc->mode = 0;
365 if (psenc->bits != 0)
367 psenc->ch[psenc->chlen++] = (char)u16;
369 psenc->ch[psenc->chlen++] = BASE64_OUT;
371 if (!psenc->mode) {
372 if (psenc->bits > 0)
374 psenc->ch[psenc->chlen++] = BASE64_IN;
375 psenc->mode = 1;
377 psenc->cache = (psenc->cache << UTF16_BIT) | u16;
378 bits = UTF16_BIT + psenc->bits;
379 psenc->bits = bits % BASE64_BIT;
381 i = (psenc->cache >> bits) & BASE64_MAX;
382 psenc->ch[psenc->chlen++] = base64[i];
385 memcpy(s, psenc->ch, psenc->chlen);
386 *nresult = psenc->chlen;
387 psenc->chlen = 0;
395 _UTF7State * __restrict psenc, size_t * __restrict nresult)
404 _DIAGASSERT(psenc != NULL);
422 err = _citrus_UTF7_utf16tomb(ei, s, n, u16[i], psenc, &nr);
437 char * __restrict s, size_t n, _UTF7State * __restrict psenc,
444 _DIAGASSERT(psenc != NULL);
447 if (psenc->chlen != 0 || psenc->bits > BASE64_BIT || psenc->surrogate)
450 if (psenc->mode) {
451 if (psenc->bits > 0) {
454 bits = BASE64_BIT - psenc->bits;
455 pos = (psenc->cache << bits) & BASE64_MAX;
456 psenc->ch[psenc->chlen++] = base64[pos];
457 psenc->ch[psenc->chlen++] = BASE64_OUT;
458 psenc->bits = psenc->cache = 0;
460 psenc->mode = 0;
462 if (psenc->bits != 0)
467 _DIAGASSERT(n >= psenc->chlen);
468 *nresult = (size_t)psenc->chlen;
469 if (psenc->chlen > 0) {
470 memcpy(s, psenc->ch, psenc->chlen);
471 psenc->chlen = 0;
512 _UTF7State * __restrict psenc,
516 if (psenc->chlen == 0)