mirror of https://github.com/djcb/mu.git
* mu-config, mu-query: clear up sortfield handling
This commit is contained in:
parent
8bd5cff58d
commit
8c74e0569d
|
@ -38,12 +38,11 @@ struct _MuConfigOptions {
|
||||||
gboolean reindex; /* re-index existing mails */
|
gboolean reindex; /* re-index existing mails */
|
||||||
|
|
||||||
/* options for querying */
|
/* options for querying */
|
||||||
gboolean xquery; /* give the Xapian query instead of
|
gboolean xquery; /* give the Xapian query instead of
|
||||||
search results */
|
search results */
|
||||||
char *fields; /* fields to show in output */
|
const char *fields; /* fields to show in output */
|
||||||
|
|
||||||
char* sortfield_str; /* fields to sort by */
|
const char *sortfield_str; /* field to sort by (string) */
|
||||||
const MuMsgField* sortfield;
|
|
||||||
|
|
||||||
/* FIXME: clean up this mess */
|
/* FIXME: clean up this mess */
|
||||||
gboolean sortdir_descending ; /* sort descending? */
|
gboolean sortdir_descending ; /* sort descending? */
|
||||||
|
|
|
@ -75,24 +75,27 @@ display_field (MuMsgXapian *row, const MuMsgField* field)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static gboolean
|
const MuMsgField*
|
||||||
handle_options (MuConfigOptions *opts)
|
sort_field_from_string (const char* fieldstr)
|
||||||
{
|
{
|
||||||
const MuMsgField *field;
|
const MuMsgField *field;
|
||||||
|
|
||||||
if (opts->sortfield_str) {
|
if (fieldstr)
|
||||||
field = mu_msg_field_from_name (opts->sortfield_str);
|
return NULL;
|
||||||
if (!field && strlen(opts->sortfield_str) == 1)
|
|
||||||
field = mu_msg_field_from_shortcut
|
|
||||||
(opts->sortfield_str[0]);
|
|
||||||
if (!field) {
|
|
||||||
g_printerr ("not a valid sort field: '%s'\n",
|
|
||||||
opts->sortfield_str);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
opts->sortfield = field;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
field = mu_msg_field_from_name (fieldstr);
|
||||||
|
if (!field && strlen(fieldstr) == 1)
|
||||||
|
field = mu_msg_field_from_shortcut(fieldstr[0]);
|
||||||
|
if (!field)
|
||||||
|
g_printerr ("not a valid sort field: '%s'\n",
|
||||||
|
fieldstr);
|
||||||
|
return field;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
handle_options (MuConfigOptions *opts)
|
||||||
|
{
|
||||||
if (opts->ascending_flag && opts->descending_flag) {
|
if (opts->ascending_flag && opts->descending_flag) {
|
||||||
g_printerr ("ignoring option '--descending'\n");
|
g_printerr ("ignoring option '--descending'\n");
|
||||||
opts->sortdir_ascending = TRUE;
|
opts->sortdir_ascending = TRUE;
|
||||||
|
@ -107,9 +110,17 @@ static gboolean
|
||||||
print_rows (MuQueryXapian *xapian, const gchar *query, MuConfigOptions *opts)
|
print_rows (MuQueryXapian *xapian, const gchar *query, MuConfigOptions *opts)
|
||||||
{
|
{
|
||||||
MuMsgXapian *row;
|
MuMsgXapian *row;
|
||||||
|
const MuMsgField *sortfield;
|
||||||
|
|
||||||
|
sortfield = NULL;
|
||||||
|
if (opts->sortfield_str) {
|
||||||
|
sortfield = sort_field_from_string (opts->sortfield_str);
|
||||||
|
if (!sortfield) /* error occured? */
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
row = mu_query_xapian_run (xapian, query,
|
row = mu_query_xapian_run (xapian, query,
|
||||||
opts->sortfield,
|
sortfield,
|
||||||
opts->sortdir_ascending);
|
opts->sortdir_ascending);
|
||||||
if (!row) {
|
if (!row) {
|
||||||
g_printerr ("error: running query failed\n");
|
g_printerr ("error: running query failed\n");
|
||||||
|
|
Loading…
Reference in New Issue