*/
#define PERLIO_NOT_STDIO 0
+#define PERL_EXT
+#define PERL_IN_DL_AIX_XS
/*
* On AIX 4.3 and above the emulation layer is not needed any more, and
{
dTHX;
dMY_CXT;
- register ModulePtr mp;
+ ModulePtr mp;
/*
* Upon the first call register a terminate handler that will
{
dTHX;
dMY_CXT;
- register char *p = s;
+ char *p = s;
while (*p >= '0' && *p <= '9')
p++;
{
dTHX;
dMY_CXT;
- register ModulePtr mp = (ModulePtr)handle;
- register ExportPtr ep;
- register int i;
+ ModulePtr mp = (ModulePtr)handle;
+ ExportPtr ep;
+ int i;
/*
* Could speed up search, but I assume that one assigns
{
dTHX;
dMY_CXT;
- register ModulePtr mp = (ModulePtr)handle;
+ ModulePtr mp = (ModulePtr)handle;
int result;
- register ModulePtr mp1;
+ ModulePtr mp1;
if (--mp->refCnt > 0)
return 0;
strerrorcpy(dl_errbuf, errno);
}
if (mp->exports) {
- register ExportPtr ep;
- register int i;
+ ExportPtr ep;
+ int i;
for (ep = mp->exports, i = mp->nExports; i; i--, ep++)
if (ep->name)
safefree(ep->name);
RETVAL
void
-dl_find_symbol(libhandle, symbolname)
+dl_find_symbol(libhandle, symbolname, ign_err=0)
void * libhandle
char * symbolname
+ int ign_err
PREINIT:
void *retv;
CODE:
libhandle, symbolname));
retv = dlsym(libhandle, symbolname);
DLDEBUG(2,PerlIO_printf(Perl_debug_log, " symbolref = %x\n", retv));
- ST(0) = sv_newmortal() ;
- if (retv == NULL)
- SaveError(aTHX_ "%s",dlerror()) ;
- else
+ ST(0) = sv_newmortal();
+ if (retv == NULL) {
+ if (!ign_err)
+ SaveError(aTHX_ "%s", dlerror());
+ } else
sv_setiv( ST(0), PTR2IV(retv));
XS_DYNAMIC_FILENAME)));
-char *
+SV *
dl_error()
CODE:
dMY_CXT;
- RETVAL = dl_last_error ;
+ RETVAL = newSVsv(MY_CXT.x_dl_last_error);
OUTPUT:
RETVAL
CODE:
MY_CXT_CLONE;
+ PERL_UNUSED_VAR(items);
+
/* MY_CXT_CLONE just does a memcpy on the whole structure, so to avoid
* using Perl variables that belong to another thread, we create our
* own for this thread.
*/
- MY_CXT.x_dl_last_error = newSVpvn("", 0);
+ MY_CXT.x_dl_last_error = newSVpvs("");
#endif