| version 1.10, 2003/07/21 12:41:22 |
version 1.19, 2016/04/02 08:20:09 |
|
|
| /* $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.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> |
| Line 181 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 605 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); |
| } |
} |
|
|
| 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 1058 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 1068 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) |