Support for RXINI handling.

This commit is contained in:
Mark Hessling
2003-02-20 07:59:42 +00:00
parent f94600f8b0
commit 73ee5b9c21
3 changed files with 51 additions and 10 deletions

View File

@@ -18,7 +18,7 @@
* Mark Hessling M.Hessling@qut.edu.au http://www.lightlink.com/hessling/
*/
static char RCSid[] = "$Id: loader.c,v 1.15 2003/02/19 11:10:14 mark Exp $";
static char RCSid[] = "$Id: loader.c,v 1.16 2003/02/20 07:59:39 mark Exp $";
#include "rxpack.h"
@@ -43,6 +43,7 @@ extern int optind;
extern PackageInitialiser *GETPACKAGEINITIALISER();
extern PackageTerminator *GETPACKAGETERMINATOR();
extern RexxSubcomHandler *GETPACKAGESUBCOMHANDLER();
extern RexxExitHandler *GETPACKAGEINITHANDLER();
extern RexxFunction *GETPACKAGEFUNCTIONS();
extern RxPackageConstantDef *GETPACKAGECONSTANTS();
extern void PACKAGEUSAGE();
@@ -87,9 +88,14 @@ int main
int rc=0;
RXSTRING retstr;
CHAR retbuf[RETBUFLEN];
CHAR initexitname[100];
RXSTRING ArgList;
#if !defined(DYNAMIC_LIBRARY) && (defined(USE_WINREXX) || defined(USE_QUERCUS))
#if !defined(DYNAMIC_LIBRARY)
# if defined(USE_WINREXX) || defined(USE_QUERCUS)
RXSYSEXIT ExitList[3];
# else
RXSYSEXIT ExitList[2];
# endif
#endif
RxPackageGlobalDataDef MyGlob, *RxPackageGlobalData;
@@ -222,22 +228,28 @@ int main
*/
if ( ( rc = RegisterRxSubcom( RxPackageGlobalData, GETPACKAGESUBCOMHANDLER() ) ) != 0 )
return( rc );
#if 0
/*
* Register a RXINI handler to set the package constants
*/
if ( ( rc = RegisterRxIni( RxPackageGlobalData, GETPACKAGECONSTANTSDLER() ) ) != 0 )
sprintf( initexitname, "%s%s", RXPACKAGENAME, "INIT" );
if ( ( rc = RegisterRxInit( RxPackageGlobalData, GETPACKAGEINITHANDLER(), initexitname ) ) != 0 )
return( rc );
SetPackageConstants( RxPackageGlobalData, GETPACKAGECONSTANTS(), RXPACKAGENAME );
#endif
FunctionPrologue( RxPackageGlobalData, GETPACKAGEINITIALISER(), RXPACKAGENAME, 0L, NULL );
/*
* Set up the system exit for the Say and Trace redirection
* Set up the system exit for the Say and Trace redirection and RxIni
*/
#if !defined(DYNAMIC_LIBRARY) && (defined(USE_WINREXX) || defined(USE_QUERCUS))
#if !defined(DYNAMIC_LIBRARY)
# if defined(USE_WINREXX) || defined(USE_QUERCUS)
ExitList[0].sysexit_name = RXPACKAGENAME;
ExitList[0].sysexit_code = RXSIO;
ExitList[1].sysexit_name = initexitname;
ExitList[1].sysexit_code = RXINI;
ExitList[2].sysexit_code = RXENDLST;
# else
ExitList[0].sysexit_name = initexitname;
ExitList[0].sysexit_code = RXINI;
ExitList[1].sysexit_code = RXENDLST;
# endif
#endif
MAKERXSTRING( retstr, retbuf, sizeof( retbuf ) );
@@ -252,7 +264,7 @@ int main
( RS_ARG3_TYPE )NULL,
( RS_ARG4_TYPE )RXPACKAGENAME,
( RS_ARG5_TYPE )RXCOMMAND,
#if !defined(DYNAMIC_LIBRARY) && (defined(USE_WINREXX) || defined(USE_QUERCUS))
#if !defined(DYNAMIC_LIBRARY)
( RS_ARG6_TYPE )ExitList,
#else
( RS_ARG6_TYPE )NULL,

View File

@@ -16,7 +16,7 @@
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
static char RCSid[] = "$Id: rxpack.c,v 1.25 2003/02/19 11:10:15 mark Exp $";
static char RCSid[] = "$Id: rxpack.c,v 1.26 2003/02/20 07:59:41 mark Exp $";
#include "rxpack.h"
@@ -1317,6 +1317,34 @@ int RegisterRxSubcom
return 0;
}
/*-----------------------------------------------------------------------------
* This function registers the package's RXINI exit handler...
*----------------------------------------------------------------------------*/
int RegisterRxInit
#ifdef HAVE_PROTO
( RxPackageGlobalDataDef *RxPackageGlobalData, RexxExitHandler ptr, char *name)
#else
( RxPackageGlobalData, ptr, name )
RxPackageGlobalDataDef *RxPackageGlobalData;
RexxExitHandler ptr;
char *name;
#endif
{
ULONG rc=0L;
InternalTrace( RxPackageGlobalData, "RegisterRxInit", "Name: %s Addr: %ld", name, ptr );
rc = RexxRegisterExitExe( (RREE_ARG0_TYPE)name,
(RREE_ARG1_TYPE)(ptr),
(RREE_ARG2_TYPE)NULL );
InternalTrace( RxPackageGlobalData, "RegisterRxInit", "returning %d", rc );
if ( rc != RXEXIT_OK )
return 1;
return 0;
}
/*-----------------------------------------------------------------------------
* This function registers the external functions...
*----------------------------------------------------------------------------*/

View File

@@ -237,6 +237,7 @@ RxPackageGlobalDataDef *InitRxPackage Args(( RxPackageGlobalDataDef *, PackageIn
int TermRxPackage Args(( RxPackageGlobalDataDef **, PackageTerminator *, RexxFunction *, char *, int ));
int RegisterRxFunctions Args(( RxPackageGlobalDataDef *, RexxFunction *, char * ));
int RegisterRxSubcom Args(( RxPackageGlobalDataDef *, RexxSubcomHandler ));
int RegisterRxInit Args(( RxPackageGlobalDataDef *, RexxExitHandler, char *));
int QueryRxFunction Args(( RxPackageGlobalDataDef *, char * ));
int DeregisterRxFunctions Args(( RxPackageGlobalDataDef *, RexxFunction *, int ));
int SetPackageConstants Args(( RxPackageGlobalDataDef *, RxPackageConstantDef *, char * ));