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