=================================================================== RCS file: /home/cvs/OpenXM/src/kxx/sm1stackmachine.c,v retrieving revision 1.1.1.1 retrieving revision 1.4 diff -u -p -r1.1.1.1 -r1.4 --- OpenXM/src/kxx/sm1stackmachine.c 1999/10/08 02:12:13 1.1.1.1 +++ OpenXM/src/kxx/sm1stackmachine.c 2005/06/16 05:07:24 1.4 @@ -31,8 +31,8 @@ int Sm1_start(int argc, char *fnames[],char *myname) { for (i=0; i 1024) { - fprintf(stderr,"Too long name for sm1 library file to load.\n"); - exit(10); + fprintf(stderr,"Too long name for sm1 library file to load.\n"); + exit(10); } sprintf(cmd," [(parse) (%s) pushfile ] extension pop ",fnames[i]); KSexecuteString(cmd); @@ -57,8 +57,8 @@ int Sm1_setMathCap(ox_stream os) { /* Set the mathcap data of the client in the server. */ /* sm1 <====== ox_sm1 mathcap is set in ox_stream = FILE2 * */ /* The mathcap data is on the stack. */ - struct object ob; - struct object ob2; + struct object ob = OINIT; + struct object ob2 = OINIT; int n,i; ob = KSpop(); KSpush(ob); KSexecuteString(" (mathcap data is ) message message "); @@ -93,7 +93,7 @@ char *Sm1_popString(void) { int Sm1_setName(void) { char *s; - struct object ob; + struct object ob = OINIT; s = Sm1_popString(); if (s == NULL) { printf("NULL argument for setName.\n"); @@ -109,7 +109,7 @@ int Sm1_setName(void) int Sm1_evalName(void) { char *s; - struct object ob; + struct object ob = OINIT; s = Sm1_popString(); if (s == NULL) { printf("NULL argument for evalName.\n"); @@ -137,7 +137,7 @@ int Sm1_popCMO(ox_stream fp,int serial) int Sm1_pushError2(int serial, int no, char *s) { - struct object ob; + struct object ob = OINIT; ob = KnewErrorPacket(serial,no,s); KSpush(ob); } @@ -176,5 +176,16 @@ void Sm1_dupErrors(void) { KSpush(KSdupErrors()); } +void Sm1_pushCMOtag(int serial) { + struct object obj = OINIT; + int t; + obj = KSpeek(0); + t = KgetCmoTagOfObject(obj); + if (t != -1) { + KSpush(KpoInteger(t)); + }else{ + Sm1_pushError2(serial,-1,"The top object on the server stack cannot be translated to cmo."); + } +}