mirror of
https://github.com/troglobit/finit.git
synced 2026-11-03 13:28:27 +00:00
Merge pull request #347 from JackNewman12/master
Use realpath in do_change() to ensure symlink directories are correctly reloaded Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
1 file changed
+18
-8
+18
-8
@@ -1040,30 +1040,40 @@ static void drop_changes(void)
|
|||||||
static int do_change(char *dir, char *name, uint32_t mask)
|
static int do_change(char *dir, char *name, uint32_t mask)
|
||||||
{
|
{
|
||||||
char fn[strlen(dir) + strlen(name) + 2];
|
char fn[strlen(dir) + strlen(name) + 2];
|
||||||
|
char *rp;
|
||||||
struct conf_change *node;
|
struct conf_change *node;
|
||||||
|
|
||||||
paste(fn, sizeof(fn), dir, name);
|
paste(fn, sizeof(fn), dir, name);
|
||||||
dbg("path: %s mask: %08x", fn, mask);
|
dbg("path: %s mask: %08x", fn, mask);
|
||||||
|
|
||||||
node = conf_find(fn);
|
rp = realpath(fn, NULL);
|
||||||
|
if (!rp)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
node = conf_find(rp);
|
||||||
if (node) {
|
if (node) {
|
||||||
dbg("Event already registered for %s ...", name);
|
dbg("Event already registered for %s ...", name);
|
||||||
|
free(rp);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
node = malloc(sizeof(*node));
|
node = malloc(sizeof(*node));
|
||||||
if (!node)
|
if (!node) {
|
||||||
return 1;
|
free(rp);
|
||||||
|
|
||||||
node->name = strdup(fn);
|
|
||||||
if (!node->name) {
|
|
||||||
free(node);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
dbg("Event registered for %s, mask 0x%x", fn, mask);
|
node->name = strdup(rp);
|
||||||
|
if (!node->name) {
|
||||||
|
free(node);
|
||||||
|
free(rp);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
dbg("Event registered for %s, mask 0x%x", rp, mask);
|
||||||
TAILQ_INSERT_HEAD(&conf_change_list, node, link);
|
TAILQ_INSERT_HEAD(&conf_change_list, node, link);
|
||||||
|
|
||||||
|
free(rp);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user