-message_summary *ReadOneMessageSummary(StrBuf *RawMessage, const char *DefaultSubject, long MsgNum)
-{
- void *vEval;
- MsgPartEvaluatorStruct *Eval;
- message_summary *Msg;
- StrBuf *Buf;
- const char *buf;
- const char *ebuf;
- int nBuf;
- long len;
-
- Buf = NewStrBuf();
-
- serv_printf("MSG0 %ld|1", MsgNum); /* ask for headers only */
-
- StrBuf_ServGetln(Buf);
- if (GetServerStatus(Buf, NULL) == 1) {
- FreeStrBuf(&Buf);
- return NULL;
- }
-
- Msg = (message_summary*)malloc(sizeof(message_summary));
- memset(Msg, 0, sizeof(message_summary));
- while (len = StrBuf_ServGetln(Buf),
- (len >= 0) &&
- ((len != 3) ||
- strcmp(ChrPtr(Buf), "000")))
- {
- buf = ChrPtr(Buf);
- ebuf = strchr(ChrPtr(Buf), '=');
- nBuf = ebuf - buf;
- if (GetHash(MsgEvaluators, buf, nBuf, &vEval) && vEval != NULL) {
- Eval = (MsgPartEvaluatorStruct*) vEval;
- StrBufCutLeft(Buf, nBuf + 1);
- Eval->f(Msg, Buf);
- }
- else syslog(LOG_INFO, "Don't know how to handle Message Headerline [%s]", ChrPtr(Buf));
- }
- return Msg;
-}
-
-
-
-