use helper in seq node
[protos/libecoli.git] / lib / ecoli_init.c
index b5bd755..fd5c0c3 100644 (file)
@@ -14,6 +14,22 @@ static struct ec_init_list init_list = TAILQ_HEAD_INITIALIZER(init_list);
 /* register an init function */
 void ec_init_register(struct ec_init *init)
 {
+       struct ec_init *cur;
+
+       if (TAILQ_EMPTY(&init_list)) {
+               TAILQ_INSERT_HEAD(&init_list, init, next);
+               return;
+       }
+
+
+       TAILQ_FOREACH(cur, &init_list, next) {
+               if (init->priority > cur->priority)
+                       continue;
+
+               TAILQ_INSERT_BEFORE(cur, init, next);
+               return;
+       }
+
        TAILQ_INSERT_TAIL(&init_list, init, next);
 }
 
@@ -21,8 +37,6 @@ int ec_init(void)
 {
        struct ec_init *init;
 
-       /* XXX sort list by priority */
-
        TAILQ_FOREACH(init, &init_list, next) {
                if (init->init() < 0)
                        return -1;