From: Tomas Mraz Date: Tue, 21 Apr 2015 13:15:46 +0000 (+0200) Subject: Prevent adding duplicate orphans on reload. X-Git-Tag: cronie1.5.0~4 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4e7546d3c1982c8448ea9d6a11f9d26fa2701623;p=cronie Prevent adding duplicate orphans on reload. --- diff --git a/src/database.c b/src/database.c index 60135ac..682826d 100644 --- a/src/database.c +++ b/src/database.c @@ -152,10 +152,41 @@ check_orphans(cron_db *db) { } } +static int +find_orphan(const char *uname, const char *fname, const char *tabname) { + orphan *o; + + for (o = orphans; o != NULL; o = o->next) { + if (uname && o->uname) { + if (strcmp(uname, o->uname) != 0) + continue; + } else if (uname != o->uname) + continue; + + if (fname && o->fname) { + if (strcmp(fname, o->fname) != 0) + continue; + } else if (fname != o->fname) + continue; + + if (tabname && o->tabname) { + if (strcmp(tabname, o->tabname) != 0) + continue; + } else if (tabname != o->tabname) + continue; + return 1; + } + + return 0; +} + static void add_orphan(const char *uname, const char *fname, const char *tabname) { orphan *o; + if (find_orphan(uname, fname, tabname)) + return; + o = calloc(1, sizeof(*o)); if (o == NULL) return;