#include <time.h>
static struct swit switches[] = {
-#define HEADSW 0
- { "headers", 0 },
-#define NHEADSW 1
- { "noheaders", 0 },
-#define LISTSW 2
- { "list", 0 },
-#define NLISTSW 3
- { "nolist", 0 },
-#define RFC934SW 4
- { "rfc934mode", 0 },
-#define NRFC934SW 5
- { "norfc934mode", 0 },
-#define VERBSW 6
+#define VERBSW 0
{ "verbose", 0 },
-#define NVERBSW 7
- { "noverbose", 0 },
-#define CONTENTIDSW 8
- { "contentid", 0 },
-#define NCONTENTIDSW 9
- { "nocontentid", 0 },
-#define VERSIONSW 10
- { "version", 0 },
-#define HELPSW 11
+#define NVERBSW 1
+ { "noverbose", 2 },
+#define VERSIONSW 2
+ { "Version", 0 },
+#define HELPSW 3
{ "help", 0 },
-#define DEBUGSW 12
+#define DEBUGSW 4
{ "debug", -5 },
{ NULL, 0 }
};
int debugsw = 0;
int verbosw = 0;
-int listsw = 0;
-int rfc934sw = 0;
-int contentidsw = 1;
-
/*
** Temporary files
*/
int output_message(CT, char *);
int output_message_fp(CT, FILE *, char*);
-/* mhlistsbr.c */
-int list_all_messages(CT *, int, int, int);
-
/* mhmisc.c */
void set_endian(void);
int
main(int argc, char **argv)
{
- int headsw = 1;
char *cp, buf[BUFSIZ];
char buffer[BUFSIZ], *compfile = NULL;
char **argp, **arguments;
- CT ct, cts[2];
+ CT ct;
FILE *fp = NULL;
FILE *fp_out = NULL;
done = unlink_done;
-#ifdef LOCALE
setlocale(LC_ALL, "");
-#endif
invo_name = mhbasename(argv[0]);
/* read user profile/context */
adios(NULL, "cannot specify both standard input and a file");
else
compfile = cp;
- listsw = 0; /* turn off -list if using std in/out */
verbosw = 0; /* turn off -verbose listings */
break;
}
print_version(invo_name);
done(1);
- case HEADSW:
- headsw++;
- continue;
- case NHEADSW:
- headsw = 0;
- continue;
-
- case LISTSW:
- listsw++;
- continue;
- case NLISTSW:
- listsw = 0;
- continue;
-
- case RFC934SW:
- rfc934sw++;
- continue;
- case NRFC934SW:
- rfc934sw = 0;
- continue;
-
- case CONTENTIDSW:
- contentidsw = 1;
- continue;
- case NCONTENTIDSW:
- contentidsw = 0;
- continue;
-
case VERBSW:
verbosw++;
continue;
set_endian();
- if ((cp = getenv("MM_NOASK")) && strcmp(cp, "1")==0)
- listsw = 0;
-
/*
** Check if we've specified an additional profile
*/
/* build the content structures for MIME message */
ct = build_mime(infile);
- cts[0] = ct;
- cts[1] = NULL;
/* output MIME message to this temporary file */
strncpy(outfile, m_mktemp(invo_name, NULL, &fp_out),
/* build the content structures for MIME message */
ct = build_mime(compfile);
- cts[0] = ct;
- cts[1] = NULL;
/* output MIME message to this temporary file */
strncpy(outfile, m_mktemp2(compfile, invo_name, NULL, &fp_out),
output_message_fp(ct, fp_out, outfile);
fclose(fp_out);
- /*
- ** List the message info
- */
- if (listsw)
- list_all_messages(cts, headsw, verbosw, debugsw);
-
/* Rename composition draft */
- snprintf(buffer, sizeof(buffer), "%s.orig", m_backup(compfile));
+ snprintf(buffer, sizeof(buffer), "%s.orig", compfile);
if (rename(compfile, buffer) == NOTOK) {
- adios(compfile, "unable to rename comp draft %s to", buffer);
+ adios(buffer, "unable to rename draft %s to", compfile);
}
/* Rename output file to take its place */
if (rename(outfile, compfile) == NOTOK) {
- advise(outfile, "unable to rename output %s to", compfile);
+ advise(compfile, "unable to rename output %s to", outfile);
rename(buffer, compfile);
done(1);
}
char buffer[BUFSIZ];
struct multipart *m;
struct part **pp;
- struct stat st;
struct str2init *s2i;
CI ci;
CT ct;
}
}
- if (listsw)
- ct->c_end = ftell(out);
fclose(out);
/* parse content type */
adios(NULL, "sorry, \"#%s/%s\" isn't supported", ci->ci_type, ci->ci_subtype);
}
use_forw:
- adios(NULL, "use \"#forw [+folder] [msgs]\" instead of \"#%s/%s\"", ci->ci_type, ci->ci_subtype);
- /* NOTREACHED */
+ admonish(NULL, "use \"#forw [+folder] [msgs]\" instead of \"#%s/%s\"", ci->ci_type, ci->ci_subtype);
+ /* FALL */
default:
if ((ct->c_ctinitfnx = s2i->si_init))
ce->ce_file = ci->ci_magic;
if (access(ce->ce_file, R_OK) == NOTOK)
adios("reading", "unable to access %s for", ce->ce_file);
- if (listsw && stat(ce->ce_file, &st) != NOTOK)
- ct->c_end = (long) st.st_size;
ci->ci_magic = NULL;
}
return OK;
"%s/%d", mp->foldpath,
msgnum);
pe->ce_file = getcpy(buffer);
- if (listsw && stat(pe->ce_file, &st)
- != NOTOK)
- p->c_end = (long) st.st_size;
if ((part = (struct part *) calloc(1, sizeof(*part))) == NULL)
adios(NULL, "out of memory");
snprintf(buffer, sizeof(buffer), "%s/%d",
mp->foldpath, msgnum);
ce->ce_file = getcpy(buffer);
- if (listsw && stat(ce->ce_file, &st) != NOTOK)
- ct->c_end = (long) st.st_size;
}
folder_free(mp); /* free folder/message structure */
if (compose_content(p) == NOTOK)
return NOTOK;
}
-
- /*
- ** If the -rfc934mode switch is given, then check all
- ** the subparts of a multipart/digest. If they are all
- ** message/rfc822, then mark this content and all
- ** subparts with the rfc934 compatibility mode flag.
- */
- if (rfc934sw && ct->c_subtype == MULTI_DIGEST) {
- int is934 = 1;
-
- for (part = m->mp_parts; part; part = part->mp_next) {
- CT p = part->mp_part;
-
- if (p->c_subtype != MESSAGE_RFC822) {
- is934 = 0;
- break;
- }
- }
- ct->c_rfc934 = is934;
- for (part = m->mp_parts; part; part = part->mp_next) {
- CT p = part->mp_part;
-
- if ((p->c_rfc934 = is934))
- p->c_end++;
- }
- }
-
- if (listsw) {
- ct->c_end = (partnum = strlen(prefix) + 2) + 2;
- if (ct->c_rfc934)
- ct->c_end += 1;
-
- for (part = m->mp_parts; part; part = part->mp_next)
- ct->c_end += part->mp_part->c_end + partnum;
- }
}
break;
break;
}
}
-
- /* Check size of file */
- if (listsw && ct->c_end == 0L) {
- struct stat st;
-
- if (stat(ce->ce_file, &st) != NOTOK)
- ct->c_end = (long) st.st_size;
- }
break;
}
}
/*
- ** Skip the output of Content-Type, parameters, content
- ** description and disposition, and Content-ID if the
- ** content is of type "message" and the rfc934 compatibility
- ** flag is set (which means we are inside multipart/digest
- ** and the switch -rfc934mode was given).
- */
- if (ct->c_type == CT_MESSAGE && ct->c_rfc934)
- goto skip_headers;
-
- /*
** output the content type and subtype
*/
np = getcpy(TYPE_FIELD);
add_header(ct, np, vp);
/*
- ** output the Content-ID, unless disabled by -nocontentid
+ ** output the Content-ID
*/
- if (contentidsw && ct->c_id) {
+ if (ct->c_id) {
np = getcpy(ID_FIELD);
vp = concat(" ", ct->c_id, NULL);
add_header(ct, np, vp);
add_header(ct, np, vp);
}
-skip_headers:
/*
** output the Content-Transfer-Encoding
*/