int nlibPaths = 0;
char *relFiles[128];
int nrelFiles = 0;
-static char *preOutName;
/* uncomment JAMIN_DS390 to always override and use ds390 port
for mcs51 work. This is temporary, for compatibility testing. */
setMainValue ("cppextraopts", join(preArgv));
- if (preProcOnly)
- {
- if (fullDstFileName)
- {
- preOutName = Safe_strdup (fullDstFileName);
- }
- }
+ if (preProcOnly && fullDstFileName)
+ {
+ /* -E and -o given */
+ setMainValue ("cppoutfilename", fullDstFileName);
+ }
else
- preOutName = Safe_strdup (tempfilename ());
-
- /* Have to set cppoutfilename to something, even if just pre-processing. */
- setMainValue ("cppoutfilename", preOutName ? preOutName : "");
- addSetHead (&tmpfileNameSet, preOutName);
+ {
+ /* Have to set cppoutfilename to something, even if piping */
+ setMainValue ("cppoutfilename", "");
+ }
if (options.verbose)
printf ("sdcc: Calling preprocessor...\n");
buildCmdLine2 (buffer, _preCmd, sizeof(buffer));
- if (my_system (buffer))
- {
+ if (preProcOnly) {
+ if (my_system (buffer)) {
exit (1);
}
- if (preProcOnly)
- {
- exit (0);
- }
- yyin = fopen (preOutName, "r");
- if (yyin == NULL)
- {
- perror ("Preproc file not found\n");
+
+ exit (0);
+ }
+
+ yyin = my_popen (buffer);
+ if (yyin == NULL) {
+ perror ("Preproc file not found");
exit (1);
- }
- addSetHead (&tmpfileSet, yyin);
+ }
+ addSetHead (&pipeSet, yyin);
}
return 0;
printf ("sdcc: Generating code...\n");
yyparse ();
+
+ pclose(yyin);
+ deleteSetItem(&pipeSet, yyin);
+
if (fatalError) {
exit (1);
}