Example #1
0
char *tcp_getline (TCPSTREAM *stream)
{
  unsigned long n,contd;
  char *ret = tcp_getline_work (stream,&n,&contd);
  if (ret && contd) {		/* got a line needing continuation? */
    STRINGLIST *stl = mail_newstringlist ();
    STRINGLIST *stc = stl;
    do {			/* collect additional lines */
      stc->text.data = (unsigned char *) ret;
      stc->text.size = n;
      stc = stc->next = mail_newstringlist ();
      ret = tcp_getline_work (stream,&n,&contd);
    } while (ret && contd);
    if (ret) {			/* stash final part of line on list */
      stc->text.data = (unsigned char *) ret;
      stc->text.size = n;
				/* determine how large a buffer we need */
      for (n = 0, stc = stl; stc; stc = stc->next) n += stc->text.size;
      ret = fs_get (n + 1);	/* copy parts into buffer */
      for (n = 0, stc = stl; stc; n += stc->text.size, stc = stc->next)
	memcpy (ret + n,stc->text.data,stc->text.size);
      ret[n] = '\0';
    }
    mail_free_stringlist (&stl);/* either way, done with list */
  }
  return ret;
}
int prune_criteria_number (unsigned long *number,char **r)
{
  char *t;
  STRINGLIST *s = NIL;
				/* parse the date and return fn if OK */
  int ret = (mail_criteria_string (&s,r) &&
	     (*number = strtoul ((char *) s->text.data,&t,10)) && !*t) ?
	       T : NIL;
  if (s) mail_free_stringlist (&s);
  return ret;
}
Example #3
0
static Variant HHVM_FUNCTION(imap_alerts) {
  if (IMAPG(alertstack) == NIL) {
    return false;
  }

  Array ret(Array::Create());

  for (STRINGLIST *cur = IMAPG(alertstack); cur != NIL;
       cur = cur->next) {
      ret.append(String((const char *)cur->text.data, CopyString));
  }
  mail_free_stringlist(&IMAPG(alertstack));
  IMAPG(alertstack) = NIL;
  return ret;
}
Example #4
0
  void requestShutdown() override {
    if (m_errorstack != NIL) {
      /* output any remaining errors at their original error level */
      for (ERRORLIST *ecur = m_errorstack; ecur != NIL; ecur = ecur->next) {
        Logger::Warning("%s (errflg=%ld)", ecur->text.data, ecur->errflg);
      }
      mail_free_errorlist(&m_errorstack);
      m_errorstack = NIL;
    }

    if (m_alertstack != NIL) {
      /* output any remaining alerts at E_NOTICE level */
      for (STRINGLIST *acur = m_alertstack; acur != NIL; acur = acur->next) {
        Logger::Warning("%s", acur->text.data);
      }
      mail_free_stringlist(&m_alertstack);
      m_alertstack = NIL;
    }
  }
Example #5
0
Variant f_imap_list(const Resource& imap_stream, const String& ref,
                    const String& pattern) {
  ImapStream *obj = imap_stream.getTyped<ImapStream>();

  /* set flag for normal, old mailbox list */
  IMAPG(folderlist_style) = FLIST_ARRAY;

  IMAPG(folders) = IMAPG(folders_tail) = NIL;
  mail_list(obj->m_stream, (char*)ref.data(), (char*)pattern.data());
  if (IMAPG(folders) == NIL) {
    return false;
  }

  Array ret(Array::Create());
  for (STRINGLIST *cur = IMAPG(folders); cur != NIL; cur = cur->next) {
    ret.append(String((const char *)cur->text.data, CopyString));
  }
  mail_free_stringlist(&IMAPG(folders));
  IMAPG(folders) = IMAPG(folders_tail) = NIL;
  return ret;
}
Example #6
0
void
mailcap_free(void)
{
    mail_free_stringlist(&MailcapData.raw);
    mc_free_entry(&MailcapData.head);
}