diff options
| -rw-r--r-- | cpp.c | 27 | ||||
| -rw-r--r-- | cpp.h | 6 | 
2 files changed, 33 insertions, 0 deletions
| @@ -0,0 +1,27 @@ +#include <stdio.h> +#include <libgen.h> + +#include "str.h" +#include "xmalloc.h" + +int cpp_exec(char *in_file, char *out_file, size_t out_len) +{ +	char cmd[256], *dir, *base; +	char *a = xstrdup(in_file); +	char *b = xstrdup(in_file); +	int ret = 0; + +	dir = dirname(a); +	base = basename(b); + +	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; + +	xfree(a); +	xfree(b); +	return ret; +} @@ -0,0 +1,6 @@ +#ifndef CPP_H +#define CPP_H + +extern int cpp_exec(char *in_file, char *out_file, size_t out_len); + +#endif | 
