X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fmhstoresbr.c;h=6a0cf0497f7ac1aaa7e18d5347fd9b89a6a29c54;hp=8b2dc00ae246e04bbc77ffcc8f7e7fd05c2981de;hb=064527f7b57ab050e5af13e15ad99aeeab125857;hpb=714b5c530ece27ea2835a313013f5b770163403c diff --git a/uip/mhstoresbr.c b/uip/mhstoresbr.c index 8b2dc00..6a0cf04 100644 --- a/uip/mhstoresbr.c +++ b/uip/mhstoresbr.c @@ -13,7 +13,6 @@ #include #include #include -#include #include #include #include @@ -138,40 +137,40 @@ static int 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 */ @@ -249,13 +248,13 @@ store_application(CT ct) } if (tarP) { - ct->c_showproc = add(zP ? "%euncompress | tar tvf -" : (gzP ? "%egzip -dc | tar tvf -" : "%etar tvf -"), NULL); + ct->c_showproc = getcpy(zP ? "%euncompress | tar tvf -" : (gzP ? "%egzip -dc | tar tvf -" : "%etar tvf -")); if (!ct->c_storeproc) { if (autosw) { - ct->c_storeproc = add(zP ? "| uncompress | tar xvpf -" : (gzP ? "| gzip -dc | tar xvpf -" : "| tar xvpf -"), NULL); + ct->c_storeproc = getcpy(zP ? "| uncompress | tar xvpf -" : (gzP ? "| gzip -dc | tar xvpf -" : "| tar xvpf -")); ct->c_umask = 0022; } else { - ct->c_storeproc= add(zP ? "%m%P.tar.Z" : (gzP ? "%m%P.tar.gz" : "%m%P.tar"), NULL); + ct->c_storeproc= getcpy(zP ? "%m%P.tar.Z" : (gzP ? "%m%P.tar.gz" : "%m%P.tar")); } } } @@ -417,9 +416,9 @@ store_external(CT ct) if ((cp = e->eb_name) && *cp != '/' && *cp != '.' && *cp != '|' && *cp != '!' && !strchr(cp, '%')) { if (!ct->c_storeproc) - ct->c_storeproc = add(cp, NULL); + ct->c_storeproc = getcpy(cp); if (!p->c_storeproc) - p->c_storeproc = add(cp, NULL); + p->c_storeproc = getcpy(cp); } } @@ -506,11 +505,11 @@ store_content(CT ct, CT p) */ if (p) { appending = 1; - ct->c_storage = add(p->c_storage, NULL); + ct->c_storage = getcpy(p->c_storage); /* record the folder name */ if (p->c_folder) { - ct->c_folder = add(p->c_folder, NULL); + ct->c_folder = getcpy(p->c_folder); } goto got_filename; } @@ -550,19 +549,19 @@ store_content(CT ct, CT p) /* Store content in temporary file for now */ tmpfilenam = m_mktemp(invo_name, NULL, NULL); - ct->c_storage = add(tmpfilenam, NULL); + ct->c_storage = getcpy(tmpfilenam); /* Get the folder name */ if (cp[1]) - folder = pluspath(cp); + folder = getcpy(expandfol(cp)); else - folder = getfolder(1); + folder = getcurfol(); /* Check if folder exists */ - create_folder(m_mailpath(folder), 0, exit); + create_folder(toabsdir(folder), 0, exit); /* Record the folder name */ - ct->c_folder = add(folder, NULL); + ct->c_folder = getcpy(folder); if (cp[1]) free(folder); @@ -584,7 +583,7 @@ store_content(CT ct, CT p) return show_content_aux(ct, 1, 0, buffer + 1, dir); /* record the filename */ - ct->c_storage = add(buffer, NULL); + ct->c_storage = getcpy(buffer); got_filename: /* flush the output stream */ @@ -632,14 +631,15 @@ got_filename: 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); @@ -678,11 +678,11 @@ output_content_file(CT ct, int appending) 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; } @@ -690,7 +690,7 @@ output_content_file(CT ct, int appending) /* ** Send to standard output */ - if (!strcmp(ct->c_storage, "-")) { + if (strcmp(ct->c_storage, "-")==0) { int gd; if ((gd = dup(fileno(stdout))) == NOTOK) { @@ -730,17 +730,16 @@ losing: 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; } @@ -764,7 +763,7 @@ losing: 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) { @@ -815,24 +814,24 @@ losing: */ 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); @@ -867,7 +866,7 @@ output_content_folder(char *folder, char *filename) /* 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; @@ -925,67 +924,71 @@ parse_format_string(CT ct, char *cp, char *buffer, int buflen, char *dir) /* 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", r1bindex(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 */ @@ -1033,7 +1036,7 @@ get_storeproc(CT ct) if (!mh_strcasecmp(*ap, "name") && *(cp = *ep) != '/' && *cp != '.' && *cp != '|' && *cp != '!' && !strchr(cp, '%')) { - ct->c_storeproc = add(cp, NULL); + ct->c_storeproc = getcpy(cp); return; } } @@ -1060,7 +1063,6 @@ copy_some_headers(FILE *out, CT ct) 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 */