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

Diff for /OpenXM/src/kxx/ox_texmacs.c between version 1.34 and 1.42

version 1.34, 2006/03/22 00:52:55 version 1.42, 2018/09/07 01:21:31
Line 1 
Line 1 
 /* $OpenXM: OpenXM/src/kxx/ox_texmacs.c,v 1.33 2006/03/06 08:55:31 takayama Exp $ */  /* $OpenXM: OpenXM/src/kxx/ox_texmacs.c,v 1.41 2018/09/07 00:28:53 takayama Exp $ */
   
 #include <stdio.h>  #include <stdio.h>
 #include <stdlib.h>  #include <stdlib.h>
Line 9 
Line 9 
 #include "serversm.h"  #include "serversm.h"
 #include "ox_pathfinder.h"  #include "ox_pathfinder.h"
   
 #if defined(__CYGWIN__)  #if defined(__CYGWIN__) || defined(__MSYS__)
 #define JMP_BUF sigjmp_buf  #define JMP_BUF sigjmp_buf
 #define SETJMP(env)  sigsetjmp(env,1)  #define SETJMP(env)  MYSIGSETJMP(env,1)
 #define LONGJMP(env,p)  siglongjmp(env,p)  #define LONGJMP(env,p)  MYSIGLONGJMP(env,p)
 #else  #else
 #define JMP_BUF jmp_buf  #define JMP_BUF jmp_buf
 #define SETJMP(env)  setjmp(env)  #define SETJMP(env)  MYSETJMP(env)
 #define LONGJMP(env,p)  longjmp(env,p)  #define LONGJMP(env,p)  MYLONGJMP(env,p)
 #endif  #endif
   
 /*  /*
Line 28 
Line 28 
 #define  GENERIC      0   /* DEBUG, xml */  #define  GENERIC      0   /* DEBUG, xml */
 #define  V_TEXMACS    1  #define  V_TEXMACS    1
 #define  V_CFEP       2  #define  V_CFEP       2
   #define  V_QFEP       3
   #define  V_SAGE       4
 int View       = V_TEXMACS ;  int View       = V_TEXMACS ;
   
 char *Data_begin_v[] = {  char *Data_begin_v[] = {
   "<S type=verbatim>",    "<S type=verbatim>",
   "\002verbatim:",    "\002verbatim:",
   "\002",    "\002",
     "",
     ""
 };  };
 char *Data_begin_l[] = {  char *Data_begin_l[] = {
   "<S type=latex>",    "<S type=latex>",
   "\002latex:",    "\002latex:",
   "\002latex:"    "\002latex:",
     "",
     ""
 };  };
 char *Data_begin_p[] = {  char *Data_begin_p[] = {
   "<S type=prompt>",    "<S type=prompt>",
   "\002prompt:",    "\002prompt:",
   "\002prompt:"    "\002prompt:",
     "",
     ""
 };  };
 char *Data_begin_ps[] = {  char *Data_begin_ps[] = {
   "<S type=postscript>",    "<S type=postscript>",
   "\002ps:",    "\002ps:",
   "\002ps:"    "\002ps:",
     "",
     ""
 };  };
 char *Data_end[] = {  char *Data_end[] = {
   "</S>",    "</S>",
   "\005",    "\005",
   "\n\005"    /* \n is not a part of the protocol. */    "\n\005",    /* \n is not a part of the protocol. */
     "",
     ""           /* SAGE */
 };  };
   
 /* todo:  start_of_input */  /* todo:  start_of_input */
Line 61  char *Data_end[] = {
Line 73  char *Data_end[] = {
 char End_of_input[] = {  char End_of_input[] = {
   0x5,              /* Use ^E and Return to end the input. */    0x5,              /* Use ^E and Return to end the input. */
   '\n',  /* TEXMACS_END_OF_INPUT. 0xd should be used for multiple lines. */    '\n',  /* TEXMACS_END_OF_INPUT. 0xd should be used for multiple lines. */
   0x5    /* CFEP_END_OF_INPUT    */    0x5,    /* CFEP_END_OF_INPUT    */
     0x5,
     '\n'   /* SAGE cf. __init__ */
 };  };
   
   char *Prompt[]={
     "generic>", /* generic */
     "", /* texmacs */
     "",    /* cfep */
     "",   /* qfep */
     "\nasir>"    /* SAGE */
   };
   
   
 /* Table for the engine type. */  /* Table for the engine type. */
 #define ASIR          1  #define ASIR          1
 #define SM1           2  #define SM1           2
Line 91  int EngineLogToStdout = 0;   /* Do not run the ox engi
Line 114  int EngineLogToStdout = 0;   /* Do not run the ox engi
 char *AsirInitFile = NULL;  char *AsirInitFile = NULL;
   
 char *LanguageResource = NULL;  char *LanguageResource = NULL;
   int TM_quiet = 0;
   
 void ctrlC();  void ctrlC();
 struct object KpoString(char *s);  struct object KpoString(char *s);
Line 106  static int startEngine(int type,char *msg);
Line 130  static int startEngine(int type,char *msg);
 static int isPS(char *s);  static int isPS(char *s);
 static int end_of_input(int c);  static int end_of_input(int c);
 static void setDefaultParameterForCfep();  static void setDefaultParameterForCfep();
   static void setDefaultParameterForSage();
   
 static void myEncoder(int c);  static void myEncoder(int c);
 static void myEncoderS(unsigned char *s);  static void myEncoderS(unsigned char *s);
Line 142  main(int argc,char *argv[]) {
Line 167  main(int argc,char *argv[]) {
 #ifdef DEBUG2  #ifdef DEBUG2
   Dfp = fopen("/tmp/debug-texmacs.txt","w");    Dfp = fopen("/tmp/debug-texmacs.txt","w");
 #endif  #endif
   
     TM_quiet=0;
     for (i=1; i<argc; i++) {
       if (strcmp(argv[i],"--quiet")==0) {
         TM_quiet=1;
       }
     }
     /* Initialize kanlib (gc is also initialized) */
     if (TM_quiet) {
       KSstart_quiet();
     }else{
       KSstart();
     }
   /* Set consts */    /* Set consts */
   Quiet = 1;    Quiet = 1;
   for (i=1; i<argc; i++) {    for (i=1; i<argc; i++) {
Line 152  main(int argc,char *argv[]) {
Line 189  main(int argc,char *argv[]) {
         View = V_TEXMACS;          View = V_TEXMACS;
       }else if (strcmp(argv[i],"cfep")==0) {        }else if (strcmp(argv[i],"cfep")==0) {
         View = V_CFEP; setDefaultParameterForCfep();          View = V_CFEP; setDefaultParameterForCfep();
         }else if (strcmp(argv[i],"qfep")==0) {
           View = V_QFEP; setDefaultParameterForCfep();
         }else if (strcmp(argv[i],"sage")==0) {
           View = V_SAGE; setDefaultParameterForSage();
       }else{        }else{
         View = GENERIC;          View = GENERIC;
         /* printv("Unknown view type.\n"); */          /* printv("Unknown view type.\n"); */
Line 182  main(int argc,char *argv[]) {
Line 223  main(int argc,char *argv[]) {
       i++;        i++;
       AsirInitFile = (char *)sGC_malloc(strlen(argv[i])+80);        AsirInitFile = (char *)sGC_malloc(strlen(argv[i])+80);
       sprintf(AsirInitFile,"%s",argv[i]);        sprintf(AsirInitFile,"%s",argv[i]);
       }else if (strcmp(argv[i],"--quiet") == 0) {
         /* it is already set. Ignore. */
     }else{      }else{
       /* printv("Unknown option\n"); */        /* printv("Unknown option\n"); */
     }      }
Line 194  main(int argc,char *argv[]) {
Line 237  main(int argc,char *argv[]) {
     exit(10);      exit(10);
   }    }
   
   /* Initialize kanlib (gc is also initialized) */  
   KSstart();  
   
   /* Main loop */    /* Main loop */
   printf("%s",Data_begin_v[View]);    printf("%s",Data_begin_v[View]);
Line 215  main(int argc,char *argv[]) {
Line 256  main(int argc,char *argv[]) {
   if (LanguageResource != NULL) KSexecuteString(LanguageResource);    if (LanguageResource != NULL) KSexecuteString(LanguageResource);
   startEngine(TM_Engine," ");    startEngine(TM_Engine," ");
   
   if (signal(SIGINT,SIG_IGN) != SIG_IGN) {    if (mysignal(SIGINT,SIG_IGN) != SIG_IGN) {
     signal(SIGINT,ctrlC);      mysignal(SIGINT,ctrlC);
   }    }
   
   irt = 0;    irt = 0;
Line 229  main(int argc,char *argv[]) {
Line 270  main(int argc,char *argv[]) {
         RestrictedMode = RestrictedMode_saved;          RestrictedMode = RestrictedMode_saved;
       }        }
       Calling_ctrlC_hook = 0;        Calling_ctrlC_hook = 0;
       if (signal(SIGINT,SIG_IGN) != SIG_IGN) {        if (mysignal(SIGINT,SIG_IGN) != SIG_IGN) {
         signal(SIGINT,ctrlC);          mysignal(SIGINT,ctrlC);
       }        }
       irt = 1;        irt = 1;
       continue;        continue;
     } else {  }      } else {  }
     if (!irt) {      if (!irt) {
       printf("%s",Data_end[View]); fflush(stdout);        if (View != V_SAGE) printf("%s",Data_end[View]); fflush(stdout);
     }      }
     irt = 0;      irt = 0;
   
     /* Reading the input. */      /* Reading the input. */
       printf("%s",Prompt[View]); fflush(stdout);
     if (TM_Engine == K0) {      if (TM_Engine == K0) {
       s=readString(stdin, " ", " "); /* see test data */        s=readString(stdin, " ", " "); /* see test data */
     }else if (TM_Engine == SM1) {      }else if (TM_Engine == SM1) {
Line 513  static int end_of_input(int c) {
Line 555  static int end_of_input(int c) {
 static void setDefaultParameterForCfep() {  static void setDefaultParameterForCfep() {
   Format = 0;    Format = 0;
 }  }
   static void setDefaultParameterForSage() {
     Format = 0;
   }
   
 static void printv(char *s) {  static void printv(char *s) {
   int i;    int i;
Line 551  static void printp(char *s) {
Line 596  static void printp(char *s) {
   fflush(NULL);    fflush(NULL);
 }  }
 static void printCopyright(char *s) {  static void printCopyright(char *s) {
   printf("%s",Data_begin_v[View]);  
   if (! NoCopyright) {    if (! NoCopyright) {
       printf("%s",Data_begin_v[View]);
     printf("OpenXM engine (ox engine) interface with TeXmacs protocol.\n2004 (C) openxm.org");      printf("OpenXM engine (ox engine) interface with TeXmacs protocol.\n2004 (C) openxm.org");
     printf(" under the BSD license.  !asir; !sm1; !k0; !verbatim; !quit;\n");      printf(" under the BSD license.  !asir; !sm1; !k0; !verbatim; !quit;\n");
     printf("Type in      !reset;     when the engine gets confused. ");      printf("Type in      !reset;     when the engine gets confused. ");
     printf("%s",s);      printf("%s",s);
       printf("%s",Data_end[View]);
   }    }
   printf("%s",Data_end[View]);  
   fflush(NULL);    fflush(NULL);
 }  }
   
Line 567  static void flushSm1() {
Line 612  static void flushSm1() {
 }  }
 static int startEngine(int type,char *msg) {  static int startEngine(int type,char *msg) {
   struct object ob = OINIT;    struct object ob = OINIT;
   printf("%s",Data_begin_v[View]);    if (!TM_quiet) printf("%s",Data_begin_v[View]);
   if (type == SM1) {    if (type == SM1) {
     if (!TM_sm1Started) KSexecuteString(" sm1connectr ");      if (!TM_sm1Started) KSexecuteString(" sm1connectr ");
     KSexecuteString(" /ox.engine oxsm1.ccc def ");      KSexecuteString(" /ox.engine oxsm1.ccc def ");
Line 612  static int startEngine(int type,char *msg) {
Line 657  static int startEngine(int type,char *msg) {
     /* Initialize the setting of asir. */      /* Initialize the setting of asir. */
     if (AsirInitFile) {  /* cf. asir-contrib/packages/src/cfep-init.rr */      if (AsirInitFile) {  /* cf. asir-contrib/packages/src/cfep-init.rr */
           unsigned char *ss;            unsigned char *ss;
           ss = (unsigned char *)GC_malloc(strlen(AsirInitFile)+256);            ss = (unsigned char *)sGC_malloc(strlen(AsirInitFile)+256);
           sprintf((char *)ss," oxasir.ccc (load(\"%s\");) oxsubmit oxasir.ccc oxgeterrors length 0 gt { (Error in loading asirInitFile) message} { } ifelse ",AsirInitFile);            sprintf((char *)ss," oxasir.ccc (load(\"%s\");) oxsubmit oxasir.ccc oxgeterrors length 0 gt { (Error in loading asirInitFile) message} { } ifelse ",AsirInitFile);
           /* printf("Loading --asirInitFile %s\n",AsirInitFile); */            /* printf("Loading --asirInitFile %s\n",AsirInitFile); */
           KSexecuteString(ss);            KSexecuteString(ss);
     }      }
     KSexecuteString(" oxasir.ccc (if(1) {  Xm_server_mode = 1; Xm_helpdir = \"help-eg\";  } else { ; } ;) oxsubmit oxasir.ccc oxpopcmo ");      KSexecuteString(" oxasir.ccc (if(1) {  Xm_server_mode = 1; Xm_helpdir = \"help-en\";  } else { ; } ;) oxsubmit oxasir.ccc oxpopcmo ");
     KSexecuteString(" oxasir.ccc (if(1) {  ctrl(\"message\",0);  } else { ; } ;) oxsubmit oxasir.ccc oxpopcmo ");      KSexecuteString(" oxasir.ccc (if(1) {  ctrl(\"message\",0);  } else { ; } ;) oxsubmit oxasir.ccc oxpopcmo ");
     /* bug; if ctrl is written with Xm_helpdir = ... without oxpopcmo, then it does      /* bug; if ctrl is written with Xm_helpdir = ... without oxpopcmo, then it does
        not work. */         not work. */
     KSexecuteString(" oxasir.ccc (print(\"----------- Messages from asir ------------------------------\")$ ) oxsubmit oxasir.ccc oxpopcmo ");      KSexecuteString(" oxasir.ccc (print(\"----------- Messages from asir ------------------------------\")$ ) oxsubmit oxasir.ccc oxpopcmo ");
   }    }
   printf("%s",Data_end[View]);    if (!TM_quiet) printf("%s",Data_end[View]);
   fflush(NULL);    fflush(NULL);
 }  }
   

Legend:
Removed from v.1.34  
changed lines
  Added in v.1.42

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>