mirror of https://github.com/djcb/mu.git
* mu-cmd.c, mu-config.c: enable 'mu add' and 'mu remove' and fix line33 check
This commit is contained in:
parent
f6a4b7a480
commit
48cf82f823
128
src/mu-cmd.c
128
src/mu-cmd.c
|
@ -305,6 +305,22 @@ mv_check_params (MuConfig *opts, MuMsgFlags *flags)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static MuExitCode
|
||||||
|
cmd_mv_dev_null (MuConfig *opts)
|
||||||
|
{
|
||||||
|
if (unlink (opts->params[1]) != 0) {
|
||||||
|
g_warning ("unlink failed: %s", strerror (errno));
|
||||||
|
return MU_EXITCODE_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (opts->printtarget)
|
||||||
|
g_print ("%s\n", "/dev/null"); /* /dev/null */
|
||||||
|
|
||||||
|
return MU_EXITCODE_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
MuExitCode
|
MuExitCode
|
||||||
mu_cmd_mv (MuConfig *opts)
|
mu_cmd_mv (MuConfig *opts)
|
||||||
{
|
{
|
||||||
|
@ -316,17 +332,8 @@ mu_cmd_mv (MuConfig *opts)
|
||||||
return MU_EXITCODE_ERROR;
|
return MU_EXITCODE_ERROR;
|
||||||
|
|
||||||
/* special case: /dev/null */
|
/* special case: /dev/null */
|
||||||
if (g_strcmp0 (opts->params[2], "/dev/null") == 0) {
|
if (g_strcmp0 (opts->params[2], "/dev/null") == 0)
|
||||||
if (unlink (opts->params[1]) != 0) {
|
return cmd_mv_dev_null (opts);
|
||||||
g_warning ("unlink failed: %s", strerror (errno));
|
|
||||||
return MU_EXITCODE_ERROR;
|
|
||||||
} else {
|
|
||||||
if (opts->printtarget)
|
|
||||||
/* if the move worked, print */
|
|
||||||
g_print ("%s\n", "/dev/null"); /* /dev/null */
|
|
||||||
return MU_EXITCODE_OK;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
err = NULL;
|
err = NULL;
|
||||||
fullpath = mu_msg_file_move_to_maildir (opts->params[1], opts->params[2],
|
fullpath = mu_msg_file_move_to_maildir (opts->params[1], opts->params[2],
|
||||||
|
@ -368,14 +375,12 @@ check_file_okay (const char *path, gboolean cmd_add)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static gboolean
|
static MuStore*
|
||||||
add_or_remove (MuConfig *opts, gboolean cmd_add)
|
get_store (void)
|
||||||
{
|
{
|
||||||
MuStore *store;
|
MuStore *store;
|
||||||
GError *err;
|
GError *err;
|
||||||
gboolean allok;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
err = NULL;
|
err = NULL;
|
||||||
store = mu_store_new (mu_runtime_path(MU_RUNTIME_PATH_XAPIANDB),
|
store = mu_store_new (mu_runtime_path(MU_RUNTIME_PATH_XAPIANDB),
|
||||||
mu_runtime_path(MU_RUNTIME_PATH_CONTACTS),
|
mu_runtime_path(MU_RUNTIME_PATH_CONTACTS),
|
||||||
|
@ -386,38 +391,10 @@ add_or_remove (MuConfig *opts, gboolean cmd_add)
|
||||||
g_error_free (err);
|
g_error_free (err);
|
||||||
} else
|
} else
|
||||||
g_warning ("failed to create store object");
|
g_warning ("failed to create store object");
|
||||||
|
|
||||||
return MU_EXITCODE_ERROR;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return store;
|
||||||
for (i = 1, allok = TRUE; opts->params[i]; ++i) {
|
|
||||||
|
|
||||||
const char* src;
|
|
||||||
|
|
||||||
src = opts->params[i];
|
|
||||||
|
|
||||||
if (!check_file_okay (src, cmd_add)) {
|
|
||||||
allok = FALSE;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cmd_add) {
|
|
||||||
if (!mu_store_store_path (store, src)) {
|
|
||||||
allok = FALSE;
|
|
||||||
g_warning ("failed to store %s", src);
|
|
||||||
}
|
|
||||||
} else { /* remove */
|
|
||||||
if (!mu_store_remove_path (store, src)) {
|
|
||||||
allok = FALSE;
|
|
||||||
g_warning ("failed to remove %s", src);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
mu_store_destroy (store);
|
|
||||||
|
|
||||||
return allok ? MU_EXITCODE_OK : MU_EXITCODE_DB_UPDATE_ERROR;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -425,6 +402,10 @@ add_or_remove (MuConfig *opts, gboolean cmd_add)
|
||||||
MuExitCode
|
MuExitCode
|
||||||
mu_cmd_add (MuConfig *opts)
|
mu_cmd_add (MuConfig *opts)
|
||||||
{
|
{
|
||||||
|
MuStore *store;
|
||||||
|
gboolean allok;
|
||||||
|
int i;
|
||||||
|
|
||||||
g_return_val_if_fail (opts, MU_EXITCODE_ERROR);
|
g_return_val_if_fail (opts, MU_EXITCODE_ERROR);
|
||||||
g_return_val_if_fail (opts->cmd == MU_CONFIG_CMD_ADD,
|
g_return_val_if_fail (opts->cmd == MU_CONFIG_CMD_ADD,
|
||||||
MU_EXITCODE_ERROR);
|
MU_EXITCODE_ERROR);
|
||||||
|
@ -435,13 +416,39 @@ mu_cmd_add (MuConfig *opts)
|
||||||
return MU_EXITCODE_ERROR;
|
return MU_EXITCODE_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
return add_or_remove (opts, TRUE);
|
store = get_store ();
|
||||||
|
if (!store)
|
||||||
|
return MU_EXITCODE_ERROR;
|
||||||
|
|
||||||
|
for (i = 1, allok = TRUE; opts->params[i]; ++i) {
|
||||||
|
|
||||||
|
const char* src;
|
||||||
|
src = opts->params[i];
|
||||||
|
|
||||||
|
if (!check_file_okay (src, TRUE)) {
|
||||||
|
allok = FALSE;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!mu_store_store_path (store, src)) {
|
||||||
|
allok = FALSE;
|
||||||
|
g_warning ("failed to store %s", src);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mu_store_destroy (store);
|
||||||
|
|
||||||
|
return allok ? MU_EXITCODE_OK : MU_EXITCODE_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
MuExitCode
|
MuExitCode
|
||||||
mu_cmd_remove (MuConfig *opts)
|
mu_cmd_remove (MuConfig *opts)
|
||||||
{
|
{
|
||||||
|
MuStore *store;
|
||||||
|
gboolean allok;
|
||||||
|
int i;
|
||||||
|
|
||||||
g_return_val_if_fail (opts, MU_EXITCODE_ERROR);
|
g_return_val_if_fail (opts, MU_EXITCODE_ERROR);
|
||||||
g_return_val_if_fail (opts->cmd == MU_CONFIG_CMD_REMOVE,
|
g_return_val_if_fail (opts->cmd == MU_CONFIG_CMD_REMOVE,
|
||||||
MU_EXITCODE_ERROR);
|
MU_EXITCODE_ERROR);
|
||||||
|
@ -452,6 +459,31 @@ mu_cmd_remove (MuConfig *opts)
|
||||||
return MU_EXITCODE_ERROR;
|
return MU_EXITCODE_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
return add_or_remove (opts, TRUE);
|
store = get_store ();
|
||||||
|
if (!store)
|
||||||
|
return MU_EXITCODE_ERROR;
|
||||||
|
|
||||||
|
for (i = 1, allok = TRUE; opts->params[i]; ++i) {
|
||||||
|
|
||||||
|
const char* src;
|
||||||
|
src = opts->params[i];
|
||||||
|
|
||||||
|
if (!check_file_okay (src, FALSE)) {
|
||||||
|
allok = FALSE;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!mu_store_remove_path (store, src)) {
|
||||||
|
allok = FALSE;
|
||||||
|
g_warning ("failed to remove %s", src);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mu_store_destroy (store);
|
||||||
|
|
||||||
|
return allok ? MU_EXITCODE_OK : MU_EXITCODE_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -386,6 +386,8 @@ parse_cmd (MuConfig *opts, int *argcp, char ***argvp)
|
||||||
{ "mkdir", MU_CONFIG_CMD_MKDIR },
|
{ "mkdir", MU_CONFIG_CMD_MKDIR },
|
||||||
{ "mv", MU_CONFIG_CMD_MV },
|
{ "mv", MU_CONFIG_CMD_MV },
|
||||||
{ "view", MU_CONFIG_CMD_VIEW },
|
{ "view", MU_CONFIG_CMD_VIEW },
|
||||||
|
{ "add", MU_CONFIG_CMD_ADD },
|
||||||
|
{ "remove", MU_CONFIG_CMD_REMOVE },
|
||||||
};
|
};
|
||||||
|
|
||||||
opts->cmd = MU_CONFIG_CMD_NONE;
|
opts->cmd = MU_CONFIG_CMD_NONE;
|
||||||
|
@ -562,6 +564,9 @@ mu_config_execute (MuConfig *opts)
|
||||||
case MU_CONFIG_CMD_MKDIR: return mu_cmd_mkdir (opts);
|
case MU_CONFIG_CMD_MKDIR: return mu_cmd_mkdir (opts);
|
||||||
case MU_CONFIG_CMD_MV: return mu_cmd_mv (opts);
|
case MU_CONFIG_CMD_MV: return mu_cmd_mv (opts);
|
||||||
case MU_CONFIG_CMD_VIEW: return mu_cmd_view (opts);
|
case MU_CONFIG_CMD_VIEW: return mu_cmd_view (opts);
|
||||||
|
case MU_CONFIG_CMD_ADD: return mu_cmd_add (opts);
|
||||||
|
case MU_CONFIG_CMD_REMOVE: return mu_cmd_remove (opts);
|
||||||
|
|
||||||
case MU_CONFIG_CMD_UNKNOWN:
|
case MU_CONFIG_CMD_UNKNOWN:
|
||||||
g_printerr ("mu: unknown command '%s'\n\n", opts->cmdstr);
|
g_printerr ("mu: unknown command '%s'\n\n", opts->cmdstr);
|
||||||
show_usage (FALSE);
|
show_usage (FALSE);
|
||||||
|
|
Loading…
Reference in New Issue