* mu-guile-utils => mu-guile-common

This commit is contained in:
Dirk-Jan C. Binnema
2011-07-13 08:07:32 +03:00
parent c023e2c38c
commit 84189b73b2
4 changed files with 21 additions and 19 deletions

View File

@ -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 \

View File

@ -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"),

View File

@ -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
} }

View File

@ -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