rev 739 - in trunk/modules: DBM OS

SVN User <[email protected]> Thu, 15 Jul 2004 04:11:55 -0400
Newsgroups gmane.comp.lang.prothon.cvs
Message-ID <[email protected]>
Author: mark
Date: 2004-07-15 04:11:39 -0400 (Thu, 15 Jul 2004)
New Revision: 739

Modified:
   trunk/modules/DBM/DBM.c
   trunk/modules/OS/OS.c
   trunk/modules/OS/OS.vcproj
Log:
basic Process tested and working, pipes not tested

Modified: trunk/modules/DBM/DBM.c
===================================================================
--- trunk/modules/DBM/DBM.c	2004-07-15 06:25:30 UTC (rev 738)
+++ trunk/modules/DBM/DBM.c	2004-07-15 08:11:39 UTC (rev 739)
@@ -54,7 +54,6 @@
 
 #include <prothon/prothon_dll.h>
 
-#include <apr_strings.h>
 #include <apr_dbm.h>
 
 typedef apr_dbm_t*   apr_dbm_p;
Modified: trunk/modules/OS/OS.c
===================================================================
--- trunk/modules/OS/OS.c	2004-07-15 06:25:30 UTC (rev 738)
+++ trunk/modules/OS/OS.c	2004-07-15 08:11:39 UTC (rev 739)
@@ -52,11 +52,9 @@
 
 // os.c - os routines
 
+#include <prothon/prothon_dll.h>
 #include <stdlib.h>
-#include <prothon/prothon_dll.h>
 
-// note: to build this in windows, define NO_APR
-
 MODULE_DECLARE(os);
 MODULE_DECLARE(Process);
 
@@ -76,7 +74,10 @@
 MODULE_CONSTANT_DECLARE(os, SHELLCMD	); 
 MODULE_CONSTANT_DECLARE(os, COPYENV		); 
 MODULE_CONSTANT_DECLARE(os, COPYENVPATH	); 
-MODULE_CONSTANT_DECLARE(os, DAEMON	    ); 
+MODULE_CONSTANT_DECLARE(os, DAEMON	    );
+MODULE_CONSTANT_DECLARE(os, EXIT        ); 
+MODULE_CONSTANT_DECLARE(os, SIGNAL      ); 
+MODULE_CONSTANT_DECLARE(os, SIGNAL_CORE ); 
 
 MODULE_START(os)
 {
@@ -97,6 +98,10 @@
 	MODULE_CONSTANT_INT(os, COPYENV		,   PROC_COPYENV		); 
 	MODULE_CONSTANT_INT(os, COPYENVPATH	,   PROC_COPYENVPATH	); 
 	MODULE_CONSTANT_INT(os, DAEMON	    ,   PROC_DAEMON			); 
+
+	MODULE_CONSTANT_INT(os, EXIT        ,   APR_PROC_EXIT       ); 
+	MODULE_CONSTANT_INT(os, SIGNAL     	,   APR_PROC_SIGNAL     ); 
+	MODULE_CONSTANT_INT(os, SIGNAL_CORE ,   APR_PROC_SIGNAL_CORE); 
 }
 
 //****************************  os  *******************************************
@@ -132,7 +137,7 @@
 	char* dir;
 	int i, arg_len, env_len, flags;
 	int stdin_flg=APR_NO_PIPE, stdout_flg=APR_NO_PIPE, stderr_flg=APR_NO_PIPE;
-	apr_cmdtype_e cmd_type = 0;
+	apr_cmdtype_e cmd_type = -1;
 	proc_p procp;
 	char *argv_arr[MAX_ARGV_ARGS], *env_arr[MAX_ENV_VARS];
 
@@ -184,7 +189,8 @@
 			env_arr[i] = pr2c_strptr(ist, str_obj);
 		}
 		env_arr[i] = NULL;
-	}
+	} else
+	    env_arr[0] = NULL;
 	aprerr = apr_pool_create(&pool, get_pr_head_pool());
 	IF_APR_ERR("out of memory in Process init_") return NULL;
 	
@@ -201,7 +207,7 @@
 		aprerr = apr_procattr_dir_set(attr, dir);
 		IF_APR_ERR("error in apr_procattr_dir_set") return NULL;
 	}
-	if (cmd_type) {
+	if (cmd_type != -1) {
 		aprerr = apr_procattr_cmdtype_set(attr, cmd_type);
 		IF_APR_ERR("error in apr_procattr_cmdtype_set") return NULL;
 	}
@@ -216,8 +222,10 @@
 	aprerr = apr_proc_create(&procp->proc, argv_arr[0], argv_arr, env_arr, attr, pool);
 	IF_APR_ERR("error in apr_proc_create") return NULL;
 
+	read_unlock(ist, self);
 	set_attr(ist, self, SYM(NAME_), NEW_STRING(argv_arr[0]));
 	set_attr(ist, self, sym(ist, "pid"), NEW_INT(procp->proc.pid));
+	read_lock(ist, self);
 
 	if (flags & PROC_STDIN) {
 		obj_p file_obj = NEW_OBJ(OBJ(TEXTFILE_PROTO));
@@ -226,7 +234,9 @@
 							    procp->proc.in, 0, APR_WRITE );
 		set_attr(ist, file_obj, sym(ist, "encoding"), NEW_STRING("ASCII"));
 		file_obj->unclonable = TRUE;
+		read_unlock(ist, self);
 		set_attr(ist, self, sym(ist, "stdInPipe"), file_obj);
+		read_lock(ist, self);
 	}
 	if (flags & PROC_STDOUT) {
 		obj_p file_obj = NEW_OBJ(OBJ(TEXTFILE_PROTO));
@@ -235,7 +245,9 @@
 							    procp->proc.out, 0, APR_READ );
 		set_attr(ist, file_obj, sym(ist, "encoding"), NEW_STRING("ASCII"));
 		file_obj->unclonable = TRUE;
+		read_unlock(ist, self);
 		set_attr(ist, self, sym(ist, "stdOutPipe"), file_obj);
+		read_lock(ist, self);
 	}
 	if (flags & PROC_STDERR) {
 		obj_p file_obj = NEW_OBJ(OBJ(TEXTFILE_PROTO));
@@ -244,7 +256,9 @@
 							    procp->proc.err, 0, APR_READ );
 		set_attr(ist, file_obj, sym(ist, "encoding"), NEW_STRING("ASCII"));
 		file_obj->unclonable = TRUE;
+		read_unlock(ist, self);
 		set_attr(ist, self, sym(ist, "stdErrPipe"), file_obj);
+		read_lock(ist, self);
 	}
 	return OBJ(NONE);
 }

Modified: trunk/modules/OS/OS.vcproj
===================================================================
--- trunk/modules/OS/OS.vcproj	2004-07-15 06:25:30 UTC (rev 738)
+++ trunk/modules/OS/OS.vcproj	2004-07-15 08:11:39 UTC (rev 739)
@@ -19,8 +19,8 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..\..\include;..\..\apr\apr\include"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;OS_EXPORTS"
+				AdditionalIncludeDirectories="..\..\include;..\..\apr\apr\include;..\..\apr\apr-util\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;OS_EXPORTS;APR_DECLARE_STATIC;APU_DECLARE_STATIC"
 				MinimalRebuild="TRUE"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="1"
@@ -33,11 +33,11 @@
 				Name="VCCustomBuildTool"/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="apr.lib wsock32.lib"
+				AdditionalDependencies="apr.lib aprutil.lib wsock32.lib"
 				OutputFile="$(OutDir)/OS.dll"
 				LinkIncremental="2"
-				AdditionalLibraryDirectories="..\..\apr\apr\LibR"
-				IgnoreDefaultLibraryNames=""
+				AdditionalLibraryDirectories="..\..\apr\apr\LibR;..\..\apr\apr-util\LibR"
+				IgnoreDefaultLibraryNames="LIBCMTD.LIB"
 				GenerateDebugInformation="TRUE"
 				ProgramDatabaseFile="$(OutDir)/OS.pdb"
 				SubSystem="2"
@@ -72,8 +72,8 @@
 			CharacterSet="2">
 			<Tool
 				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="..\..\include;..\..\apr\apr\include"
-				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;OS_EXPORTS"
+				AdditionalIncludeDirectories="..\..\include;..\..\apr\apr\include;..\..\apr\apr-util\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;OS_EXPORTS;APR_DECLARE_STATIC;APU_DECLARE_STATIC"
 				RuntimeLibrary="1"
 				UsePrecompiledHeader="0"
 				WarningLevel="3"
@@ -84,11 +84,11 @@
 				Name="VCCustomBuildTool"/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="apr.lib wsock32.lib"
+				AdditionalDependencies="apr.lib aprutil.lib wsock32.lib"
 				OutputFile="$(OutDir)/OS.dll"
 				LinkIncremental="1"
-				AdditionalLibraryDirectories="..\..\apr\apr\LibR"
-				IgnoreDefaultLibraryNames=""
+				AdditionalLibraryDirectories="..\..\apr\apr\LibR;..\..\apr\apr-util\LibR"
+				IgnoreDefaultLibraryNames="LIBCMTD.LIB"
 				GenerateDebugInformation="TRUE"
 				SubSystem="2"
 				OptimizeReferences="2"