[BACK]Return to sample_kanlib.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / kxx

File: [local] / OpenXM / src / kxx / sample_kanlib.c (download)

Revision 1.1, Sun Feb 29 03:00:37 2004 UTC (20 years, 2 months ago) by takayama
Branch: MAIN
CVS Tags: RELEASE_1_2_2_KNOPPIX_b, RELEASE_1_2_2_KNOPPIX

An universal interface to TeXmacs for ox engines
(experimental and primitive version).

* This program catches control-C of TeXmacs and makes an interruption
  to engines by OX-RFC 100 and OX-RFC 103.
* Messages will be displayed on ox xterm window.
* This program uses kan/sm1 as an interpreter between ox engines and
  TeXmacs.

/* $OpenXM: OpenXM/src/kxx/sample_kanlib.c,v 1.1 2004/02/29 03:00:37 takayama Exp $ */
/*
This is a sample program to use kanlib.a
gcc -g -O2 -g -D_BSD_SOURCE sample_kanlib.c -o sample_kanlib  -ldl   ../kan96xx/Kan/kanlib.a -L../../lib -lgmp -lgc
*/

#include <stdio.h>
#include <setjmp.h>
#include <signal.h>

#if defined(__CYGWIN__)
#define JMP_BUF sigjmp_buf
#define SETJMP(env)  sigsetjmp(env,1)
#define LONGJMP(env,p)  siglongjmp(env,p)
#else
#define JMP_BUF jmp_buf
#define SETJMP(env)  setjmp(env)
#define LONGJMP(env,p)  longjmp(env,p)
#endif


extern int Quiet;
extern JMP_BUF EnvOfStackMachine;

void ctrlC();

main() {
  char s[1024];
  Quiet = 0;
  KSstart();  

  if (signal(SIGINT,SIG_IGN) != SIG_IGN) {
	signal(SIGINT,ctrlC);
  }
  while( fgets(s,1023,stdin) != NULL) {
	if (SETJMP(EnvOfStackMachine)) {
	  KSexecuteString(" ctrlC-hook "); /* Execute User Defined functions. */
      KSexecuteString(" (Computation is interrupted.) ");
	  continue;
	} else {  }
	KSexecuteString(s);
  }
}