[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