From: markus schnalke Date: Tue, 4 Dec 2012 21:45:23 +0000 (+0100) Subject: Report useful error message on broken file(1). X-Git-Tag: mmh-0.1~14 X-Git-Url: http://git.marmaro.de/?p=mmh;a=commitdiff_plain;h=10e03b3fba3e01052baf92c963c46a2a5529b4e0 Report useful error message on broken file(1). GNU file-4.26, for instance, is known to be broken. file(1) is the default Mime-Type-Query program. --- diff --git a/uip/send.c b/uip/send.c index 76280aa..e63074c 100644 --- a/uip/send.c +++ b/uip/send.c @@ -549,6 +549,7 @@ make_mime_composition_file_entry(char *file_name) char content_type[BUFSIZ]; char cmdbuf[BUFSIZ]; char *cmd = mimetypequeryproc; + int semicolon = 0; for (np = m_defs; np; np = np->n_next) { if (strcasecmp(np->n_name, mimetypequery)==0) { @@ -579,11 +580,23 @@ make_mime_composition_file_entry(char *file_name) adios(NULL, "unable to access file `%s'", file_name); } - cp = (!(cp = strrchr(file_name, '/'))) ? file_name : cp + 1; - fprintf(composition_file, "#%s; name=\"%s\" <> [%s] {attachment}", - content_type, cp, cp); + /* Check for broken file(1). See man page mh-profile(5). */ + for (cp=content_type; *cp; cp++) { + if (isspace(*cp)) { + if (!semicolon) { + adios(NULL, "Sorry, your Mime-Type-Query command (%s) is broken.\n\tThe output misses a semicolon before the whitespace.\n\tOutput was: %s", cmd, content_type); + } + } else if (*cp == ';') { + semicolon = 1; + } else { + semicolon = 0; + } + } - fprintf(composition_file, " %s\n", file_name); + cp = (!(cp = strrchr(file_name, '/'))) ? file_name : cp + 1; + fprintf(composition_file, + "#%s; name=\"%s\" <> [%s] {attachment} %s\n", + content_type, cp, cp, file_name); return; }