diff options
author | Vadim Kochan <vadim4j@gmail.com> | 2015-11-22 21:09:39 +0200 |
---|---|---|
committer | Tobias Klauser <tklauser@distanz.ch> | 2015-11-24 10:24:29 +0100 |
commit | 6995883a9b6f5260977d448a6ba044013d68b935 (patch) | |
tree | 931c7d7826303902a1ce6958c6f969b07bb20703 | |
parent | 5e7e8b46fc84d8010e11d3c43d8c2b742028375f (diff) |
cpp: Use /tmp folder for output files
There might be a case when input file is located
in read-only directory and cpp fails when it tries to
create output file there, so use /tmp folder for that
as usually it should be writeable for any user.
Signed-off-by: Vadim Kochan <vadim4j@gmail.com>
Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
-rw-r--r-- | cpp.c | 13 |
1 files changed, 5 insertions, 8 deletions
@@ -6,22 +6,19 @@ 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); + char *tmp = xstrdup(in_file); + char cmd[256], *base; int ret = 0; - dir = dirname(a); - base = basename(b); + base = basename(tmp); - slprintf(out_file, out_len, "%s/.tmp-%u-%s", dir, rand(), base); + slprintf(out_file, out_len, "/tmp/.tmp-%u-%s", 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); + xfree(tmp); return ret; } |