#include "support.h"
#include "config.h"
#include "user_ops.h"
-#include "policy.h"
#include "database.h"
#include "msgbase.h"
#include "internet_addressing.h"
*/
GetMetaData(&smi, msgnum);
if (smi.meta_rfc822_length <= 0L) {
- CC->redirect_buffer = malloc(SIZ);
- CC->redirect_len = 0;
- CC->redirect_alloc = SIZ;
+ CC->redirect_buffer = NewStrBufPlain(NULL, SIZ);
CtdlOutputMsg(msgnum, MT_RFC822, HEADERS_ALL, 0, 1, NULL, SUPPRESS_ENV_TO);
- smi.meta_rfc822_length = CC->redirect_len;
- free(CC->redirect_buffer);
- CC->redirect_buffer = NULL;
- CC->redirect_len = 0;
- CC->redirect_alloc = 0;
+ smi.meta_rfc822_length = StrLength(CC->redirect_buffer);
+ FreeStrBuf(&CC->redirect_buffer); /* TODO: WHEW, all this for just knowing the length???? */
PutMetaData(&smi);
}
POP3->msgs[POP3->num_msgs-1].rfc822_length = smi.meta_rfc822_length;
* of messages in the inbox, or -1 for error)
*/
int pop3_grab_mailbox(void) {
- struct visit vbuf;
+ visit vbuf;
int i;
if (CtdlGetRoom(&CC->room, MAILROOM) != 0) return(-1);
void pop3_pass(char *argbuf) {
char password[SIZ];
- strcpy(password, argbuf);
+ safestrncpy(password, argbuf, sizeof password);
striplt(password);
/* CtdlLogPrintf(CTDL_DEBUG, "Trying <%s>\n", password); */
- if (CtdlTryPassword(password) == pass_ok) {
+ if (CtdlTryPassword(password, strlen(password)) == pass_ok) {
pop3_login();
}
else {
int lines_requested = 0;
int lines_dumped = 0;
char buf[1024];
- char *msgtext;
+ StrBuf *msgtext;
const char *ptr;
int in_body = 0;
int done = 0;
return;
}
- CC->redirect_buffer = malloc(SIZ);
- CC->redirect_len = 0;
- CC->redirect_alloc = SIZ;
+ CC->redirect_buffer = NewStrBufPlain(NULL, SIZ);
CtdlOutputMsg(POP3->msgs[which_one - 1].msgnum, MT_RFC822, HEADERS_ALL, 0, 1, NULL, SUPPRESS_ENV_TO);
msgtext = CC->redirect_buffer;
CC->redirect_buffer = NULL;
- CC->redirect_len = 0;
- CC->redirect_alloc = 0;
cprintf("+OK Message %d:\r\n", which_one);
-
- ptr = msgtext;
-
- while (ptr = memreadline(ptr, buf, (sizeof buf - 2)),
+
+ ptr = ChrPtr(msgtext);
+ while (ptr = cmemreadline(ptr, buf, (sizeof buf - 2)),
( (*ptr != 0) && (done == 0))) {
strcat(buf, "\r\n");
if (in_body == 1) {
}
if (buf[strlen(buf)-1] != 10) cprintf("\n");
- free(msgtext);
+ FreeStrBuf(&msgtext);
cprintf(".\r\n");
}
*/
void pop3_update(void) {
int i;
- struct visit vbuf;
+ visit vbuf;
long *deletemsgs = NULL;
int num_deletemsgs = 0;