mhshow/mhstore: Removed support for retrieving message/external-body parts.
[mmh] / uip / mhshowsbr.c
index 2b69c19..adb0da7 100644 (file)
@@ -963,24 +963,34 @@ show_partial(CT ct, int alternate)
 
 
 /*
-** Show content of type "message/external".
-**
-** THE ERROR CHECKING IN THIS ONE IS NOT DONE YET.
+** Show how to retrieve content of type "message/external".
 */
-
 static int
 show_external(CT ct, int alternate)
 {
-       struct exbody *e = (struct exbody *) ct->c_ctparams;
-       CT p = e->eb_content;
-
-       if (!type_ok(p, 0))
-               return OK;
-
-       return show_switch(p, alternate);
-
-#if 0
-       content_error(NULL, p, "don't know how to display content");
-       return NOTOK;
-#endif
+       char **ap, **ep;
+       char *msg;
+       FILE *fp;
+       char buf[BUFSIZ];
+
+       msg = add("You need to fetch the contents yourself:", NULL);
+       ap = ct->c_ctinfo.ci_attrs;
+       ep = ct->c_ctinfo.ci_values;
+       for (; *ap; ap++, ep++) {
+               msg = add(concat("\n\t", *ap, ": ", *ep, NULL), msg);
+       }
+       if (!(fp = fopen(ct->c_file, "r"))) {
+               adios(ct->c_file, "unable to open");
+       }
+       fseek(fp, ct->c_begin, SEEK_SET);
+       while (!feof(fp) && ftell(fp) < ct->c_end) {
+               if (!fgets(buf, sizeof buf, fp)) {
+                       adios(ct->c_file, "unable to read");
+               }
+               *strchr(buf, '\n') = '\0';
+               msg = add(concat("\n\t", buf, NULL), msg);
+       }
+       fclose(fp);
+       content_error(NULL, ct, msg);
+       return OK;
 }