=================================================================== RCS file: /home/cvs/OpenXM/src/k097/d.c,v retrieving revision 1.10 retrieving revision 1.16 diff -u -p -r1.10 -r1.16 --- OpenXM/src/k097/d.c 2003/07/21 12:41:22 1.10 +++ OpenXM/src/k097/d.c 2005/06/16 05:07:24 1.16 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM/src/k097/d.c,v 1.9 2003/07/13 08:18:27 takayama Exp $ */ +/* $OpenXM: OpenXM/src/k097/d.c,v 1.15 2004/06/30 08:00:18 takayama Exp $ */ /* simple.c, 1996, 1/1 --- 1/5 */ #include #include @@ -181,7 +181,7 @@ objectp newObject_d() { fprintf(stderr,"Error: No more memory in newObject_d().\n"); exit(10); } - obj->tag = Snull; + obj->tag = Snull; obj->attr = NULL; return(obj); } @@ -1058,6 +1058,11 @@ void loadFileWithCpp(objectp op) char tmpName[1024]; int pid; objectp ob; + char *outfile; + char *cpp; + char *argv[10]; + int n; + char *sfile = NULL; if (op->tag != Sstring) { fprintf(stderr,"File name must be given as an argment of load.\n"); return; @@ -1068,21 +1073,50 @@ void loadFileWithCpp(objectp op) fprintf(stderr,"Too long file name.\n"); return; } - system("/bin/rm -f k00.cppload.tmp"); - /* Use gcc -v to know what symbols are defined. */ -#if defined(linux) || defined(__linux__) - strcpy(fname,"/lib/cpp -P -lang-c++ <"); + /* Use gcc -v to know what symbols are defined. + if defined(linux) || defined(__linux__) + Removed old codes. */ + + 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(__APPLE_CC__) + sprintf(tmpName,"gcc -E -P %s | sed -e 's/^#.*//g' >%s",sfile,outfile); #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 - strcat(fname,op->lc.str); - strcat(fname," >k00.cppload.tmp"); - system(fname); + }else{ + argv[0] = cpp; + argv[1] = "-P"; + argv[2] = cygwinPathToWinPath(sfile); + argv[3] = cygwinPathToWinPath(outfile); + argv[4] = NULL; + } +#if defined(__APPLE_CC__) + system(tmpName); +#else + n=oxForkExecBlocked(argv); +#endif + ob = newObject_d(); ob->tag = Sstring; - ob->lc.str = "k00.cppload.tmp"; + ob->lc.str = outfile; loadFile(ob); - system("/bin/rm -f k00.cppload.tmp"); + unlink(outfile); } void showStringBuff(objectp op)