* remove the 'rm' command
This commit is contained in:
83
src/mu-cmd.c
83
src/mu-cmd.c
@ -277,86 +277,6 @@ mu_cmd_mkdir (MuConfig *opts, GError **err)
|
||||
}
|
||||
|
||||
|
||||
static gboolean
|
||||
mv_check_params (MuConfig *opts, MuFlags *flags, GError **err)
|
||||
{
|
||||
if (!opts->params[1]) {
|
||||
g_set_error (err, 0, MU_ERROR_IN_PARAMETERS,
|
||||
"missing source mailfile");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* FIXME: check for invalid flags */
|
||||
if (!opts->flagstr)
|
||||
*flags = MU_FLAG_INVALID; /* ie., ignore flags */
|
||||
else {
|
||||
/* if there's a '+' or '-' sign in the string, it must
|
||||
* be a flag-delta */
|
||||
if (strstr (opts->flagstr, "+") || strstr (opts->flagstr, "-")) {
|
||||
MuFlags oldflags;
|
||||
oldflags = mu_maildir_get_flags_from_path (opts->params[1]);
|
||||
*flags = mu_flags_from_str_delta (opts->flagstr,
|
||||
oldflags,
|
||||
MU_FLAG_TYPE_MAILDIR|
|
||||
MU_FLAG_TYPE_MAILFILE);
|
||||
} else
|
||||
*flags = mu_flags_from_str (opts->flagstr,
|
||||
MU_FLAG_TYPE_MAILDIR |
|
||||
MU_FLAG_TYPE_MAILFILE);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
static MuError
|
||||
cmd_mv_dev_null (MuConfig *opts)
|
||||
{
|
||||
if (unlink (opts->params[1]) != 0) {
|
||||
g_warning ("unlink failed: %s", strerror (errno));
|
||||
return MU_ERROR_FILE;
|
||||
}
|
||||
|
||||
if (opts->print_target)
|
||||
g_print ("/dev/null\n"); /* /dev/null */
|
||||
|
||||
return MU_OK;
|
||||
}
|
||||
|
||||
|
||||
MuError
|
||||
mu_cmd_mv (MuConfig *opts, GError **err)
|
||||
{
|
||||
gchar *fullpath;
|
||||
MuFlags flags;
|
||||
|
||||
if (!mv_check_params (opts, &flags, err)) {
|
||||
if (MU_G_ERROR_CODE(err) == MU_ERROR_IN_PARAMETERS)
|
||||
g_message ("usage: mu mv [--flags=<flags>] <mailfile> "
|
||||
"[<maildir>]");
|
||||
return MU_G_ERROR_CODE(err);
|
||||
}
|
||||
|
||||
/* special case: /dev/null */
|
||||
if (g_strcmp0 (opts->params[2], "/dev/null") == 0)
|
||||
return cmd_mv_dev_null (opts);
|
||||
|
||||
err = NULL;
|
||||
fullpath = mu_maildir_move_message (opts->params[1], opts->params[2],
|
||||
flags, opts->ignore_dups, err);
|
||||
if (!fullpath)
|
||||
return MU_G_ERROR_CODE(err);
|
||||
else {
|
||||
if (opts->print_target)
|
||||
g_print ("%s\n", fullpath);
|
||||
return MU_OK;
|
||||
}
|
||||
|
||||
g_free (fullpath);
|
||||
|
||||
return MU_OK;
|
||||
}
|
||||
|
||||
|
||||
static gboolean
|
||||
check_file_okay (const char *path, gboolean cmd_add)
|
||||
@ -471,7 +391,7 @@ show_usage (void)
|
||||
{
|
||||
g_message ("usage: mu command [options] [parameters]");
|
||||
g_message ("where command is one of index, find, cfind, view, mkdir, cleanup, "
|
||||
"extract, mv, add, remove or server");
|
||||
"extract, add, remove or server");
|
||||
g_message ("see the mu, mu-<command> or mu-easy manpages for "
|
||||
"more information");
|
||||
}
|
||||
@ -539,7 +459,6 @@ mu_cmd_execute (MuConfig *opts, GError **err)
|
||||
switch (opts->cmd) {
|
||||
case MU_CONFIG_CMD_CFIND: return mu_cmd_cfind (opts, err);
|
||||
case MU_CONFIG_CMD_MKDIR: return mu_cmd_mkdir (opts, err);
|
||||
case MU_CONFIG_CMD_MV: return mu_cmd_mv (opts, err);
|
||||
case MU_CONFIG_CMD_VIEW: return mu_cmd_view (opts, err);
|
||||
case MU_CONFIG_CMD_EXTRACT: return mu_cmd_extract (opts, err);
|
||||
|
||||
|
||||
@ -308,30 +308,6 @@ config_options_group_view (MuConfig *opts)
|
||||
}
|
||||
|
||||
|
||||
static GOptionGroup *
|
||||
config_options_group_mv (MuConfig *opts)
|
||||
{
|
||||
GOptionGroup *og;
|
||||
GOptionEntry entries[] = {
|
||||
{"flags", 0, 0, G_OPTION_ARG_STRING, &opts->flagstr,
|
||||
"flags to set for the target (DFNPRST)", NULL},
|
||||
{"ignore-dups", 0, 0, G_OPTION_ARG_NONE, &opts->ignore_dups,
|
||||
"whether to silently ignore the source = target case",
|
||||
NULL},
|
||||
{"print-target", 0, 0, G_OPTION_ARG_NONE, &opts->print_target,
|
||||
"whether to print the target path upon succesful completion",
|
||||
NULL},
|
||||
{NULL, 0, 0, 0, NULL, NULL, NULL}
|
||||
};
|
||||
|
||||
og = g_option_group_new ("mv", "options for the 'mv' command",
|
||||
"", NULL, NULL);
|
||||
g_option_group_add_entries(og, entries);
|
||||
|
||||
return og;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static GOptionGroup*
|
||||
config_options_group_extract (MuConfig *opts)
|
||||
@ -398,7 +374,6 @@ parse_cmd (MuConfig *opts, int *argcp, char ***argvp)
|
||||
{ "find", MU_CONFIG_CMD_FIND },
|
||||
{ "index", MU_CONFIG_CMD_INDEX },
|
||||
{ "mkdir", MU_CONFIG_CMD_MKDIR },
|
||||
{ "mv", MU_CONFIG_CMD_MV },
|
||||
{ "view", MU_CONFIG_CMD_VIEW },
|
||||
{ "add", MU_CONFIG_CMD_ADD },
|
||||
{ "remove", MU_CONFIG_CMD_REMOVE },
|
||||
@ -441,8 +416,6 @@ add_context_group (GOptionContext *context, MuConfig *opts)
|
||||
group = config_options_group_mkdir (opts); break;
|
||||
case MU_CONFIG_CMD_EXTRACT:
|
||||
group = config_options_group_extract (opts); break;
|
||||
case MU_CONFIG_CMD_MV:
|
||||
group = config_options_group_mv (opts); break;
|
||||
case MU_CONFIG_CMD_CFIND:
|
||||
group = config_options_group_cfind (opts); break;
|
||||
case MU_CONFIG_CMD_VIEW:
|
||||
|
||||
@ -67,7 +67,6 @@ enum _MuConfigCmd {
|
||||
MU_CONFIG_CMD_VIEW,
|
||||
MU_CONFIG_CMD_EXTRACT,
|
||||
MU_CONFIG_CMD_CFIND,
|
||||
MU_CONFIG_CMD_MV,
|
||||
MU_CONFIG_CMD_ADD,
|
||||
MU_CONFIG_CMD_REMOVE,
|
||||
MU_CONFIG_CMD_SERVER,
|
||||
@ -125,14 +124,7 @@ struct _MuConfig {
|
||||
* messages */
|
||||
gboolean include_unreadable; /* don't ignore messages
|
||||
* without a disk file */
|
||||
/* options for mv */
|
||||
char *flagstr; /* message flags to set for
|
||||
* the target */
|
||||
gboolean print_target; /* should be print the
|
||||
* target file path on
|
||||
* stdout */
|
||||
gboolean ignore_dups; /* silently ignore the
|
||||
* src=target case */
|
||||
|
||||
/* options for view */
|
||||
gboolean terminator; /* add separator \f between
|
||||
* multiple messages in mu
|
||||
|
||||
Reference in New Issue
Block a user