#include <errno.h>
#include <setjmp.h>
#include <signal.h>
-#include <h/mts.h>
#include <h/tws.h>
#include <h/mime.h>
#include <h/mhparse.h>
store_switch(CT ct)
{
switch (ct->c_type) {
- case CT_MULTIPART:
- return store_multi(ct);
+ case CT_MULTIPART:
+ return store_multi(ct);
+ break;
+
+ case CT_MESSAGE:
+ switch (ct->c_subtype) {
+ case MESSAGE_PARTIAL:
+ return store_partial(ct);
break;
- case CT_MESSAGE:
- switch (ct->c_subtype) {
- case MESSAGE_PARTIAL:
- return store_partial(ct);
- break;
-
- case MESSAGE_EXTERNAL:
- return store_external(ct);
-
- case MESSAGE_RFC822:
- default:
- return store_generic(ct);
- break;
- }
- break;
-
- case CT_APPLICATION:
- return store_application(ct);
- break;
-
- case CT_TEXT:
- case CT_AUDIO:
- case CT_IMAGE:
- case CT_VIDEO:
- return store_generic(ct);
- break;
+ case MESSAGE_EXTERNAL:
+ return store_external(ct);
+ case MESSAGE_RFC822:
default:
- adios(NULL, "unknown content type %d", ct->c_type);
+ return store_generic(ct);
break;
+ }
+ break;
+
+ case CT_APPLICATION:
+ return store_application(ct);
+ break;
+
+ case CT_TEXT:
+ case CT_AUDIO:
+ case CT_IMAGE:
+ case CT_VIDEO:
+ return store_generic(ct);
+ break;
+
+ default:
+ adios(NULL, "unknown content type %d", ct->c_type);
+ break;
}
return OK; /* NOT REACHED */
if (ct->c_folder) {
fprintf(stderr, " to folder %s as message %d\n",
ct->c_folder, msgnum);
- } else if (!strcmp(ct->c_storage, "-")) {
+ } else if (strcmp(ct->c_storage, "-")==0) {
fprintf(stderr, " to stdout\n");
} else {
int cwdlen;
cwdlen = strlen(cwd);
fprintf(stderr, " as file %s\n",
- strncmp(ct->c_storage, cwd, cwdlen) ||
+ strncmp(ct->c_storage, cwd,
+ cwdlen)!=0 ||
ct->c_storage[cwdlen] != '/' ?
ct->c_storage :
ct->c_storage + cwdlen + 1);
return NOTOK;
}
- file = appending || !strcmp(ct->c_storage, "-") ?
+ file = appending || strcmp(ct->c_storage, "-")==0 ?
NULL : ct->c_storage;
if ((fd = (*ct->c_ceopenfnx) (ct, &file)) == NOTOK)
return NOTOK;
- if (!strcmp(file, ct->c_storage)) {
+ if (strcmp(file, ct->c_storage)==0) {
(*ct->c_ceclosefnx) (ct);
return OK;
}
/*
** Send to standard output
*/
- if (!strcmp(ct->c_storage, "-")) {
+ if (strcmp(ct->c_storage, "-")==0) {
int gd;
if ((gd = dup(fileno(stdout))) == NOTOK) {
for (;;) {
switch (cc = read(fd, buffer, sizeof(buffer))) {
- case NOTOK:
- advise(file, "error reading content from");
- break;
+ case NOTOK:
+ advise(file, "error reading content from");
+ break;
- case OK:
- break;
+ case OK:
+ break;
- default:
- fwrite(buffer, sizeof(*buffer),
- cc, fp);
- continue;
+ default:
+ fwrite(buffer, sizeof(*buffer), cc, fp);
+ continue;
}
break;
}
last = ct->c_end;
fseek(ct->c_fp, pos, SEEK_SET);
- if (!strcmp(ct->c_storage, "-")) {
+ if (strcmp(ct->c_storage, "-")==0) {
int gd;
if ((gd = dup(fileno(stdout))) == NOTOK) {
*/
if (filterstate) {
switch (buffer[0]) {
- case ' ':
- case '\t':
- if (filterstate < 0)
- buffer[0] = 0;
- break;
+ case ' ':
+ case '\t':
+ if (filterstate < 0)
+ buffer[0] = 0;
+ break;
- case '\n':
- filterstate = 0;
- break;
+ case '\n':
+ filterstate = 0;
+ break;
- default:
- if (!uprf(buffer, XXX_FIELD_PRF) && !uprf(buffer, VRSN_FIELD) && !uprf(buffer, "Subject:") && !uprf(buffer, "Encrypted:") && !uprf(buffer, "Message-ID:")) {
- filterstate = -1;
- buffer[0] = 0;
- break;
- }
- filterstate = 1;
+ default:
+ if (!uprf(buffer, XXX_FIELD_PRF) && !uprf(buffer, VRSN_FIELD) && !uprf(buffer, "Subject:") && !uprf(buffer, "Message-ID:")) {
+ filterstate = -1;
+ buffer[0] = 0;
break;
+ }
+ filterstate = 1;
+ break;
}
}
fputs(buffer, fp);
/* Read the folder. */
if ((mp = folder_read(folder))) {
/* Link file into folder */
- msgnum = folder_addmsg(&mp, filename, 0, 0, 0, 0, (char *)0);
+ msgnum = folder_addmsg(&mp, filename, 0, 0, 0, 0, NULL);
} else {
advise(NULL, "unable to read folder %s", folder);
return NOTOK;
/* We are processing a storage escape */
if (*cp == '%') {
switch (*++cp) {
- case 'a':
- /*
- ** Insert parameters from Content-Type.
- ** This is only valid for '|' commands.
- */
- if (buffer[0] != '|' && buffer[0] != '!') {
- *bp++ = *--cp;
- *bp = '\0';
- buflen--;
- continue;
- } else {
- char **ap, **ep;
- char *s = "";
-
- for (ap = ci->ci_attrs, ep = ci->ci_values;
- *ap; ap++, ep++) {
- snprintf(bp, buflen, "%s%s=\"%s\"", s, *ap, *ep);
- len = strlen(bp);
- bp += len;
- buflen -= len;
- s = " ";
- }
+ case 'a':
+ /*
+ ** Insert parameters from Content-Type.
+ ** This is only valid for '|' commands.
+ */
+ if (buffer[0] != '|' && buffer[0] != '!') {
+ *bp++ = *--cp;
+ *bp = '\0';
+ buflen--;
+ continue;
+ } else {
+ char **ap, **ep;
+ char *s = "";
+
+ for (ap=ci->ci_attrs, ep=ci->ci_values;
+ *ap; ap++, ep++) {
+ snprintf(bp, buflen,
+ "%s%s=\"%s\"",
+ s, *ap, *ep);
+ len = strlen(bp);
+ bp += len;
+ buflen -= len;
+ s = " ";
}
- break;
+ }
+ break;
- case 'm':
- /* insert message number */
- snprintf(bp, buflen, "%s", mhbasename(ct->c_file));
- break;
+ case 'm':
+ /* insert message number */
+ snprintf(bp, buflen, "%s",
+ mhbasename(ct->c_file));
+ break;
- case 'P':
- /* insert part number with leading dot */
- if (ct->c_partno)
- snprintf(bp, buflen, ".%s", ct->c_partno);
- break;
+ case 'P':
+ /* insert part number with leading dot */
+ if (ct->c_partno)
+ snprintf(bp, buflen, ".%s",
+ ct->c_partno);
+ break;
- case 'p':
- /* insert part number withouth leading dot */
- if (ct->c_partno)
- strncpy(bp, ct->c_partno, buflen);
- break;
+ case 'p':
+ /* insert part number withouth leading dot */
+ if (ct->c_partno)
+ strncpy(bp, ct->c_partno, buflen);
+ break;
- case 't':
- /* insert content type */
- strncpy(bp, ci->ci_type, buflen);
- break;
+ case 't':
+ /* insert content type */
+ strncpy(bp, ci->ci_type, buflen);
+ break;
- case 's':
- /* insert content subtype */
- strncpy(bp, ci->ci_subtype, buflen);
- break;
+ case 's':
+ /* insert content subtype */
+ strncpy(bp, ci->ci_subtype, buflen);
+ break;
- case '%':
- /* insert the character % */
- goto raw;
+ case '%':
+ /* insert the character % */
+ goto raw;
- default:
- *bp++ = *--cp;
- *bp = '\0';
- buflen--;
- continue;
+ default:
+ *bp++ = *--cp;
+ *bp = '\0';
+ buflen--;
+ continue;
}
/* Advance bp and decrement buflen */
if (!uprf(hp->name, XXX_FIELD_PRF) &&
mh_strcasecmp(hp->name, VRSN_FIELD) &&
mh_strcasecmp(hp->name, "Subject") &&
- mh_strcasecmp(hp->name, "Encrypted") &&
mh_strcasecmp(hp->name, "Message-ID"))
fprintf(out, "%s:%s", hp->name, hp->value);
hp = hp->next; /* next header field */