libprelude/master: Move libpreludecpp-perl.i to perl subdirectory
[email protected] Sat, 16 Jan 2010 19:58:34 +0100 (CET)
| Newsgroups | gmane.comp.security.ids.prelude.cvs |
|---|---|
| Message-ID | <[email protected]> |
commit 0b18f29122de8795f1b1a2d826e6c4738220da9c Author: Yoann Vandoorselaere <[email protected]> Date: Tue Jan 12 09:13:54 2010 +0100 Move libpreludecpp-perl.i to perl subdirectory ======================================== bindings/Makefile.am | 4 +- bindings/libpreludecpp-perl.i | 192 ------------------------------------ bindings/libpreludecpp.i | 2 +- bindings/perl/libpreludecpp-perl.i | 192 ++++++++++++++++++++++++++++++++++++ 4 files changed, 195 insertions(+), 195 deletions(-) ======================================== diff --git a/bindings/Makefile.am b/bindings/Makefile.am index 9ecd368..270522d 100644 --- a/bindings/Makefile.am +++ b/bindings/Makefile.am @@ -1,6 +1,6 @@ SUBDIRS = c++ low-level lua python ruby -EXTRA_DIST = libpreludecpp.i libpreludecpp-perl.i perl/Makefile.PL.in +EXTRA_DIST = libpreludecpp.i perl/libpreludecpp-perl.i perl/Makefile.PL.in CLEANFILES = perl/pm_to_blib perl/PreludeEasy.o perl/blib python/build DISTCLEANFILES=perl/PreludeEasy.cxx @@ -25,7 +25,7 @@ perl: perl-build perl-makefile: cd perl && LANG="" DESTDIR=$(DESTDIR) LIBDIR=$(libdir) $(PERL) Makefile.PL @PERL_EXTRA_PARAMS@ CC="$(CXX)" -perl/PreludeEasy.cxx: $(top_srcdir)/bindings/c++/include/*.hxx libpreludecpp.i libpreludecpp-perl.i +perl/PreludeEasy.cxx: $(top_srcdir)/bindings/c++/include/*.hxx libpreludecpp.i perl/libpreludecpp-perl.i if HAVE_SWIG $(SWIG) -c++ -I$(top_srcdir)/bindings -I$(top_srcdir)/bindings/c++/include -I$(top_srcdir)/src/include -I$(top_srcdir)/src/libprelude-error -perl5 -o $@ libpreludecpp.i endif diff --git a/bindings/libpreludecpp-perl.i b/bindings/libpreludecpp-perl.i deleted file mode 100644 index 2b7488c..0000000 --- a/bindings/libpreludecpp-perl.i +++ /dev/null @@ -1,192 +0,0 @@ -# Exception map -%typemap(throws) Prelude::PreludeError %{ - SWIG_exception(SWIG_RuntimeError, $1.what()); -%}; - - -# Conversion not allowed -%ignore *::operator =; -%ignore *::operator int() const; -%ignore *::operator long() const; -%ignore *::operator int32_t() const; -%ignore *::operator uint32_t() const; -%ignore *::operator int64_t() const; -%ignore *::operator uint64_t() const; -%ignore *::operator float() const; -%ignore *::operator double() const; -%ignore *::operator Prelude::IDMEFTime() const; -%ignore *::operator const std::string() const; -%ignore *::operator const char *() const; - - -%header %{ -#define TARGET_LANGUAGE_OUTPUT_TYPE SV ** -int IDMEFValue_to_SWIG(const IDMEFValue &result, TARGET_LANGUAGE_OUTPUT_TYPE ret); -%} - -%fragment("IDMEFValueList_to_SWIG", "header") { -SV *IDMEFValueList_to_SWIG(const Prelude::IDMEFValue &value) -{ - int j = 0, ret; - std::vector<Prelude::IDMEFValue> result = value; - std::vector<Prelude::IDMEFValue>::const_iterator i; - - AV *myav; - SV *svret, **svs = new SV*[result.size()]; - - for ( i = result.begin(); i != result.end(); i++ ) { - ret = IDMEFValue_to_SWIG(*i, &svs[j++]); - if ( ret < 0 ) - return NULL; - } - - myav = av_make(result.size(), svs); - delete[] svs; - - svret = newRV_noinc((SV*) myav); - sv_2mortal(svret); - - return svret; -} -} - -/* tell squid not to cast void * value */ -%typemap(in) void *nocast_p { - $1 = $input; -} - -%fragment("TransitionFunc", "header") { -static SV *__prelude_log_func; -static gl_thread_t __initial_thread; - - -static void _cb_perl_log(int level, const char *str) -{ - if ( (gl_thread_t) gl_thread_self() != __initial_thread ) - return; - - dSP; - ENTER; - SAVETMPS; - - PUSHMARK(SP); - XPUSHs(SWIG_From_int(level)); - XPUSHs(SWIG_FromCharPtr(str)); - PUTBACK; - - perl_call_sv(__prelude_log_func, G_VOID); - - FREETMPS; - LEAVE; -} - - -static int _cb_perl_write(prelude_msgbuf_t *fd, prelude_msg_t *msg) -{ - int ret; - PerlIO *io = (PerlIO *) prelude_msgbuf_get_data(fd); - - ret = PerlIO_write(io, (const char *) prelude_msg_get_message_data(msg), prelude_msg_get_len(msg)); - if ( ret != prelude_msg_get_len(msg) ) - return prelude_error_from_errno(errno); - - prelude_msg_recycle(msg); - - return 0; -} - - -static ssize_t _cb_perl_read(prelude_io_t *fd, void *buf, size_t size) -{ - int ret; - PerlIO *io = (PerlIO *) prelude_io_get_fdptr(fd); - - ret = PerlIO_read(io, buf, size); - if ( ret < 0 ) - ret = prelude_error_from_errno(errno); - - else if ( ret == 0 ) - ret = prelude_error(PRELUDE_ERROR_EOF); - - return ret; -} -}; - -%typemap(in, fragment="TransitionFunc") void (*log_cb)(int level, const char *log) { - if ( __prelude_log_func ) - SvREFCNT_dec(__prelude_log_func); - - __prelude_log_func = $input; - SvREFCNT_inc($input); - - $1 = _cb_perl_log; -}; - -%extend Prelude::IDMEF { - void Write(void *nocast_p) { - PerlIO *io = IoIFP(sv_2io((SV *) nocast_p)); - self->_genericWrite(_cb_perl_write, io); - } - - void Read(void *nocast_p) { - PerlIO *io = IoIFP(sv_2io((SV *) nocast_p)); - self->_genericRead(_cb_perl_read, io); - } -} - - -%typemap(out, fragment="IDMEFValue_to_SWIG") Prelude::IDMEFValue { - int ret; - - if ( $1.IsNull() ) { - SvREFCNT_inc (& PL_sv_undef); - $result = &PL_sv_undef; - } else { - SV *mysv; - - ret = IDMEFValue_to_SWIG($1, &mysv); - if ( ret < 0 ) { - std::stringstream s; - s << "IDMEFValue typemap does not handle value of type '" << idmef_value_type_to_string($1.GetType()) << "'"; - SWIG_exception_fail(SWIG_ValueError, s.str().c_str()); - } - - $result = mysv; - } - - argvi++; -}; - - -%init { - STRLEN len; - char **argv; - int j, argc = 1, ret; - AV *pargv = get_av("ARGV", FALSE); - - __initial_thread = (gl_thread_t) gl_thread_self(); - - ret = av_len(pargv); - if ( ret >= 0 ) - argc += ret + 1; - - if ( argc + 1 < 0 ) - throw PreludeError("Invalide argc length"); - - argv = (char **) malloc((argc + 1) * sizeof(char *)); - if ( ! argv ) - throw PreludeError("Allocation failure"); - - argv[0] = SvPV(get_sv("0", FALSE), len); - - for ( j = 0; j < ret + 1; j++ ) - argv[j + 1] = SvPV(*av_fetch(pargv, j, FALSE), len); - - argv[j + 1] = NULL; - - ret = prelude_init(&argc, argv); - if ( ret < 0 ) { - free(argv); - throw PreludeError(ret); - } -} diff --git a/bindings/libpreludecpp.i b/bindings/libpreludecpp.i index eb315c9..80ea5fb 100644 --- a/bindings/libpreludecpp.i +++ b/bindings/libpreludecpp.i @@ -46,7 +46,7 @@ typedef signed int prelude_error_t; #ifdef SWIGPERL -%include libpreludecpp-perl.i +%include perl/libpreludecpp-perl.i #endif #ifdef SWIGPYTHON diff --git a/bindings/perl/libpreludecpp-perl.i b/bindings/perl/libpreludecpp-perl.i new file mode 100644 index 0000000..2b7488c --- /dev/null +++ b/bindings/perl/libpreludecpp-perl.i @@ -0,0 +1,192 @@ +# Exception map +%typemap(throws) Prelude::PreludeError %{ + SWIG_exception(SWIG_RuntimeError, $1.what()); +%}; + + +# Conversion not allowed +%ignore *::operator =; +%ignore *::operator int() const; +%ignore *::operator long() const; +%ignore *::operator int32_t() const; +%ignore *::operator uint32_t() const; +%ignore *::operator int64_t() const; +%ignore *::operator uint64_t() const; +%ignore *::operator float() const; +%ignore *::operator double() const; +%ignore *::operator Prelude::IDMEFTime() const; +%ignore *::operator const std::string() const; +%ignore *::operator const char *() const; + + +%header %{ +#define TARGET_LANGUAGE_OUTPUT_TYPE SV ** +int IDMEFValue_to_SWIG(const IDMEFValue &result, TARGET_LANGUAGE_OUTPUT_TYPE ret); +%} + +%fragment("IDMEFValueList_to_SWIG", "header") { +SV *IDMEFValueList_to_SWIG(const Prelude::IDMEFValue &value) +{ + int j = 0, ret; + std::vector<Prelude::IDMEFValue> result = value; + std::vector<Prelude::IDMEFValue>::const_iterator i; + + AV *myav; + SV *svret, **svs = new SV*[result.size()]; + + for ( i = result.begin(); i != result.end(); i++ ) { + ret = IDMEFValue_to_SWIG(*i, &svs[j++]); + if ( ret < 0 ) + return NULL; + } + + myav = av_make(result.size(), svs); + delete[] svs; + + svret = newRV_noinc((SV*) myav); + sv_2mortal(svret); + + return svret; +} +} + +/* tell squid not to cast void * value */ +%typemap(in) void *nocast_p { + $1 = $input; +} + +%fragment("TransitionFunc", "header") { +static SV *__prelude_log_func; +static gl_thread_t __initial_thread; + + +static void _cb_perl_log(int level, const char *str) +{ + if ( (gl_thread_t) gl_thread_self() != __initial_thread ) + return; + + dSP; + ENTER; + SAVETMPS; + + PUSHMARK(SP); + XPUSHs(SWIG_From_int(level)); + XPUSHs(SWIG_FromCharPtr(str)); + PUTBACK; + + perl_call_sv(__prelude_log_func, G_VOID); + + FREETMPS; + LEAVE; +} + + +static int _cb_perl_write(prelude_msgbuf_t *fd, prelude_msg_t *msg) +{ + int ret; + PerlIO *io = (PerlIO *) prelude_msgbuf_get_data(fd); + + ret = PerlIO_write(io, (const char *) prelude_msg_get_message_data(msg), prelude_msg_get_len(msg)); + if ( ret != prelude_msg_get_len(msg) ) + return prelude_error_from_errno(errno); + + prelude_msg_recycle(msg); + + return 0; +} + + +static ssize_t _cb_perl_read(prelude_io_t *fd, void *buf, size_t size) +{ + int ret; + PerlIO *io = (PerlIO *) prelude_io_get_fdptr(fd); + + ret = PerlIO_read(io, buf, size); + if ( ret < 0 ) + ret = prelude_error_from_errno(errno); + + else if ( ret == 0 ) + ret = prelude_error(PRELUDE_ERROR_EOF); + + return ret; +} +}; + +%typemap(in, fragment="TransitionFunc") void (*log_cb)(int level, const char *log) { + if ( __prelude_log_func ) + SvREFCNT_dec(__prelude_log_func); + + __prelude_log_func = $input; + SvREFCNT_inc($input); + + $1 = _cb_perl_log; +}; + +%extend Prelude::IDMEF { + void Write(void *nocast_p) { + PerlIO *io = IoIFP(sv_2io((SV *) nocast_p)); + self->_genericWrite(_cb_perl_write, io); + } + + void Read(void *nocast_p) { + PerlIO *io = IoIFP(sv_2io((SV *) nocast_p)); + self->_genericRead(_cb_perl_read, io); + } +} + + +%typemap(out, fragment="IDMEFValue_to_SWIG") Prelude::IDMEFValue { + int ret; + + if ( $1.IsNull() ) { + SvREFCNT_inc (& PL_sv_undef); + $result = &PL_sv_undef; + } else { + SV *mysv; + + ret = IDMEFValue_to_SWIG($1, &mysv); + if ( ret < 0 ) { + std::stringstream s; + s << "IDMEFValue typemap does not handle value of type '" << idmef_value_type_to_string($1.GetType()) << "'"; + SWIG_exception_fail(SWIG_ValueError, s.str().c_str()); + } + + $result = mysv; + } + + argvi++; +}; + + +%init { + STRLEN len; + char **argv; + int j, argc = 1, ret; + AV *pargv = get_av("ARGV", FALSE); + + __initial_thread = (gl_thread_t) gl_thread_self(); + + ret = av_len(pargv); + if ( ret >= 0 ) + argc += ret + 1; + + if ( argc + 1 < 0 ) + throw PreludeError("Invalide argc length"); + + argv = (char **) malloc((argc + 1) * sizeof(char *)); + if ( ! argv ) + throw PreludeError("Allocation failure"); + + argv[0] = SvPV(get_sv("0", FALSE), len); + + for ( j = 0; j < ret + 1; j++ ) + argv[j + 1] = SvPV(*av_fetch(pargv, j, FALSE), len); + + argv[j + 1] = NULL; + + ret = prelude_init(&argc, argv); + if ( ret < 0 ) { + free(argv); + throw PreludeError(ret); + } +} _______________________________________________ Prelude-cvslog site list [email protected] http://lists.prelude-ids.org/mailman/listinfo/prelude-cvslog