[Initng-svn] r3209 - initng/trunk/plugins/stcmd

svn at initng.thinktux.net svn at initng.thinktux.net
Sun Mar 5 20:42:39 CET 2006


Author: jimmy
Date: Sun Mar  5 20:42:39 2006
New Revision: 3209

Modified:
   initng/trunk/plugins/stcmd/initng_stcmd.c
Log:
add ngc -I, that lists all open filedescriptors.


Modified: initng/trunk/plugins/stcmd/initng_stcmd.c
==============================================================================
--- initng/trunk/plugins/stcmd/initng_stcmd.c	(original)
+++ initng/trunk/plugins/stcmd/initng_stcmd.c	Sun Mar  5 20:42:39 2006
@@ -79,6 +79,7 @@
 static void cmd_get_depends_off_deep(char *arg, FILE * fd);
 static int cmd_new_init(char *arg);
 static int cmd_runlevel(char *arg);
+static void cmd_print_fds(char *arg, FILE * fd);
 
 #ifdef DEBUG
 static int cmd_toggle_verbose(char *arg);
@@ -86,6 +87,8 @@
 static int cmd_del_verbose(char *arg);
 #endif
 
+s_command LIST_FDS = { 'I', "list_filedescriptors", PRINT_COMMAND, ADVANCHED_COMMAND, NO_OPT, {(void *) &cmd_print_fds}, "Print all open filedescriptors initng have." };
+
 s_command FAST_RELOAD =
     { 'c', "hot_reload", VOID_COMMAND, STANDARD_COMMAND, NO_OPT,
     {(void *) &cmd_fast_reload},
@@ -635,6 +638,47 @@
     }
 }
 
+static void cmd_print_fds(char *arg, FILE * fd)
+{
+    active_db_h *currentA;
+    s_call *currentC;
+    process_h *currentP;
+    int i;
+    
+    for(i=0;i<1024;i++)
+    {
+    
+    currentC = NULL;
+    while_list(currentC, &g.FDWATCHERS)
+    {
+        if (currentC->c.fdh->fds != i)
+            continue;
+	
+	fprintf(fd, " %i: Used by plugin: %s\n", i, currentC->from_file);
+	break;
+	/* Call db fs */
+    }
+
+    currentA = NULL;
+    while_active_db(currentA)
+    {
+        currentP = NULL;
+        while_processes(currentP, currentA)
+        {
+            if (currentP->out_pipe[0] != i)
+		continue;
+
+	    fprintf(fd, " %i: Used service: %s, process: %s\n", i, currentA->name, currentP->pt->name);
+	    break;
+        }
+    }
+
+
+	/*fprintf(fd, " %i:\n", i);*/
+    }
+}
+
+
 static void cmd_get_depends_off_deep(char *arg, FILE * fd)
 {
     active_db_h *current = NULL;
@@ -713,6 +757,8 @@
     return (TRUE);
 }
 
+
+
 #ifdef DEBUG
 
 
@@ -796,6 +842,8 @@
     initng_command_add(&DEPENDS_OFF_DEEP);
     initng_command_add(&NEW_INIT);
     initng_command_add(&CHANGE_RUNLEVEL);
+    initng_command_add(&LIST_FDS);
+
 #ifdef DEBUG
     initng_command_add(&TOGGLE_VERBOSE);
     initng_command_add(&ADD_VERBOSE);
@@ -841,6 +889,7 @@
     initng_command_del(&DEPENDS_OFF_DEEP);
     initng_command_del(&NEW_INIT);
     initng_command_del(&CHANGE_RUNLEVEL);
+    initng_command_del(&LIST_FDS);
 #ifdef DEBUG
     initng_command_del(&TOGGLE_VERBOSE);
     initng_command_del(&ADD_VERBOSE);


More information about the Initng-svn mailing list