Exemplo n.º 1
0
UV
Perl_utf8_to_uvchr(pTHX_ const U8 *s, STRLEN *retlen)
{
    PERL_ARGS_ASSERT_UTF8_TO_UVCHR;

    return utf8_to_uvchr_buf(s, s + UTF8_MAXBYTES, retlen);
}
Exemplo n.º 2
0
void
Clipboard_close( Handle self)
{
	PClipboardFormatReg text, utf8;
	if ( var-> openCount <= 0) {
		var-> openCount = 0;
		return;
	}
	
	var-> openCount--;
	if ( var->  openCount > 0) return;
	text = formats + cfText;
	utf8 = formats + cfUTF8;
	/* automatically downgrade UTF8 to TEXT */
	if ( utf8-> written && !text-> written) {
			SV *utf8_sv, *text_sv;
			if (( utf8_sv = utf8-> server( self, utf8, cefFetch, nilSV))) {
				STRLEN bytelen, charlen, bytecount;
				U8 * src;
				src = ( U8 *) SvPV( utf8_sv, bytelen);
				bytecount = bytelen;
				text_sv = newSVpvn("", 0);
				while ( bytecount > 0) {
					register UV u = 
#if PERL_PATCHLEVEL >= 16
						  utf8_to_uvchr_buf( src, src + bytelen, &charlen)
#else
						  utf8_to_uvchr( src, &charlen)
#endif
						;
					char c = ( u < 0x7f) ? u : '?';
					src += charlen;
					bytecount -= charlen;
					sv_catpvn( text_sv, &c, 1);
					if ( charlen == 0 ) break;
				}
				text-> server( self, text, cefFetch, text_sv);
				sv_free( text_sv);
			}
	}
	apc_clipboard_close( self);
}