Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "ruby.h"
- #include <ldap.h>
- typedef struct _cldpwrap {
- LDAP* ldap;
- } CLdapWrapper;
- static VALUE cLdap;
- static void cldap_free(CLdapWrapper* p) {
- ldap_memfree(p->ldap);
- free(p);
- }
- LDAP* extract_ldap(VALUE self)
- {
- CLdapWrapper* ldp;
- Data_Get_Struct(self, CLdapWrapper, ldp);
- return ldp->ldap;
- }
- static VALUE cldap_alloc(VALUE klass) {
- CLdapWrapper* ldp;
- VALUE obj;
- ldp = malloc(sizeof(ldp));
- obj = Data_Wrap_Struct(klass, 0, cldap_free, ldp);
- return obj;
- }
- static VALUE cldap_initialize(int argc, VALUE* argv, VALUE self)
- {
- VALUE hostname, port;
- CLdapWrapper* ldpw;
- LDAP* ldp;
- rb_scan_args(argc, argv, "11", &hostname, &port);
- if (RTEST(port) == 0) port = INT2FIX(389);
- rb_iv_set(self, "@host", hostname);
- rb_iv_set(self, "@port", port);
- Data_Get_Struct(self, CLdapWrapper, ldpw);
- ldp = ldap_init(StringValueCStr(hostname), FIX2INT(port));
- ldpw->ldap = ldp;
- return self;
- }
- void Init_cldap()
- {
- cLdap = rb_define_class("Ldap", rb_cObject);
- rb_define_alloc_func(cLdap, cldap_alloc);
- rb_define_method(cLdap, "initialize", cldap_initialize, -1);
- }
Add Comment
Please, Sign In to add comment