Changeset 5376a95
- Timestamp:
- Dec 28, 2007, 5:04:34 PM (17 years ago)
- Branches:
- master, barnowl_perlaim, debian, release-1.10, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
- Children:
- 6201646
- Parents:
- 925e122
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
fmtext.c
r9866c3a r5376a95 235 235 char *owl_fmtext_print_plain(owl_fmtext *f) 236 236 { 237 char *r, *s, *p; 238 r = owl_malloc(f->bufflen); 239 r[0] = '\0'; 240 s = f->textbuff; 241 /* Find next possible format character. */ 242 p = strchr(s, OWL_FMTEXT_UC_STARTBYTE_UTF8); 243 while(p) { 244 /* If it's a format character, copy up to it, and skip all 245 immediately following format characters. */ 246 if (_owl_fmtext_is_format_char(g_utf8_get_char(p))) { 247 strncat(r, s, p-s); 248 p = g_utf8_next_char(p); 249 while (p && _owl_fmtext_is_format_char(g_utf8_get_char(p))) { 250 p = g_utf8_next_char(p); 251 } 252 s = p; 253 p = strchr(s, OWL_FMTEXT_UC_STARTBYTE_UTF8); 254 } 255 else { 256 p = strchr(p+1, OWL_FMTEXT_UC_STARTBYTE_UTF8); 257 } 258 } 259 if (s) strcat(r,s); 260 return(r); 237 return owl_strip_format_chars(f->textbuff); 261 238 } 262 239 -
functions.c
r28ee32b r5376a95 1605 1605 sprintf(buff, " Field %i : ", i+1); 1606 1606 1607 ptr=owl_zephyr_get_field (n, i+1);1607 ptr=owl_zephyr_get_field_as_utf8(n, i+1); 1608 1608 len=strlen(ptr); 1609 1609 if (len<30) { -
message.c
r9866c3a r5376a95 79 79 owl_list_append_element(&(m->attributes), pair); 80 80 } 81 owl_pair_set_value(pair, owl_ strdup(attrvalue));81 owl_pair_set_value(pair, owl_validate_or_convert(attrvalue, -1)); 82 82 } 83 83 -
perlconfig.c
rad15610 r5376a95 55 55 j=owl_zephyr_get_num_fields(owl_message_get_notice(m)); 56 56 for (i=0; i<j; i++) { 57 ptr=owl_zephyr_get_field (owl_message_get_notice(m), i+1);57 ptr=owl_zephyr_get_field_as_utf8(owl_message_get_notice(m), i+1); 58 58 av_push(av_zfields, newSVpvn(ptr, strlen(ptr))); 59 59 owl_free(ptr); -
util.c
r28ee32b r5376a95 753 753 } 754 754 755 char * owl_get_datadir() { 756 char * datadir = getenv("BARNOWL_DATA_DIR"); 757 if(datadir != NULL) 758 return strchr(datadir, '=') + 1; 759 return DATADIR; 755 char * owl_get_datadir() 756 { 757 char * datadir = getenv("BARNOWL_DATA_DIR"); 758 if(datadir != NULL) 759 return strchr(datadir, '=') + 1; 760 return DATADIR; 761 } 762 763 /* Strips format characters from a valid utf-8 string. Returns the 764 empty string if 'in' does not validate. */ 765 char * owl_strip_format_chars(char *in) 766 { 767 char *r; 768 if (g_utf8_validate(in, -1, NULL)) { 769 char *s, *p; 770 r = owl_malloc(strlen(in)+1); 771 r[0] = '\0'; 772 s = in; 773 p = strchr(s, OWL_FMTEXT_UC_STARTBYTE_UTF8); 774 while(p) { 775 /* If it's a format character, copy up to it, and skip all 776 immediately following format characters. */ 777 if (_owl_fmtext_is_format_char(g_utf8_get_char(p))) { 778 strncat(r, s, p-s); 779 p = g_utf8_next_char(p); 780 while (p && _owl_fmtext_is_format_char(g_utf8_get_char(p))) { 781 p = g_utf8_next_char(p); 782 } 783 s = p; 784 p = strchr(s, OWL_FMTEXT_UC_STARTBYTE_UTF8); 785 } 786 else { 787 p = strchr(p+1, OWL_FMTEXT_UC_STARTBYTE_UTF8); 788 } 789 } 790 if (s) strcat(r,s); 791 } 792 else { 793 r = owl_strdup(""); 794 } 795 return r; 796 } 797 798 /* If in is not UTF-8, convert from ISO-8859-1. We may want to allow 799 * the caller to specify an alternative in the future. We also strip 800 * out characters in Unicode Plane 16, as we use that plane internally 801 * for formatting. 802 */ 803 char * owl_validate_or_convert(char *in, int len) 804 { 805 if (g_utf8_validate(in, len , NULL)) { 806 return owl_strip_format_chars(in); 807 } 808 else { 809 return g_convert(in, len, 810 "UTF-8", "ISO-8859-1", 811 NULL, NULL, NULL); 812 } 760 813 } 761 814 -
zephyr.c
r50e29e3 r5376a95 354 354 return(owl_strdup("")); 355 355 } 356 357 char *owl_zephyr_get_field_as_utf8(ZNotice_t *n, int j) 358 { 359 int i, count, save; 360 361 /* If there's no message here, just run along now */ 362 if (n->z_message_len == 0) 363 return(owl_strdup("")); 364 365 count=save=0; 366 for (i = 0; i < n->z_message_len; i++) { 367 if (n->z_message[i]=='\0') { 368 count++; 369 if (count == j) { 370 /* just found the end of the field we're looking for */ 371 return(owl_validate_or_convert(n->z_message + save, -1)); 372 } else { 373 save = i + 1; 374 } 375 } 376 } 377 /* catch the last field, which might not be null terminated */ 378 if (count == j - 1) { 379 return owl_validate_or_convert(n->z_message + save, n->z_message_len - save); 380 } 381 382 return(owl_strdup("")); 383 } 356 384 #else 357 385 char *owl_zephyr_get_field(void *n, int j) 358 386 { 359 387 return(owl_strdup("")); 388 } 389 char *owl_zephyr_get_field_as_utf8(ZNotice_t *n, int j) 390 { 391 return owl_zephyr_get_field(n, j); 360 392 } 361 393 #endif
Note: See TracChangeset
for help on using the changeset viewer.