#include "openssl.h"
-SV *new_ref(type,obj,mort)
-char *type;
-char *obj;
- {
- SV *ret;
+SV *
+new_ref(type, obj, mort)
+ char *type;
+ char *obj;
+{
+ SV *ret;
- if (mort)
- ret=sv_newmortal();
- else
- ret=newSViv(0);
-printf(">new_ref %d\n",type);
- sv_setref_pv(ret,type,(void *)obj);
- return(ret);
- }
+ if (mort)
+ ret = sv_newmortal();
+ else
+ ret = newSViv(0);
+#ifdef DEBUG
+ printf(">new_ref %d\n",type);
+#endif
+ sv_setref_pv(ret, type, (void *)obj);
+ return(ret);
+}
-int ex_new(obj,data,ad,idx,argl,argp)
-char *obj;
-SV *data;
-CRYPTO_EX_DATA *ad;
-int idx;
-long argl;
-char *argp;
- {
- SV *sv;
+int
+ex_new(obj, data, ad, idx, argl, argp)
+ char *obj;
+ SV *data;
+ CRYPTO_EX_DATA *ad;
+ int idx;
+ long argl;
+ char *argp;
+{
+ SV *sv;
-fprintf(stderr,"ex_new %08X %s\n",obj,argp);
- sv=sv_newmortal();
- sv_setref_pv(sv,argp,(void *)obj);
-printf("%d>new_ref '%s'\n",sv,argp);
- CRYPTO_set_ex_data(ad,idx,(char *)sv);
- return(1);
- }
+#ifdef DEBUG
+ printf("ex_new %08X %s\n",obj,argp);
+#endif
+ sv = sv_newmortal();
+ sv_setref_pv(sv, argp, (void *)obj);
+#ifdef DEBUG
+ printf("%d>new_ref '%s'\n", sv, argp);
+#endif
+ CRYPTO_set_ex_data(ad, idx, (char *)sv);
+ return(1);
+}
-void ex_cleanup(obj,data,ad,idx,argl,argp)
-char *obj;
-SV *data;
-CRYPTO_EX_DATA *ad;
-int idx;
-long argl;
-char *argp;
- {
- pr_name("ex_cleanup");
-fprintf(stderr,"ex_cleanup %08X %s\n",obj,argp);
- if (data != NULL)
- SvREFCNT_dec((SV *)data);
- }
+void
+ex_cleanup(obj, data, ad, idx, argl, argp)
+ char *obj;
+ SV *data;
+ CRYPTO_EX_DATA *ad;
+ int idx;
+ long argl;
+ char *argp;
+{
+ pr_name("ex_cleanup");
+#ifdef DEBUG
+ printf("ex_cleanup %08X %s\n", obj, argp);
+#endif
+ if (data != NULL)
+ SvREFCNT_dec((SV *)data);
+}
+
+MODULE = OpenSSL PACKAGE = OpenSSL
-MODULE = OpenSSL PACKAGE = OpenSSL
+PROTOTYPES: ENABLE
BOOT:
- boot_bio();
- boot_cipher();
- boot_digest();
- boot_err();
- boot_ssl();
- boot_OpenSSL__BN();
- boot_OpenSSL__BIO();
- boot_OpenSSL__Cipher();
- boot_OpenSSL__MD();
- boot_OpenSSL__ERR();
- boot_OpenSSL__SSL();
- boot_OpenSSL__X509();
+ boot_bio();
+ boot_cipher();
+ boot_digest();
+ boot_err();
+ boot_ssl();
+
+ /* */
+ /* The next macro is the completely correct way to call a C */
+ /* function that uses perl calling conventions but is not */
+ /* registered with perl. */
+ /* */
+ /* The second macro seems to work for this context. (We just */
+ /* need a mark for the called function since we don't have */
+ /* any local variables and what-not.) */
+ /* */
+ /* Unfortunately, we need to do this because these boot_* */
+ /* functions are auto-generated by xsubpp and are normally */
+ /* called from DyncLoader, but we're pulling them in here. */
+ /* */
+#define FULL_callBootFunc(func) { \
+ dSP; \
+ ENTER; \
+ SAVETMPS; \
+ PUSHMARK(SP); \
+ func(); \
+ FREETMPS; \
+ LEAVE; \
+ }
+#define callBootFunc(func) { \
+ PUSHMARK(SP); \
+ func(); \
+ }
+ callBootFunc(boot_OpenSSL__BN);
+ callBootFunc(boot_OpenSSL__BIO);
+ callBootFunc(boot_OpenSSL__Cipher);
+ callBootFunc(boot_OpenSSL__MD);
+ callBootFunc(boot_OpenSSL__ERR);
+ callBootFunc(boot_OpenSSL__SSL);
+ callBootFunc(boot_OpenSSL__X509);