void var_buffer_addUTF16( var_buffer_t *p_buf, const char *p_str ) { unsigned int i; if( !p_str ) { var_buffer_add16( p_buf, 0 ); } else { vlc_iconv_t iconv_handle; size_t i_in = strlen( p_str ); size_t i_out = i_in * 4; char *psz_out, *psz_tmp; psz_out = psz_tmp = malloc( i_out + 1 ); iconv_handle = vlc_iconv_open( "UTF-16LE", "UTF-8" ); vlc_iconv( iconv_handle, &p_str, &i_in, &psz_tmp, &i_out ); vlc_iconv_close( iconv_handle ); psz_tmp[0] = '\0'; psz_tmp[1] = '\0'; for( i = 0; ; i += 2 ) { uint16_t v = GetWLE( &psz_out[i] ); var_buffer_add16( p_buf, v ); if( !v ) break; } free( psz_out ); } }
void var_buffer_addUTF16( var_buffer_t *p_buf, char *p_str ) { unsigned int i; if( !p_str ) { var_buffer_add16( p_buf, 0 ); } else { for( i = 0; i < strlen( p_str ) + 1; i++ ) // and 0 { var_buffer_add16( p_buf, p_str[i] ); } } }
void var_buffer_add32( var_buffer_t *p_buf, uint32_t i_dword ) { var_buffer_add16( p_buf, i_dword&0xffff ); var_buffer_add16( p_buf, ( i_dword >> 16 )&0xffff ); }