mirror of https://github.com/djcb/mu.git
update commands for new query parser
This commit is contained in:
parent
5e9cafea59
commit
aa07c4a27c
|
@ -173,7 +173,7 @@ struct MuProc: public Mux::ProcIface {
|
||||||
const Xapian::Database& db_;
|
const Xapian::Database& db_;
|
||||||
};
|
};
|
||||||
|
|
||||||
class _MuQuery {
|
struct _MuQuery {
|
||||||
public:
|
public:
|
||||||
_MuQuery (MuStore *store): _store(mu_store_ref(store)) {}
|
_MuQuery (MuStore *store): _store(mu_store_ref(store)) {}
|
||||||
~_MuQuery () { mu_store_unref (_store); }
|
~_MuQuery () { mu_store_unref (_store); }
|
||||||
|
|
|
@ -25,44 +25,45 @@ AM_CPPFLAGS=-I${top_srcdir}/lib $(GLIB_CFLAGS)
|
||||||
# don't use -Werror, as it might break on other compilers
|
# don't use -Werror, as it might break on other compilers
|
||||||
# use -Wno-unused-parameters, because some callbacks may not
|
# use -Wno-unused-parameters, because some callbacks may not
|
||||||
# really need all the params they get
|
# really need all the params they get
|
||||||
AM_CFLAGS= \
|
AM_CFLAGS= \
|
||||||
$(WARN_CFLAGS) \
|
$(WARN_CFLAGS) \
|
||||||
-Wno-switch-enum \
|
-Wno-switch-enum \
|
||||||
-DMU_SCRIPTS_DIR="\"$(pkgdatadir)/scripts/\""
|
-DMU_SCRIPTS_DIR="\"$(pkgdatadir)/scripts/\""
|
||||||
|
|
||||||
AM_CXXFLAGS= \
|
AM_CXXFLAGS= \
|
||||||
$(WARN_CXXFLAGS)
|
$(WARN_CXXFLAGS)
|
||||||
|
|
||||||
bin_PROGRAMS= \
|
bin_PROGRAMS= \
|
||||||
mu
|
mu
|
||||||
|
|
||||||
# note, mu.cc is only '.cc' and not '.c' because libmu must explicitly
|
# note, mu.cc is only '.cc' and not '.c' because libmu must explicitly
|
||||||
# be linked as c++, not c.
|
# be linked as c++, not c.
|
||||||
mu_SOURCES= \
|
mu_SOURCES= \
|
||||||
mu.cc \
|
mu.cc \
|
||||||
mu-cmd-cfind.c \
|
mu-cmd-cfind.c \
|
||||||
mu-config.c \
|
mu-config.c \
|
||||||
mu-config.h \
|
mu-config.h \
|
||||||
mu-cmd-extract.c \
|
mu-cmd-extract.c \
|
||||||
mu-cmd-find.c \
|
mu-cmd-find.c \
|
||||||
mu-cmd-index.c \
|
mu-cmd-index.c \
|
||||||
mu-cmd-server.c \
|
mu-cmd-server.c \
|
||||||
mu-cmd-script.c \
|
mu-cmd-script.c \
|
||||||
mu-cmd.c \
|
mu-cmd.c \
|
||||||
mu-cmd.h
|
mu-cmd.h
|
||||||
|
|
||||||
BUILT_SOURCES= \
|
BUILT_SOURCES= \
|
||||||
mu-help-strings.h
|
mu-help-strings.h
|
||||||
|
|
||||||
mu-help-strings.h: mu-help-strings.txt mu-help-strings.awk
|
mu-help-strings.h: mu-help-strings.txt mu-help-strings.awk
|
||||||
$(AM_V_GEN) $(AWK) -f ${top_srcdir}/mu/mu-help-strings.awk < $< > $@
|
$(AM_V_GEN) $(AWK) -f ${top_srcdir}/mu/mu-help-strings.awk < $< > $@
|
||||||
|
|
||||||
mu_LDADD= \
|
mu_LDADD= \
|
||||||
${top_builddir}/lib/libmu.la \
|
${top_builddir}/lib/libmu.la \
|
||||||
|
${top_builddir}/lib/parser/libmuxparser.la \
|
||||||
$(GLIB_LIBS)
|
$(GLIB_LIBS)
|
||||||
|
|
||||||
EXTRA_DIST= \
|
EXTRA_DIST= \
|
||||||
mu-help-strings.awk \
|
mu-help-strings.awk \
|
||||||
mu-help-strings.txt
|
mu-help-strings.txt
|
||||||
|
|
||||||
CLEANFILES=$(BUILT_SOURCES)
|
CLEANFILES=$(BUILT_SOURCES)
|
||||||
|
|
|
@ -48,20 +48,26 @@ typedef gboolean (OutputFunc) (MuMsg *msg, MuMsgIter *iter,
|
||||||
MuConfig *opts, GError **err);
|
MuConfig *opts, GError **err);
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
print_xapian_query (MuQuery *xapian, const gchar *query, GError **err)
|
print_internal (MuQuery *query, const gchar *expr, gboolean xapian,
|
||||||
|
gboolean warn, GError **err)
|
||||||
{
|
{
|
||||||
char *querystr;
|
char *str;
|
||||||
|
|
||||||
querystr = mu_query_as_string (xapian, query, err);
|
if (xapian)
|
||||||
if (!querystr)
|
str = mu_query_internal_xapian (query, expr, err);
|
||||||
return FALSE;
|
else
|
||||||
|
str = mu_query_internal (query, expr, warn, err);
|
||||||
|
|
||||||
g_print ("%s\n", querystr);
|
if (str) {
|
||||||
g_free (querystr);
|
g_print ("%s\n", str);
|
||||||
|
g_free (str);
|
||||||
|
}
|
||||||
|
|
||||||
return TRUE;
|
return str != NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* returns MU_MSG_FIELD_ID_NONE if there is an error */
|
/* returns MU_MSG_FIELD_ID_NONE if there is an error */
|
||||||
static MuMsgFieldId
|
static MuMsgFieldId
|
||||||
sort_field_from_string (const char* fieldstr, GError **err)
|
sort_field_from_string (const char* fieldstr, GError **err)
|
||||||
|
@ -187,7 +193,7 @@ resolve_bookmark (MuConfig *opts, GError **err)
|
||||||
static gchar*
|
static gchar*
|
||||||
get_query (MuConfig *opts, GError **err)
|
get_query (MuConfig *opts, GError **err)
|
||||||
{
|
{
|
||||||
gchar *query, *bookmarkval;
|
gchar *query, *bookmarkval;
|
||||||
|
|
||||||
/* params[0] is 'find', actual search params start with [1] */
|
/* params[0] is 'find', actual search params start with [1] */
|
||||||
if (!opts->bookmark && !opts->params[1]) {
|
if (!opts->bookmark && !opts->params[1]) {
|
||||||
|
@ -203,7 +209,7 @@ get_query (MuConfig *opts, GError **err)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
query = mu_str_quoted_from_strv ((const gchar**)&opts->params[1]);
|
query = g_strjoinv (" ", &opts->params[1]);
|
||||||
if (bookmarkval) {
|
if (bookmarkval) {
|
||||||
gchar *tmp;
|
gchar *tmp;
|
||||||
tmp = g_strdup_printf ("%s %s", bookmarkval, query);
|
tmp = g_strdup_printf ("%s %s", bookmarkval, query);
|
||||||
|
@ -650,11 +656,11 @@ process_query (MuQuery *xapian, const gchar *query, MuConfig *opts, GError **err
|
||||||
static gboolean
|
static gboolean
|
||||||
execute_find (MuStore *store, MuConfig *opts, GError **err)
|
execute_find (MuStore *store, MuConfig *opts, GError **err)
|
||||||
{
|
{
|
||||||
char *query_str;
|
char *query_str;
|
||||||
MuQuery *oracle;
|
MuQuery *oracle;
|
||||||
gboolean rv;
|
gboolean rv;
|
||||||
|
|
||||||
oracle = get_query_obj(store, err);
|
oracle = get_query_obj (store, err);
|
||||||
if (!oracle)
|
if (!oracle)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
@ -665,7 +671,10 @@ execute_find (MuStore *store, MuConfig *opts, GError **err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (opts->format == MU_CONFIG_FORMAT_XQUERY)
|
if (opts->format == MU_CONFIG_FORMAT_XQUERY)
|
||||||
rv = print_xapian_query (oracle, query_str, err);
|
rv = print_internal (oracle, query_str, TRUE, FALSE, err);
|
||||||
|
else if (opts->format == MU_CONFIG_FORMAT_MQUERY)
|
||||||
|
rv = print_internal (oracle, query_str, FALSE,
|
||||||
|
opts->verbose, err);
|
||||||
else
|
else
|
||||||
rv = process_query (oracle, query_str, opts, err);
|
rv = process_query (oracle, query_str, opts, err);
|
||||||
|
|
||||||
|
@ -687,6 +696,7 @@ format_params_valid (MuConfig *opts, GError **err)
|
||||||
case MU_CONFIG_FORMAT_LINKS:
|
case MU_CONFIG_FORMAT_LINKS:
|
||||||
case MU_CONFIG_FORMAT_XML:
|
case MU_CONFIG_FORMAT_XML:
|
||||||
case MU_CONFIG_FORMAT_XQUERY:
|
case MU_CONFIG_FORMAT_XQUERY:
|
||||||
|
case MU_CONFIG_FORMAT_MQUERY:
|
||||||
if (opts->exec) {
|
if (opts->exec) {
|
||||||
mu_util_g_set_error
|
mu_util_g_set_error
|
||||||
(err, MU_ERROR_IN_PARAMETERS,
|
(err, MU_ERROR_IN_PARAMETERS,
|
||||||
|
|
|
@ -275,7 +275,7 @@ get_docid_from_msgid (MuQuery *query, const char *str, GError **err)
|
||||||
unsigned docid;
|
unsigned docid;
|
||||||
MuMsgIter *iter;
|
MuMsgIter *iter;
|
||||||
|
|
||||||
querystr = g_strdup_printf ("msgid:\"%s\"", str);
|
querystr = g_strdup_printf ("msgid:%s", str);
|
||||||
iter = mu_query_run (query, querystr,
|
iter = mu_query_run (query, querystr,
|
||||||
MU_MSG_FIELD_ID_NONE,
|
MU_MSG_FIELD_ID_NONE,
|
||||||
1, MU_QUERY_FLAG_NONE, err);
|
1, MU_QUERY_FLAG_NONE, err);
|
||||||
|
@ -310,7 +310,7 @@ get_docids_from_msgids (MuQuery *query, const char *str, GError **err)
|
||||||
MuMsgIter *iter;
|
MuMsgIter *iter;
|
||||||
GSList *lst;
|
GSList *lst;
|
||||||
|
|
||||||
querystr = g_strdup_printf ("msgid:\"%s\"", str);
|
querystr = g_strdup_printf ("msgid:%s", str);
|
||||||
iter = mu_query_run (query, querystr, MU_MSG_FIELD_ID_NONE,
|
iter = mu_query_run (query, querystr, MU_MSG_FIELD_ID_NONE,
|
||||||
-1 /*unlimited*/, MU_QUERY_FLAG_NONE,
|
-1 /*unlimited*/, MU_QUERY_FLAG_NONE,
|
||||||
err);
|
err);
|
||||||
|
@ -360,7 +360,6 @@ determine_docid (MuQuery *query, GHashTable *args, GError **err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define DOCID_VALID_OR_ERROR_RETURN(DOCID,E) \
|
#define DOCID_VALID_OR_ERROR_RETURN(DOCID,E) \
|
||||||
if ((DOCID)==MU_STORE_INVALID_DOCID) { \
|
if ((DOCID)==MU_STORE_INVALID_DOCID) { \
|
||||||
mu_util_g_set_error((E),MU_ERROR_IN_PARAMETERS, \
|
mu_util_g_set_error((E),MU_ERROR_IN_PARAMETERS, \
|
||||||
|
|
|
@ -52,7 +52,8 @@ get_output_format (const char *formatstr)
|
||||||
{"plain", MU_CONFIG_FORMAT_PLAIN},
|
{"plain", MU_CONFIG_FORMAT_PLAIN},
|
||||||
{"sexp", MU_CONFIG_FORMAT_SEXP},
|
{"sexp", MU_CONFIG_FORMAT_SEXP},
|
||||||
{"xml", MU_CONFIG_FORMAT_XML},
|
{"xml", MU_CONFIG_FORMAT_XML},
|
||||||
{"xquery", MU_CONFIG_FORMAT_XQUERY}
|
{"xquery", MU_CONFIG_FORMAT_XQUERY},
|
||||||
|
{"mquery", MU_CONFIG_FORMAT_MQUERY}
|
||||||
};
|
};
|
||||||
|
|
||||||
for (i = 0; i != G_N_ELEMENTS(formats); i++)
|
for (i = 0; i != G_N_ELEMENTS(formats); i++)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* -*-mode: c; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-*/
|
/* -*-mode: c; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (C) 2008-2013 Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
|
** Copyright (C) 2008-2017 Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
|
||||||
**
|
**
|
||||||
** This program is free software; you can redistribute it and/or modify it
|
** This program is free software; you can redistribute it and/or modify it
|
||||||
** under the terms of the GNU General Public License as published by the
|
** under the terms of the GNU General Public License as published by the
|
||||||
|
@ -55,6 +55,7 @@ enum _MuConfigFormat {
|
||||||
MU_CONFIG_FORMAT_LINKS, /* output as symlinks */
|
MU_CONFIG_FORMAT_LINKS, /* output as symlinks */
|
||||||
MU_CONFIG_FORMAT_XML, /* output xml */
|
MU_CONFIG_FORMAT_XML, /* output xml */
|
||||||
MU_CONFIG_FORMAT_XQUERY, /* output the xapian query */
|
MU_CONFIG_FORMAT_XQUERY, /* output the xapian query */
|
||||||
|
MU_CONFIG_FORMAT_MQUERY, /* output the mux query */
|
||||||
|
|
||||||
MU_CONFIG_FORMAT_EXEC /* execute some command */
|
MU_CONFIG_FORMAT_EXEC /* execute some command */
|
||||||
};
|
};
|
||||||
|
@ -94,8 +95,8 @@ struct _MuConfig {
|
||||||
|
|
||||||
MuConfigCmd cmd; /* the command, or
|
MuConfigCmd cmd; /* the command, or
|
||||||
* MU_CONFIG_CMD_NONE */
|
* MU_CONFIG_CMD_NONE */
|
||||||
char *cmdstr; /* cmd string, for user
|
char *cmdstr; /* cmd string, for user
|
||||||
* info */
|
* info */
|
||||||
/* general options */
|
/* general options */
|
||||||
gboolean quiet; /* don't give any output */
|
gboolean quiet; /* don't give any output */
|
||||||
gboolean debug; /* spew out debug info */
|
gboolean debug; /* spew out debug info */
|
||||||
|
@ -166,7 +167,6 @@ struct _MuConfig {
|
||||||
* multiple messages in mu
|
* multiple messages in mu
|
||||||
* view */
|
* view */
|
||||||
|
|
||||||
|
|
||||||
/* options for cfind (and 'find' --> "after") */
|
/* options for cfind (and 'find' --> "after") */
|
||||||
gboolean personal; /* only show 'personal' addresses */
|
gboolean personal; /* only show 'personal' addresses */
|
||||||
/* also 'after' --> see above */
|
/* also 'after' --> see above */
|
||||||
|
@ -227,7 +227,6 @@ void mu_config_uninit (MuConfig *conf);
|
||||||
*/
|
*/
|
||||||
MuError mu_config_execute (MuConfig *conf);
|
MuError mu_config_execute (MuConfig *conf);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* count the number of non-option parameters
|
* count the number of non-option parameters
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue