45 #include <sys/types.h>
51 #include "../../hostemu.h"
93 static pthread_mutex_t
hmtxExecIO = PTHREAD_MUTEX_INITIALIZER;
151 unsigned long ulRetc;
156 RxVarBlock.
shvname.strptr = pszVar;
157 RxVarBlock.
shvname.strlength = strlen(pszVar);
170 prxVar -> strptr = NULL;
171 prxVar -> strlength = 0;
176 if (pszTemp == NULL) {
178 prxVar -> strptr = NULL;
179 prxVar -> strlength = 0;
187 prxVar -> strptr = pszTemp;
223 unsigned long ulRetc;
227 RxVarBlock.
shvname.strptr = pszVar;
228 RxVarBlock.
shvname.strlength = strlen(pszVar);
267 unsigned short int *flags,
272 unsigned long i, rc = 0;
276 printf(
"HOSTEMU: Subcom called.\n");
294 printf(
"HOSTEMU: Parse complete.\n");
307 printf(
"HOSTEMU: Executing execio statement.\n");
313 pll = (
PLL)malloc(
sizeof (
LL));
319 memset(pll,
'\0',
sizeof (
LL));
329 if ((pll ->
pFile == NULL)) {
361 fclose(pll ->
pFile);
390 sprintf(retc->
strptr,
"%ld", rc);
393 printf(
"HOSTEMU: Subcom return code = %u.\n", rc);
434 Index = Stem + strlen(Stem);
438 sprintf(Index,
"%u", 0);
440 elements = atoi(rxVal.
strptr);
446 fputs(
"\n", pll ->
pFile);
457 fputs(
"\n", pll ->
pFile);
462 fflush (pll ->
pFile);
511 fputs(Item, pll ->
pFile);
512 fputs(
"\n", pll ->
pFile);
528 fputs(Item, pll ->
pFile);
529 fputs(
"\n", pll ->
pFile);
540 fflush (pll ->
pFile);
571 unsigned long ulRc = 0;
582 Index = Stem + strlen(Stem);
613 sprintf(Index,
"%d", 0);
705 while (pll != NULL) {
706 if (!strcmp (SFilename, pll ->
FileName)) {
774 if (pll ->
next != NULL) {
777 if (pll ->
prev != NULL) {
809 return (
long)elements;
877 printf(
"HOSTEMU: Library loaded.\n");
878 printf(
"HOSTEMU: RexxRegisterSubcomExe retc = %d.\n", rc);
888 while (pll != NULL) {
889 fclose (pll ->
pFile);
RexxReturnCode RexxEntry RexxVariablePool(PSHVBLOCK pshvblock)
RexxReturnCode REXXENTRY RexxResetTrace(process_id_t procid, thread_id_t threadid)
RexxReturnCode REXXENTRY RexxSetTrace(process_id_t procid, thread_id_t threadid)
RexxReturnCode REXXENTRY RexxSetHalt(process_id_t procid, thread_id_t threadid)
#define REXX_INTERPRETER_4_0_0
#define STANDARD_PACKAGE_HEADER
RexxReturnCode REXXENTRY RexxRegisterSubcomExe(CONSTANT_STRING, REXXPFN, CONSTANT_STRING)
RexxReturnCode REXXENTRY RexxPullFromQueue(CONSTANT_STRING, PRXSTRING, RexxQueueTime *, size_t)
RexxReturnCode REXXENTRY RexxFreeMemory(void *)
RexxReturnCode REXXENTRY RexxAddQueue(CONSTANT_STRING, PCONSTRXSTRING, size_t)
CONSTANT_RXSTRING * PCONSTRXSTRING
RexxReturnCode REXXENTRY RexxQueryQueue(CONSTANT_STRING, size_t *)
void *REXXENTRY RexxAllocateMemory(size_t)
CONSTANT_RXSTRING shvname
struct _SHVBLOCK * shvnext
RexxReturnCode RexxEntry GrxHost(PCONSTRXSTRING command, unsigned short int *flags, PRXSTRING retc)
OOREXX_GET_PACKAGE(hostemu)
static unsigned long ExecIO_Write_From_Stem(PLL pll)
static void hostemu_unloader(RexxThreadContext *context)
static unsigned long ExecIO_Read_To_Queue(PLL pll)
static void push(char *pushstr, long lOp)
unsigned long SetRexxVar(char *pszVar, char *pValue, size_t ulLen)
char * pszSymbol[SYMTABLESIZE]
static void Delete_LL(PLL pll)
unsigned long FetchRexxVar(char *pszVar, PRXSTRING prxVar)
RexxPackageEntry hostemu_package_entry
static PLL Search_LL(char *SFilename)
static unsigned long ExecIO_Read_To_Stem(PLL pll)
static void hostemu_loader(RexxThreadContext *context)
static void Insert_LL(PLL pll)
static unsigned long ExecIO_Write_From_Queue(PLL pll)
EXECIO_OPTIONS ExecIO_Options
static pthread_mutex_t hmtxExecIO