summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVadim Kochan <vadim4j@gmail.com>2015-11-22 21:09:39 +0200
committerTobias Klauser <tklauser@distanz.ch>2015-11-24 10:24:29 +0100
commit6995883a9b6f5260977d448a6ba044013d68b935 (patch)
tree931c7d7826303902a1ce6958c6f969b07bb20703
parent5e7e8b46fc84d8010e11d3c43d8c2b742028375f (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.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/cpp.c b/cpp.c
index 8448252..6734eac 100644
--- a/cpp.c
+++ b/cpp.c
@@ -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;
}