]> granicus.if.org Git - cronie/commitdiff
Prevent adding duplicate orphans on reload.
authorTomas Mraz <tmraz@fedoraproject.org>
Tue, 21 Apr 2015 13:15:46 +0000 (15:15 +0200)
committerTomas Mraz <tmraz@fedoraproject.org>
Tue, 21 Apr 2015 13:15:46 +0000 (15:15 +0200)
src/database.c

index 60135ac8f7f9c33c7fd28fd714025fc464a64d6b..682826da17d0a302358d3a9174d772fefdf2081f 100644 (file)
@@ -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;