int led;
int osd;
int unread_is_new;
+ int sort_order;
};
struct option_node {
static clist options, patterns;
static struct options global_options = {
- .sender_personal = 1
+ .sender_personal = 1,
+ .sort_order = 1000,
};
#define MDIR_MAX_NAME_LEN 128
o->led = -1;
o->osd = -1;
o->unread_is_new = -1;
+ o->sort_order = -1;
}
static void
MERGE(led);
MERGE(osd);
MERGE(unread_is_new);
+ MERGE(sort_order);
}
}
}
static struct mbox *
-add_mbox(clist *l, char *path, char *name)
+new_mbox(char *path, char *name)
{
struct mbox *b = xmalloc(sizeof(*b));
bzero(b, sizeof(*b));
b->path = xstrdup(path);
b->name = xstrdup(name);
+ return b;
+}
- if (name)
+static void
+add_mbox(clist *l, struct mbox *b)
+{
+ if (b->name)
{
cnode *prev = l->head.prev;
- while (prev != &l->head && strcmp(((struct mbox *)prev)->name, name) > 0)
+ struct mbox *prev_mbox;
+ while (prev != &l->head &&
+ ((prev_mbox = (struct mbox *)prev)->o.sort_order > b->o.sort_order ||
+ prev_mbox->o.sort_order == b->o.sort_order && strcmp(((struct mbox *)prev)->name, b->name) > 0))
prev = prev->prev;
clist_insert_after(&b->n, prev);
}
else
clist_add_tail(l, &b->n);
-
- return b;
}
static void
struct mbox *b = find_mbox(&mboxes, name);
if (!b)
{
- b = add_mbox(&mboxes, name, (p->name ? p->name : mbox_name(name)));
+ b = new_mbox(name, (p->name ? p->name : mbox_name(name)));
debug("Discovered mailbox %s (%s)\n", b->name, b->path);
setup_options(b);
+ add_mbox(&mboxes, b);
b->scanning = -1;
}
b->seen = 1;
m\t\t\tShow mailbox name of the sender\n\
o\t\t\tCount old, but unread messages as new\n\
p\t\t\tShow personal info (full name) of the sender\n\
+r<int>\t\t\tSort order (default=1000)\n\
s\t\t\tShow message snippets\n\
t\t\t\tHighlight the entry\n\
!<key>\t\t\tSet hot key\n\
o->hotkey = *c++;
else if (x == 'l' && *c >= '1' && *c <= '9')
o->led = *c++ - '0';
+ else if (x == 'r' && *c >= '0' && *c <= '9')
+ {
+ o->sort_order = 0;
+ while (*c >= '0' && *c <= '9')
+ o->sort_order = 10*o->sort_order + *c++ - '0';
+ }
else
{
int value = !!islower(x);