[Initng-svn] r3639 - initng/trunk/src

svn at initng.thinktux.net svn at initng.thinktux.net
Mon Apr 3 01:14:09 CEST 2006


Author: jimmy
Date: Mon Apr  3 01:14:08 2006
New Revision: 3639

Modified:
   initng/trunk/src/initng.h
   initng/trunk/src/initng_global.c
   initng/trunk/src/initng_global.h
Log:
Add global dynamic variables support.


Modified: initng/trunk/src/initng.h
==============================================================================
--- initng/trunk/src/initng.h	(original)
+++ initng/trunk/src/initng.h	Mon Apr  3 01:14:08 2006
@@ -59,7 +59,7 @@
 #define INITNG_CREATOR "Jimmy Wennlund <jimmy.wennlund at gmail.com>"
 
 /* Add to this counter everytime the api changes, and plugins need to recompile */
-#define API_VERSION 7
+#define API_VERSION 8
 
 /* unset this in an production environment */
 /* this is set in config.h */

Modified: initng/trunk/src/initng_global.c
==============================================================================
--- initng/trunk/src/initng_global.c	(original)
+++ initng/trunk/src/initng_global.c	Mon Apr  3 01:14:08 2006
@@ -76,6 +76,11 @@
     D_("Maximum length for our process name is %d\n", g.maxproclen);
 
     /*
+     * initialize global data storage
+     */
+    INIT_LIST_HEAD(&g.data.list);
+
+    /*
      * initialize all databases, next and prev have to point to own struct
      */
     INIT_LIST_HEAD(&g.active_database.list);
@@ -224,6 +229,9 @@
     initng_service_data_types_free_all();   /* clean option_db */
     initng_command_free_all();              /* clean command_db */
 
+    /* free dynamic global variables */
+    global_remove_all();
+
     /* free runlevel name string */
     if (g.runlevel)
         free(g.runlevel);

Modified: initng/trunk/src/initng_global.h
==============================================================================
--- initng/trunk/src/initng_global.h	(original)
+++ initng/trunk/src/initng_global.h	Mon Apr  3 01:14:08 2006
@@ -56,6 +56,9 @@
     s_entry option_db;
     s_command command_db;
     stype_h stypes;
+    
+    /* global options */
+    s_data data;
 
     /* all hooks to hook at */
     s_call ASTATUS_CHANGE;      /* Calls as soon as the ASTATUS changes */
@@ -110,6 +113,9 @@
 
     /* use with THEN_NEW_INIT */
     char **new_init;
+    int no_circular;
+
+
 #ifdef DEBUG
     /* g.verbose_this
        0 = no verbose
@@ -120,7 +126,6 @@
     int verbose;
     char *verbose_this[MAX_VERBOSES];
 #endif
-    int no_circular;
 
 } s_global;
 
@@ -133,4 +138,58 @@
 
 #define initng_global_set_sleep(sec) { D_("Sleep set: %i seconds.\n", sec); if(g.sleep_seconds==0||sec<g.sleep_seconds) g.sleep_seconds=sec; }
 #define initng_global_set_interrupt() { D_("Interrupt set!\n"); g.interrupt = TRUE; }
+
+
+/* This is for handeling dynamic global variables */
+
+/* is */
+#define global_is_var(t,v) d_is_var(t,v, &g.data.list)
+#define global_is(t) global_is_var(t, NULL)
+
+/* get_int */
+#define global_get_int_var(t,v) d_get_int_var(t,v, &g.data.list)
+#define global_get_int(t) global_get_int_var(t, NULL)
+
+/* get_string */
+#define global_get_string_var(t,v) d_get_string_var(t, v, &g.data.list)
+#define global_get_string(t) global_get_string_var(t, NULL)
+
+/* get_next_string */
+#define global_get_next_string_var(type,var,last)  d_get_next_string_var(type, var, &g.data.list, last)
+#define global_get_next_string(type, last) global_get_next_string_var(type, NULL, last)
+
+/* set */
+#define global_set_var(t,v) d_set_var(t,v, &g.data.list)
+#define global_set(t) global_set_var(t, NULL)
+
+/* set_int */
+#define global_set_int_var(type,var,value) d_set_int_var(type, var, &g.data.list, value)
+#define global_set_int(type, value) global_set_int_var(type, NULL, value)
+
+/* set_string */
+#define global_set_string_var(type,var,string) d_set_string_var(type,var, &g.data.list, string)
+#define global_set_string(type,string) global_set_string_var(type, NULL, string)
+
+/* set_another_string */
+#define global_set_another_string_var(type, var, string) d_set_another_string_var(type, var &g.data.list, string)
+#define global_set_another_string(type, string) global_set_another_string_var(type, NULL, string)
+
+/* count_type */
+#define global_count_type(type) d_count_type(type, &g.data.list)
+
+/* d_remove */
+#define global_remove_var(type, var) d_remove_var(type, var, &g.data.list)
+#define global_remove(type) global_remove_var(type,var)
+#define global_remove_all() d_remove_all(&g.data.list)
+
+/* get_next */
+#define global_get_next(type, prev) d_get_next(type, &g.data.list, prev)
+
+/* while_global */
+#define while_global(current) list_for_each_entry_prev(current, &g.data.list, list)
+#define while_global_safe(current, safe, d) list_for_each_entry_prev_safe(current, safe, &g.data.list, list)
+
+
+
+
 #endif


More information about the Initng-svn mailing list