[Initng-svn] r2959 - initng/plugins/conflict

svn at initng.thinktux.net svn at initng.thinktux.net
Tue Feb 7 10:56:44 CET 2006


Author: jimmy
Date: Tue Feb  7 10:56:43 2006
New Revision: 2959

Modified:
   initng/plugins/conflict/initng_conflict.c
Log:
Wide conflict.


Modified: initng/plugins/conflict/initng_conflict.c
==============================================================================
--- initng/plugins/conflict/initng_conflict.c	(original)
+++ initng/plugins/conflict/initng_conflict.c	Tue Feb  7 10:56:43 2006
@@ -38,12 +38,18 @@
     "If service put here is starting or running, bail out."
 };
 
-static int check_conflict(active_db_h * service, a_state_h * status)
+a_state_h CONFLICTING = { "FAILED_BY_CONFLICT", IS_FAILED, NULL };
+
+static int check_conflict(active_db_h * service)
 {
     const char *conflict_entry = NULL;
 
     assert(service);
     assert(service->name);
+    
+    /* Do this check when this service is put in a STARTING state */
+    if(!IS_STARTING(service))
+	return(TRUE);
 
     /* make sure the conflict entry is set */
     while ((conflict_entry =
@@ -67,7 +73,7 @@
 
         if (IS_UP(s) || IS_STARTING(s))
         {
-            initng_common_mark_service(service, &FAIL_STARTING);
+            initng_common_mark_service(service, &CONFLICTING);
             F_("Service \"%s\" is conflicting with service \"%s\"!\n",
                service->name, s->name);
             return (FALSE);
@@ -87,7 +93,8 @@
     }
 
     initng_service_data_types_add(&CONFLICT);
-    initng_active_state_add_test(&LOADING, 10, &check_conflict);
+    initng_plugin_hook_add(&g.IS_CHANGE, 10, &check_conflict);
+    initng_active_state_add(&CONFLICTING);
 
     return (TRUE);
 }
@@ -95,6 +102,7 @@
 void module_unload(void)
 {
 
-    initng_active_state_del_test(&LOADING, &check_conflict);
+    initng_plugin_hook_del(&g.IS_CHANGE, &check_conflict);
+    initng_active_state_del(&CONFLICTING);
     initng_service_data_types_del(&CONFLICT);
 }


More information about the Initng-svn mailing list