This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix missing X in 2 embed.fnc entries
[perl5.git] / ext / DynaLoader / dl_aix.xs
index 8fa7d1e..8e7d8ac 100644 (file)
@@ -12,6 +12,8 @@
  */
 
 #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
@@ -210,7 +212,7 @@ void *dlopen(char *path, int mode)
 {
        dTHX;
        dMY_CXT;
-       register ModulePtr mp;
+       ModulePtr mp;
 
        /*
         * Upon the first call register a terminate handler that will
@@ -316,7 +318,7 @@ static void caterr(char *s)
 {
        dTHX;
        dMY_CXT;
-       register char *p = s;
+       char *p = s;
 
        while (*p >= '0' && *p <= '9')
                p++;
@@ -353,9 +355,9 @@ void *dlsym(void *handle, const char *symbol)
 {
        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
@@ -385,9 +387,9 @@ int dlclose(void *handle)
 {
        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;
@@ -397,8 +399,8 @@ int dlclose(void *handle)
                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);
@@ -720,9 +722,10 @@ dl_unload_file(libref)
     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:
@@ -730,10 +733,11 @@ dl_find_symbol(libhandle, symbolname)
                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));
 
 
@@ -759,11 +763,11 @@ dl_install_xsub(perl_name, symref, filename="$Package")
                                              XS_DYNAMIC_FILENAME)));
 
 
-char *
+SV *
 dl_error()
     CODE:
     dMY_CXT;
-    RETVAL = dl_last_error ;
+    RETVAL = newSVsv(MY_CXT.x_dl_last_error);
     OUTPUT:
     RETVAL
 
@@ -774,11 +778,13 @@ CLONE(...)
     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