utils.c has grown some functions since the iptables code
was written - make use of virFileMakePath() and virFileBuildPath().
Signed-off-by: Mark McLoughlin <markmc(a)redhat.com>
Index: libvirt/src/iptables.c
===================================================================
--- libvirt.orig/src/iptables.c 2008-01-04 09:46:19.000000000 +0000
+++ libvirt.orig/src/iptables.c 2008-01-04 09:46:19.000000000 +0000
@@ -44,6 +44,7 @@
#include "internal.h"
#include "iptables.h"
+#include "util.h"
#define qemudLog(level, msg...) fprintf(stderr, msg)
@@ -135,60 +136,6 @@ writeRules(const char *path,
return 0;
}
-
-static int
-ensureDir(const char *path)
-{
- struct stat st;
- char parent[PATH_MAX];
- char *p;
- int err;
-
- if (stat(path, &st) >= 0)
- return 0;
-
- strncpy(parent, path, PATH_MAX);
- parent[PATH_MAX - 1] = '\0';
-
- if (!(p = strrchr(parent, '/')))
- return EINVAL;
-
- if (p == parent)
- return EPERM;
-
- *p = '\0';
-
- if ((err = ensureDir(parent)))
- return err;
-
- if (mkdir(path, 0700) < 0 && errno != EEXIST)
- return errno;
-
- return 0;
-}
-
-static int
-buildDir(const char *table,
- char *path,
- int maxlen)
-{
- if (snprintf(path, maxlen, IPTABLES_DIR "/%s", table) >= maxlen)
- return EINVAL;
- else
- return 0;
-}
-
-static int
-buildPath(const char *table,
- const char *chain,
- char *path,
- int maxlen)
-{
- if (snprintf(path, maxlen, IPTABLES_DIR "/%s/%s.chain", table, chain) >=
maxlen)
- return EINVAL;
- else
- return 0;
-}
#endif /* IPTABLES_DIR */
static void
@@ -235,7 +182,7 @@ iptRulesAppend(iptRules *rules,
{
int err;
- if ((err = ensureDir(rules->dir)))
+ if ((err = virFileMakePath(rules->dir)))
return err;
if ((err = writeRules(rules->path, rules->rules, rules->nrules)))
@@ -332,10 +279,10 @@ iptRulesNew(const char *table,
rules->nrules = 0;
#ifdef IPTABLES_DIR
- if (buildDir(table, rules->dir, sizeof(rules->dir)))
+ if (virFileBuildPath(IPTABLES_DIR, table, NULL, rules->dir, sizeof(rules->dir))
< 0)
goto error;
- if (buildPath(table, chain, rules->path, sizeof(rules->path)))
+ if (virFileBuildPath(rules->dir, chain, ".chain", rules->path,
sizeof(rules->path)) < 0)
goto error;
#endif /* IPTABLES_DIR */
--