]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
Add foldername search parameter to the list metadata type=email command
authorEric Bollengier <eric@baculasystems.com>
Thu, 17 Feb 2022 16:46:07 +0000 (17:46 +0100)
committerEric Bollengier <eric@baculasystems.com>
Thu, 14 Sep 2023 11:56:58 +0000 (13:56 +0200)
bacula/src/cats/cats.c
bacula/src/cats/cats.h
bacula/src/dird/ua_cmds.c
bacula/src/dird/ua_output.c

index 178262ce0eb3d4f970349f4967cf406246da7ff2..7984d289622445c40f04dce574b9a87b51358f5d 100644 (file)
@@ -736,6 +736,11 @@ void META_DBR::create_db_filter(JCR *jcr, BDB *db, POOLMEM **where)
          append_AND_OR_filter(and_or, where, tmp.c_str());
       }
 
+      if (FolderName[0] != 0) {
+         db->search_op(jcr, "MetaEmail.EmailFolderName", FolderName, esc.handle(), tmp.handle());
+         append_AND_OR_filter(and_or, where, tmp.c_str());
+      }
+
       if (Tags[0] != 0) {
          db->search_op(jcr, "MetaEmail.EmailTags", Tags, esc.handle(), tmp.handle());
          append_AND_OR_filter(and_or, where, tmp.c_str());
index fc21f183e6fd05ba7ba221fad1292fd7f91499f1..d398aaf4c322fb406f7c7f4cbcf20e8113760040 100644 (file)
@@ -674,6 +674,7 @@ public:
    char    MaxTime[MAX_NAME_LENGTH];
    char    Plugin[MAX_NAME_LENGTH];
    char    Name[MAX_SEARCH_LENGTH];
+   char    FolderName[MAX_SEARCH_LENGTH];
    char    errmsg[MAX_NAME_LENGTH];
    META_DBR(): MinSize(-1), MaxSize(-1), HasAttachment(-1),
                isDraft(-1), isRead(-1), offset(0), limit(512), order(0), orderby(0), all(false)
@@ -682,7 +683,7 @@ public:
       *Id = *Tenant = *Owner = 0;
       *ClientName = *From = *To = *Cc = *Subject = *Tags = 0;
       *BodyPreview = *Type = *ConversationId = *Category = 0;
-      *Name = *MinTime = *MaxTime = *Plugin = 0;
+      *FolderName = *Name = *MinTime = *MaxTime = *Plugin = 0;
       *errmsg = 0;
    };
    ~META_DBR() {};
index 237427c5f4304e3cedda19957a45b6c508d537f0..5a5394588e0aef9459eeeec9d8b3ba91b1b48967 100644 (file)
@@ -143,7 +143,7 @@ static struct cmdstruct commands[] = {                                      /* C
        "\t    [from=<str> to=<str> cc=<str> tags=<str> subject=<str> bodypreview=<str> all=<str>\n"
        "\t    minsize=<int> maxsize=<int> importance=<str> isread=<0|1> isdraft=<0|1> categories=<str>\n"
        "\t    conversationid=<str> hasattachment=<0|1> starttime=<time> endtime=<time>\n"
-       "\t    emailid=<str>]\n"
+       "\t    emailid=<str> foldername=<str>]\n"
       ), false},
 
  { NT_("llist"),      llist_cmd,     _("Full or long list like list command"),
index 4c7dc0a9feff2d8783780e9281c9734151523cde..3e1ef5b2d340596f81da33f42460b362821e5a4e 100644 (file)
@@ -981,6 +981,9 @@ static int do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist)
             } else if (strcasecmp(ua->argk[j], NT_("to")) == 0) {
                bstrncpy(meta_r.To, ua->argv[j], sizeof(meta_r.To));
 
+            } else if (strcasecmp(ua->argk[j], NT_("foldername")) == 0) {
+               bstrncpy(meta_r.FolderName, ua->argv[j], sizeof(meta_r.FolderName));
+
             } else if (strcasecmp(ua->argk[j], NT_("cc")) == 0) {
                bstrncpy(meta_r.Cc, ua->argv[j], sizeof(meta_r.Cc));