version 1.40, 2016/08/24 22:38:12 |
version 1.42, 2018/09/07 01:21:31 |
|
|
/* $OpenXM: OpenXM/src/kxx/ox_texmacs.c,v 1.39 2016/03/31 05:27:34 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> |
|
|
#define V_TEXMACS 1 |
#define V_TEXMACS 1 |
#define V_CFEP 2 |
#define V_CFEP 2 |
#define V_QFEP 3 |
#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 68 char End_of_input[] = { |
|
Line 74 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 |
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 98 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 113 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 149 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 |
|
|
/* Initialize kanlib (gc is also initialized) */ |
|
KSstart(); |
|
|
|
|
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 164 main(int argc,char *argv[]) { |
|
Line 191 main(int argc,char *argv[]) { |
|
View = V_CFEP; setDefaultParameterForCfep(); |
View = V_CFEP; setDefaultParameterForCfep(); |
}else if (strcmp(argv[i],"qfep")==0) { |
}else if (strcmp(argv[i],"qfep")==0) { |
View = V_QFEP; setDefaultParameterForCfep(); |
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 194 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 246 main(int argc,char *argv[]) { |
|
Line 277 main(int argc,char *argv[]) { |
|
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 523 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 561 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 577 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 633 static int startEngine(int type,char *msg) { |
|
Line 668 static int startEngine(int type,char *msg) { |
|
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); |
} |
} |
|
|