testprogram.c 1.31 KB

#include <stdio.h>
#include <string.h>
#include <pthread.h>

#include "globals.h"
#include <lib3270/macros.h>

#define MAX_ARGS 10

#include <pthread.h>

static H3270 *session = NULL;

static void * mainloop(void *dunno)
{
	while(session)
	{
		lib3270_main_iterate(session,1);
	}
	return NULL;
}

int main(int numpar, char *param[])
{
	H3270		* h;
	char	 	  line[4096];
	pthread_t	  thread;

	lib3270_initialize();

	session = h = lib3270_session_new("");
	printf("3270 session %p created\n]",h);

	pthread_create(&thread, NULL, mainloop, NULL);
	pthread_detach(thread);

	while(fgets(line,4095,stdin))
	{
//		const LIB3270_MACRO_LIST *cmd = get_3270_calls();

		int		 	  f;
		int			  argc = 0;
		const char	* argv[MAX_ARGS+1];
		char		* ptr;

		line[4095] = 0;	// Just in case.

		for(ptr = line;ptr && *ptr != '\n';ptr++);
		*ptr = 0;

		if(!*line)
			break;

		argv[argc++] = strtok(line," ");
		for(f=1;f<MAX_ARGS;f++)
		{
			if( (argv[argc++] = strtok(NULL," ")) == NULL)
				break;
		}
		argv[argc] = NULL;

		if(!strcmp(argv[0],"quit"))
			break;

		ptr = lib3270_run_macro(h,argv);
		if(ptr)
		{
			printf("\n%s\n",ptr);
			lib3270_free(ptr);
		}
		else
		{
			printf("\nNo response\n");
		}

		printf("\n]");

	}

	session = 0;
	pthread_cancel(thread);

	printf("Ending 3270 session %p\n",h);
	lib3270_session_free(h);

	return 0;
}