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

Diff for /OpenXM/src/k097/d.c between version 1.7 and 1.19

version 1.7, 2001/01/08 05:26:48 version 1.19, 2016/04/02 08:20:09
Line 1 
Line 1 
 /* $OpenXM: OpenXM/src/k097/d.c,v 1.6 2000/12/10 02:21:45 takayama Exp $ */  /* $OpenXM: OpenXM/src/k097/d.c,v 1.18 2013/11/06 06:23:23 takayama Exp $ */
 /* simple.c,  1996, 1/1 --- 1/5 */  /* simple.c,  1996, 1/1 --- 1/5 */
 #include <stdio.h>  #include <stdio.h>
 #include <ctype.h>  #include <ctype.h>
 #include <setjmp.h>  #include <setjmp.h>
 #include <stdlib.h>  #include <stdlib.h>
   #include <sys/types.h>
   #include <sys/stat.h>
 #include "d.h"  #include "d.h"
 #include "simple.tab.h"  #include "simple.tab.h"
   #include "ox_pathfinder.h"
   
   #if defined(__CYGWIN__)
   #define JMP_BUF sigjmp_buf
   #define SETJMP(env)  sigsetjmp(env,1)
   #define LONGJMP(env,p)  siglongjmp(env,p)
   #else
   #define JMP_BUF jmp_buf
   #define SETJMP(env)  setjmp(env)
   #define LONGJMP(env,p)  longjmp(env,p)
   #endif
   
 jmp_buf KCenvOfParser;  JMP_BUF KCenvOfParser;
   
 int DebugMode = 1;  int DebugMode = 1;
 extern int K00_verbose;  extern int K00_verbose;
Line 169  objectp newObject_d() {
Line 181  objectp newObject_d() {
     fprintf(stderr,"Error: No more memory in newObject_d().\n");      fprintf(stderr,"Error: No more memory in newObject_d().\n");
     exit(10);      exit(10);
   }    }
   obj->tag = Snull;    obj->tag = Snull;  obj->attr = NULL;
   return(obj);    return(obj);
 }  }
   
Line 593  KCerror(char *s)   /* You need this function. Otherwis
Line 605  KCerror(char *s)   /* You need this function. Otherwis
         ungetc(MARK_CHAR,stdin);          ungetc(MARK_CHAR,stdin);
         while (fsgetc(Inop) > MARK_CHAR) ;          while (fsgetc(Inop) > MARK_CHAR) ;
   }    }
   return ;    return 0;
   longjmp(KCenvOfParser,2);    LONGJMP(KCenvOfParser,2);
   exit(1);    exit(1);
 }  }
   
Line 605  readcomment() {
Line 617  readcomment() {
     if (c == EOF) {      if (c == EOF) {
       fprintf(stderr,"%d: Unexpected end of file in a comment.\n",Linenumber);        fprintf(stderr,"%d: Unexpected end of file in a comment.\n",Linenumber);
       fsungetc(c,Inop); /* should change */        fsungetc(c,Inop); /* should change */
       return;        return 0;
     }      }
     if (c == '*') {      if (c == '*') {
       c = fsgetc(Inop);        c = fsgetc(Inop);
       if (c == '/') return;        if (c == '/') return 0;
     }      }
   }    }
 }  }
Line 1046  void loadFileWithCpp(objectp op)
Line 1058  void loadFileWithCpp(objectp op)
   char tmpName[1024];    char tmpName[1024];
   int pid;    int pid;
   objectp ob;    objectp ob;
     char *outfile;
     char *cpp;
     char *argv[10];
     int n;
     char *sfile = NULL;
   if (op->tag != Sstring) {    if (op->tag != Sstring) {
     fprintf(stderr,"File name must be given as an argment of load.\n");      fprintf(stderr,"File name must be given as an argment of load.\n");
     return;      return;
Line 1056  void loadFileWithCpp(objectp op)
Line 1073  void loadFileWithCpp(objectp op)
     fprintf(stderr,"Too long file name.\n");      fprintf(stderr,"Too long file name.\n");
     return;      return;
   }    }
   system("/bin/rm -f k00.cppload.tmp");    /* Use gcc -v to know what symbols are defined.
   /* Use gcc -v to know what symbols are defined. */           if  defined(linux) || defined(__linux__)
 #if defined(linux) || defined(__linux__)           Removed old codes. */
   strcpy(fname,"/lib/cpp -P -lang-c++ <");  
     sfile = op->lc.str;
     cpp = getCppPath();
     if (cpp == NULL) {
           fprintf(stderr,"cpp is not found.\n"); return;
     }
     /* printf("%s\n",cpp); */
     outfile = generateTMPfileName("k0-cpp");
     if (outfile == NULL) {
           fprintf(stderr,"Failed to generate a temporary file name.\n"); return;
     }
     /* printf("%s\n",outfile); */
     if ((char *)strstr(cpp,"/asir/bin/cpp.exe") == NULL) {
   #if defined(__clang__)
       sprintf(tmpName,"cpp -E -P %s | sed -e 's/^#.*//g' >%s",sfile,outfile);
 #else  #else
   strcpy(fname,"cpp -P -lang-c++ <");          argv[0] = cpp;
           argv[1] = "-P";
           argv[2] = "-lang-c++";
           argv[3] = sfile;
           argv[4] = outfile;
           argv[5] = NULL;
 #endif  #endif
   strcat(fname,op->lc.str);    }else{
   strcat(fname,"  >k00.cppload.tmp");          argv[0] = cpp;
   system(fname);          argv[1] = "-P";
           argv[2] = cygwinPathToWinPath(sfile);
           argv[3] = cygwinPathToWinPath(outfile);
           argv[4] = NULL;
     }
   #if defined(__clang__)
     system(tmpName);
   #else
     n=oxForkExecBlocked(argv);
   #endif
   
   ob = newObject_d();    ob = newObject_d();
   ob->tag = Sstring;    ob->tag = Sstring;
   ob->lc.str = "k00.cppload.tmp";    ob->lc.str = outfile;
   loadFile(ob);    loadFile(ob);
   system("/bin/rm -f k00.cppload.tmp");    unlink(outfile);
 }  }
   
 void showStringBuff(objectp op)  void showStringBuff(objectp op)
Line 1102  void showStringBuff(objectp op)
Line 1148  void showStringBuff(objectp op)
   fprintf(stderr,"\n");    fprintf(stderr,"\n");
 }  }
   
   
   
 char *getLOAD_K_PATH() {  char *getLOAD_K_PATH() {
   char *p;    return getLOAD_K_PATH2();
   char *p2;  
   p = getenv("LOAD_K_PATH");  
   if (p == NULL) {  
     return("/usr/local/lib/kxx97/yacc/");  
   }else{  
     if (strlen(p) == 0) return(p);  
     if (p[strlen(p)-1] == '/') return(p);  
     /* Add / */  
     p2 = (char *) malloc(sizeof(char)*(strlen(p)+3));  
     if (p2 == NULL) { fprintf(stderr,"No more memory.\n"); exit(10); }  
     strcpy(p2,p); strcat(p2,"/");  
     return(p2);  
   }  
 }  }
   

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.19

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