version 1.5, 1997/07/13 23:54:02 |
version 1.6, 1997/07/14 00:24:29 |
|
|
*/ |
*/ |
|
|
anystat = 0; |
anystat = 0; |
autohold = value("hold") != NOSTR; |
autohold = value("hold") != NULL; |
holdbit = autohold ? MPRESERVE : MBOX; |
holdbit = autohold ? MPRESERVE : MBOX; |
nohold = MBOX|MSAVED|MDELETED|MPRESERVE; |
nohold = MBOX|MSAVED|MDELETED|MPRESERVE; |
if (value("keepsave") != NOSTR) |
if (value("keepsave") != NULL) |
nohold &= ~MSAVED; |
nohold &= ~MSAVED; |
for (mp = &message[0]; mp < &message[msgCount]; mp++) { |
for (mp = &message[0]; mp < &message[msgCount]; mp++) { |
if (mp->m_flag & MNEW) { |
if (mp->m_flag & MNEW) { |
|
|
mp->m_flag |= holdbit; |
mp->m_flag |= holdbit; |
} |
} |
modify = 0; |
modify = 0; |
if (Tflag != NOSTR) { |
if (Tflag != NULL) { |
if ((readstat = Fopen(Tflag, "w")) == NULL) |
if ((readstat = Fopen(Tflag, "w")) == NULL) |
Tflag = NOSTR; |
Tflag = NULL; |
} |
} |
for (c = 0, p = 0, mp = &message[0]; mp < &message[msgCount]; mp++) { |
for (c = 0, p = 0, mp = &message[0]; mp < &message[msgCount]; mp++) { |
if (mp->m_flag & MBOX) |
if (mp->m_flag & MBOX) |
|
|
p++; |
p++; |
if (mp->m_flag & MODIFY) |
if (mp->m_flag & MODIFY) |
modify++; |
modify++; |
if (Tflag != NOSTR && (mp->m_flag & (MREAD|MDELETED)) != 0) { |
if (Tflag != NULL && (mp->m_flag & (MREAD|MDELETED)) != 0) { |
char *id; |
char *id; |
|
|
if ((id = hfield("article-id", mp)) != NOSTR) |
if ((id = hfield("article-id", mp)) != NULL) |
fprintf(readstat, "%s\n", id); |
fprintf(readstat, "%s\n", id); |
} |
} |
} |
} |
if (Tflag != NOSTR) |
if (Tflag != NULL) |
(void)Fclose(readstat); |
(void)Fclose(readstat); |
if (p == msgCount && !modify && !anystat) { |
if (p == msgCount && !modify && !anystat) { |
printf("Held %d message%s in %s\n", |
printf("Held %d message%s in %s\n", |
|
|
|
|
mbox = expand("&"); |
mbox = expand("&"); |
mcount = c; |
mcount = c; |
if (value("append") == NOSTR) { |
if (value("append") == NULL) { |
if ((obuf = Fopen(tempQuit, "w")) == NULL) { |
if ((obuf = Fopen(tempQuit, "w")) == NULL) { |
warn(tempQuit); |
warn(tempQuit); |
(void)Fclose(fbuf); |
(void)Fclose(fbuf); |
|
|
} |
} |
for (mp = &message[0]; mp < &message[msgCount]; mp++) |
for (mp = &message[0]; mp < &message[msgCount]; mp++) |
if (mp->m_flag & MBOX) |
if (mp->m_flag & MBOX) |
if (send(mp, obuf, saveignore, NOSTR) < 0) { |
if (send(mp, obuf, saveignore, NULL) < 0) { |
warn(mbox); |
warn(mbox); |
(void)Fclose(ibuf); |
(void)Fclose(ibuf); |
(void)Fclose(obuf); |
(void)Fclose(obuf); |
|
|
* If we are appending, this is unnecessary. |
* If we are appending, this is unnecessary. |
*/ |
*/ |
|
|
if (value("append") == NOSTR) { |
if (value("append") == NULL) { |
rewind(ibuf); |
rewind(ibuf); |
c = getc(ibuf); |
c = getc(ibuf); |
while (c != EOF) { |
while (c != EOF) { |
|
|
for (mp = &message[0]; mp < &message[msgCount]; mp++) |
for (mp = &message[0]; mp < &message[msgCount]; mp++) |
if ((mp->m_flag&MPRESERVE)||(mp->m_flag&MTOUCH)==0) { |
if ((mp->m_flag&MPRESERVE)||(mp->m_flag&MTOUCH)==0) { |
p++; |
p++; |
if (send(mp, obuf, (struct ignoretab *)0, NOSTR) < 0) { |
if (send(mp, obuf, (struct ignoretab *)0, NULL) < 0) { |
warn(mailname); |
warn(mailname); |
(void)Fclose(obuf); |
(void)Fclose(obuf); |
return(-1); |
return(-1); |
|
|
if (readonly) |
if (readonly) |
return; |
return; |
holdsigs(); |
holdsigs(); |
if (Tflag != NOSTR) { |
if (Tflag != NULL) { |
if ((readstat = Fopen(Tflag, "w")) == NULL) |
if ((readstat = Fopen(Tflag, "w")) == NULL) |
Tflag = NOSTR; |
Tflag = NULL; |
} |
} |
for (mp = &message[0], gotcha = 0; mp < &message[msgCount]; mp++) { |
for (mp = &message[0], gotcha = 0; mp < &message[msgCount]; mp++) { |
if (mp->m_flag & MNEW) { |
if (mp->m_flag & MNEW) { |
|
|
} |
} |
if (mp->m_flag & (MODIFY|MDELETED|MSTATUS)) |
if (mp->m_flag & (MODIFY|MDELETED|MSTATUS)) |
gotcha++; |
gotcha++; |
if (Tflag != NOSTR && (mp->m_flag & (MREAD|MDELETED)) != 0) { |
if (Tflag != NULL && (mp->m_flag & (MREAD|MDELETED)) != 0) { |
char *id; |
char *id; |
|
|
if ((id = hfield("article-id", mp)) != NOSTR) |
if ((id = hfield("article-id", mp)) != NULL) |
fprintf(readstat, "%s\n", id); |
fprintf(readstat, "%s\n", id); |
} |
} |
} |
} |
if (Tflag != NOSTR) |
if (Tflag != NULL) |
(void)Fclose(readstat); |
(void)Fclose(readstat); |
if (!gotcha || Tflag != NOSTR) |
if (!gotcha || Tflag != NULL) |
goto done; |
goto done; |
ibuf = NULL; |
ibuf = NULL; |
if (stat(mailname, &statb) >= 0 && statb.st_size > mailsize) { |
if (stat(mailname, &statb) >= 0 && statb.st_size > mailsize) { |
|
|
if ((mp->m_flag & MDELETED) != 0) |
if ((mp->m_flag & MDELETED) != 0) |
continue; |
continue; |
c++; |
c++; |
if (send(mp, obuf, (struct ignoretab *) NULL, NOSTR) < 0) { |
if (send(mp, obuf, (struct ignoretab *) NULL, NULL) < 0) { |
warn(mailname); |
warn(mailname); |
relsesigs(); |
relsesigs(); |
reset(0); |
reset(0); |