From 8a8fd13d6dc2f99cc731657aaffcc1c7dcd975b3 Mon Sep 17 00:00:00 2001 From: Vadim Kochan Date: Sun, 22 Nov 2015 21:09:37 +0200 Subject: bpfc: Invoke C preprocessor from cpp.c module Use cpp_exec func from cpp.c module to invoke C preprocessor. Signed-off-by: Vadim Kochan Signed-off-by: Tobias Klauser --- bpf_parser.y | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) (limited to 'bpf_parser.y') diff --git a/bpf_parser.y b/bpf_parser.y index 8c09639..8aed9dc 100644 --- a/bpf_parser.y +++ b/bpf_parser.y @@ -25,6 +25,7 @@ #include "bpf_parser.tab.h" #include "built_in.h" #include "die.h" +#include "cpp.h" int compile_filter(char *file, int verbose, int bypass, int format, bool invoke_cpp); @@ -744,20 +745,13 @@ int compile_filter(char *file, int verbose, int bypass, int format, memset(tmp_file, 0, sizeof(tmp_file)); if (invoke_cpp) { - char cmd[256], *dir, *base, *a, *b; - - dir = dirname((a = xstrdup(file))); - base = basename((b = xstrdup(file))); - - slprintf(tmp_file, sizeof(tmp_file), "%s/.tmp-%u-%s", dir, rand(), base); - slprintf(cmd, sizeof(cmd), "cpp -I" ETCDIRE_STRING " %s > %s", - file, tmp_file); - if (system(cmd) != 0) - panic("Failed to invoke C preprocessor!\n"); + ret = cpp_exec(file, tmp_file, sizeof(tmp_file)); + if (ret) { + fprintf(stderr, "Failed to invoke C preprocessor!\n"); + goto exit; + } file = tmp_file; - xfree(a); - xfree(b); } if (!strncmp("-", file, strlen("-"))) -- cgit v1.2.3-54-g00ecf