Add cpp_process func to invoke C preprocessor
which allow to change the logic in one place only.

Signed-off-by: Vadim Kochan <[email protected]>
---
 cpp.c | 28 ++++++++++++++++++++++++++++
 cpp.h |  6 ++++++
 2 files changed, 34 insertions(+)
 create mode 100644 cpp.c
 create mode 100644 cpp.h

diff --git a/cpp.c b/cpp.c
new file mode 100644
index 0000000..66603f7
--- /dev/null
+++ b/cpp.c
@@ -0,0 +1,28 @@
+#include <stdio.h>
+#include <libgen.h>
+
+#include "str.h"
+#include "xmalloc.h"
+
+int cpp_process(char *in_file, char *out_file, size_t out_len)
+{
+       char cmd[256], *dir, *base, *a = NULL, *b = NULL;
+       int ret = 0;
+
+       dir = dirname((a = xstrdup(in_file)));
+       base = basename((b = xstrdup(in_file)));
+
+       slprintf(out_file, out_len, "%s/.tmp-%u-%s", dir, rand(), base);
+       slprintf(cmd, sizeof(cmd), "cpp -I" ETCDIRE_STRING " %s > %s",
+                in_file, out_file);
+
+       if (system(cmd) != 0) {
+               ret = -1;
+               goto exit;
+       }
+
+exit:
+       xfree(a);
+       xfree(b);
+       return ret;
+}
diff --git a/cpp.h b/cpp.h
new file mode 100644
index 0000000..2d77000
--- /dev/null
+++ b/cpp.h
@@ -0,0 +1,6 @@
+#ifndef CPP_H
+#define CPP_H
+
+int cpp_process(char *in_file, char *out_file, size_t out_len);
+
+#endif
-- 
2.6.2

-- 
You received this message because you are subscribed to the Google Groups 
"netsniff-ng" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to