anno: Can annotate files now too. This feature is yet hidden and will change.
authormarkus schnalke <meillo@marmaro.de>
Fri, 23 Mar 2012 13:39:25 +0000 (14:39 +0100)
committermarkus schnalke <meillo@marmaro.de>
Fri, 23 Mar 2012 13:39:25 +0000 (14:39 +0100)
uip/anno.c

index 36ff4b5..fbabfd4 100644 (file)
@@ -85,6 +85,7 @@ main(int argc, char **argv)
        char *cp, *maildir;
        unsigned char *comp = NULL;
        char *text = NULL, *folder = NULL, buf[BUFSIZ];
+       char *file = NULL;
        char **argp, **arguments;
        struct msgs_array msgs = { 0, 0, NULL };
        struct msgs *mp;
@@ -92,6 +93,7 @@ main(int argc, char **argv)
        int delete = -2;  /* delete header element if set */
        int list = 0;  /* list header elements if set */
        int number = 0; /* delete specific number of like elements if set */
+       int havemsgs = 0;
 
 #ifdef LOCALE
        setlocale(LC_ALL, "");
@@ -190,8 +192,29 @@ main(int argc, char **argv)
                                adios(NULL, "only one folder at a time!");
                        else
                                folder = getcpy(expandfol(cp));
-               } else
+               } else if (*cp == '/' || *cp == '.') {
+                       if (file)
+                               adios(NULL, "only one file at a time!");
+                       file = cp;
+               } else {
                        app_msgarg(&msgs, cp);
+                       havemsgs = 1;
+               }
+       }
+
+       if (file && (folder || havemsgs)) {
+               adios(NULL, "Don't intermix files and messages.");
+       }
+
+       make_comp(&comp);
+
+       if (file) {
+               if (list)
+                       annolist(file, comp, text, number);
+               else
+                       annotate(file, comp, text,
+                                       datesw, delete, append, preserve);
+               done(0);
        }
 
        if (!msgs.size)
@@ -216,8 +239,6 @@ main(int argc, char **argv)
                if (!m_convert(mp, msgs.msgs[msgnum]))
                        done(1);
 
-       make_comp(&comp);
-
        /* annotate all the SELECTED messages */
        for (msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++) {
                if (is_selected(mp, msgnum)) {