[Mew-dist 13668] Re: 本文

SAKAI Kiyotaka ksakai at example.com
2000年 7月 17日 (月) 20:58:44 JST


>> In article <20000709.002343.126574202.konuma at example.com>, Masaki KONUMA <konuma at example.com> writes:

>> そのうちやるかも:

>> - Summary モードの書式に本文を表示できるようにする

> 本文が見えないと悲しいので、とりあえず、いんちきして表示するようにしま
> した。

ハードコーディングしまくりですが、mewls で Body の先頭 3行の情報を返し、
Mew 側で表示できるようにするためのパッチです。

ただし、

  ・skip するべき行をどのように取り扱うのがいいのか。
  ・Body として返す行は、3行固定でいいのか。

といったあたりに課題が残ります。

ちなみに、始めは mewls 側で 1行に連結して返せばいいのではないかと思っ
ていたのですが、そのためには mewls で文字コードのハンドリングができな
ければいけないことに気が付いて挫折しました。
-- 
酒井 清隆 (E-mail: ksakai at example.com)
-------------- next part --------------
Index: mew-scan.el
===================================================================
RCS file: /home/ksakai/cvsroot/mew-1.95b47/mew-scan.el,v
retrieving revision 1.2
diff -u -r1.2 mew-scan.el
--- mew-scan.el	2000/07/17 11:24:28	1.2
+++ mew-scan.el	2000/07/17 11:49:41
@@ -14,7 +14,7 @@
 
 (defvar mew-scan-fields
   '("Filename:" "Subject:" "Date:" "From:" "To:"
-    "Content-Type:" "Message-Id:"))
+    "Content-Type:" "Message-Id:" "Body1:" "Body2:" "Body3:"))
 
 (defvar mew-summary-inbox-position (make-marker))
 
@@ -95,6 +95,9 @@
 	(to   (or (aref vec 4) ""))
 	(ct   (or (aref vec 5) ""))
 	(id   (or (aref vec 6) ""))
+	(body1 (or (aref vec 7) ""))
+	(body2 (or (aref vec 8) ""))
+	(body3 (or (aref vec 9) ""))
 	(case-fold-search t)
 	day month ret1 ret2 func faddr nickname duplicated)
     (if (string-match "\\([0-9][0-9]?\\) \\([A-Z][a-z][a-z]\\)" date)
@@ -133,6 +136,7 @@
 		  (string-to-int day)
 		  (mew-substring from 14) ""))
     ;; convert TAB to space
+    (setq subj (concat subj " || " body1 body2 body3))
     (while (string-match "\t" subj)
       (setq subj (replace-match " " nil nil subj)))
     (setq ret2 (mew-substring subj (- width (string-width ret1) 1)))
Index: bin/mewls.c
===================================================================
RCS file: /home/ksakai/cvsroot/mew-1.95b47/bin/mewls.c,v
retrieving revision 1.2
diff -u -r1.2 mewls.c
--- mewls.c	2000/07/17 10:01:24	1.2
+++ mewls.c	2000/07/17 11:43:59
@@ -107,11 +107,12 @@
 	return p;
 }
 
+#define BLEN 3
 void
 dumpheader(FILE *fp, char *fname) {
 	int lim = fread(hbuf, sizeof(char), sizeof(hbuf), fp);
 	int i;
-	char *p, *limp, *end;
+	char *p, *limp, *end, *body[BLEN + 1];
 
 	memset(BEGP, 0, sizeof(BEGP));
 	memset(ENDP, 0, sizeof(ENDP));
@@ -142,8 +143,26 @@
 			if (p == NULL)
 				break;
 		}
-		if (*p == '\n') /* header ends */
+		if (*p == '\n') {
+			/* header ends */
+			for (i = 0; i < BLEN + 1; i++) {
+				body[i] = NULL;
+			}
+			i = 0;
+			while (i < BLEN + 1) {
+				p = nextline(p, limp);
+				if (p == NULL) {
+					*(limp - 1) = '\0';
+					break;
+				}
+				*(p - 1) = '\0';
+				while (isspace(*p))
+					p++;
+				if (*p != '\0' && *p != '#' && *p != '>')
+					body[i++] = p;
+			}
 			break;
+		}
 	}
 
  final:
@@ -157,6 +176,9 @@
 				p++;
 			}
 		}
+	for (i = 0; i < BLEN; i++)
+		if (body[i] != NULL)
+			printf("Body%d: %s\n", i + 1, body[i]);
 	printf("\n");
 
 	fflush(stdout);


Mew-dist メーリングリストの案内