From bbb1ca16daa6e4d6e1766b86b6cc02f52cf4a65b Mon Sep 17 00:00:00 2001 From: Mark Hessling Date: Fri, 28 Feb 2003 11:44:52 +0000 Subject: [PATCH] Add RxReturnUnsignedNumber() Tidy up code --- common/rxpack.c | 110 ++++++++++++++++++++++++++++++------------------ common/rxpack.h | 1 + 2 files changed, 69 insertions(+), 42 deletions(-) diff --git a/common/rxpack.c b/common/rxpack.c index d777c71e..1087b4a6 100644 --- a/common/rxpack.c +++ b/common/rxpack.c @@ -16,11 +16,10 @@ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -static char RCSid[] = "$Id: rxpack.c,v 1.29 2003/02/28 08:16:13 mark Exp $"; +static char RCSid[] = "$Id: rxpack.c,v 1.30 2003/02/28 11:44:51 mark Exp $"; #include "rxpack.h" - #if !defined(DYNAMIC_LIBRARY) && (defined(USE_WINREXX) || defined(USE_QUERCUS)) static RexxExitHandler RxExitHandlerForSayTraceRedirection; #endif @@ -280,25 +279,25 @@ RXSTRING *GetRexxVariable shv.shvnext=NULL; /* only one block */ shv.shvcode = RXSHV_FETCH; -/* - * This calls the RexxVariablePool() function for each value. This is - * not the most efficient way of doing this. - */ + /* + * This calls the RexxVariablePool() function for each value. This is + * not the most efficient way of doing this. + */ if ( suffix == -1) strcpy( variable_name, name ); else sprintf( variable_name, "%s%-d", name, suffix ); ( void )make_upper( variable_name ); -/* - * Now (attempt to) get the REXX variable - * Set shv.shvvalue to NULL to force interpreter to allocate memory. - */ + /* + * Now (attempt to) get the REXX variable + * Set shv.shvvalue to NULL to force interpreter to allocate memory. + */ MAKERXSTRING( shv.shvname, variable_name, strlen( variable_name ) ); shv.shvvalue.strptr = NULL; shv.shvvalue.strlength = 0; -/* - * One or both of these is needed, too - */ + /* + * One or both of these is needed, too + */ shv.shvnamelen = strlen( variable_name ); shv.shvvaluelen = 0; rc = RexxVariablePool( &shv ); /* Set the REXX variable */ @@ -350,25 +349,25 @@ int *GetRexxVariableInteger shv.shvnext=NULL; /* only one block */ shv.shvcode = RXSHV_FETCH; -/* - * This calls the RexxVariablePool() function for each value. This is - * not the most efficient way of doing this. - */ + /* + * This calls the RexxVariablePool() function for each value. This is + * not the most efficient way of doing this. + */ if ( suffix == -1) strcpy( variable_name, name ); else sprintf( variable_name, "%s%-d", name, suffix ); ( void )make_upper( variable_name ); -/* - * Now (attempt to) get the REXX variable - * Set shv.shvvalue to NULL to force interpreter to allocate memory. - */ + /* + * Now (attempt to) get the REXX variable + * Set shv.shvvalue to NULL to force interpreter to allocate memory. + */ MAKERXSTRING( shv.shvname, variable_name, strlen( variable_name ) ); shv.shvvalue.strptr = NULL; shv.shvvalue.strlength = 0; -/* - * One or both of these is needed, too - */ + /* + * One or both of these is needed, too + */ shv.shvnamelen = strlen( variable_name ); shv.shvvaluelen = 0; rc = RexxVariablePool( &shv ); /* Get the REXX variable */ @@ -527,7 +526,6 @@ int StrToNumber return 0; } - /*----------------------------------------------------------------------------- * Converts a RXSTRING to a boolean. Input can be ON, Yes, 1 or OFF No, 0 *----------------------------------------------------------------------------*/ @@ -1751,7 +1749,7 @@ int TermRxPackage /*----------------------------------------------------------------------------- - * This function + * This function sets the name of thepackage trace file *----------------------------------------------------------------------------*/ int RxSetTraceFile @@ -1798,7 +1796,7 @@ int RxSetTraceFile } /*----------------------------------------------------------------------------- - * This function + * This function obtains the name of thepackage trace file and returns it *----------------------------------------------------------------------------*/ char *RxGetTraceFile @@ -1815,7 +1813,7 @@ char *RxGetTraceFile } /*----------------------------------------------------------------------------- - * This function + * This function sets the constants prefix for the package *----------------------------------------------------------------------------*/ int RxSetConstantPrefix @@ -1841,7 +1839,7 @@ int RxSetConstantPrefix } /*----------------------------------------------------------------------------- - * This function + * This function obtains the constants prefix for the package and returns it *----------------------------------------------------------------------------*/ char *RxGetConstantPrefix @@ -1858,7 +1856,7 @@ char *RxGetConstantPrefix } /*----------------------------------------------------------------------------- - * This function + * This function sets the run-time flags for the package *----------------------------------------------------------------------------*/ void RxSetRunFlags @@ -1876,7 +1874,7 @@ void RxSetRunFlags } /*----------------------------------------------------------------------------- - * This function + * This function obtains the run-time flags for the package and returns them *----------------------------------------------------------------------------*/ int RxGetRunFlags @@ -1893,7 +1891,7 @@ int RxGetRunFlags } /*----------------------------------------------------------------------------- - * This function + * This function returns the contents of retstr to the Rexx interpreter *----------------------------------------------------------------------------*/ int RxReturn @@ -1920,7 +1918,7 @@ int RxReturn } /*----------------------------------------------------------------------------- - * This function + * This function takes a signed integer and returns it to the Rexx interpreter *----------------------------------------------------------------------------*/ int RxReturnNumber @@ -1933,7 +1931,7 @@ int RxReturnNumber long num; #endif { - InternalTrace( RxPackageGlobalData, "RxReturnNumber", "%x,%d", retstr, num ); + InternalTrace( RxPackageGlobalData, "RxReturnNumber", "%x,%ld", retstr, num ); retstr->strlength = sprintf( (char *)retstr->strptr, "%ld", num ); if ( RxPackageGlobalData @@ -1949,7 +1947,36 @@ int RxReturnNumber } /*----------------------------------------------------------------------------- - * This function + * This function takes an unsigned integer and returns it to the Rexx interpreter + *----------------------------------------------------------------------------*/ +int RxReturnUnsignedNumber + +#ifdef HAVE_PROTO + ( RxPackageGlobalDataDef *RxPackageGlobalData, RXSTRING *retstr, ULONG num ) +#else + ( RxPackageGlobalData, retstr, num ) + RxPackageGlobalDataDef *RxPackageGlobalData; + RXSTRING *retstr; + ULONG num; +#endif +{ + InternalTrace( RxPackageGlobalData, "RxReturnUnsignedNumber", "%x,%lu", retstr, num ); + + retstr->strlength = sprintf( (char *)retstr->strptr, "%lu", num ); + if ( RxPackageGlobalData + && RxPackageGlobalData->RxRunFlags & MODE_VERBOSE ) + { + (void)fprintf( RxPackageGlobalData->RxTraceFilePointer, + "++ Exit %s with value \"%lu\"\n", + RxPackageGlobalData->FName, + num ); + fflush( RxPackageGlobalData->RxTraceFilePointer ); + } + return( 0 ); +} + +/*----------------------------------------------------------------------------- + * This function takes a double number and returns it to the Rexx interpreter *----------------------------------------------------------------------------*/ int RxReturnDouble @@ -2017,7 +2044,7 @@ int RxReturnPointer } /*----------------------------------------------------------------------------- - * This function + * This function takes a string and returns it to the Rexx interpreter *----------------------------------------------------------------------------*/ int RxReturnString @@ -2034,7 +2061,7 @@ int RxReturnString } /*----------------------------------------------------------------------------- - * This function + * This function takes a copy of a string, frees it, and returns the copy to the Rexx interpreter *----------------------------------------------------------------------------*/ int RxReturnStringAndFree @@ -2087,9 +2114,6 @@ int RxReturnStringAndFree } #if !defined(DYNAMIC_LIBRARY) && (defined(USE_WINREXX) || defined(USE_QUERCUS)) -/*----------------------------------------------------------------------------- - * This function - *----------------------------------------------------------------------------*/ static REH_RETURN_TYPE RxExitHandlerForSayTraceRedirection #if defined(HAVE_PROTO) @@ -2166,7 +2190,10 @@ static REH_RETURN_TYPE RxExitHandlerForSayTraceRedirection } #endif -/***********************************************************************/ +/*----------------------------------------------------------------------------- + * This is the default subcommand handler for the package. It passes all + * subcommands to the shell for execution. + *----------------------------------------------------------------------------*/ static RSH_RETURN_TYPE RxSubcomHandler #if defined(HAVE_PROTO) @@ -2180,7 +2207,6 @@ static RSH_RETURN_TYPE RxSubcomHandler RSH_ARG1_TYPE Flags; /* pointer to short for return of flags */ RSH_ARG2_TYPE Retstr; /* pointer to RXSTRING for RC return */ #endif -/***********************************************************************/ { RSH_RETURN_TYPE rcode=0; int rc=0; diff --git a/common/rxpack.h b/common/rxpack.h index d1045e18..da226614 100644 --- a/common/rxpack.h +++ b/common/rxpack.h @@ -262,6 +262,7 @@ int RxReturn Args(( RxPackageGlobalDataDef *, RXSTRING * )); int RxReturnString Args(( RxPackageGlobalDataDef *, RXSTRING *, char * )); int RxReturnStringAndFree Args(( RxPackageGlobalDataDef *, RXSTRING *, char *, int )); int RxReturnNumber Args(( RxPackageGlobalDataDef *, RXSTRING *, long )); +int RxReturnUnsignedNumber Args(( RxPackageGlobalDataDef *, RXSTRING *, ULONG )); int RxReturnDouble Args(( RxPackageGlobalDataDef *, RXSTRING *, double )); int RxReturnPointer Args(( RxPackageGlobalDataDef *, RXSTRING *, void * )); int memcmpi Args(( char *, char *, int ));