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

Diff for /OpenXM/src/kxx/oxserver00.c between version 1.17 and 1.25

version 1.17, 2013/11/06 06:23:24 version 1.25, 2020/10/07 07:47:23
Line 1 
Line 1 
 /* $OpenXM: OpenXM/src/kxx/oxserver00.c,v 1.16 2004/09/17 02:42:58 takayama Exp $ */  /* $OpenXM: OpenXM/src/kxx/oxserver00.c,v 1.24 2016/08/28 02:43:15 takayama Exp $ */
 /* nullserver01 */  /* nullserver01 */
 #include <stdio.h>  #include <stdio.h>
 #include <sys/types.h>  #include <sys/types.h>
Line 8 
Line 8 
 #include <netdb.h>  #include <netdb.h>
 #include <signal.h>  #include <signal.h>
 #include <setjmp.h>  #include <setjmp.h>
   #include <stdlib.h>
 /* -lnsl -lsocket /usr/ucblib/libucb.a */  /* -lnsl -lsocket /usr/ucblib/libucb.a */
 #include "ox_kan.h"  #include "ox_kan.h"
 #include "serversm.h"  #include "serversm.h"
Line 23  extern int OXprintMessage; /* print oxmessages? */
Line 24  extern int OXprintMessage; /* print oxmessages? */
 extern int Calling_ctrlC_hook;  extern int Calling_ctrlC_hook;
 extern int RestrictedMode, RestrictedMode_saved;  extern int RestrictedMode, RestrictedMode_saved;
   
 #if defined(__CYGWIN__)  #if defined(__CYGWIN__) || defined(__MSYS__)
 sigjmp_buf EnvOfChildServer;  sigjmp_buf EnvOfChildServer;
 #else  #else
 jmp_buf EnvOfChildServer;  jmp_buf EnvOfChildServer;
 #endif  #endif
   
   void nullserver(int fdStreamIn,int fdStreamOut);
   int nullserverCommand(ox_stream ostreamIn,ox_stream ostreamOut);
   int nullserver_simplest(int fd);
   int KSexecuteString(char *s); // kan96xx/Kan/datatype.h
   void cancelAlarm(); // nullstackmachine.c
   char *traceShowStack(); // kan96xx/Kan/extern.h
   void traceClearStack(); // kan96xx/Kan/extern.h
   
 int JmpMessage = 0;  int JmpMessage = 0;
 extern int Lisplike;  extern int Lisplike;
   
 static char *getSuffix(char *s);  static char *getSuffix(char *s);
 main(int argc, char *argv[]) {  void main(int argc, char *argv[]) {
   char *s;    char *s;
   char *forAsir[] = {"callsm1.sm1","callsm1b.sm1"};    char *forAsir[] = {"callsm1.sm1","callsm1b.sm1"};
   char *gnuplot[] = {"callsm1.sm1","gnuplot.sm1"};    char *gnuplot[] = {"callsm1.sm1","gnuplot.sm1"};
Line 92  static char *getSuffix(char *s) {
Line 101  static char *getSuffix(char *s) {
   }    }
   return(s);    return(s);
 }  }
 nullserver(int fdStreamIn,int fdStreamOut) {  void nullserver(int fdStreamIn,int fdStreamOut) {
   int mtag;    int mtag;
   int message = 1;    int message = 1;
   ox_stream ostreamIn;    ox_stream ostreamIn;
   ox_stream ostreamOut;    ox_stream ostreamOut;
   char sreason[1024];    char sreason[1024];
   extern void controlResetHandler();    extern void controlResetHandler();
 #if defined(__CYGWIN__)  #if defined(__CYGWIN__) || defined(__MSYS__)
   extern sigjmp_buf EnvOfStackMachine;    extern sigjmp_buf EnvOfStackMachine;
 #else  #else
   extern jmp_buf EnvOfStackMachine;    extern jmp_buf EnvOfStackMachine;
Line 131  nullserver(int fdStreamIn,int fdStreamOut) {
Line 140  nullserver(int fdStreamIn,int fdStreamOut) {
     if (PacketMonitor) fp2watch(ostreamOut,stdout);      if (PacketMonitor) fp2watch(ostreamOut,stdout);
   }    }
   
     /* fprintf(stderr,"Hello world.\n"); OXprintMessage = 1;
        JmpMessage = 1; */
   
   aaa : ;    aaa : ;
 #if defined(__CYGWIN__)  #if defined(__CYGWIN__)
   if (sigsetjmp(EnvOfChildServer,1)) {    if (MYSIGSETJMP(EnvOfChildServer,1)) {
 #else  #else
   if (setjmp(EnvOfChildServer)) {    if (MYSETJMP(EnvOfChildServer)) {
 #endif  #endif
     fprintf(stderr,"childServerMain: jump here.\n");      fprintf(stderr,"childServerMain: jump here.\n");
     if (OxInterruptFlag == 0) {      if (OxInterruptFlag == 0) {
Line 148  nullserver(int fdStreamIn,int fdStreamOut) {
Line 160  nullserver(int fdStreamIn,int fdStreamOut) {
     }      }
     Calling_ctrlC_hook = 0;      Calling_ctrlC_hook = 0;
         KSexecuteString(" (Computation is interrupted.) ");          KSexecuteString(" (Computation is interrupted.) ");
     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 (MYSIGSETJMP(EnvOfStackMachine,1)) {
 #else  #else
   if (setjmp(EnvOfStackMachine)) {    if (MYSETJMP(EnvOfStackMachine)) {
 #endif  #endif
     fprintf(stderr,"childServerMain: jump here by EnvOfStackMachine or timeout.\n");      fprintf(stderr,"childServerMain: jump here by EnvOfStackMachine or timeout.\n");
     if (OxInterruptFlag == 0) {      if (OxInterruptFlag == 0) {
Line 178  nullserver(int fdStreamIn,int fdStreamOut) {
Line 190  nullserver(int fdStreamIn,int fdStreamOut) {
       RestrictedMode = RestrictedMode_saved;        RestrictedMode = RestrictedMode_saved;
     }      }
     Calling_ctrlC_hook = 0;      Calling_ctrlC_hook = 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 242  nullserver(int fdStreamIn,int fdStreamOut) {
Line 254  nullserver(int fdStreamIn,int fdStreamOut) {
   }    }
 }  }
   
 nullserverCommand(ox_stream ostreamIn,ox_stream ostreamOut) {  int nullserverCommand(ox_stream ostreamIn,ox_stream ostreamOut) {
   int id;    int id;
   int mtag;    int mtag;
   int n;    int n;
Line 297  nullserverCommand(ox_stream ostreamIn,ox_stream ostrea
Line 309  nullserverCommand(ox_stream ostreamIn,ox_stream ostrea
         }else{          }else{
           iresult = Sm1_executeStringByLocalParser();            iresult = Sm1_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 311  nullserverCommand(ox_stream ostreamIn,ox_stream ostrea
Line 323  nullserverCommand(ox_stream ostreamIn,ox_stream ostrea
         }else{          }else{
           iresult = Sm1_executeStringByLocalParser();            iresult = Sm1_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 325  nullserverCommand(ox_stream ostreamIn,ox_stream ostrea
Line 337  nullserverCommand(ox_stream ostreamIn,ox_stream ostrea
         }else{          }else{
           iresult = Sm1_executeStringByLocalParser();            iresult = Sm1_executeStringByLocalParser();
         }          }
     OxCritical = 1; signal(SIGUSR1,controlResetHandler);      OxCritical = 1; mysignal(SIGUSR1,controlResetHandler);
     if (iresult < 0) {      if (iresult < 0) {
       emsg = Sm1_popErrorMessage("executeFunctionWithOptionalArgument: ");        emsg = Sm1_popErrorMessage("executeFunctionWithOptionalArgument: ");
       Sm1_pushError2(SerialCurrent,-1,emsg);        Sm1_pushError2(SerialCurrent,-1,emsg);
Line 351  nullserverCommand(ox_stream ostreamIn,ox_stream ostrea
Line 363  nullserverCommand(ox_stream ostreamIn,ox_stream ostrea
     fprintf(stderr,"This command has not yet been implemented.\n");      fprintf(stderr,"This command has not yet been implemented.\n");
     return(-1);      return(-1);
     break;      break;
     case SM_nop:
       break;
   default:    default:
     fprintf(stderr,"Fatal error. Unknown function_id %d\n",id);      fprintf(stderr,"Fatal error. Unknown function_id %d\n",id);
     return(-1);      return(-1);
Line 360  nullserverCommand(ox_stream ostreamIn,ox_stream ostrea
Line 374  nullserverCommand(ox_stream ostreamIn,ox_stream ostrea
 }  }
   
   
 nullserver_simplest(int fd) {  int nullserver_simplest(int fd) {
   int c;    int c;
   while(1) {    while(1) {
     c = readOneByte(fd);      c = readOneByte(fd);
Line 372  nullserver_simplest(int fd) {
Line 386  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;
Line 380  void controlResetHandler(sig)
Line 394  void controlResetHandler(sig)
     return;      return;
   }else{    }else{
     (void) traceShowStack(); traceClearStack();      (void) traceShowStack(); traceClearStack();
 #if defined(__CYGWIN__)  #if defined(__CYGWIN__) || defined(__MSYS__)
     siglongjmp(EnvOfChildServer,2); /* returns 2 for ctrl-C */      MYSIGLONGJMP(EnvOfChildServer,2); /* returns 2 for ctrl-C */
 #else  #else
     longjmp(EnvOfChildServer,2); /* returns 2 for ctrl-C */      MYLONGJMP(EnvOfChildServer,2); /* returns 2 for ctrl-C */
 #endif  #endif
   }    }
 }  }

Legend:
Removed from v.1.17  
changed lines
  Added in v.1.25

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