diff options
-rw-r--r-- | uid.c | 86 |
1 files changed, 50 insertions, 36 deletions
@@ -243,36 +243,31 @@ void initialize_saved_lists(struct query *hostlist, const char *idfile) if (outlevel >= O_DEBUG) { struct idlist *idp; - int uidlcount = 0; for (ctl = hostlist; ctl; ctl = ctl->next) - if (ctl->server.uidl) { report_build(stdout, GT_("Old UID list from %s:"), ctl->server.pollname); - for (idp = ctl->oldsaved; idp; idp = idp->next) { + idp = ctl->oldsaved; + if (!idp) + report_build(stdout, GT_(" <empty>")); + else for (idp = ctl->oldsaved; idp; idp = idp->next) { char *t = sdump(idp->id, strlen(idp->id)); report_build(stdout, " %s", t); free(t); } - if (!idp) - report_build(stdout, GT_(" <empty>")); report_complete(stdout, "\n"); - uidlcount++; } - if (uidlcount) - { - report_build(stdout, GT_("Scratch list of UIDs:")); - for (idp = scratchlist; idp; idp = idp->next) { + report_build(stdout, GT_("Scratch list of UIDs:")); + if (!scratchlist) + report_build(stdout, GT_(" <empty>")); + else for (idp = scratchlist; idp; idp = idp->next) { char *t = sdump(idp->id, strlen(idp->id)); report_build(stdout, " %s", t); free(t); - } - if (!idp) - report_build(stdout, GT_(" <empty>")); - report_complete(stdout, "\n"); } + report_complete(stdout, "\n"); } } @@ -287,25 +282,52 @@ void expunge_uids(struct query *ctl) idl->val.status.mark = UID_EXPUNGED; } +const char *str_uidmark(int mark) +{ + static char buf[20]; + + switch(mark) { + case UID_UNSEEN: + return "UNSEEN"; + case UID_SEEN: + return "SEEN"; + case UID_EXPUNGED: + return "EXPUNGED"; + case UID_DELETED: + return "DELETED"; + default: + if (snprintf(buf, sizeof(buf), "MARK=%d", mark) < 0) + return "ERROR"; + else + return buf; + } +} + +static void dump_list(const struct idlist *idp) +{ + if (!idp) { + report_build(stdout, GT_(" <empty>")); + } else while (idp) { + char *t = sdump(idp->id, strlen(idp->id)); + report_build(stdout, " %s = %s%s", t, str_uidmark(idp->val.status.mark), idp->next ? "," : ""); + free(t); + idp = idp->next; + } +} + /* finish a query */ void uid_swap_lists(struct query *ctl) { /* debugging code */ - if (ctl->server.uidl && outlevel >= O_DEBUG) + if (outlevel >= O_DEBUG) { - struct idlist *idp; - - if (dofastuidl) + if (dofastuidl) { report_build(stdout, GT_("Merged UID list from %s:"), ctl->server.pollname); - else + dump_list(ctl->oldsaved); + } else { report_build(stdout, GT_("New UID list from %s:"), ctl->server.pollname); - for (idp = dofastuidl ? ctl->oldsaved : ctl->newsaved; idp; idp = idp->next) { - char *t = sdump(idp->id, strlen(idp->id)); - report_build(stdout, " %s = %d", t, idp->val.status.mark); - free(t); - } - if (!idp) - report_build(stdout, GT_(" <empty>")); + dump_list(ctl->newsaved); + } report_complete(stdout, "\n"); } @@ -345,20 +367,12 @@ void uid_swap_lists(struct query *ctl) void uid_discard_new_list(struct query *ctl) { /* debugging code */ - if (ctl->server.uidl && outlevel >= O_DEBUG) + if (outlevel >= O_DEBUG) { - struct idlist *idp; - /* this is now a merged list! the mails which were seen in this * poll are marked here. */ report_build(stdout, GT_("Merged UID list from %s:"), ctl->server.pollname); - for (idp = ctl->oldsaved; idp; idp = idp->next) { - char *t = sdump(idp->id, strlen(idp->id)); - report_build(stdout, " %s = %d", t, idp->val.status.mark); - free(t); - } - if (!idp) - report_build(stdout, GT_(" <empty>")); + dump_list(ctl->oldsaved); report_complete(stdout, "\n"); } |