* some line35 fixes

This commit is contained in:
djcb
2012-09-27 21:52:54 +03:00
parent db5b419ada
commit af5ad981a2
2 changed files with 97 additions and 61 deletions

View File

@ -299,13 +299,11 @@ get_status_report (GMimeSignatureList *sigs)
sigstat = g_mime_signature_get_status (msig); sigstat = g_mime_signature_get_status (msig);
switch (sigstat) { switch (sigstat) {
case GMIME_SIGNATURE_STATUS_GOOD: break; case GMIME_SIGNATURE_STATUS_GOOD: break;
case GMIME_SIGNATURE_STATUS_ERROR: case GMIME_SIGNATURE_STATUS_ERROR:
status = MU_MSG_PART_SIG_STATUS_ERROR; status = MU_MSG_PART_SIG_STATUS_ERROR; break;
break;
case GMIME_SIGNATURE_STATUS_BAD: case GMIME_SIGNATURE_STATUS_BAD:
status = MU_MSG_PART_SIG_STATUS_BAD; status = MU_MSG_PART_SIG_STATUS_BAD; break;
break;
default: g_return_val_if_reached (NULL); default: g_return_val_if_reached (NULL);
} }

View File

@ -1002,6 +1002,36 @@ get_checked_path (const char *path)
static MuError
index_and_cleanup (MuIndex *index, const char *path, GError **err)
{
MuError rv;
MuIndexStats stats, stats2;
mu_index_stats_clear (&stats);
rv = mu_index_run (index, path, FALSE, &stats,
index_msg_cb, NULL, NULL);
if (rv != MU_OK && rv != MU_STOP) {
mu_util_g_set_error (err, MU_ERROR_INTERNAL, "indexing failed");
return rv;
}
mu_index_stats_clear (&stats2);
rv = mu_index_cleanup (index, &stats2, NULL, NULL, err);
if (rv != MU_OK && rv != MU_STOP) {
mu_util_g_set_error (err, MU_ERROR_INTERNAL, "cleanup failed");
return rv;
}
print_expr ("(:info index :status complete "
":processed %u :updated %u :cleaned-up %u)",
stats._processed, stats._updated, stats2._cleaned_up);
return rv;
}
/* /*
* 'index' (re)indexs maildir at path:<path>, and responds with (:info * 'index' (re)indexs maildir at path:<path>, and responds with (:info
* index ... ) messages while doing so (see the code) * index ... ) messages while doing so (see the code)
@ -1012,8 +1042,6 @@ cmd_index (ServerContext *ctx, GSList *args, GError **err)
MuIndex *index; MuIndex *index;
const char *argpath; const char *argpath;
char *path; char *path;
MuIndexStats stats, stats2;
MuError rv;
index = NULL; index = NULL;
@ -1027,25 +1055,8 @@ cmd_index (ServerContext *ctx, GSList *args, GError **err)
if (!(index = mu_index_new (ctx->store, err))) if (!(index = mu_index_new (ctx->store, err)))
goto leave; goto leave;
mu_index_stats_clear (&stats); index_and_cleanup (index, path, err);
rv = mu_index_run (index, argpath, FALSE, &stats,
index_msg_cb, NULL, NULL);
if (rv != MU_OK && rv != MU_STOP) {
print_error (MU_ERROR_INTERNAL, "indexing failed");
goto leave;
}
mu_index_stats_clear (&stats2);
rv = mu_index_cleanup (index, &stats2, NULL, NULL, err);
if (rv != MU_OK && rv != MU_STOP) {
print_error (MU_ERROR_INTERNAL, "cleanup failed");
goto leave;
}
mu_store_flush (ctx->store);
print_expr ("(:info index :status complete "
":processed %u :updated %u :cleaned-up %u)",
stats._processed, stats._updated, stats2._cleaned_up);
leave: leave:
g_free (path); g_free (path);
@ -1053,6 +1064,7 @@ leave:
print_and_clear_g_error (err); print_and_clear_g_error (err);
mu_index_destroy (index); mu_index_destroy (index);
return MU_OK; return MU_OK;
} }
@ -1138,6 +1150,42 @@ do_move (MuStore *store, unsigned docid, MuMsg *msg, const char *maildir,
return MU_OK; return MU_OK;
} }
static gboolean
move_msgid (MuStore *store, unsigned docid, const char* flagstr, GError **err)
{
MuMsg *msg;
gboolean rv;
MuFlags flags;
err = NULL;
rv = FALSE;
msg = mu_store_get_msg (store, docid, err);
if (!msg)
goto leave;
flags = flagstr ? get_flags (mu_msg_get_path(msg), flagstr) :
mu_msg_get_flags (msg);
if (flags == MU_FLAG_INVALID) {
mu_util_g_set_error (err, MU_ERROR_IN_PARAMETERS,
"invalid flags");
goto leave;
}
rv = do_move (store, docid, msg, NULL, flags, err);
leave:
if (msg)
mu_msg_unref (msg);
print_and_clear_g_error (err);
return rv;
}
/* when called with a msgid, we need to take care of possibly multiple /* when called with a msgid, we need to take care of possibly multiple
* message with this message id. this is a common case when sending * message with this message id. this is a common case when sending
* messages to ourselves (maybe through a mailing list), where there * messages to ourselves (maybe through a mailing list), where there
@ -1147,12 +1195,12 @@ static gboolean
move_msgid_maybe (ServerContext *ctx, GSList *args, GError **err) move_msgid_maybe (ServerContext *ctx, GSList *args, GError **err)
{ {
GSList *docids, *cur; GSList *docids, *cur;
const char *maildir = get_string_from_args (args, "maildir", TRUE,err); const char *maildir = get_string_from_args (args, "maildir", TRUE, err);
const char *msgid = get_string_from_args (args, "msgid", TRUE, err); const char *msgid = get_string_from_args (args, "msgid", TRUE, err);
const char *flagstr = get_string_from_args (args, "flags", TRUE, err); const char *flagstr = get_string_from_args (args, "flags", TRUE, err);
/* you cannot use 'maildir' for multiple messages at once */ /* you cannot use 'maildir' for multiple messages at once */
if (!msgid || !flagstr || maildir ) if (!msgid || !flagstr || maildir)
return FALSE; return FALSE;
if (!(docids = get_docids_from_msgids (ctx->query, msgid, err))) { if (!(docids = get_docids_from_msgids (ctx->query, msgid, err))) {
@ -1160,30 +1208,10 @@ move_msgid_maybe (ServerContext *ctx, GSList *args, GError **err)
return TRUE; return TRUE;
} }
for (cur = docids; cur; cur = g_slist_next(cur)) { for (cur = docids; cur; cur = g_slist_next(cur))
MuMsg *msg; if (!move_msgid (ctx->store, GPOINTER_TO_SIZE(cur->data),
MuFlags flags; flagstr, err))
unsigned docid = (GPOINTER_TO_SIZE(cur->data));
if (!(msg = mu_store_get_msg (ctx->store, docid, err))) {
print_and_clear_g_error (err);
break; break;
}
flags = flagstr ? get_flags (mu_msg_get_path(msg), flagstr) :
mu_msg_get_flags (msg);
if (flags == MU_FLAG_INVALID) {
print_error (MU_ERROR_IN_PARAMETERS, "invalid flags");
mu_msg_unref (msg);
break;
}
if ((do_move (ctx->store, docid, msg, NULL, flags, err)
!= MU_OK))
print_and_clear_g_error (err);
mu_msg_unref (msg);
}
g_slist_free (docids); g_slist_free (docids);
@ -1384,6 +1412,25 @@ cmd_sent (ServerContext *ctx, GSList *args, GError **err)
return MU_OK; return MU_OK;
} }
static MuMsgOptions
get_view_msg_opts (GSList *args)
{
MuMsgOptions opts;
opts = MU_MSG_OPTION_VERIFY;
if (get_bool_from_args (args, "extract-images", FALSE, NULL))
opts |= MU_MSG_OPTION_EXTRACT_IMAGES;
if (get_bool_from_args (args, "use-agent", FALSE, NULL))
opts |= MU_MSG_OPTION_USE_AGENT;
if (get_bool_from_args (args, "auto-retrieve-key", FALSE, NULL))
opts |= MU_MSG_OPTION_AUTO_RETRIEVE;
if (get_bool_from_args (args, "extract-encrypted", FALSE, NULL))
opts |= MU_MSG_OPTION_DECRYPT;
return opts;
}
/* 'view' gets a full (including body etc.) sexp for some message, /* 'view' gets a full (including body etc.) sexp for some message,
* identified by either docid: or msgid:; return a (:view <sexp>) * identified by either docid: or msgid:; return a (:view <sexp>)
*/ */
@ -1396,15 +1443,7 @@ cmd_view (ServerContext *ctx, GSList *args, GError **err)
MuMsgOptions opts; MuMsgOptions opts;
unsigned docid; unsigned docid;
opts = MU_MSG_OPTION_VERIFY; opts = get_view_msg_opts (args);
if (get_bool_from_args (args, "extract-images", FALSE, NULL))
opts |= MU_MSG_OPTION_EXTRACT_IMAGES;
if (get_bool_from_args (args, "use-agent", FALSE, NULL))
opts |= MU_MSG_OPTION_USE_AGENT;
if (get_bool_from_args (args, "auto-retrieve-key", FALSE, NULL))
opts |= MU_MSG_OPTION_AUTO_RETRIEVE;
if (get_bool_from_args (args, "extract-encrypted", FALSE, NULL))
opts |= MU_MSG_OPTION_DECRYPT;
/* when 'path' is specified, get the message at path */ /* when 'path' is specified, get the message at path */
path = get_string_from_args (args, "path", FALSE, NULL); path = get_string_from_args (args, "path", FALSE, NULL);
@ -1418,7 +1457,6 @@ cmd_view (ServerContext *ctx, GSList *args, GError **err)
print_and_clear_g_error (err); print_and_clear_g_error (err);
return MU_OK; return MU_OK;
} }
msg = mu_store_get_msg (ctx->store, docid, err); msg = mu_store_get_msg (ctx->store, docid, err);
} }