allow msgs as parameters for whom
[mmh] / sbr / parse_msgs.c
1 #include <h/mh.h>
2 #include <h/utils.h>
3
4 int
5 parse_msgs(const struct msgs_array *msgs, char *folder, struct msgs_array *files)
6 {
7         int ret = 0;
8         char *msgnam;
9         struct msgs *f;
10         char *path;
11
12         if (folder) {
13                 path = toabsdir(folder);
14         } else {
15                 path = toabsdir(getcurfol());
16         }
17
18         path = mh_xstrdup(path);
19         path = add("/", path);
20
21         f = folder_read(path);
22
23         if (f == NULL) {
24                 return -1;
25         }
26
27         for (size_t i = 0; i < msgs->size; i++) {
28
29                 if (*(msgs->msgs[i]) == '.' || *(msgs->msgs[i]) == '/') {
30                                 app_msgarg(files, msgs->msgs[i]);
31                                 continue;
32                 }
33
34                 if (!m_convert(f, msgs->msgs[i])) {
35                         ret++;
36                 }
37         }
38
39         for (size_t i = f->lowsel; i <= f->hghsel; i++) {
40                 if (is_selected(f, i)) {
41                         msgnam = mh_xstrdup(path);
42                         msgnam = add(m_name(i), msgnam);
43                         app_msgarg(files, msgnam);
44                 }
45         }
46
47         folder_free(f);
48
49         return ret;
50 }