[Initng-svn] r4414 - in initng/trunk: plugins/reload src

svn at initng.thinktux.net svn at initng.thinktux.net
Thu Jun 8 14:18:59 CEST 2006


Author: jimmy
Date: Thu Jun  8 14:18:58 2006
New Revision: 4414

Modified:
   initng/trunk/plugins/debug_commands/print_service.c
   initng/trunk/plugins/reload/initng_reload.c
   initng/trunk/plugins/reload/initng_reload.h
   initng/trunk/src/initng_fork.c
   initng/trunk/src/initng_process_db.h

Log:
Make reload save pipes too.


Modified: initng/trunk/plugins/debug_commands/print_service.c
==============================================================================
--- initng/trunk/plugins/debug_commands/print_service.c	(original)
+++ initng/trunk/plugins/debug_commands/print_service.c	Thu Jun  8 14:18:58 2006
@@ -246,7 +246,7 @@
 				continue;
 		}
 
-		for (i = 0; current_pipe->targets[i] > 0 && i < 10; i++)
+		for (i = 0; current_pipe->targets[i] > 0 && i < MAX_TARGETS; i++)
 			mprintf(string, " %i", current_pipe->targets[i]);
 
 		mprintf(string, "\n");

Modified: initng/trunk/plugins/reload/initng_reload.c
==============================================================================
--- initng/trunk/plugins/reload/initng_reload.c	(original)
+++ initng/trunk/plugins/reload/initng_reload.c	Thu Jun  8 14:18:58 2006
@@ -44,8 +44,8 @@
 
 INITNG_PLUGIN_MACRO;
 
-#define SAVE_FILE      VARDIR "/initng_db_backup.v14"
-#define SAVE_FILE_FAKE VARDIR "/initng_db_backup_fake.v14"
+#define SAVE_FILE      VARDIR "/initng_db_backup.v15"
+#define SAVE_FILE_FAKE VARDIR "/initng_db_backup_fake.v15"
 
 static int write_file(const char *filename);
 static int read_file(const char *filename);
@@ -198,6 +198,7 @@
 			{
 				process_h *process = NULL;
 				ptype_h *pt = NULL;
+				int p = 0; /* used to count pipes */
 
 				while_ptypes(pt)
 				{
@@ -220,8 +221,11 @@
 
 				/* fill the data */
 				process->pid = entry.process[pnr].pid;
-
+	
+				/* for every pipe */
+				while(entry.process[pnr].pipes[p].dir > 0 && p < MAX_PIPES)
 				{
+					int i;
 					pipe_h *op = i_calloc(1, sizeof(pipe_h));
 
 					if (!op)
@@ -230,12 +234,15 @@
 						continue;
 					}
 
-					op->pipe[0] = entry.process[pnr].stdout1;
-					op->pipe[1] = entry.process[pnr].stdout2;
-					op->dir = BUFFERED_OUT_PIPE;
-					op->targets[0] = 1;
-					op->targets[1] = 2;
+					op->pipe[0] = entry.process[pnr].pipes[p].pipe[0];
+					op->pipe[1] = entry.process[pnr].pipes[p].pipe[1];
+					op->dir = entry.process[pnr].pipes[p].dir;
+					for(i=0; i < MAX_TARGETS && i < MAX_PIPE_TARGETS && entry.process[pnr].pipes[p].targets[i] > 0; i++)
+					{
+						op->targets[i] = entry.process[pnr].pipes[p].targets[i];
+					}
 					add_pipe(op, process);
+					p++;
 				}
 				process->r_code = entry.process[pnr].rcode;
 
@@ -363,6 +370,7 @@
 		pnr = 0;
 		while_processes(process, current)
 		{
+			int p = 0;
 			strncpy(entry.process[pnr].ptype, process->pt->name,
 					MAX_PTYPE_STRING_LEN);
 			entry.process[pnr].pid = process->pid;
@@ -370,11 +378,13 @@
 			current_pipe = NULL;
 			while_pipes(current_pipe, process)
 			{
-				entry.process[pnr].stdout1 = current_pipe->pipe[0];
-				entry.process[pnr].stdout2 = current_pipe->pipe[1];
-
-				/* TODO, add them all! */
-				break;
+				entry.process[pnr].pipes[p].pipe[0] = current_pipe->pipe[0];
+				entry.process[pnr].pipes[p].pipe[1] = current_pipe->pipe[1];
+				entry.process[pnr].pipes[p].dir = current_pipe->dir;
+				for(i=0;i<MAX_TARGETS && i < MAX_PIPE_TARGETS && current_pipe->targets[i] > 0; i++)
+					entry.process[pnr].pipes[p].targets[i] = current_pipe->targets[i];
+					
+				p++;
 			}
 
 			entry.process[pnr].rcode = process->r_code;

Modified: initng/trunk/plugins/reload/initng_reload.h
==============================================================================
--- initng/trunk/plugins/reload/initng_reload.h	(original)
+++ initng/trunk/plugins/reload/initng_reload.h	Thu Jun  8 14:18:58 2006
@@ -30,6 +30,8 @@
 #define MAX_PTYPE_STRING_LEN 100
 #define MAX_ENTRYS_FOR_SERVICE 20
 #define MAX_DATA_VN_LEN 100
+#define MAX_PIPES 6
+#define MAX_PIPE_TARGETS 5
 
 typedef struct
 {
@@ -45,9 +47,16 @@
 
 typedef struct
 {
+	int pipe[2];
+	e_dir dir;
+	int targets[MAX_PIPE_TARGETS + 1];
+} r_pipe;
+	
+
+typedef struct
+{
 	char ptype[MAX_PTYPE_STRING_LEN + 1];
-	int stdout1;
-	int stdout2;
+	r_pipe pipes[MAX_PIPES + 1];
 	int pid;
 	int rcode;
 } r_process;

Modified: initng/trunk/src/initng_fork.c
==============================================================================
--- initng/trunk/src/initng_fork.c	(original)
+++ initng/trunk/src/initng_fork.c	Thu Jun  8 14:18:58 2006
@@ -147,7 +147,7 @@
 				int i;
 
 				/* for every target */
-				for (i = 0; current_pipe->targets[i] > 0 && i < 10; i++)
+				for (i = 0; current_pipe->targets[i] > 0 && i < MAX_TARGETS; i++)
 				{
 					/* close any conflicting one */
 					close(current_pipe->targets[i]);

Modified: initng/trunk/src/initng_process_db.h
==============================================================================
--- initng/trunk/src/initng_process_db.h	(original)
+++ initng/trunk/src/initng_process_db.h	Thu Jun  8 14:18:58 2006
@@ -32,6 +32,7 @@
 
 //struct active_type;
 
+#define MAX_TARGETS 10
 
 /* struct containing data on an running process */
 typedef struct t_ptype_h ptype_h;
@@ -63,7 +64,7 @@
 	e_dir dir;
 
 	/* If targets set (max 10) the fd are duped after fork to match targets */
-	int targets[10];
+	int targets[MAX_TARGETS + 1];
 
 	/* If this pipe is a BUFFERED_OUT_PIPE stor a buffer here */
 	char *buffer;				/* stdout buffer ## THE BEGINNING ## */


More information about the Initng-svn mailing list