Re: [Oorexx-devel] Question ad exit "1.15.2.4. RXCMD"
On 30.08.2022 18:11, Rick McGuire wrote: On Tue, Aug 30, 2022 at 11:07 AM Rony G. Flatscher wrote: While testing a RXMCD exit, implemented in Java and preconfigured for the Rexx instance, commands trigger the exit, however the DLL information is not supplied, but empty (expecting "BSF4ooRexx850.dll" as that is the library that contains the callback function). Also, trying it with AddCommandEnvironment()-API would not supply the dll name. The sequence is: a Java program loads and configures a Rexx instance, setting a RXCMD exit handler (implemented in Java) and a RexxRedirectingCommandHandler (implemented in Java), the callback functions are in the native DLL ("BSF4ooRexx850.dll"). Both handlers get invoked, the RXCMD exit handler does not get a dll name (it is empty). In addition, the exit intercepts also commands to CMD, however the dll name is empty as well. rexxapi.pdf says among other things: Example 1.43. API — Rexx_IO_Exit parameter list typedef struct { struct { /* Condition flags */ unsigned rxfcfail : 1; /* Command failed. Trap with */ /* CALL or SIGNAL on FAILURE. */ unsigned rxfcerr : 1; /* Command ERROR occurred. */ /* Trap with CALL or SIGNAL on */ /* ERROR. */ } rxcmd_flags; const char * rxcmd_address; /* Pointer to address name. */ unsigned short rxcmd_addressl; /* Length of address name. */ *const char * rxcmd_dll; /* dll name for command. */unsigned short rxcmd_dll_len; /* Length of dll name. 0 ==> *//* executable file. */* CONSTRXSTRING rxcmd_command; /* The command string. */ RXSTRING rxcmd_retc; /* Pointer to return code */ /* buffer. User allocated. */ } RXCMDHST_PARM; What does "Length of dll name. 0 ==> executable file" mean, when would that take effect? Is there anything I need to/can do to get at the DLL-name in the exit? Nothing, it appears. I don't know what that field was every used for, and from the documentation, it sounds like it was intended for something other than the dll name of the exit. This is born out by the fact that the other exits that can be registered as dlls don't have that field. However, as far back as 3.1.2, it has always been set to null. Thank you! Maybe we should add/change a comment to the effect "rxcmd_dll is always set to null" and "rxcmd_dll_len is always set to 0"? ---rony ___ Oorexx-devel mailing list Oorexx-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/oorexx-devel
Re: [Oorexx-devel] Question ad exit "1.15.2.4. RXCMD"
On Tue, Aug 30, 2022 at 11:07 AM Rony G. Flatscher wrote: > While testing a RXMCD exit, implemented in Java and preconfigured for the > Rexx instance, commands trigger the exit, however the DLL information is > not supplied, but empty (expecting "BSF4ooRexx850.dll" as that is the > library that contains the callback function). Also, trying it with > AddCommandEnvironment()-API would not supply the dll name. > > The sequence is: a Java program loads and configures a Rexx instance, > setting a RXCMD exit handler (implemented in Java) and a > RexxRedirectingCommandHandler (implemented in Java), the callback functions > are in the native DLL ("BSF4ooRexx850.dll"). Both handlers get invoked, the > RXCMD exit handler does not get a dll name (it is empty). > > In addition, the exit intercepts also commands to CMD, however the dll > name is empty as well. > > rexxapi.pdf says among other things: > > Example 1.43. API — Rexx_IO_Exit parameter list > typedef struct { > struct { /* Condition flags */ >unsigned rxfcfail : 1; /* Command failed. Trap with */ >/* CALL or SIGNAL on FAILURE. */ >unsigned rxfcerr : 1; /* Command ERROR occurred. */ >/* Trap with CALL or SIGNAL on */ >/* ERROR. */ > } rxcmd_flags; > const char * rxcmd_address; /* Pointer to address name. */ > unsigned short rxcmd_addressl; /* Length of address name. */*const char * > rxcmd_dll; /* dll name for command. */**unsigned short rxcmd_dll_len; /* > Length of dll name. 0 ==> */** /* executable > file. */* > CONSTRXSTRING rxcmd_command; /* The command string. */ > RXSTRING rxcmd_retc; /* Pointer to return code */ > /* buffer. User allocated. */ > } RXCMDHST_PARM; > > What does "Length of dll name. 0 ==> executable file" mean, when would > that take effect? Is there anything I need to/can do to get at the DLL-name > in the exit? > Nothing, it appears. I don't know what that field was every used for, and from the documentation, it sounds like it was intended for something other than the dll name of the exit. This is born out by the fact that the other exits that can be registered as dlls don't have that field. However, as far back as 3.1.2, it has always been set to null. Rick > ---rony > > > ___ > Oorexx-devel mailing list > Oorexx-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/oorexx-devel > ___ Oorexx-devel mailing list Oorexx-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/oorexx-devel
[Oorexx-devel] Question ad exit "1.15.2.4. RXCMD"
While testing a RXMCD exit, implemented in Java and preconfigured for the Rexx instance, commands trigger the exit, however the DLL information is not supplied, but empty (expecting "BSF4ooRexx850.dll" as that is the library that contains the callback function). Also, trying it with AddCommandEnvironment()-API would not supply the dll name. The sequence is: a Java program loads and configures a Rexx instance, setting a RXCMD exit handler (implemented in Java) and a RexxRedirectingCommandHandler (implemented in Java), the callback functions are in the native DLL ("BSF4ooRexx850.dll"). Both handlers get invoked, the RXCMD exit handler does not get a dll name (it is empty). In addition, the exit intercepts also commands to CMD, however the dll name is empty as well. rexxapi.pdf says among other things: Example 1.43. API — Rexx_IO_Exit parameter list typedef struct { struct { /* Condition flags */ unsigned rxfcfail : 1; /* Command failed. Trap with */ /* CALL or SIGNAL on FAILURE. */ unsigned rxfcerr : 1; /* Command ERROR occurred. */ /* Trap with CALL or SIGNAL on */ /* ERROR. */ } rxcmd_flags; const char * rxcmd_address; /* Pointer to address name. */ unsigned short rxcmd_addressl; /* Length of address name. */ *const char * rxcmd_dll; /* dll name for command. */unsigned short rxcmd_dll_len; /* Length of dll name. 0 ==> *//* executable file. */* CONSTRXSTRING rxcmd_command; /* The command string. */ RXSTRING rxcmd_retc; /* Pointer to return code */ /* buffer. User allocated. */ } RXCMDHST_PARM; What does "Length of dll name. 0 ==> executable file" mean, when would that take effect? Is there anything I need to/can do to get at the DLL-name in the exit? ---rony ___ Oorexx-devel mailing list Oorexx-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/oorexx-devel