* mu-guile-utils => mu-guile-common
This commit is contained in:
@ -35,8 +35,8 @@ libmuguile_la_SOURCES= \
|
|||||||
mu-guile-msg.h \
|
mu-guile-msg.h \
|
||||||
mu-guile-store.c \
|
mu-guile-store.c \
|
||||||
mu-guile-store.h \
|
mu-guile-store.h \
|
||||||
mu-guile-utils.c \
|
mu-guile-common.c \
|
||||||
mu-guile-utils.h
|
mu-guile-common.h
|
||||||
|
|
||||||
libmuguile_la_LIBADD= \
|
libmuguile_la_LIBADD= \
|
||||||
${top_builddir}/src/libmu.la \
|
${top_builddir}/src/libmu.la \
|
||||||
|
|||||||
@ -17,10 +17,10 @@
|
|||||||
**
|
**
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "mu-guile-utils.h"
|
#include "mu-guile-common.h"
|
||||||
|
|
||||||
void
|
void
|
||||||
mu_guile_utils_error (const char *func_name, int status,
|
mu_guile_error (const char *func_name, int status,
|
||||||
const char *fmt, SCM args)
|
const char *fmt, SCM args)
|
||||||
{
|
{
|
||||||
scm_error_scm (scm_from_locale_symbol ("MuError"),
|
scm_error_scm (scm_from_locale_symbol ("MuError"),
|
||||||
@ -35,8 +35,8 @@ extern "C" {
|
|||||||
* @param fmt
|
* @param fmt
|
||||||
* @param args
|
* @param args
|
||||||
*/
|
*/
|
||||||
void mu_guile_utils_error (const char *func_name, int status,
|
void mu_guile_error (const char *func_name, int status,
|
||||||
const char *fmt, SCM args);
|
const char *fmt, SCM args);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
#include "mu-guile-msg.h"
|
#include "mu-guile-msg.h"
|
||||||
#include "mu-guile-store.h"
|
#include "mu-guile-store.h"
|
||||||
#include "mu-guile-utils.h"
|
#include "mu-guile-common.h"
|
||||||
|
|
||||||
static MuQuery*
|
static MuQuery*
|
||||||
get_query (void)
|
get_query (void)
|
||||||
@ -62,37 +62,39 @@ get_query_iter (MuQuery *query, const char* expr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SCM_DEFINE (store_for_each, "mu:store:foreach", 2, 0, 0,
|
SCM_DEFINE (store_for_each, "mu:store:query-foreach", 1, 1, 0,
|
||||||
(SCM EXPR, SCM FUNC),
|
(SCM FUNC, SCM EXPR),
|
||||||
"Call FUNC for each message matching EXPR.\n")
|
"Call FUNC for each message in the store, or, if EXPR is specified, "
|
||||||
|
"for each message matching EXPR.\n")
|
||||||
#define FUNC_NAME s_msg_make_from_file
|
#define FUNC_NAME s_msg_make_from_file
|
||||||
{
|
{
|
||||||
MuQuery *query;
|
MuQuery *query;
|
||||||
MuMsgIter *iter;
|
MuMsgIter *iter;
|
||||||
//guint count;
|
int count;
|
||||||
|
const char* expr;
|
||||||
|
|
||||||
query = get_query ();
|
query = get_query ();
|
||||||
if (!query)
|
if (!query)
|
||||||
return SCM_UNSPECIFIED;
|
return SCM_UNSPECIFIED;
|
||||||
|
|
||||||
iter = get_query_iter (query, scm_to_utf8_string(EXPR));
|
expr = SCM_UNBNDP(EXPR) ? NULL : scm_to_utf8_string(EXPR);
|
||||||
|
|
||||||
|
iter = get_query_iter (query, expr);
|
||||||
if (!iter)
|
if (!iter)
|
||||||
return SCM_UNSPECIFIED;
|
return SCM_UNSPECIFIED;
|
||||||
|
|
||||||
while (!mu_msg_iter_is_done(iter)) {
|
for (count = 0; !mu_msg_iter_is_done(iter); mu_msg_iter_next (iter)) {
|
||||||
|
|
||||||
SCM msgsmob;
|
SCM msgsmob;
|
||||||
|
|
||||||
msgsmob = mu_guile_msg_to_scm (mu_msg_iter_get_msg (iter, NULL));
|
msgsmob = mu_guile_msg_to_scm (mu_msg_iter_get_msg (iter, NULL));
|
||||||
|
|
||||||
scm_call_1 (FUNC, msgsmob);
|
scm_call_1 (FUNC, msgsmob);
|
||||||
|
++count;
|
||||||
mu_msg_iter_next (iter);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mu_query_destroy (query);
|
mu_query_destroy (query);
|
||||||
|
|
||||||
return SCM_UNSPECIFIED;
|
return scm_from_int (count);
|
||||||
}
|
}
|
||||||
#undef FUNC_NAME
|
#undef FUNC_NAME
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user