diff options
| author | djcb <djcb@djcbsoftware.nl> | 2017-01-14 13:09:17 +0200 |
|---|---|---|
| committer | djcb <djcb@djcbsoftware.nl> | 2017-01-14 13:09:17 +0200 |
| commit | 786e7c3d1f061cf4a0fe3e25a2eabfc02baf9b9f (patch) | |
| tree | ec1fa4439c4367ebedfde31766dc41ad38e384fc /mu | |
| parent | f91969e0b77eff80fa5b230dbcb72da65aaa8d3a (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.c | 29 | ||||
| -rw-r--r-- | mu/mu-cmd.h | 12 | ||||
| -rw-r--r-- | mu/mu-config.c | 1 | ||||
| -rw-r--r-- | mu/mu-config.h | 1 |
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, |
