[BACK]Return to stackmachine.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / kan96xx / Kan

Diff for /OpenXM/src/kan96xx/Kan/stackmachine.c between version 1.43 and 1.44

version 1.43, 2018/09/07 00:15:44 version 1.44, 2020/10/06 11:33:47
Line 1 
Line 1 
 /* $OpenXM: OpenXM/src/kan96xx/Kan/stackmachine.c,v 1.42 2016/03/31 06:34:29 takayama Exp $ */  /* $OpenXM: OpenXM/src/kan96xx/Kan/stackmachine.c,v 1.43 2018/09/07 00:15:44 takayama Exp $ */
 /*   stackmachin.c */  /*   stackmachin.c */
   
 #include <stdio.h>  #include <stdio.h>
Line 11 
Line 11 
 #include "kclass.h"  #include "kclass.h"
 #include <signal.h>  #include <signal.h>
 #include <sys/types.h>  #include <sys/types.h>
   #include <unistd.h>
 #include "mysig.h"  #include "mysig.h"
   
 /* The msys2 seems to make a buffer overflow of  EnvOfStackmachine[].  /* The msys2 seems to make a buffer overflow of  EnvOfStackmachine[].
Line 81  int GotoP = 0;
Line 82  int GotoP = 0;
 static char *SMacros =  static char *SMacros =
 #include "smacro.h"  #include "smacro.h"
   
 static isInteger(char *);  static int isInteger(char *);
 static strToInteger(char *);  static int strToInteger(char *);
 static power(int s,int i);  static int power(int s,int i);
 static void pstack(void);  static void pstack(void);
 static struct object executableStringToExecutableArray(char *str);  static struct object executableStringToExecutableArray(char *str);
 static int isThereExecutableArrayOnStack(int n);  static int isThereExecutableArrayOnStack(int n);
   
   
 extern int SerialCurrent;  extern int SerialCurrent;
 extern int QuoteMode;  extern int QuoteMode;
   
Line 133  struct object newObjectArray(size) 
Line 135  struct object newObjectArray(size) 
   return(rob);    return(rob);
 }  }
   
 isNullObject(obj)  int isNullObject(obj)
      struct object obj;       struct object obj;
 {  {
   if (obj.tag == 0) return(1);    if (obj.tag == 0) return(1);
Line 401  void hashInitialize(struct dictionary *dic)
Line 403  void hashInitialize(struct dictionary *dic)
   }    }
 }  }
   
 static isInteger(str)  static int isInteger(str)
      char *str;       char *str;
 {  {
   int i;    int i;
Line 422  static isInteger(str)
Line 424  static isInteger(str)
   return(1);    return(1);
 }  }
   
 static strToInteger(str)  static int strToInteger(str)
      char *str;       char *str;
 {  {
   int i;    int i;
Line 443  static strToInteger(str)
Line 445  static strToInteger(str)
   return(r);    return(r);
 }  }
   
 static power(s,i)  static int power(s,i)
      int s;       int s;
      int i;       int i;
 {  {
Line 672  void printOperandStack() {
Line 674  void printOperandStack() {
   
   
   
 static initSystemDictionary()  static int initSystemDictionary()
 {  {
   StandardStack.ostack = StandardStackA;    StandardStack.ostack = StandardStackA;
   StandardStack.sp = StandardStackP;    StandardStack.sp = StandardStackP;
Line 1117  int executeToken(token)
Line 1119  int executeToken(token)
   
   
   
 errorStackmachine(str)  void errorStackmachine(char *str)
      char *str;  
 {  {
   int i,j,k;    int i,j,k;
   static char *u="Usage:";    static char *u="Usage:";
Line 1160  errorStackmachine(str)
Line 1161  errorStackmachine(str)
       }        }
     }else {      }else {
       fprintf(stderr,"ERROR(sm): ");        fprintf(stderr,"ERROR(sm): ");
       fprintf(stderr,str);        fprintf(stderr,"%s",str);
     }      }
     fprintf(stderr,"\n");      fprintf(stderr,"\n");
         MsgStackTraceInArrayp = traceNameStackToArrayp();          MsgStackTraceInArrayp = traceNameStackToArrayp();
Line 1178  errorStackmachine(str)
Line 1179  errorStackmachine(str)
   MYLONGJMP(EnvOfStackMachine,1);    MYLONGJMP(EnvOfStackMachine,1);
 }  }
   
 warningStackmachine(str)  int warningStackmachine(char *str)
      char *str;  
 {  {
   extern int WarningMessageMode;    extern int WarningMessageMode;
   extern int Strict;    extern int Strict;
Line 1187  warningStackmachine(str)
Line 1187  warningStackmachine(str)
     pushErrorStack(KnewErrorPacket(SerialCurrent,-1,str));      pushErrorStack(KnewErrorPacket(SerialCurrent,-1,str));
   }    }
   if (WarningMessageMode != 1) {    if (WarningMessageMode != 1) {
     fprintf(stderr,"WARNING(sm): ");      fprintf(stderr,"%s","WARNING(sm): ");
     fprintf(stderr,str);      fprintf(stderr,"%s",str);
   }    }
   if (Strict) errorStackmachine(" ");    if (Strict) errorStackmachine(" ");
   return(0);    return(0);
Line 1199  warningStackmachine(str)
Line 1199  warningStackmachine(str)
 /* NOTE:  If you call this function and an error occured,  /* NOTE:  If you call this function and an error occured,
    you have to reset the jump buffer by setjmp(EnvOfStackMachine).     you have to reset the jump buffer by setjmp(EnvOfStackMachine).
    cf. kxx/memo1.txt, kxx/stdserver00.c 1998, 2/6 */     cf. kxx/memo1.txt, kxx/stdserver00.c 1998, 2/6 */
 KSexecuteString(s)  int KSexecuteString(s)
      char *s;       char *s;
 {  {
   struct tokens token;    struct tokens token;
Line 1294  KSexecuteString(s)
Line 1294  KSexecuteString(s)
   return(0);    return(0);
 }  }
   
 KSdefineMacros() {  int KSdefineMacros() {
   struct tokens token;    struct tokens token;
   int tmp;    int tmp;
   struct object ob = OINIT;    struct object ob = OINIT;
Line 1371  void KSpush(ob)
Line 1371  void KSpush(ob)
   Kpush(ob);    Kpush(ob);
 }  }
   
 struct object KSpeek(k) {  struct object KSpeek(int k) {
   return(peek(k));    return(peek(k));
 }  }
   

Legend:
Removed from v.1.43  
changed lines
  Added in v.1.44

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