common: check_create_dir(): Support symlinks as well.
authorJonathan Nieder <jrnieder@gmail.com>
Mon, 9 Jan 2012 18:01:50 +0000 (19:01 +0100)
committerFlorian Forster <octo@collectd.org>
Mon, 23 Jan 2012 20:40:14 +0000 (21:40 +0100)
Previously, the following situation would cause an endless look (as reported
by Michael Prokop in Debian bug #619123): the (CSV or RRD) datadir is a
symlink pointing to a non-existent target.

With this patch applied, check_create_dir() fails with "<file> exists but is
not a directory".

Signed-off-by: Sebastian Harl <sh@tokkee.org>
src/common.c

index d2a1b36..530f733 100644 (file)
@@ -542,7 +542,8 @@ int check_create_dir (const char *file_orig)
                }
 
                while (42) {
-                       if (stat (dir, &statbuf) == -1)
+                       if ((stat (dir, &statbuf) == -1)
+                                       && (lstat (dir, &statbuf) == -1))
                        {
                                if (errno == ENOENT)
                                {