| version 1.5, 2003/12/05 14:02:23 |
version 1.11, 2016/03/31 05:27:34 |
|
|
| /* $OpenXM: OpenXM/src/k097/ox_k0.c,v 1.4 2003/11/19 00:11:02 takayama Exp $ */ |
/* $OpenXM: OpenXM/src/k097/ox_k0.c,v 1.10 2015/10/10 11:29:46 takayama Exp $ */ |
| #include <stdio.h> |
#include <stdio.h> |
| #include <sys/types.h> |
#include <sys/types.h> |
| #include <sys/socket.h> |
#include <sys/socket.h> |
|
|
| #include <netdb.h> |
#include <netdb.h> |
| #include <signal.h> |
#include <signal.h> |
| #include <setjmp.h> |
#include <setjmp.h> |
| |
#include <string.h> |
| |
#include <stdlib.h> |
| /* -lnsl -lsocket /usr/ucblib/libucb.a */ |
/* -lnsl -lsocket /usr/ucblib/libucb.a */ |
| #include "../kxx/ox_kan.h" |
#include "../kxx/ox_kan.h" |
| #include "../kxx/serversm.h" |
#include "../kxx/serversm.h" |
| Line 18 int PacketMonitor = 0; |
|
| Line 20 int PacketMonitor = 0; |
|
| extern int SerialOX; /* Serial number of the packets sent. */ |
extern int SerialOX; /* Serial number of the packets sent. */ |
| extern int SerialCurrent; /* Current Serial number of the recieved packet. */ |
extern int SerialCurrent; /* Current Serial number of the recieved packet. */ |
| extern int OXprintMessage; /* print oxmessages? */ |
extern int OXprintMessage; /* print oxmessages? */ |
| |
extern int Calling_ctrlC_hook; |
| |
|
| #if defined(__CYGWIN__) |
#if defined(__CYGWIN__) |
| sigjmp_buf EnvOfChildServer; |
sigjmp_buf EnvOfChildServer; |
| Line 68 nullserver(int fdStreamIn,int fdStreamOut) { |
|
| Line 71 nullserver(int fdStreamIn,int fdStreamOut) { |
|
| ox_stream ostreamIn; |
ox_stream ostreamIn; |
| ox_stream ostreamOut; |
ox_stream ostreamOut; |
| char sreason[1024]; |
char sreason[1024]; |
| |
extern int RestrictedMode, RestrictedMode_saved; |
| extern void controlResetHandler(); |
extern void controlResetHandler(); |
| #if defined(__CYGWIN__) |
#if defined(__CYGWIN__) |
| extern sigjmp_buf EnvOfStackMachine; |
extern sigjmp_buf EnvOfStackMachine; |
| Line 118 nullserver(int fdStreamIn,int fdStreamOut) { |
|
| Line 122 nullserver(int fdStreamIn,int fdStreamOut) { |
|
| if (OxInterruptFlag == 0) { |
if (OxInterruptFlag == 0) { |
| fprintf(stderr," ?! \n"); fflush(NULL); |
fprintf(stderr," ?! \n"); fflush(NULL); |
| } |
} |
| KSexecuteString(" ctrlC-hook "); /* Execute User Defined functions. */ |
if (!Calling_ctrlC_hook) { |
| |
Calling_ctrlC_hook = 1; RestrictedMode = 0; |
| |
KSexecuteString(" ctrlC-hook "); /* Execute User Defined functions. */ |
| |
RestrictedMode = RestrictedMode_saved; |
| |
} |
| |
Calling_ctrlC_hook = 0; |
| KSexecuteString(" (Computation is interrupted.) "); |
KSexecuteString(" (Computation is interrupted.) "); |
| InSendmsg2 = 0; |
InSendmsg2 = 0; |
| signal(SIGUSR1,controlResetHandler); goto aaa; |
mysignal(SIGUSR1,controlResetHandler); goto aaa; |
| } else { |
} else { |
| if (JmpMessage) fprintf(stderr,"Set EnvOfChildServer.\n"); |
if (JmpMessage) fprintf(stderr,"Set EnvOfChildServer.\n"); |
| signal(SIGUSR1,controlResetHandler); |
mysignal(SIGUSR1,controlResetHandler); |
| } |
} |
| #if defined(__CYGWIN__) |
#if defined(__CYGWIN__) |
| if (sigsetjmp(EnvOfStackMachine,1)) { |
if (sigsetjmp(EnvOfStackMachine,1)) { |
| Line 152 nullserver(int fdStreamIn,int fdStreamOut) { |
|
| Line 161 nullserver(int fdStreamIn,int fdStreamOut) { |
|
| */ |
*/ |
| Sm1_pushError2(SerialCurrent,-1,"Global jump by sm1 error"); |
Sm1_pushError2(SerialCurrent,-1,"Global jump by sm1 error"); |
| |
|
| KSexecuteString(" ctrlC-hook "); /* Execute User Defined functions. */ |
if (!Calling_ctrlC_hook) { |
| |
Calling_ctrlC_hook = 1; RestrictedMode = 0; |
| |
KSexecuteString(" ctrlC-hook "); /* Execute User Defined functions. */ |
| |
RestrictedMode = RestrictedMode_saved; |
| |
} |
| |
Calling_ctrlC_hook = 0; |
| InSendmsg2=0; |
InSendmsg2=0; |
| signal(SIGUSR1,controlResetHandler); goto aaa ; |
mysignal(SIGUSR1,controlResetHandler); goto aaa ; |
| } else { |
} else { |
| if (JmpMessage) fprintf(stderr,"Set EnvOfStackMachine.\n"); |
if (JmpMessage) fprintf(stderr,"Set EnvOfStackMachine.\n"); |
| if (signal(SIGUSR1,SIG_IGN) != SIG_IGN) { |
if (mysignal(SIGUSR1,SIG_IGN) != SIG_IGN) { |
| signal(SIGUSR1,controlResetHandler); |
mysignal(SIGUSR1,controlResetHandler); |
| } |
} |
| } |
} |
| |
|
| Line 278 nullserverCommand(ox_stream ostreamIn,ox_stream ostrea |
|
| Line 292 nullserverCommand(ox_stream ostreamIn,ox_stream ostrea |
|
| if (message) fprintf(stderr," executeStringByLocalParser\n"); |
if (message) fprintf(stderr," executeStringByLocalParser\n"); |
| OxCritical = 0; |
OxCritical = 0; |
| iresult = K0_executeStringByLocalParser(); |
iresult = K0_executeStringByLocalParser(); |
| OxCritical = 1; signal(SIGUSR1,controlResetHandler); |
OxCritical = 1; mysignal(SIGUSR1,controlResetHandler); |
| if (iresult < 0) { |
if (iresult < 0) { |
| emsg = Sm1_popErrorMessage("executeString: "); |
emsg = Sm1_popErrorMessage("executeString: "); |
| Sm1_pushError2(SerialCurrent,-1,emsg); |
Sm1_pushError2(SerialCurrent,-1,emsg); |
| Line 289 nullserverCommand(ox_stream ostreamIn,ox_stream ostrea |
|
| Line 303 nullserverCommand(ox_stream ostreamIn,ox_stream ostrea |
|
| if (message) fprintf(stderr," executeFunction\n"); |
if (message) fprintf(stderr," executeFunction\n"); |
| OxCritical = 0; |
OxCritical = 0; |
| iresult = K0_executeStringByLocalParser(); |
iresult = K0_executeStringByLocalParser(); |
| OxCritical = 1; signal(SIGUSR1,controlResetHandler); |
OxCritical = 1; mysignal(SIGUSR1,controlResetHandler); |
| if (iresult < 0) { |
if (iresult < 0) { |
| emsg = Sm1_popErrorMessage("executeFunction: "); |
emsg = Sm1_popErrorMessage("executeFunction: "); |
| Sm1_pushError2(SerialCurrent,-1,emsg); |
Sm1_pushError2(SerialCurrent,-1,emsg); |
| Line 330 nullserver_simplest(int fd) { |
|
| Line 344 nullserver_simplest(int fd) { |
|
| int c; |
int c; |
| while(1) { |
while(1) { |
| c = readOneByte(fd); |
c = readOneByte(fd); |
| if (c == '@') { return; } |
if (c == '@') { return 0; } |
| } |
} |
| } |
} |
| |
|
| Line 338 nullserver_simplest(int fd) { |
|
| Line 352 nullserver_simplest(int fd) { |
|
| void controlResetHandler(sig) |
void controlResetHandler(sig) |
| int sig; |
int sig; |
| { |
{ |
| signal(sig,SIG_IGN); |
mysignal(sig,SIG_IGN); |
| cancelAlarm(); |
cancelAlarm(); |
| fprintf(stderr,"From controlResetHandler. OxCritical = %d\n",OxCritical); |
fprintf(stderr,"From controlResetHandler. OxCritical = %d\n",OxCritical); |
| OxInterruptFlag = 1; |
OxInterruptFlag = 1; |
| if (OxCritical) { |
if (OxCritical) { |
| return; |
return; |
| }else{ |
}else{ |
| |
(void) traceShowStack(); traceClearStack(); |
| #if defined(__CYGWIN__) |
#if defined(__CYGWIN__) |
| siglongjmp(EnvOfChildServer,2); /* returns 2 for ctrl-C */ |
siglongjmp(EnvOfChildServer,2); /* returns 2 for ctrl-C */ |
| #else |
#else |