[1008] in BarnOwl Developers

home help back first fref pref prev next nref lref last post

[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


home help back first fref pref prev next nref lref last post