Revision 144 src/textview.c
| textview.c (revision 144) | ||
|---|---|---|
| 158 | 158 |
CodeConverter *conv); |
| 159 | 159 |
|
| 160 | 160 |
static GPtrArray *textview_scan_header (TextView *textview, |
| 161 |
FILE *fp); |
|
| 161 |
FILE *fp, |
|
| 162 |
const gchar *encoding); |
|
| 162 | 163 |
static void textview_show_header (TextView *textview, |
| 163 | 164 |
GPtrArray *headers); |
| 164 | 165 |
|
| ... | ... | |
| 391 | 392 |
textview_clear(textview); |
| 392 | 393 |
|
| 393 | 394 |
if (fseek(fp, mimeinfo->fpos, SEEK_SET) < 0) perror("fseek");
|
| 394 |
headers = textview_scan_header(textview, fp); |
|
| 395 |
headers = textview_scan_header(textview, fp, charset);
|
|
| 395 | 396 |
if (headers) {
|
| 396 | 397 |
GtkTextView *text = GTK_TEXT_VIEW(textview->text); |
| 397 | 398 |
GtkTextBuffer *buffer; |
| ... | ... | |
| 435 | 436 |
boundary_len = strlen(boundary); |
| 436 | 437 |
} |
| 437 | 438 |
|
| 439 |
if (textview->messageview->forced_charset) |
|
| 440 |
charset = textview->messageview->forced_charset; |
|
| 441 |
else if (prefs_common.force_charset) |
|
| 442 |
charset = prefs_common.force_charset; |
|
| 443 |
else if (mimeinfo->charset) |
|
| 444 |
charset = mimeinfo->charset; |
|
| 445 |
|
|
| 438 | 446 |
if (!boundary && mimeinfo->mime_type == MIME_TEXT) {
|
| 439 | 447 |
if (fseek(fp, mimeinfo->fpos, SEEK_SET) < 0) |
| 440 | 448 |
perror("fseek");
|
| 441 |
headers = textview_scan_header(textview, fp); |
|
| 449 |
headers = textview_scan_header(textview, fp, charset);
|
|
| 442 | 450 |
} else {
|
| 443 | 451 |
if (mimeinfo->mime_type == MIME_TEXT && mimeinfo->parent) {
|
| 444 | 452 |
glong fpos; |
| ... | ... | |
| 457 | 465 |
else if (fseek(fp, parent->fpos, SEEK_SET) < 0) |
| 458 | 466 |
perror("fseek");
|
| 459 | 467 |
else {
|
| 460 |
headers = textview_scan_header(textview, fp); |
|
| 468 |
headers = textview_scan_header |
|
| 469 |
(textview, fp, charset); |
|
| 461 | 470 |
if (fseek(fp, fpos, SEEK_SET) < 0) |
| 462 | 471 |
perror("fseek");
|
| 463 | 472 |
} |
| ... | ... | |
| 474 | 483 |
textview_clear(textview); |
| 475 | 484 |
return; |
| 476 | 485 |
} |
| 477 |
headers = textview_scan_header(textview, fp); |
|
| 486 |
headers = textview_scan_header(textview, fp, charset);
|
|
| 478 | 487 |
mimeinfo = mimeinfo->sub; |
| 479 | 488 |
is_rfc822_part = TRUE; |
| 480 | 489 |
} |
| 481 | 490 |
|
| 482 |
if (textview->messageview->forced_charset) |
|
| 483 |
charset = textview->messageview->forced_charset; |
|
| 484 |
else if (prefs_common.force_charset) |
|
| 485 |
charset = prefs_common.force_charset; |
|
| 486 |
else if (mimeinfo->charset) |
|
| 487 |
charset = mimeinfo->charset; |
|
| 488 |
|
|
| 489 | 491 |
textview_set_font(textview, charset); |
| 490 | 492 |
|
| 491 | 493 |
textview_clear(textview); |
| ... | ... | |
| 543 | 545 |
while (fgets(buf, sizeof(buf), fp) != NULL) |
| 544 | 546 |
if (buf[0] == '\r' || buf[0] == '\n') break; |
| 545 | 547 |
|
| 548 |
if (textview->messageview->forced_charset) |
|
| 549 |
charset = textview->messageview->forced_charset; |
|
| 550 |
else if (prefs_common.force_charset) |
|
| 551 |
charset = prefs_common.force_charset; |
|
| 552 |
else if (mimeinfo->charset) |
|
| 553 |
charset = mimeinfo->charset; |
|
| 554 |
|
|
| 546 | 555 |
if (mimeinfo->mime_type == MIME_MESSAGE_RFC822) {
|
| 547 |
headers = textview_scan_header(textview, fp); |
|
| 556 |
headers = textview_scan_header(textview, fp, charset);
|
|
| 548 | 557 |
if (headers) {
|
| 549 | 558 |
gtk_text_buffer_insert(buffer, &iter, "\n", 1); |
| 550 | 559 |
textview_show_header(textview, headers); |
| ... | ... | |
| 622 | 631 |
gtk_text_buffer_insert(buffer, &iter, buf, -1); |
| 623 | 632 |
else |
| 624 | 633 |
gtk_text_buffer_insert(buffer, &iter, "\n", 1); |
| 625 |
if (textview->messageview->forced_charset) |
|
| 626 |
charset = textview->messageview->forced_charset; |
|
| 627 |
else if (prefs_common.force_charset) |
|
| 628 |
charset = prefs_common.force_charset; |
|
| 629 |
else if (mimeinfo->charset) |
|
| 630 |
charset = mimeinfo->charset; |
|
| 631 | 634 |
textview_write_body(textview, mimeinfo, fp, charset); |
| 632 | 635 |
} |
| 633 | 636 |
} |
| ... | ... | |
| 1107 | 1110 |
gtk_text_buffer_place_cursor(buffer, &iter); |
| 1108 | 1111 |
} |
| 1109 | 1112 |
|
| 1110 |
static GPtrArray *textview_scan_header(TextView *textview, FILE *fp) |
|
| 1113 |
static GPtrArray *textview_scan_header(TextView *textview, FILE *fp, |
|
| 1114 |
const gchar *encoding) |
|
| 1111 | 1115 |
{
|
| 1112 | 1116 |
gchar buf[BUFFSIZE]; |
| 1113 | 1117 |
GPtrArray *headers, *sorted_headers; |
| ... | ... | |
| 1118 | 1122 |
g_return_val_if_fail(fp != NULL, NULL); |
| 1119 | 1123 |
|
| 1120 | 1124 |
if (textview->show_all_headers) |
| 1121 |
return procheader_get_header_array_asis(fp); |
|
| 1125 |
return procheader_get_header_array_asis(fp, encoding);
|
|
| 1122 | 1126 |
|
| 1123 | 1127 |
if (!prefs_common.display_header) {
|
| 1124 | 1128 |
while (fgets(buf, sizeof(buf), fp) != NULL) |
| ... | ... | |
| 1126 | 1130 |
return NULL; |
| 1127 | 1131 |
} |
| 1128 | 1132 |
|
| 1129 |
headers = procheader_get_header_array_asis(fp); |
|
| 1133 |
headers = procheader_get_header_array_asis(fp, encoding);
|
|
| 1130 | 1134 |
|
| 1131 | 1135 |
sorted_headers = g_ptr_array_new(); |
| 1132 | 1136 |
|
Also available in: Unified diff