aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tcc.c9
-rw-r--r--tccpp.c33
2 files changed, 18 insertions, 24 deletions
diff --git a/tcc.c b/tcc.c
index dc75443..6adb6b8 100644
--- a/tcc.c
+++ b/tcc.c
@@ -303,13 +303,8 @@ int main(int argc, char **argv)
tcc_error("could not write '%s'", s->outfile);
}
s->dffp = s->ppfp;
- if (s->dflag == 'M') {
-#ifndef TCC_TARGET_PE
- s->ppfp = fopen("/dev/null", "w");
-#else
- s->ppfp = fopen("nul", "w");
-#endif
- }
+ if (s->dflag == 'M')
+ s->ppfp = NULL;
}
tcc_set_output_type(s, s->output_type);
diff --git a/tccpp.c b/tccpp.c
index c8687e3..f499774 100644
--- a/tccpp.c
+++ b/tccpp.c
@@ -1072,20 +1072,18 @@ static int macro_is_equal(const int *a, const int *b)
static void pp_line(TCCState *s1, BufferedFile *f, int level)
{
- int d = f->line_num - f->line_ref;
- if (s1->Pflag == LINE_MACRO_OUTPUT_FORMAT_NONE
- || (level == 0 && f->line_ref && d < 8))
- {
- while (d > 0)
- fputs("\n", s1->ppfp), --d;
- }
- else
- if (s1->Pflag == LINE_MACRO_OUTPUT_FORMAT_STD) {
- fprintf(s1->ppfp, "#line %d \"%s\"\n", f->line_num, f->filename);
- }
- else {
- fprintf(s1->ppfp, "# %d \"%s\"%s\n", f->line_num, f->filename,
- level > 0 ? " 1" : level < 0 ? " 2" : "");
+ if (s1->ppfp) {
+ int d = f->line_num - f->line_ref;
+ if (s1->Pflag == LINE_MACRO_OUTPUT_FORMAT_NONE
+ || (level == 0 && f->line_ref && d < 8)) {
+ while (d > 0)
+ fputs("\n", s1->ppfp), --d;
+ } else if (s1->Pflag == LINE_MACRO_OUTPUT_FORMAT_STD) {
+ fprintf(s1->ppfp, "#line %d \"%s\"\n", f->line_num, f->filename);
+ } else {
+ fprintf(s1->ppfp, "# %d \"%s\"%s\n", f->line_num, f->filename,
+ level > 0 ? " 1" : level < 0 ? " 2" : "");
+ }
}
f->line_ref = f->line_num;
}
@@ -3473,16 +3471,17 @@ ST_FUNC int tcc_preprocess(TCCState *s1)
continue;
}
pp_line(s1, file, 0);
- while (spcs)
+ while (s1->ppfp && spcs > 0)
fputs(" ", s1->ppfp), --spcs;
+ spcs = 0;
token_seen = 1;
} else if (tok == TOK_LINEFEED) {
++file->line_ref;
token_seen = 0;
}
-
- fputs(get_tok_str(tok, &tokc), s1->ppfp);
+ if (s1->ppfp)
+ fputs(get_tok_str(tok, &tokc), s1->ppfp);
}
return 0;