summaryrefslogtreecommitdiff
path: root/mu
diff options
context:
space:
mode:
authordjcb <djcb@djcbsoftware.nl>2017-01-14 13:09:17 +0200
committerdjcb <djcb@djcbsoftware.nl>2017-01-14 13:09:17 +0200
commit786e7c3d1f061cf4a0fe3e25a2eabfc02baf9b9f (patch)
treeec1fa4439c4367ebedfde31766dc41ad38e384fc /mu
parentf91969e0b77eff80fa5b230dbcb72da65aaa8d3a (diff)
mu: add 'tickle' command, for renaming messages
The new command 'tickle' renames message files in place, which can be useful for 3rd-party tools.
Diffstat (limited to 'mu')
-rw-r--r--mu/mu-cmd.c29
-rw-r--r--mu/mu-cmd.h12
-rw-r--r--mu/mu-config.c1
-rw-r--r--mu/mu-config.h1
4 files changed, 43 insertions, 0 deletions
diff --git a/mu/mu-cmd.c b/mu/mu-cmd.c
index 4c2ee90..d887f32 100644
--- a/mu/mu-cmd.c
+++ b/mu/mu-cmd.c
@@ -412,6 +412,33 @@ mu_cmd_remove (MuStore *store, MuConfig *opts, GError **err)
return foreach_msg_file (store, opts, remove_path_func, err);
}
+static gboolean
+tickle_func (MuStore *store, const char *path, GError **err)
+{
+ MuMsg *msg;
+ gboolean rv;
+
+ msg = mu_msg_new_from_file (path, NULL, err);
+ if (!msg)
+ return FALSE;
+
+ rv = mu_msg_tickle (msg, err);
+ mu_msg_unref (msg);
+
+ return rv;
+}
+
+
+MuError
+mu_cmd_tickle (MuStore *store, MuConfig *opts, GError **err)
+{
+ g_return_val_if_fail (opts, MU_ERROR_INTERNAL);
+ g_return_val_if_fail (opts->cmd == MU_CONFIG_CMD_TICKLE,
+ MU_ERROR_INTERNAL);
+
+ return foreach_msg_file (store, opts, tickle_func, err);
+}
+
struct _VData {
MuMsgPartSigStatus combined_status;
char *report;
@@ -632,6 +659,8 @@ mu_cmd_execute (MuConfig *opts, GError **err)
merr = with_store (mu_cmd_add, opts, FALSE, err); break;
case MU_CONFIG_CMD_REMOVE:
merr = with_store (mu_cmd_remove, opts, FALSE, err); break;
+ case MU_CONFIG_CMD_TICKLE:
+ merr = with_store (mu_cmd_tickle, opts, FALSE, err); break;
case MU_CONFIG_CMD_SERVER:
merr = with_store (mu_cmd_server, opts, FALSE, err); break;
default:
diff --git a/mu/mu-cmd.h b/mu/mu-cmd.h
index 0ec483c..b8693ec 100644
--- a/mu/mu-cmd.h
+++ b/mu/mu-cmd.h
@@ -151,6 +151,18 @@ MuError mu_cmd_add (MuStore *store, MuConfig *opts, GError **err);
*/
MuError mu_cmd_remove (MuStore *store, MuConfig *opts, GError **err);
+/**
+ * execute the tickle command
+ *
+ * @param store store object to use
+ * @param opts configuration options
+ * @param err receives error information, or NULL
+ *
+ * @return MU_OK (0) if the command succeeds,
+ * some error code otherwise
+ */
+MuError mu_cmd_tickle (MuStore *store, MuConfig *opts, GError **err);
+
/**
* execute the server command
diff --git a/mu/mu-config.c b/mu/mu-config.c
index bd744f8..8e3c353 100644
--- a/mu/mu-config.c
+++ b/mu/mu-config.c
@@ -471,6 +471,7 @@ cmd_from_string (const char *str)
{ "remove", MU_CONFIG_CMD_REMOVE },
{ "script", MU_CONFIG_CMD_SCRIPT },
{ "server", MU_CONFIG_CMD_SERVER },
+ { "tickle", MU_CONFIG_CMD_TICKLE },
{ "verify", MU_CONFIG_CMD_VERIFY },
{ "view", MU_CONFIG_CMD_VIEW }
};
diff --git a/mu/mu-config.h b/mu/mu-config.h
index d457416..e192d5c 100644
--- a/mu/mu-config.h
+++ b/mu/mu-config.h
@@ -74,6 +74,7 @@ enum _MuConfigCmd {
MU_CONFIG_CMD_REMOVE,
MU_CONFIG_CMD_SCRIPT,
MU_CONFIG_CMD_SERVER,
+ MU_CONFIG_CMD_TICKLE,
MU_CONFIG_CMD_VERIFY,
MU_CONFIG_CMD_VIEW,