[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