/* * call-seq: * new * * Create a new Krb5Auth::Krb5 object. This must be called before any other methods are called. Returns true on success, raises Krb5Auth::Krb5::Exception on failure. */ static VALUE Krb5_new(VALUE self) { struct ruby_krb5 *kerb; krb5_error_code krbret; kerb = (struct ruby_krb5 *)malloc(sizeof(struct ruby_krb5)); if (kerb == NULL) { OOM_EXCEPT(); return Qnil; } memset(kerb, 0, sizeof(struct ruby_krb5)); krbret = krb5_init_context(&kerb->ctx); if (krbret) { Krb5_register_error(krbret); return Qnil; } return Data_Wrap_Struct(cKrb5, NULL, kerb_free, kerb); }