[1008] in BarnOwl Developers
[D-O-H] r993 - branches/barnowl_sqlite/owl
daemon@ATHENA.MIT.EDU (nelhage@MIT.EDU)
Thu Oct 29 18:12:05 2009
Resent-From: nelhage@mit.edu
Resent-To: barnowl-dev-mtg@charon.mit.edu
X-Original-To: nelhage@nelhage.com
To: dirty-owl-hackers@MIT.EDU
From: nelhage@MIT.EDU
Reply-to: dirty-owl-hackers@MIT.EDU
Date: Wed, 26 Mar 2008 22:32:12 -0400 (EDT)
Author: nelhage
Date: 2008-03-26 22:32:11 -0400 (Wed, 26 Mar 2008)
New Revision: 993
Modified:
branches/barnowl_sqlite/owl/perlglue.xs
Log:
Implement filter matching from perl code
Modified: branches/barnowl_sqlite/owl/perlglue.xs
===================================================================
--- branches/barnowl_sqlite/owl/perlglue.xs 2008-03-27 02:21:59 UTC (rev 992)
+++ branches/barnowl_sqlite/owl/perlglue.xs 2008-03-27 02:32:11 UTC (rev 993)
@@ -11,6 +11,8 @@
SV *owl_perlconfig_curmessage2hashref(void);
#define SV_IS_CODEREF(sv) (SvROK((sv)) && SvTYPE(SvRV((sv))) == SVt_PVCV)
+/* XXX This should probably check ->isa() as well */
+#define SV_IS_MESSAGE(sv) (SvROK((sv)) && SvTYPE(SvRV((sv))) == SVt_PVHV)
/*************************************************************
* NOTE
@@ -138,7 +140,7 @@
owl_message *m;
CODE:
{
- if(!SvROK(msg) || SvTYPE(SvRV(msg)) != SVt_PVHV) {
+ if(!SV_IS_MESSAGE(msg)) {
croak("Usage: BarnOwl::queue_message($message)");
}
@@ -299,6 +301,26 @@
}
}
+int
+filter_message_match(filterName, msg)
+ char *filterName
+ SV *msg
+ PREINIT:
+ owl_filter *f;
+ CODE:
+ {
+ f = owl_global_get_filter(&g, filterName);
+ if(!f) {
+ croak("No such filter: %s\n", filterName);
+ }
+ if(!SV_IS_MESSAGE(msg)) {
+ croak("Usage: BarnOwl::filter_message_match(filterName, message)\n");
+ }
+ RETVAL = owl_filter_message_match(f, msg);
+ }
+ OUTPUT:
+ RETVAL
+
char *
wordwrap(in, cols)
char *in