163 |
return strdup (arg); |
return strdup (arg); |
164 |
} |
} |
165 |
|
|
166 |
|
static int |
167 |
|
comp_mesg (const void *a, const void *b) |
168 |
|
{ |
169 |
|
if (*(size_t*)a > *(size_t*)b) |
170 |
|
return 1; |
171 |
|
else if (*(size_t*)a < *(size_t*)b) |
172 |
|
return -1; |
173 |
|
return 0; |
174 |
|
} |
175 |
|
|
176 |
int |
int |
177 |
mh_msgset_parse (mailbox_t mbox, mh_msgset_t *msgset, int argc, char **argv) |
mh_msgset_parse (mailbox_t mbox, mh_msgset_t *msgset, int argc, char **argv) |
178 |
{ |
{ |
241 |
free (arg); |
free (arg); |
242 |
} |
} |
243 |
|
|
244 |
|
/* Sort the resulting message set */ |
245 |
|
qsort (msglist, msgcnt, sizeof (*msglist), comp_mesg); |
246 |
|
|
247 |
|
/* Remove duplicates. */ |
248 |
|
for (i = 0, msgno = 1; i < msgcnt; i++) |
249 |
|
if (msglist[msgno-1] != msglist[i]) |
250 |
|
msglist[msgno++] = msglist[i]; |
251 |
|
msgcnt = msgno; |
252 |
|
|
253 |
msgset->count = msgcnt; |
msgset->count = msgcnt; |
254 |
msgset->list = msglist; |
msgset->list = msglist; |
255 |
return 0; |
return 0; |