+++ /dev/null
-libitkacl-perl (2.0) unstable; urgency=low
-
- * Initial release.
-
- -- Steinar H. Gunderson <sesse@samfundet.no> Tue, 14 May 2013 01:26:44 +0200
+++ /dev/null
-/* SWIG interface for libitkacl */
-%module itkacl
-
-/* Convert errors to Perl exceptions and keep the interface clean. */
-%inline %{
- extern int itkacl_check(char *realm, char *user, char *errmsg, size_t errmsgsize);
- int check(char *realm, char *user)
- {
- char errmsg[1024];
- int ret = itkacl_check(realm, user, errmsg, 1024);
-
- /* printf("check '%s' vs. '%s' gave %d\n", user, realm, ret); */
- if (ret == -1)
- die(errmsg);
- else
- return (ret == 0);
- }
-
-%}
-
--- /dev/null
+libitkacl-perl (2.2) unstable; urgency=medium
+
+ * Use the new library contexts for higher performance with repeated calls.
+
+ -- Steinar H. Gunderson <sesse@samfundet.no> Tue, 15 Mar 2022 22:24:46 +0100
+
+libitkacl-perl (2.0) unstable; urgency=low
+
+ * Initial release.
+
+ -- Steinar H. Gunderson <sesse@samfundet.no> Tue, 14 May 2013 01:26:44 +0200
--- /dev/null
+/* SWIG interface for libitkacl */
+%module itkacl
+
+%perlcode %{
+_itkacl_init();
+END {
+ _itkacl_deinit();
+}
+
+%}
+
+/* Convert errors to Perl exceptions and keep the interface clean. */
+%inline %{
+ #include "itkacl.h"
+
+ struct itkacl_ctx *_ctx = NULL;
+
+ void _itkacl_init()
+ {
+ char errmsg[1024];
+ _ctx = itkacl_create_ctx(errmsg, sizeof(errmsg));
+ if (_ctx == NULL)
+ die(errmsg);
+ }
+
+ void _itkacl_deinit()
+ {
+ itkacl_free_ctx(_ctx);
+ }
+
+ int check(char *realm, char *user)
+ {
+ char errmsg[1024];
+ int ret = itkacl_check_with_ctx(_ctx, realm, user, errmsg, 1024);
+
+ /* printf("check '%s' vs. '%s' gave %d\n", user, realm, ret); */
+ if (ret == -1)
+ die(errmsg);
+ else
+ return (ret == 0);
+ }
+
+%}
+