- Timestamp:
- Oct 13, 2006, 12:26:35 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/libtransmission/metainfo.c
r920 r997 30 30 * Local prototypes 31 31 **********************************************************************/ 32 static void strcatUTF8( char *, char * ); 32 #define strcatUTF8( dst, src) _strcatUTF8( (dst), sizeof( dst ), (src) ) 33 static void _strcatUTF8( char *, int, char * ); 33 34 34 35 /*********************************************************************** … … 301 302 * character, we assume it is ISO 8859-1 and convert it to UTF-8. 302 303 **********************************************************************/ 303 static void strcatUTF8( char * s, char * append ) 304 #define WANTBYTES( want, got ) \ 305 if( (want) > (got) ) { return; } else { (got) -= (want); } 306 static void _strcatUTF8( char * s, int len, char * append ) 304 307 { 305 308 char * p; … … 309 312 { 310 313 s++; 314 len--; 311 315 } 312 316 … … 317 321 { 318 322 /* ASCII character */ 323 WANTBYTES( 1, len ); 319 324 *(s++) = *(p++); 320 325 continue; … … 324 329 { 325 330 /* 2-bytes UTF-8 character */ 331 WANTBYTES( 2, len ); 326 332 *(s++) = *(p++); *(s++) = *(p++); 327 333 continue; … … 332 338 { 333 339 /* 3-bytes UTF-8 character */ 340 WANTBYTES( 3, len ); 334 341 *(s++) = *(p++); *(s++) = *(p++); 335 342 *(s++) = *(p++); … … 341 348 { 342 349 /* 4-bytes UTF-8 character */ 350 WANTBYTES( 4, len ); 343 351 *(s++) = *(p++); *(s++) = *(p++); 344 352 *(s++) = *(p++); *(s++) = *(p++); … … 347 355 348 356 /* ISO 8859-1 -> UTF-8 conversion */ 357 WANTBYTES( 2, len ); 349 358 *(s++) = 0xC0 | ( ( *p & 0xFF ) >> 6 ); 350 359 *(s++) = 0x80 | ( *(p++) & 0x3F );
Note: See TracChangeset
for help on using the changeset viewer.