Lines Matching defs:mip
72 show_one_mime_info(FILE *fp, struct mime_info *mip)
77 (void)fprintf(fp, "mip %d:\n", mip->mi_partnum);
78 (void)fprintf(fp, "** Version: %s\n", XX(mip->mi_version));
79 (void)fprintf(fp, "** type: %s\n", XX(mip->mi_type));
80 (void)fprintf(fp, "** subtype: %s\n", XX(mip->mi_subtype));
81 (void)fprintf(fp, "** boundary: %s\n", XX(mip->mi_boundary));
82 (void)fprintf(fp, "** charset: %s\n", XX(mip->mi_charset));
83 (void)fprintf(fp, "** encoding: %s\n", XX(mip->mi_encoding));
84 (void)fprintf(fp, "** disposition: %s\n", XX(mip->mi_disposition));
85 (void)fprintf(fp, "** filename: %s\n", XX(mip->mi_filename));
87 mip->mp,
88 mip->mp->m_flag,
89 mip->mp->m_block, mip->mp->m_offset, mip->mp->m_size,
90 mip->mp->m_lines, mip->mp->m_blines);
91 (void)fprintf(fp, "** mip: %p\n", mip);
92 (void)fprintf(fp, "** mi_flink: %p\n", mip->mi_flink);
93 (void)fprintf(fp, "** mi_blink: %p\n", mip->mi_blink);
94 (void)fprintf(fp, "** mip %p, mp %p, parent_mip %p, parent_mp %p\n",
95 mip, mip->mp, mip->mi_parent.mip, mip->mi_parent.mp);
98 mip->mi_fo, mip->mi_head_end, mip->mi_pipe_end);
100 (void)fprintf(fp, "** mi_ignore_body: %d\n", mip->mi_ignore_body);
101 (void)fprintf(fp, "** mi_partnum: %d\n", mip->mi_partnum);
102 (void)fprintf(fp, "** mi_partstr: %s\n", mip->mi_partstr);
103 (void)fprintf(fp, "** mi_msgstr: %s\n", mip->mi_msgstr);
112 show_mime_info(FILE *fp, struct mime_info *mip, struct mime_info *end_mip)
114 for (/* EMPTY */; mip != end_mip; mip = mip->mi_flink)
115 show_one_mime_info(fp, mip);
128 pipe_end(struct mime_info *mip)
133 fp = mip->mi_fo;
228 get_content(struct mime_info *mip)
236 mp = mip->mp;
237 mip->mi_version = cparam(NULL, hfield(MIME_HDR_VERSION, mp), 0);
238 mip->mi_encoding = cparam(NULL, hfield(MIME_HDR_ENCODING, mp), 1);
241 mip->mi_type = mime_type = cparam(NULL, mime_type_field, 1);
242 if (mip->mi_type) {
246 mip->mi_subtype = cp;
248 mip->mi_boundary = cparam("boundary", mime_type_field, 0);
249 mip->mi_charset = cparam("charset", mime_type_field, 1);
252 mip->mi_disposition = cparam(NULL, mime_disposition_field, 1);
268 mip->mi_filename = filename;
275 if (mip->mi_version == NULL && mip->mi_type != NULL)
276 mip->mi_version = MIME_VERSION;
310 new_mip->mi_parent.mip = top_mip;
456 get_command_hook(struct mime_info *mip, const char *domain)
461 if (mip->mi_type == NULL)
468 if (mip->mi_subtype) {
470 domain, mip->mi_type, mip->mi_subtype) == -1) {
478 if (asprintf(&key, "mime%s-%s", domain, mip->mi_type) == -1) {
490 is_basic_alternative(struct mime_info *mip)
493 strcasecmp(mip->mi_type, "text") == 0 &&
494 strcasecmp(mip->mi_subtype, "plain") == 0;
536 is_multipart(struct mime_info *mip)
538 return mip->mi_type &&
539 strcasecmp("multipart", mip->mi_type) == 0;
542 is_message(struct mime_info *mip)
544 return mip->mi_type &&
545 strcasecmp("message", mip->mi_type) == 0;
549 is_alternative(struct mime_info *mip)
551 return mip->mi_subtype &&
552 strcasecmp("alternative", mip->mi_subtype) == 0;
571 else if (top_mip->mi_parent.mip) {
574 prefix = top_mip->mi_parent.mip->mi_partstr;
631 show_partnum(FILE *fp, struct mime_info *mip)
635 if (mip->mi_parent.mip && mip->mi_parent.mip->mi_parent.mip)
636 need_dot = show_partnum(fp, mip->mi_parent.mip);
638 if (mip->mi_partnum) {
639 (void)fprintf(fp, "%s%d", need_dot ? "." : "", mip->mi_partnum);
650 struct mime_info *mip;
653 mip = csalloc(1, sizeof(*mip));
654 mip->mp = salloc(sizeof(*mip->mp));
655 *mip->mp = *mp; /* copy this so we don't trash the master mp */
657 get_content(mip);
660 if (mip->mi_version == NULL ||
661 !equal(mip->mi_version, MIME_VERSION))
664 mip->mi_partstr = "";
665 if (mip->mi_type)
666 (void)expand_mip(mip);
671 mip->mi_pipe_end = last_registered_file(0); /* for mime_decode_close() */
672 for (p = mip->mi_flink; p; p = p->mi_flink)
673 p->mi_pipe_end = mip->mi_pipe_end;
675 /* show_mime_info(stderr, mip, NULL); */
677 return mip;
682 mime_decode_close(struct mime_info *mip)
684 if (mip)
685 close_top_files(mip->mi_pipe_end);
720 const char *prefix, struct mime_info *mip)
727 if (mip == NULL)
748 mip->mi_fo = obuf;
764 mime_run_function(prefix_line, pipe_end(mip), (void*)&prefix_line_args);
769 for (/*EMPTY*/; mip; mip = mip->mi_flink) {
770 mip->mi_fo = obuf;
771 mip->mi_head_end = obuf;
772 mip->mi_detachdir = detachdir;
773 mip->mi_detachall = detachall_flag;
774 error |= sendmessage(mip->mp, pipe_end(mip), igntab, NULL, mip);
786 run_mime_ficonv(struct mime_info *mip, const char *charset)
791 fo = pipe_end(mip);
794 mip->mi_charset == NULL ||
795 strcasecmp(mip->mi_charset, charset) == 0 ||
796 strcasecmp(mip->mi_charset, "unknown") == 0)
799 cd = iconv_open(charset, mip->mi_charset);
807 if (mip->mi_detachdir == NULL && /* don't contaminate the detach! */
810 mip->mi_charset, charset);
820 run_decoder(struct mime_info *mip, void(*fn)(FILE*, FILE*, void *))
826 if (charset && mip->mi_type && strcasecmp(mip->mi_type, "text") == 0)
827 run_mime_ficonv(mip, charset);
830 if (mip->mi_detachdir == NULL &&
834 mime_run_function(fn, pipe_end(mip),
835 mip->mi_detachdir ? NULL : __UNCONST("add_lf"));
856 get_display_mode(struct mime_info *mip, mime_codec_t dec)
937 if (mip->mi_ignore_body) /*is_multipart(mip) || is_message(mip))*/
944 if (mip->mi_encoding && dec == NULL)
947 mi_type = mip->mi_type;
948 mi_subtype = mip->mi_type ? mip->mi_subtype : NULL;
973 mime_decode_body(struct mime_info *mip)
980 close_top_files(mip->mi_head_end);
986 (void)fflush(pipe_end(mip));
988 if (mip->mi_detachdir) /* We are detaching! Ignore the hooks. */
989 return mime_detach_parts(mip);
992 if (mip->mi_command_hook == NULL)
993 cmd = get_command_hook(mip, "-body");
995 dec = mime_fio_decoder(mip->mi_encoding);
1001 dispmode = cmd || mip->mi_command_hook ? DM_DISPLAY : get_display_mode(mip, dec);
1010 flags = mime_run_command(mip->mi_command_hook, NULL);
1012 flags = mime_run_command(cmd, pipe_end(mip));
1014 run_decoder(mip, dec);
1015 return pipe_end(mip);
1039 (void)fprintf(pipe_end(mip), " [%s]\n\n", mp->msg);
1140 mime_decode_header(struct mime_info *mip)
1146 fo = pipe_end(mip);
1148 if (mip->mi_detachdir) { /* We are detaching. Don't run anything! */
1150 return pipe_end(mip);
1153 if (mip->mi_partnum)
1154 (void)fprintf(fo, "----- Part %s -----\n", mip->mi_partstr);
1161 cmd = get_command_hook(mip, "-hook");
1162 mip->mi_command_hook = cmd;
1164 flags = mime_run_command(cmd, pipe_end(mip));
1165 mip->mi_head_end = last_registered_file(0);
1168 cmd = get_command_hook(mip, "-head");
1169 mip->mi_head_end = last_registered_file(0);
1170 flags = mime_run_command(cmd, pipe_end(mip));
1174 mime_run_function(decode_header, pipe_end(mip), NULL);
1176 return pipe_end(mip);