extern pid_t xpid; /* mhshowsbr.c */
-/* cache policies */
-extern int rcachesw; /* mhcachesbr.c */
-extern int wcachesw; /* mhcachesbr.c */
-
/*
** Directory to place temp files. This must
** be set before these routines are called.
};
-/* mhcachesbr.c */
-int find_cache(CT, int, int *, char *, char *, int);
-
/* mhmisc.c */
int part_ok(CT, int);
int type_ok(CT, int);
int cc, len, quoted, own_ct_fp = 0;
unsigned char *cp, *ep;
char buffer[BUFSIZ];
- unsigned char mask;
+ unsigned char mask = 0;
CE ce;
/* sbeck -- handle suffixes */
CI ci;
}
quoted = 0;
-#ifdef lint
- mask = 0;
-#endif
fseek(ct->c_fp, ct->c_begin, SEEK_SET);
while (len > 0) {
static int
openExternal(CT ct, CT cb, CE ce, char **file, int *fd)
{
- char cachefile[BUFSIZ];
-
if (ce->ce_fp) {
fseek(ce->ce_fp, 0L, SEEK_SET);
goto ready_already;
goto ready_already;
}
- if (find_cache(ct, rcachesw, (int *) 0, cb->c_id,
- cachefile, sizeof(cachefile)) != NOTOK) {
- if ((ce->ce_fp = fopen(cachefile, "r"))) {
- ce->ce_file = getcpy(cachefile);
- ce->ce_unlink = 0;
- goto ready_already;
- } else {
- admonish(cachefile, "unable to fopen for reading");
- }
- }
-
return OK;
ready_already:
static int
openFile(CT ct, char **file)
{
- int fd, cachetype;
- char cachefile[BUFSIZ];
+ int fd;
struct exbody *e = ct->c_ctexbody;
CE ce = ct->c_cefile;
return NOTOK;
}
- if ((!e->eb_permission ||
- mh_strcasecmp(e->eb_permission, "read-write")) &&
- find_cache(NULL, wcachesw, &cachetype,
- e->eb_content->c_id, cachefile, sizeof(cachefile))
- != NOTOK) {
- int mask;
- FILE *fp;
-
- mask = umask(cachetype ? ~m_gmprot() : 0222);
- if ((fp = fopen(cachefile, "w"))) {
- int cc;
- char buffer[BUFSIZ];
- FILE *gp = ce->ce_fp;
-
- fseek(gp, 0L, SEEK_SET);
-
- while ((cc = fread(buffer, sizeof(*buffer),
- sizeof(buffer), gp)) > 0)
- fwrite(buffer, sizeof(*buffer), cc, fp);
- fflush(fp);
-
- if (ferror(gp)) {
- admonish(ce->ce_file, "error reading");
- unlink(cachefile);
- } else if (ferror(fp)) {
- admonish(cachefile, "error writing");
- unlink(cachefile);
- }
- fclose(fp);
- }
- umask(mask);
- }
-
fseek(ce->ce_fp, 0L, SEEK_SET);
*file = ce->ce_file;
return fileno(ce->ce_fp);
static int
openFTP(CT ct, char **file)
{
- int cachetype, caching, fd;
+ int fd;
int len, buflen;
char *bp, *ftp, *user, *pass;
- char buffer[BUFSIZ], cachefile[BUFSIZ];
+ char buffer[BUFSIZ];
struct exbody *e;
CE ce;
static char *username = NULL;
}
ce->ce_unlink = (*file == NULL);
- caching = 0;
- cachefile[0] = '\0';
- if ((!e->eb_permission ||
- mh_strcasecmp(e->eb_permission, "read-write")) &&
- find_cache(NULL, wcachesw, &cachetype,
- e->eb_content->c_id, cachefile, sizeof(cachefile))
- != NOTOK) {
- if (*file == NULL) {
- ce->ce_unlink = 0;
- caching = 1;
- }
- }
if (*file)
ce->ce_file = getcpy(*file);
- else if (caching)
- ce->ce_file = getcpy(cachefile);
else
ce->ce_file = getcpy(m_mktemp(tmp, NULL, NULL));
break;
}
- if (cachefile[0]) {
- if (caching)
- chmod(cachefile, cachetype ? m_gmprot() : 0444);
- else {
- int mask;
- FILE *fp;
-
- mask = umask(cachetype ? ~m_gmprot() : 0222);
- if ((fp = fopen(cachefile, "w"))) {
- int cc;
- FILE *gp = ce->ce_fp;
-
- fseek(gp, 0L, SEEK_SET);
-
- while ((cc= fread(buffer, sizeof(*buffer),
- sizeof(buffer), gp)) > 0)
- fwrite(buffer, sizeof(*buffer), cc, fp);
- fflush(fp);
-
- if (ferror(gp)) {
- admonish(ce->ce_file, "error reading");
- unlink(cachefile);
- } else if (ferror(fp)) {
- admonish(cachefile, "error writing");
- unlink(cachefile);
- }
- fclose(fp);
- }
- umask(mask);
- }
- }
-
fseek(ce->ce_fp, 0L, SEEK_SET);
*file = ce->ce_file;
return fileno(ce->ce_fp);