struct imap4d_tokbuf * imap4d_tokbuf_from_string (char *str) { struct imap4d_tokbuf *tok = imap4d_tokbuf_init (); tok->buffer = mu_strdup (str); if (!tok->buffer) imap4d_bye (ERR_NO_MEM); tok->level = strlen (str); tok->size = tok->level + 1; imap4d_tokbuf_tokenize (tok, 0); return tok; }
static int imap4d_mainloop (int fd, FILE *infile, FILE *outfile) { imap4d_tokbuf_t tokp; char *text; int debug_mode = isatty (fd); imap4d_child_signal_setup (imap4d_child_signal); util_setio (infile, outfile); if (imap4d_preauth_setup (fd) == 0) { if (debug_mode) { mu_diag_output (MU_DIAG_INFO, _("started in debugging mode")); text = "IMAP4rev1 Debugging mode"; } else text = "IMAP4rev1"; } else { util_flush_output (); return 0; } /* Greetings. */ util_out ((state == STATE_AUTH) ? RESP_PREAUTH : RESP_OK, "%s", text); util_flush_output (); tokp = imap4d_tokbuf_init (); while (1) { imap4d_readline (tokp); /* check for updates */ imap4d_sync (); util_do_command (tokp); imap4d_sync (); util_flush_output (); } return 0; }